在Ubuntu16.04下使用YOLOv3实现通用物体检测

在Ubuntu16.04下使用YOLOv3实现通用物体检测

  • 使用YOLOv3
    • 环境的准备
    • 数据集的准备
    • 实现步骤
    • 控制台的log日志信息
    • 对模型进行测试
  • Set Up Image Lists

使用YOLOv3

环境的准备

数据集的准备

实现步骤

控制台的log日志信息

对模型进行测试

首先使用YOLOv3是因为它属于one-stage的目标检测算法,虽然他检测的精度比faster-RCNN、SSD低一些,但是,yolov3的检测速度是很快的。而我使用yolov3也是在出于时间有限的情况下去进行实验。而且在yolo系列当中,v3的性能要比v2和v1要好,比v4要差,这也是出于后续做yolov4的实验做对比。

我使用的环境是在Ubuntu16.04的系统上,CUDA是10.1

采用的数据集是coco2014数据集,coco数据集共有80个类别,种类相当丰富,也可以使用voc数据来完成通用物体的目标检测,我只使用了train和val,以及instances train-val这三个。没有下载测试集,是因为前3个数据量过大,达到20G,系统内存有点撑不住,所以没下。当然,训练好的模型我直接用网图或者其他图片进行检测也没问题,所以觉得也没必要下载。
下面是我coco数据集的百度网盘下载地址:链接: https://pan.baidu.com/s/1eU8bcrZXfW4SLsASzxzuLQ 提取码: 21kc

当然,你也可以根据GitHub中下载的yolov3里的get_coco_dataset.sh一个下载coco数据集的脚本文件进行下载(不推荐:数据量大,网不好这会断开连接),如图所示

#!/bin/bash

# Clone COCO API
git clone https://github.com/pdollar/coco
cd coco

mkdir images
cd images

# Download Images
#very slow downloading
#wget -c https://pjreddie.com/media/files/train2014.zip
#wget -c https://pjreddie.com/media/files/val2014.zip
wget -c http://images.cocodataset.org/zips/train2014.zip
wget -c http://images.cocodataset.org/zips/val2014.zip

# Unzip
unzip -q train2014.zip
unzip -q val2014.zip

cd ..

# Download COCO Metadata
wget -c https://pjreddie.com/media/files/instances_train-val2014.zip
wget -c https://pjreddie.com/media/files/coco/5k.part
wget -c https://pjreddie.com/media/files/coco/trainvalno5k.part
wget -c https://pjreddie.com/media/files/coco/labels.tgz
tar xzf labels.tgz
unzip -q instances_train-val2014.zip

Set Up Image Lists

paste <(awk “{print “KaTeX parse error: Can't use function '\"' in math mode at position 4: PWD\̲"̲}" <5k.part) 5k…PWD”}” trainvalno5k.txt
`

如何去实现?我自己在学完yolo算法后,到GitHub下载相关的包,然后直接根据作者的提示直接就训练了模型,这也是我接触了人脸检测算法后感觉最快上手的一次模型搭建训练的一次过程。所以,我也推荐刚刚入坑的,和我一样的朋友先用YOLO进行搭建一个属于自己的目标检测,来提高自己在深度学习领域的热情和成就感。

具体步骤如下:
1.到GitHub下拉去到任务包:git clone https://github.com/pjreddie/darknet.git
2.进入到darknet目录下,打开Makefile文件进行GPU,CUDA,OPENCV等配置,如图,设置为1,这代表着使用,反之。
在Ubuntu16.04下使用YOLOv3实现通用物体检测_第1张图片
3.打开终端,输入:make 进行编译。编译不报错则代表成功。如果你遇到报错是关于OpenCV的话,你需要从新卸载安装 OpenCV并且添加额外的Python库。具体报错的信息,直接复制到百度,就会有相应的答案,这个到不必担心。
4.这个时候就该处理数据集了。如果你对Linux系统不熟悉,那么这一步相对其他步骤来说比较繁琐了。不过按照步骤来倒是没什么大问题。
可以根据上面的get_coco_dataset.sh,先

mkdir coco
	cd coco
mkdir images
cd images
在images里放入那3 个数据集并且解压缩
unzip -q train2014.zip
unzip -q val2014.zip
然后退回到上一级目录,执行下面的代码就能获得数据集路径的TXT文件
cd ..
wget -c https://pjreddie.com/media/files/instances_train-val2014.zip
wget -c https://pjreddie.com/media/files/coco/5k.part
wget -c https://pjreddie.com/media/files/coco/trainvalno5k.part
wget -c https://pjreddie.com/media/files/coco/labels.tgz
tar xzf labels.tgz
unzip -q instances_train-val2014.zip
paste <(awk "{print \"$PWD\"}" <5k.part) 5k.part | tr -d '\t' > 5k.txt
paste <(awk "{print \"$PWD\"}" <trainvalno5k.part) trainvalno5k.part | tr -d '\t' > trainvalno5k.txt

5.处理配置文件信息
配置信息有3个:
1.cfg/coco.data 分别对应了你的数据集,验证集路径,还有backup存放模型的路径
在Ubuntu16.04下使用YOLOv3实现通用物体检测_第2张图片
2.cfg/yolov3.cfg
主要是第一个net,得根据你的电脑GPU配置来选择,其中比较重要的是batch =64或者32,甚至为1都行,还有就是subduvusions=8、16、32,64这几个值都行,我在YOLOV4中只能设置64,不能是其他值。learning_rate= 0.001,在YOLOV4中是0.00263左右导致了梯度爆炸,总共训练500200次,但是到2W的时候数据loss就开始收敛了,我训练了5W次,效果还行在Ubuntu16.04下使用YOLOv3实现通用物体检测_第3张图片
6.开始训练

./darknet detector train cfg/coco.data cfg/yolov3.cfg

控制台的log日志信息

58427是训练的次数

模型测试

./darknet detector test cfg/coco.data cfg/yolov3.cfg backup/yolov3_50000.weights data/carandperson.jpg 

在训练命令的基础上,将train改成test 后面在加上backup中最后训练的模型名称 空格 加上图片路径
在Ubuntu16.04下使用YOLOv3实现通用物体检测_第4张图片

你可能感兴趣的:(在Ubuntu16.04下使用YOLOv3实现通用物体检测)