pytorch-YOLOv3移植到寒武纪
pytorch-YOLOv3移植到寒武纪
文章目录
- pytorch-YOLOv3移植到寒武纪
- 参考
- 新建docker
- make caffe
- caffe扩展
- pip install torch
- 转换结果修改
参考
- 1、Darknet2Caffe 大概步骤
- 2、ChenYingpeng/darknet2caffe
- 3、基于Docker的Caffe编译(CUDA11的makefile版)
- caffe的编译是用我的这个博客,只用到caffe编译部分:
- 4、官方镜像园
- 5、ImportError:No module named builtins
新建docker
裸机也可以哈,但是实验室的服务器不太好乱搞,就用了docker
#!/bin/bashexport MY_CONTAINER="darknet2caffe" num=`sudo docker ps -a|grep "$MY_CONTAINER"|wc -l` echo $num echo $MY_CONTAINER if [ 0 -eq $num ]; thensudo docker run --gpus all \--ipc=host \-it \--privileged \--name $MY_CONTAINER \-v $PWD/caffe-env:/home/caffe-env \-w /home/caffe-env \4d1a8aaef572 \/bin/bash echo $MY_CONTAINER else sudo docker start $MY_CONTAINERsudo docker exec -w /home/R2CNN -ti $MY_CONTAINER /bin/bash fi
主体逻辑其实十分简单,查看有没有容器名相同的容器,有的话直接start&exec,没有就run一个,并制定映射目录和工作目录
4d1a8aaef572是我自己保存的caffe镜像,并没有上传,cuda11的话可以用这个代替:0ec3cd91fe0b,纯净的cuda11,然后看一下基于Docker的Caffe编译(CUDA11的makefile版)配置
make caffe
我直接复制了一份基于Docker的Caffe编译(CUDA11的makefile版)配置好的caffe来make,省去了很多配置的时间,大概指令就是:
make all make runtest make pycaffe
如果遇到
ImportError: No module named caffe
的话,可能是没有指定caffe的地址export PYTHONPATH=/your-caffe-root/caffe/python:$PYTHONPATH
caffe扩展
根据ChenYingpeng/darknet2caffe的readme中提到
#1、Copy caffe_layers/mish_layer/mish_layer.hpp,caffe_layers/upsample_layer/upsample_layer.hpp into include/caffe/layers/. #2、Copy caffe_layers/mish_layer/mish_layer.cpp mish_layer.cu,caffe_layers/upsample_layer/upsample_layer.cpp upsample_layer.cu into src/caffe/layers/. #3、Copy caffe_layers/pooling_layer/pooling_layer.cpp into src/caffe/layers/.Note:only work for yolov3-tiny,use with caution.#4、Add below code into src/caffe/proto/caffe.proto. / LayerParameter next available layer-specific ID: 147 (last added: recurrent_param) message LayerParameter {optional TileParameter tile_param = 138;optional VideoDataParameter video_data_param = 207;optional WindowDataParameter window_data_param = 129;# 注意这里指的是在LayerParameter里面加上下面两行,149和150可以自定只要caffe.proto.里面没有就行 ++optional UpsampleParameter upsample_param = 149; //added by chen for Yolov3, make sure this id 149 not the same as before. ++optional MishParameter mish_param = 150; //added by chen for yolov4,make sure this id 150 not the same as before. }// added by chen for YoloV3 # 注意这里指的是加上新类,caffe原本没有Upsample,需要加上 ++message UpsampleParameter{++ optional int32 scale = 1 [default = 1]; ++}# 这个是给YOLO-tiny用的 // Message that stores parameters used by MishLayer ++message MishParameter {++ enum Engine {++ DEFAULT = 0; ++ CAFFE = 1; ++ CUDNN = 2; ++ } ++ optional Engine engine = 2 [default = DEFAULT]; ++}
然后重新编译,可以大胆的用-j8来加速
pip install torch
- 由于是py2,因此从官方镜像园中找一个适合py27的torch.whl直接本地pip即可
- torchvision的话等待pytorch安装完成之后再直接
pip install torchvision
即可安装兼容的版本 - 可能会遇到:
ImportError:No module named builtins
,这时候pip install future
即可
转换结果修改
在寒武纪中的caffe的配置方式有稍许不同
layer {bottom: "layer70-conv"top: "layer71-upsample"name: "layer71-upsample"type: "Upsample"upsample_param {scale: 2} } # 这个层相当于Upsample层,原本参数是scale: 2,但是这里需要换成上采样的结果(前两维),这就需要稍微根据网络计算一下了,YOLO v3一共有两处,改法相同 layer {bottom: "layer70-conv"top: "layer71-upsample"name: "layer71-upsample"type: "Interp"interp_param {height: 50width: 50} }
由于转换得来的prototxt没有yolo层,于是在inference中得自己做后处理,由于我的模型是剪枝过的模型,layer层数与一般的YOLO不同,这里是写死的,于是需要对应改一下层名,以及anchor大小
如此依赖便算是配置好了,运行
./inference.sh
应该就可以成功了
pytorch-YOLOv3移植到寒武纪相关推荐
- [pytorch]yolov3.cfg参数详解(每层输出及route、yolo、shortcut层详解)
文章目录 Backbone(Darknet53) 第一次下采样(to 208) 第二次下采样(to 104) 第三次下采样(to 52) 第四次下采样(to 26) 第五次下采样(to 13) YOL ...
- Pytorch | yolov3原理及代码详解(二)
阅前可看: Pytorch | yolov3原理及代码详解(一) https://blog.csdn.net/qq_24739717/article/details/92399359 分析代码: ht ...
- Pytorch | yolov3原理及代码详解(一)
YOLO相关原理 : https://blog.csdn.net/leviopku/article/details/82660381 https://www.jianshu.com/p/d13ae10 ...
- 寒武纪MLU270安装运行Pytorch yolov3实录
注:本教程仅供摩米实验室内部学习适用 硬件安装 MLU270外形类似一张显卡,需要插到主板的显卡插槽上,供电有点特殊,需要把两个2×4pin的电源插口通过一个二合一的转接线,转接成一个2×4pin的插 ...
- Pytorch——YOLOv3
YOLO: Real-Time Object Detection 官方的 目标检测之 YOLOv3 (Pytorch实现) 关于YOLOv3模型(原论文作者将其称之为" ...
- pytorch YoLOV3 源码解析 train.py
train.py 总体分为三部分(不算import 库) 初始的一些设定 + train函数 + main函数 源码地址: https://github.com/ultralytics/yolov3 ...
- 学习记录——Pytorch模型移植Android小例子
提示:注意文章时效性,2022.04.02. 目录 前言 零.使用的环境 一.模型准备 1.导出模型 2.错误记录 2.1要载入完整模型(网络结构+权重参数) 2.2导出的模型文件格式 二.Andro ...
- Pytorch yolov3 多GPU 训练
pytorch 多gpu训练: # -*- coding:utf-8 -*- from __future__ import divisionimport datetime import torch i ...
- pytorch yolov3 代码详解_PyTorch C++ libtorch的使用方法(1)-nightly 版本的 libtorch
问题描述: 按照PyTorch中文教程的[ 在 C++ 中加载 PYTORCH 模型 ]一文,尝试调用 PyTorch模型. 1. 例子来源 在 C++ 中加载 PYTORCH 模型 我是使用Qt新建 ...
最新文章
- Maven下Flex国际化配置
- C# 的TCPClient异步连接与异步读数据
- css隐藏滚动条、兼容
- oracle rac实例切换,RAC+单实例DG的切换
- 利用WIX制作安装包(2)
- 如何爬取ajax实时加载多个ts文件的视频
- 欢迎使用CSDN-markdown编辑器--样例
- java基础 包装类
- NumPy库---Axis理解
- 《基 于 N Gram 的无词典 中文分词算法》 n-gram读感
- 轻松修复iOS系统的工具:iToolab FixGo mac中文版
- win95光盘版安装方法
- Java常见面试题:重写和重载的区别详解
- 你知道有哪些超级好用的网盘存储吗?
- 脑机接口的技术与应用
- 联想硬盘启动计算机,win7系统联想台式电脑开机提示error 1962无法找到硬盘启动的解决方法...
- 独立IP 独立访客 PV 之间的联系与区别
- 《鹊桥仙·纤云弄巧》 秦观
- html audio缓冲效果实现
- Python股票量化学习(1)——股票代码下载