当作笔记

首先是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/releases​github.com

 

https://github.com/opencv/opencv_contrib/releases​github.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

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐