赞
踩
(一) yolov3训练voc数据集
1、下载安装darknet
依次执行如下三条命令
git clone https://github.com/pjreddie/darknet.git
cd darknet
make
此时,已经编译生成了darknet的可执行文件。
2、安装cuda和opencv
!!!注意:这一步只针对有GPU配置的电脑,如果没有GPU也可省略这一步。
当然,如果不安装cuda和opencv的结果就是不能测试video和webcam而已,训练速度慢一点而已。
关于opencv怎么安装,自行百度!这里默认cuda和opencv都安装成功了。
在darknet目录下,有一个makeFile文档,将里面的第一行和第二行把0改为1,若电脑安装了opencv则修改为1。
3、测试一下yolov3的效果
这时,需要去yolo官网下载一个yolov3.weights。这里给出下载命令:
wget https://pjreddie.com/media/files/yolov3.weights
可以看到,我的darknet目录下已经下载下了yolov3.weights权重。
此时就可以一睹yolov3的检测效果图啦!!!
终端下输入命令(注意一定是cd到darknet目录下操作啊啊):
./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg
OK继续,放检测结果图:
哈哈,不得不说,yolov3真的很强大,在tx2上一张图片的处理速度是0.X秒,在我教研室的服务器上是0.03秒左右,在我破电脑CPU上的速度竟然要20多秒,真的是要炸啊!!!
废话不多说,继续!下面才是博文的主题,训练voc数据。
4、在VOC上训练YOLO
python voc_label.py
之后,在VOCdevkit/VOC2007等目录下就可以看到多了一个labels文件。在darknet目录下可以看到如下5个txt文件,分别为:
2007_val.txt
2007_train.txt
2007_test_test.txt
2012_val.txt
2012_train.txt
然后将上面2007和2012 的所有验证集和训练集合成一个大的训练集,终端下执行如下命令,完成。
cat 2007_train.txt 2007_val.txt 2012_*.txt > train.txt
这时,在darknet目录下,生成了一个tran.txt的文件。这就是后续训练的训练集txt文件。
剩下的2007_test_test.txt作为测试集。
(3)修改配置文件voc.data
修改darknet/cfg目录下的voc.data,主要是train 和valid后面的路径,改为自己的路径,这个就是上一步生成的train.txt 和2007_test_test.txt的位置。classes好像默认就为20不用改。backup是训练生成权重的位置,不用理会。下面是我的截屏:
大家,对应修改即可。
(4)修改配置文件yolov3-voc.cfg
在darknet/cfg目录下,打开yolov3-voc.cfg文件,第默认的3、4行是Testing测试状态,训练时注释掉,将第6、7行training下的注释去掉。如下图:
如果电脑显存较小,则把batch该小,把subdivisions增大。例如改为32和16。
(5)下载预训练权重,训练
终端下执行如下命令 下载预训练权重:
wget https://pjreddie.com/media/files/darknet53.conv.74
训练:
./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74
OK 到这里训练voc数据集就成功了,等两三天差不多就可以了。
写的忘乎所以,晚饭还没吃,好饿!
(二) yolov3训练自己的数据集
理解了上面的训练过程之后,训练自己的数据就很容易了。这里主要是针对交通场景训练可以识别person、car、Bus、motorcycle、bicycle共5类目标。对应修改配置文件即可,具体过程如下:
1、修改voc_label.py
将voc_label.py文件中的 classes 列表修改为自己的类别,我这里只是针对交通场景的5类目标为例。
之后,运行:
python voc_label.py
然后,链接voc2007和2012 的训练文件合成一个train.txt 训练文件。
cat 2007_train.txt 2007_val.txt 2012_*.txt > train.txt
这里的操作和上面的(一)中类似。
2、配置文件voc.names的修改
打开 data 文件夹下,有一个voc.names的文件,修改成你自己的类别,默认的是20类 voc 数据集的类别。我的是这样的:
修改完,保存即可。
3、配置文件yolo-voc.cfg的修改
在darknet下的cfg文件夹中,打开yolov3-voc.cfg网络结构文件,一共修改三处。
5、开始训练
终端下执行如下命令 下载预训练权重:
wget https://pjreddie.com/media/files/darknet53.conv.74
训练:
./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74
到这里就完成了训练自己数据集过程了。
说明:这里都是对VOC数据集的操作,只训练自己的类别。当然也可以自己标注数据集来训练,这里推荐labelimg 标注工具,它标注的格式是xml, 我们可以利用voc_label.py 转换成yolo需要的 txt 格式。这都是可行的。
这里就不一一展示了,网上有很多labelimg的下载地址,使用也很简单。本质上和上面对voc数据集操作是一样的!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。