linux系统下yolov4安装
当作笔记首先是python(感觉第一次就是因为用anaconda默认安装的3.8版本,然后numpy和opencv装不上去,后面又卸载python,导致系统崩了)这里用的python3.6版下面是链接https://www.python.org/downloads/source/然后是tar -zxvf Python-3.6.12.tgz(对源码进行解压)cd Python3.6.12./conf
·
当作笔记
首先是python(感觉第一次就是因为用anaconda默认安装的3.8版本,然后numpy和opencv装不上去,后面又卸载python,导致系统崩了)这里用的python3.6版
下面是链接https://www.python.org/downloads/source/
然后是tar -zxvf Python-3.6.12.tgz (对源码进行解压)
cd Python3.6.12
./configure --prefix=/usr/local (配置安装路径)
sudo apt-get install update (更新源地址)
make&&sudo make install
没找到make就安装gcc sudo apt-get install gcc 再执行上一步
numpy同理进行安装,http://jaist.dl.sourceforge.net/project/numpy/NumPy/1.9.0/numpy-1.9.0.zip
然后解压
unzip numpy-1.9.0.zip
进入解压目录
cd numpy-1.9.0
运行解压目录里的setup.py 文件(root环境下,进root是:sudo su - root)
python setup.py install
接下来是最麻烦的,安装opencv
先下载依赖文件,这一步非常重要,如果是缺少某个依赖文件,编译过程也不会出错,但是在使用opencv函数的时候就是提示错误,只能删了重新编译,非常的坑。
所以一定要先下载依赖文件。
所以一定要先下载依赖文件。
所以一定要先下载依赖文件。
通过以下命令来安装依赖文件。
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install ffmpeg
python-dev libjasper-dev这两个不太好安装,那就先安装aptitude(sudo apt-get install aptitude)有人说先N后y,但是我好像都是直接y,N之后好像直接停止了
这里再列一个问题:有人可能会这样去弄
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
然后sudo apt-get update的时候就出现了什么数字签名有问题之类的,怎么解决呢?就cd到/etc/apt/下,将sources.list.d以及里面的内容全部删除(sudo rm -r /etc/apt/sources.list.d/)
好像add-repository命令改的就是sources.list.d
然后sudo apt-get update一下就好了
从GitHub下载opencv和opencv_contrib源码,可以修改源,就是该sources.list文件里面的内容(我之前为了解决上一个问题,把list文件删了)sudo gedit /home/名称/ect/apt/sources.list
然后修改就好了,可以搜一下怎么改
我这里用的都是4.2.0的版本。
OpenCV和contirb的源码下载路径:
https://github.com/opencv/opencv/releasesgithub.com
https://github.com/opencv/opencv_contrib/releasesgithub.com
然而在编译的时候会出现不完全的情况,往往出现的问题是缺少boostdesc_bgm.i等问题。所以我们需要提前下载好这些文件,以防不时之需。文件我已经集合在了我的GitHub里面。
GitHub地址:
https://github.com/omega-Lee/OpenCV-boostdesc-vgg-github.com
第三步:通过命令解压opencv和opencv_contirb:
tar -zxvf opencv-4.2.0.tar.gz
tar -zxvf opencv_contirb-4.2.0.tar.gz
第四步:通过命令把contrib文件移动到opencv文件夹里面:
sudo cp -r opencv_contrib-4.2.0 opencv-4.2.0
通过命令,在opencv文件夹里面新建一个文件夹bulid,然后进入这个文件夹。
sudo mkdir build
cd bulid
第五步:使用命令生成makefile文件
这里的命令不要原封不动的粘贴复制,要根据自己的路径进行修改,比如我的opencv文件夹是在/home/tony/opencv下,就可以像下面那样写。这个过程大概需要几十秒就可以完成。
命令:
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/omega-lee/opencv-4.2.0/opencv_contrib-4.2.0/modules/ ..
第六步:进行make编译
我的虚拟机是2核的所以是j2,这个根据自己的机子进行选择,多核心编译能加快速度。
sudo make -j2
在进行make的时候,会出现错误,提示你缺少.i文件。这个时候打开之前下载好的的.i文件夹里面的文件,通过命令移植到缺失目录下。
sudo cp * ../opencv_4.2.0/opencv_contrib-4.2.0/modules/xfeatures2d/src/
然后继续执行编译命令:sudo make -j2
继续等待,然后在最后的时候继续报错,这个时候系统提醒你缺少某hpp文件,不要担心,这个文件不需要下载,直接可以在opencv文件夹中找到。
通过命令打开opencv_contrib文件:
cd ./opencv-4.2.0/opencv_contrib-4.2.0/modules/xfeatures2d/test
你会发现你并没有features2d文件夹,这个文件夹在/opencv-4.2.0/modules里面。
使用命令移动这个文件夹到缺失目录下:
sudo cp -r opencv-4.2.0/modules/features2d opencv-4.2.0/opencv_contrib-4.2.0/modules/xfeatures2d/test
这下子基本问题全部解决了,继续执行make -j2命令编译。然后就可以看到100%编译完成。
接着就是安装,使用命令进行安装:
sudo make install
第七步:配置路径,执行下面命令配置环境变量,注意如果你当前使用的是fish shell,或者别的shell,请退出到bash,不然配置会出问题。
sudo gedit /etc/ld.so.conf.d/opencv.conf
这个时候你可能打开文件可能是空白的,没有关系,在文件末尾添加保存并退出
/usr/local/lib
执行生效命令:
sudo ldconfig
继续打开:
sudo gedit /etc/bash.bashrc
在文件末尾添加写入:
fi
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
expert PKG_CONFIG_PATH
保存退出。
执行更新命令:
source /etc/bash.bashrc
sudo updatedb
整个时候就完成了整个opencv的编译配置。
第八步,测试opencv
opencv内部集成了很多测试demo,可以通过执行这些demo看是否完成opencv的配置。
通过命令进入到demo中:
cd opencv-4.2.0/samples/cpp/example_cmake
因为虚拟机可能使用不了摄像头的原因,我们就稍微的修改一下代码,让程序显示一张图片就好了。
sudo gedit example.cpp
修改保存后退出进行编译操作。
sudo mkdir bulid
cd bulid
sudo cmake ..
sudo make
编译完以会得到一个可执行文件,执行后就可以看见图片了。
接下来安装yolov4,数据从这里下载https://pjreddie.com/projects/pascal-voc-dataset-mirror/
源码从这里https://github.com/AlexeyAB/darknet
更改makefile文件
GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=1 ……
如果不用gpu就不用改这里,而且得把下面一个叫做mosaic=1改成为0(但是这里不用opencv的话,上面是不是不用安装?好像是这么回事)
cd到darknet-master目录下
然后make -j2
可能会出现找不到什么core文件和version文件,得安装opencv-dev
sudo apt-get install opencv-dev
无法安装的话,就先安装aptitude,更新后再安装opencv-dev,依次顺序是n,y,y,y
再编译一下,make -j2
将train里面的VOCdevkit文件夹放在/build/darknet目录中
darknet-master/scripts下的voc_label.py拷贝至darknet目录。
打开voc_label.py
#sets=[('2012', 'train'), ('2012', 'val'), ('2007', 'train'), ('2007', 'val'), ('2007', 'test')]
sets=[('2012', 'train'), ('2012', 'val')]
最后一行
#os.system("cat 2007_train.txt 2007_val.txt 2012_train.txt 2012_val.txt > train.txt")
#os.system("cat 2007_train.txt 2007_val.txt 2007_test.txt 2012_train.txt 2012_val.txt > train.all.txt")
os.system("cat 2012_train.txt 2012_val.txt > train.txt")
darknet目录下会生2个文件:2012_train.txt和2012_val.txt
三、配置文件
1 、 打开cfg/voc.data
classes= 20 #类别数
train = /home/s/darknet-master/2012_train.txt
valid = /home/s/darknet-master/2012_val.txt
names = data/voc.names #类别名称
backup = /home/s/darknet-master/backup/#模型存放
2、将cfg/yolov4-custom.cfg进行复制,并将复制后的文件命名为yolov4-obj.cfg。
修改cfg/yolov4-obj.cfg文件:
修改6、7行,否则容易有out of memory错误
batch=16
subdivisions=32
修改20、22行
max_batches = 20000 #类别数量*2000
steps=16000,18000 #分别是0.8*max_batches,0.9max_batches
在文件中,使用Ctrl+F搜索yolo,一共出现三个地方。修改yolo下面的classes,以及yolo上面的filters:
[convolutional]
……
filters=75 #(类别数+5)*3
……
[yolo]
……
classes=20 #类别数
……
之后便是进入darknet/cfg目录找到voc.data文件,内容如下:
classes= 20 #训练的类别数
train = /home/pjreddie/data/voc/train.txt #训练集txt文件所在的绝对路径
valid = /home/pjreddie/data/voc/2007_test.txt #测试集txt文件所在的绝对路径
names = data/voc.names #训练使用的标签名文件,即刚修改的voc.names文件所在目录,这里也可是绝对路径
backup = backup #训练生成weights文件存放的路径
改为
classes= 1
train = /home/yolo/darknet/scripts/train.txt
valid = /home/yolo/darknet/scripts/2007_test.txt
names = data/voc.names
backup = backup
四、开始训练
./darknet detector train cfg/voc.data cfg/yolov4-obj.cfg yolov4.conv.137 后面一个-map 或者-dont show
五、测试
./darknet detector test cfg/voc.data cfg/yolov4-obj.cfg yolov4-obj_xxxx.weights
然后会让你给出路径,找到测试集得图片路径,就可以测试了。
也可以测试视频
./darknet detector demo cfg/voc.data cfg/yolov4-obj.cfg yolov4-obj_last.weights /home/(xxxx)/workspace/yolo4/testMP4/1.mp4
参考博客:https://blog.csdn.net/Sunhansong/article/details/108758682
和知乎:https://zhuanlan.zhihu.com/p/118222087
更多推荐




所有评论(0)