前言
根据qiuqiu大神的https://github.com/dog-qiuqiu/Yolo-Fastest下载了训练所需文件,根据[Windows+DarkNet实现YoloV4的检测及训练(GTX1660S)(二)]实现了自己模型的生成。(https://blog.youkuaiyun.com/playezio/article/details/106461330?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161715607016780271582189%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161715607016780271582189&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-1-106461330.pc_search_result_hbase_insert&utm_term=playezio)
那么,要将darknet模型移植到嵌入式上面,需要先将darknet模型转换为caffe模型。
在qiuqiu大神给出的教程中,步骤较为简略:
我将在下方进行详细描述。
一、新建环境
为了不与电脑中的其他环境产生冲突,在anaconda中新建包含caffe、python2.7、python-opencv的环境。
- 创建python2.7环境,命名为dk2caffe
conda create -n your_env_name python=X.X
在anaconda prompt中输入以上命令,等待安装完成,得到以下截图:
激活环境
- 安装python-opencv
pip install opencv-python==4.2.0.32
- 编译cpu版的caffe
5.1 安装依赖项
在终端命令下(按住ctrl+alt+t,打开终端)输入以下命令,一条一条的输,输完一条回车自动安装
sudo apt-get install libprotobuf-dev
sudo apt-get install libleveldb-dev
sudo apt-get install libsnappy-dev
sudo apt-get install libopencv-dev
sudo apt-get install libhdf5-serial-dev
sudo apt-get install protobuf-compiler
sudo apt-get install –no-install-recommends libboost-all-dev
5.2 安装基于CPU的依赖项
5.2.1.先安装BLAS:
sudo apt-get install libatlas-base-dev
5.2.2.使用默认Python来建立pycaffe接口,安装:
sudo apt-get install python-dev
5.2.3.安装一些兼容性依赖库:
sudo apt-get install libgflags-dev
sudo apt-get install libgoogle-glog-dev
sudo apt-get install liblmdb-dev
5.3下载Caffe源码
使用qiuqiu提供的源码包
https://download.youkuaiyun.com/download/playezio/16292965
如果需要Caffe的Python接口,切换到caffe下的python目录下,输入以下命令下载python依赖库(先安装pip):
cd ./caffe/python
sudo apt-get install python-pip
然后一个一个安装python所需的计算包:
sudo apt-get install -y python-numpy
sudo apt-get install -y python-scipy
sudo apt-get install -y python-matplotlib
sudo apt-get install -y python-sklearn
sudo apt-get install -y python-skimage
sudo apt-get install -y python-h5py
sudo apt-get install -y python-protobuf
sudo apt-get install -y python-leveldb
sudo apt-get install -y python-networkx
sudo apt-get install -y python-nose
sudo apt-get install -y python-pandas
sudo apt-get install -y python-gflags
sudo apt-get install python-cython
5.4到Caffe文件夹中,拷贝一份Makefile.config.example并重命名成Makefile.config,修改该配置文件:
cd
cd ./caffe
sudo cp Makefile.config.example Makefile.config
gedit Makefile.config
使用文本编辑器打开Makefile.config,因为这里没有配置GPU,所以去掉CPU_ONLY := 1前面
的注释;(也就是去掉前面的#)由于Ubuntu16.04文件结构的变化,#Whatever else you find you needgoes here.处要改成下面这样:
修改numpy的安装目录,重新设置,需要把原本如下的内容:
修改为:
然后点击右上角保存,接下来编译:依次在终端中输入以下命令,每输一行回车:(编译需要等待一会)
如果所有测试都通过,则说明安装好了。
5.5测试
测试Caffe的Python接口,切换到caffe/python文件目录下,记录下来当前路径(pwd),输入以下命令:pwd
记录下当前路径,比如我的是:
然后输入
sudo gedit /etc/profile
然后将这句话
export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH 添加到打开的文件里
其中 path是前面pwd记录下的路径,为/home/qzf/py-ca/caffe/python
然后点击右上角保存,再点击左上角关闭,也就是小插。
然后接下来进入python环境测试
在终端输入以下命令:
python
import caffe
如果没有报错,则说明caffe——cpu版本安装成功
出现错误
make clean
make all -j8
make pycaffe
再次导入,安装缺少的包
pip install scikit-image
pip install protobuf
成功
(caffe) qzf@ubuntu:~/py-ca/caffe$ python
Python 2.7.16 |Anaconda, Inc.| (default, Sep 24 2019, 21:51:30)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import caffe
>>> exit()
二、darknet2caffe
cd darknet2caffe/
python darknet2caffe.py fastest2caffe/yolo-fatest.cfg fastest2caffe/yolo-fatest.weights fastest2caffe/yolo-fatest.prototxt fastest2caffe/yolo-fatest.caffemodel
cp MobileNetV2-YOLOv3-Nano-voc.prototxt sample
cp MobileNetV2-YOLOv3-Nano-voc.caffemodel sample
cd sample
python detector.py
第一步
python darknet2caffe.py fastest2caffe/yolo-fatest.cfg fastest2caffe/yolo-fatest.weights fastest2caffe/yolo-fatest.prototxt fastest2caffe/yolo-fatest.caffemodel
显示没有torch
安装cpu版本的torch
conda install pytorch-cpu torchvision-cpu -c pytorch
cp fastest2caffe/yolo-fatest.prototxt sample
cp fastest2caffe/yolo-fatest.caffemodel sample
python detector-fatest.py
出现错误,需要根据原有的cfg文件和生成的prototxt文件来修改检测脚本:
最后结果:
更新-----转换方式及命令
1.启动ubuntu系统
2.打开目录home/py-ca/MobileNet-Yolo/darknet2caffe/fastest2caffe
3.将要转换的权重及配置文件拷贝到目录中
3.返回上一级目录,右击 Open in Terminal
4. 在Terminal中输入 python darknet2caffe.py fastest2caffe/yolo-fatest-1203.cfg fastest2caffe/yolo-fatest-1203.weights fastest2caffe/yolo-fatest-1203.prototxt fastest2caffe/yolo-fatest-1203.caffemodel,回车执行
5. 会输出save prototxt to fastest2caffe/yolo-fatest-1203.prototxt
save caffemodel to fastest2caffe/yolo-fatest-1203.caffemodel
并保存相关文件到目录中
6. 测试生成的caffe模型,在sample文件夹下,使用命令python detector-fatest-54-1203.py,py文件中要替换新的文件名。