nnie yolov5初探

硬件hisi3519av100 

yolov5s移植,鉴于yolov5中的upsample,silu,maxpool等的op在nnie上不一致,做出如下修改。

## 模型修改。
### 参考官方的yolov5 4.0版本
+ git clone -b v4.0 https://github.com/ultralytics/yolov5.git/ 


### 修改处1, utils/activations.py  增加如下:
    class ReLU(nn.Module): 
        @staticmethod
            def forward(x):
                return nn.ReLU(x)

### 修改处2,models/common.py 35行修改激活函数
+    ~~self.act = nn.SiLU() if act is True else (act if isinstance(act, nn.Module) else nn.Identity())~~

+    添加 self.act = nn.ReLU() if act is True else (act if isinstance(act, nn.Module) else nn.Identity())


### 修改处3, models/comon.py 98行修改maxPool ,修改ceil_mode方式
+    self.m = nn.ModuleList([nn.MaxPool2d(kernel_size=x, stride=1, padding=x // 2, ceil_mode = True) for x in k])

### 修改处4 modes/yolov5s_
+   ~~[-1, 1, nn.Upsample, [None, 2, 'nearest']],~~

+   添加 [-1, 1, nn.ConvTranspose2d, [256,256, 2, 2]],

### 修改处5, models/yolov5s.yaml
+   ~~[-1, 1, nn.Upsample, [None, 2, 'nearest']],~~

+   添加 [-1, 1, nn.ConvTranspose2d, [128 ,128, 2, 2]],

### 转换ONNX修改: models/export.py , 修改了opset_version
+    torch.onnx.export(model, img, f, verbose=False, opset_version=10, input_names=['images']...

### 参考 https://github.com/Wulingtian/yolov5_caffe
+    将ONNX 转为caffe模型。

### 最后caffe模型中的premute和reshape层,nnie不支持,去掉premute层(一共有三层)reshape改为需要的输出。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值