pytorch下的YOLOv3转换到caffe
1. 代码资源
2.pytorch训练自己的模型
- 详细的代码解析和训练过程可以看大神的B站视频,很详细了
3.pth到caffemodel
- 下载代码后需要安装,也可以在代码内运行
- 加载YOLO模型 和权重,直接生成prototxt 和 caffemodel
import torch
from torchvision.models import resnet
from pytorch2caffe import pytorch2caffe
import sys
sys.path.append('../yolo3-pytorch')
from yolo import YOLO
yolo = YOLO()
name='yolov3'
yolov3=yolo.net
dummy_input=torch.ones([1,3,416,416])
pytorch2caffe.trans_net(yolov3, dummy_input, name)
pytorch2caffe.save_prototxt('{}.prototxt'.format(name))
pytorch2caffe.save_caffemodel('{}.caffemodel'.format(name))
4. 遇到的坑
- 在训练之前要把上采样的模型改成
bilinear
,不然转换会报错
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021062815385052.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd4aWFvYmVpMjAxNw==,size_16,color_FFFFFF,t_70)
- 得到的prototxt与原始的yolov3进行对比,上个上采样的位置需要把类型改成
Upsample
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210628154539699.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd4aWFvYmVpMjAxNw==,size_16,color_FFFFFF,t_70)
weight_filler {
type: "xavier"
}
eps: 1e-05
5 测试
https://github.com/ChenYingpeng/caffe-yolov3
测试一下