Как добраться до свойств слоя YOLO-NAS?
Всем доброго дня. Хочу поменять свойства слоя в сети YOLO-NAS. Фреймворк для работы с ней - super-gradients (в питоне). Загружаю сеть:
yolo_nas = super_gradients.training.models.get("yolo_nas_s",
num_classes=8,
сheckpoint_path="...RUN_20240221_191844_692568/ckpt_best.pth"
)
В ответ на print (yolo_nas) выводится следующее:
YoloNAS_S(
(backbone): NStageBackbone(
(stem): YoloNASStem(
(conv): QARepVGGBlock(
(nonlinearity): ReLU(inplace=True)
(se): Identity()
(branch_3x3): Sequential(
(conv): Conv2d(3, 48, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
(bn): BatchNorm2d(48, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
)
(branch_1x1): Conv2d(3, 48, kernel_size=(1, 1), stride=(2, 2))
(post_bn): BatchNorm2d(48, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
(rbr_reparam): Conv2d(3, 48, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1))
)
)
**(stage1)**: YoloNASStage(
**(downsample)**: QARepVGGBlock(
(nonlinearity): ReLU(inplace=True)
(se): Identity()
**(branch_3x3)**: Sequential(
(conv): **Conv2d**(48, 96, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
(bn): BatchNorm2d(96, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
)
...
...
и так далее
Видно, что слои (например, Conv2d) - это функции модуля torch.nn, но как добраться до свойств конкретного слоя, например получить тензор весов ядра в Stage1 -> downsample -> branch_3x3 -> Conv2d ?
В книжках по Pytorch говорится только про свойства самого слоя Conv2d: есть свойство Conv2d.weight. В документации (если это можно так назвать) на yolo-nas ничего не нашел - что за объект выдает super_gradients.training.models.get?
И как, используя его, пройти через все эти Stage1 -> downsample -> branch_3x3 до самого Conv2d?