yolo是一个实时物体检测的算法,实时性以及精度都很不错,最近正好有项目用到,在这里总结一下,这一片主要记录在WIN以及UBUNTU下环境的配置,下面大部分过程两个系统中很相似,不同的地方我会提到
yolov4是目前比较新的一个版本,提升了检测性能以及可以在家用的GPU平台中进行训练,yolo官方的版本主要是在darknet框架下实现的,同时有很多大神把它写成了不同的版本,这里考虑到需要跨平台来使用,为了简化环境配置,使用pytorch版本YOLOv4
1.安装 Anaconda
首先我们需要安装anaconda,这是一个python的虚拟环境,当你需要配置不同的依赖环境又害怕相互冲突时这个就非常有用了,在WIN下安装过程很简单,记得添加到PATH
路径就好,这里就不用赘述了,对于Linux,我的版本是Ubuntu16.04,下载对应版本.sh
安装包后执行下列命令安装:
1 | bash ~/Downloads/Anaconda3-5.2.0-Linux-x86_64.sh |
这里第一个Anaconda3对应的是python3版本,Anaconda2则是python2版本,下载的时候要注意
输入命令后一路跟着提示完成就可以了,安装完成后命令行输入conda
如果找不到还要添加到系统的环境,输入下面命令
1 | $ sudo gedit ~/.basrc |
至此Anaconda就安装成功了
2.安装所需环境
首先创建一个虚拟环境,名称为pytorch
(可以自定义,后面一致就行)
conda create --name torch python=3.6
然后激活这个环境
conda activate torch
安装依赖项,如果安装CPU版本,建议模型的选择上选择tiny的模型,不然帧率会很低,安装命令如下:
conda install pytorch torchvision cpuonly -c pytorch
如果需要GPU版本,需要首先安装Nvidia驱动,先添加PPA源$ sudo add-apt-repository ppa:graphics-drivers/ppa
更新软件列表$ sudo apt-get update
查看当前可安装的驱动版本ubuntu-drivers devices
在列出的驱动版本中选择要安装的版本使用pip
方式进行安装,例如这里我安装的是440版本,可以执行命令sudo pip install nvidia-440
或者可以直接执行udo ubuntu-drivers autoinstall
自动安装推荐的版本
安装完成后我们在命令行执行$ nvidia-smi
正确安装会有如下输出
注意这里的cuda版本下面安装cudatoolkit
的时候要一致
执行下列命令安装pytorch,注意这里的cudatoolkit
版本和上面一致
1 | $ pytorch conda install pytorch==1.5.0 torchvision==0.6.0 cudatoolkit=10.2 -c pytorch |
3.运行摄像头的Demo实时检测
从Github中下载这个项目,打开目录下的tool
文件夹,将camera.py
移到上一层目录,这里一个摄像头检测的Demo,有一处地方需要修改,在第68行,将orig_im = plot_boxes_cv2(frame, boxes, class_names=class_names)
改为orig_im = plot_boxes_cv2(frame, boxes[0], class_names=class_names)
项目路径新建文件夹weight
,下载yolo模型文件yolov4.weights并放入,当然,配置文件路径在camera.py文件中也可以做修改自定义,在36行左右,如图所示
其中coco.names
存储检测的对象名称,.cfg
是检测网络的网络结构配置文件,.weights
是权重文件,预训练的模型
经过上面步骤后执行命令python camera.py
就可以运行啦,控制台会显示当前的fps,在我的笔记本GTX1070中可以达到10fps左右。