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參數進行修改,一般是兩處。