darknet开源地址:https://github.com/pjreddie/darknet
darknet作者维护官网:https://pjreddie.com/darknet/
darknet作者给出的安装教程:https://pjreddie.com/darknet/install/
darknet是yolo算法的作者Joseph Redmon使用c语言编写的一个开源卷积神经网络训练框架
如果项目中用到了yolo,darknet框架是你的不二之选
一、Linux下安装darknet
ctrl+T打开一个linux终端,输入以下命令
git clone https://github.com/pjreddie/darknet.git
这条命令将会从github上克隆darknet最新的版本文件到当前目录下
你也可以先通过cd命令进入到指定的目录下,再使用git clone命令
出现错误,未安装git,按照提示进行修复
sudo apt-get update
sudo apt install git
成功clone到本地,可以在主目录下看到darknet文件夹
下面开始编译,先安装make
sudo apt install make
sudo apt install make-guile
又出现错误了,按照网上教程,删除这两个文件
sudo rm -r -f /var/lib/dpkg/lock-frontend
sudo rm -r -f /var/lib/dpkg/lock
sudo rm -r -f /var/cache/apt/archives/lock
sudo rm -r -f /var/cache/apt/archives
依次安装make和make-guile,也可以只安装make,安装完成如下
执行make命令,出现错误,gcc也没安装
原谅这是我是刚安装好的linux,只安装了一个搜狗输入法和wps
sudo apt install gcc
再执行make命令进行编译,结果发现g++也没安装,
此时已经出现了太多的错误,但这对于我这样的新手来说error是家常便饭
根据《论程序员的自我修养》一书,我们也不能摔键盘,要静下心来查错,继续安装
sudo apt install g++
再次执行make,终于成功了
安装完成后,darknet文件目录下多出了一些文件
测试安装结果
./darknet
当出现图中所示结果时,说明我们已经能够使用darknet框架,可以开始yolo训练之旅了
我们可以先使用imtest
例程测试图像加载和显示,看一下效果
./darknet imtest data/eagle.jpg
出现了一堆长相一样的老鹰的图像,测试成功
根据提示信息,发现我们没有安装OpenCV
我们最好安装一下OpneCv,除非你有理由不想安装,因为这样可以方便的处理各种格式的图像
如果不安装OpenCV,直接跳到第三步,也是可以使用darknet的
二、OpenCV安装
详细教程可参考:https://www.cnblogs.com/zzy1024/p/11405641.html
执行cd命令,跳转到指定目录下
1、从github上克隆OpenCV核心库到本地
cd ..
git clone https://github.com/opencv/opencv.git
当发现下载速度比较慢的时候可以考虑直接从github上下载zip文件到本地
下载地址:https://github.com/opencv/opencv
2、克隆OpenCV的扩展库OpenCV_Contrib到本地,如果不安装扩展库,也是可以使用OpenCV的,但是建议安装
git clone https://github.com/opencv/opencv_contrib.git
同样,如果觉得下载过慢,可以直接到github下载zip文件到本地
github 下载地址:https://github.com/opencv/opencv_contrib
移动扩展库文件到opencv目录下,并提取文件(解压)
注意文件名后缀,git clone时没有master后缀,使用zip下载时有master后缀
3、添加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 python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
第一条命令安装了一个build-essential库,可以方便的进行编译
编译程序有了这个软件,它才知道头文件和库函数在哪,最后才形成一个开发环境。
第二条命令安装了一个cmake、git等等软件,其中cmake是一个跨平台的编译工具
第二条命令安装了一些库,包括python等等
如果执行第三条安装命令时出错,再执行下面的命令解决
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
再执行第三条命令
4、开始编译OpenCV
在opencv目录下创建文件夹 build(可以根据自己习惯命名)
cd opencv
mkdir build
cd build
在编译前查看opencv_contrib文件夹名称,如果采用git下载,那就是这个名称
如果是zip下载后解压,文件名就是opencv_contrib_master,可以考虑重命名为opencv_contrib
使用cmake编译opencv_contrib扩展库源文件到当前目录下
注意命令中结尾的扩展库源文件名要与实际保持一致,请自行确认
cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..
编译成功
使用make编译opencv
cd opencv/build
make
编译过程非常漫长,如果处理器有多个核的话,可以使用以下命令加快编译速度
make -j8
参数8代表使用8核,根据自己的硬件情况选择 ,make命令默认使用1核
make编译成功
注意:可能会发生internal compiler error: Killed (program cc1plus)错误
这是因为虚拟机内存不足,可以考虑暂时给虚拟机分配大一点的内存,编译完成后再恢复原来的设置
安装python接口
sudo apt-get install python-opencv
5、测试安装结果
python
import cv2
当没有出现任何错误提示时,表示我们可以在python程序中使用OpenCV了
三、yolo下载
如果安装了OpenCV,打开darknet目录下的Makefile文件,将第三行改为OPENCV=1
在darknet-->cfg目录下(config的缩写),可以看到yolo模型各种版本的配置文件
只有配置文件还不行,需要下载yolo网络训练权重文件
我们下载yolov3的权重文件(已经训练好的文件),执行以下命令
cd darknet
wget https://pjreddie.com/media/files/yolov3.weights
权重文件237MB左右,同样,如果觉得下载过慢,可以使用一些下载工具,比如xdown,复制链接,下载即可
再从windows下复制粘贴文件到darknet目录下
当然你可以放在任意位置,但是要记住它的路径,因为后面需要用到这个文件
回过头来,在darknet->data文件夹下有几张示例图片,比如这张经典的小狗
我们将尝试使用刚才下载的yolov3权重文件和yolov3的配置文件对这张小狗进行检测
运行一下检测效果
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
上面的命令表示:运行darknet框架进行检测,其中
配置文件为darknet/cfg/yolo3.cfg
权重文件为darknet/yolov3.weights
待检测图片为darknet/data/dog.jpg
输出检测图片默认保存在darknet下
下面是见证奇迹的时刻
识别到三个物体,分别是dog、truck、bicycle,花费时间33秒左右,如果使用GPU,这个时间要短一些
保存的图片在darknet目录下,名字为predictions.jpg
你可以尝试使用data目录下的其他图片进行检测
未完待续,下一节我们将讨论yolo模型的一些理论知识
附1 xdown下载链接(只支持windows):https://xdown.org/
附2 XDM下载链接(支持windows、linux、mac)https://subhra74.github.io/xdm/
安装命令:
#进入文件所在目录,根据自己情况修改
cd 下载/xdm-setup-7.2.10
#运行安装脚本
sudo sh install.sh
双击启动XDM
新建一个下载任务,粘贴下载链接
附3:Chrome浏览器的中文翻译
进行深度学习时,我们不可避免的会浏览英文网页,对于英语基础不是很好的朋友来说,这似乎是一种痛苦。
所以我推荐使用Chrome浏览器,因为在浏览英文网页时,鼠标右键可以看到翻译中文模式,如下
但是我还是建议大家克服英语的恐惧,从一些常见的单词慢慢熟悉,通过单词翻译软件,有意识的记忆,
日积月累,英语网页的阅读速度会慢慢提高