1.简要说明
由于NNIE上transpose支持的顺序是固定的,shufflenet那种x=torch.transpose(x,1,2).contiguous() 的操作一般是不支持的。需要进行调整。
2.使用工程以及修改
使用的是开源工程:GitHub - Lufei-github/shufflev2-yolov5: shufflev2-yolov5:lighter, faster and easier to deploy
需要做以下修改:
2.1. pooling层参数ceil_mode
Nnie中pooling层采用的是ceil mode(其实是因为caffe不支持floor mode),需要将MaxPool2d中的一些ceil_mode参数进行调整,开启为True。注意尺寸可能会变,需要调整stride、padding等参数,这里训练640*640的话就需要调整,这里将padding=1改成padding=0才能正常运行。
原始版本:
修改后:
self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=True)
2.2.修改Upsample层为反卷积
将models里面的nn.Upsample参数进行修改,一般是两处。