pytorch版本yolov3模型转caffe

目前我有一个pytorch版本的yolov3模型,该模型有 X.cfg和X.pt两个文件
在这里插入图片描述
该格式可以与两个主流pytorch工程一致:
https://github.com/ultralytics/yolov3
https://github.com/eriklindernoren/PyTorch-YOLOv3

由于caffe没有yolov3所需的upsample层与yolo层,所以需要自己来实现。。不要急,有大神开源项目:
https://github.com/eric612/MobileNet-YOLO
你需要做的就是把这个caffe工程给编译一下。该caffe工程附加了很多其余功能,作者提供了CMakeLists.txt,(注意不要从别的caffe文件中复制过来Makefile与Makefile.config来编译,这个坑我已经踩过了。。)编译需要注意事项:
1、python2(该工程默认就是py2,文件中可以选择使用py3,但是会报很多错误)
2、opencv3(这个工程还包含ssd检测模块,需要opencv3中videoio.hpp来支持)
3、caffe所需一大堆依赖库,可参考我的博客:https://blog.csdn.net/l297969586/article/details/61209313

编译完成后,进入这个caffe工程的
CAFFE_ROOT/models/darknet_yolov3/ 目录下
打开darknet2caffe.py ,修改

#修改为自己的caffe路径
caffe_root = '/home/ubuntu/workspace/pytorch2caffe/caffe-yolo-new/'
#修改需要转的pytorch模型路径
weights_det = '/home/ubuntu/workplace/darknet_yolov3/yolov3.pt'
cfg_det = '/home/ubuntu/workplace/darknet_yolov3/yolov3.cfg'
#修改为自己的输入size(由于我的模型不是正常的yolov3,做过裁剪和尺寸调试)
model_det = Darknet(cfg_det, 512)
#修改为自己的输入size(由于我的模型不是正常的yolov3,做过裁剪和尺寸调试)
input_var = Variable(torch.rand(1, 3, 512, 512))
#修改输出prototxt与caffemodel的路径
pytorch2caffe(input_var, output_var, 'deploy.prototxt', 'model.caffemodel')

然后就开始运行darknet2caffe.py ,就会得到model.caffemodel和deploy.prototxt。

此时关键的来了!!!!你会发现这个caffemodel根本没法用!!!
问题在于:其实这个工程是转darknet至caffe的,pytorch文件中pt文件不是纯数字组合。在写入caffemodel的时候,会将类似与文本的信息如“conv_layer_1”当做是数字处理,从而打印输出caffemodel内容时会发现很多 nan和-nan的数字。

我的处理方式,重新训练。。
那上文说的这些不是白扯么,不其实刚才的工作已经将这个工作完成近百分之80了。因为yolo版本caffe有了,deploy.prototxt有了,对照这deploy.prototxt仿照 CAFFE_ROOT/models/darknet_yolov3/ 下的任意一个test.prototxt和train.prototxt就可以写出你自己的test和train对应的prototxt。

开始训练,大功告成。
附几张caffe训练好的效果图:
在这里插入图片描述
在这里插入图片描述

要将YOLOv8模型换为Caffe模型,可以按照以下步骤进行操作: 1. 首先,进行数据准备工作,包括准备训练数据和标签。确保数据集的格式符合YOLOv8的要求。 2. 使用YOLOv8的训练脚本进行模型训练。根据你的需求,可以使用PyTorch或者其他框架进行训练。训练过程中,可以根据需要调整模型的超参数。 3. 训练完成后,将训练好的模型保存为.pth文件。这个文件包含了模型的权重和结构信息。 4. 接下来,将.pth文件换为ONNX格式。使用工具或者库将.pth文件换为ONNX格式的模型文件。这个过程可以使用PyTorch提供的工具或者其他第三方库来完成。 5. 在ONNX模型中,可能会有多个输出。根据引用\[3\]中的描述,YOLOv8模型的输出包括类别和框的结果。确保输出结构进行优化,使得每个特征层分别输出类别和框的结果。 6. 最后,将优化后的ONNX模型换为Caffe模型。使用工具或者库将ONNX模型换为Caffe模型文件。这个过程可以使用ONNX官方提供的工具或者其他第三方库来完成。 通过以上步骤,你可以将YOLOv8模型成功换为Caffe模型,以便在Caffe框架中使用。 #### 引用[.reference_title] - *1* *3* [Yolov8从pytorchcaffe (三) 训练模型换到caffemodel](https://blog.csdn.net/wangxiaobei2017/article/details/129746576)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Yolov8从pytorchcaffe (一) 环境搭建](https://blog.csdn.net/wangxiaobei2017/article/details/129202014)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值