kitti数据集_在KITTI数据集上训练YOLOv2-tiny(只识别car)

下面所有的所需工具都在我的github上下载
https://github.com/zssjh/KITTI-yolov2-tiny​github.com
1f546900370f70ac0c19b394d3a4579e.png

一:训练集准备

训练集下载地址:

http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=2d​www.cvlibs.net

需要下载12G的训练集图片和5m的标签文件

59f987a37282b3d3f545ed2d0d5eb3e2.png

在这里我只要求网络识别car类,需要对训练集里面的标签做一个合并和忽略,原数据集中包含'Car','Truck','Van','Tram','Pedestrian'等

所需工具:

modify_annotations_txt.py

然后按照下面操作整理训练集文件夹:

0903d0b8f45fbe4688de9435c2d51778.png

然后需要将trainval.txt重新命名为train.txt,拷贝到KITTI数据集下,即与training和testing平行的位置

所需工具:

random_split_train_val.py

二:KITTI格式转化为VOC格式(YOLO训练只接受VOC格式)

所需工具:

nghiattran/vod-converter​github.com
0685fb708c39b38759b1d32a0019224f.png

执行命令:

python vod_converter/main.py --from kitti --from-path data/KITTI --to voc --to-path data/kitti-voc

在这个过程中我遇到了下面的几个问题,并给出解决办法:

13cb19c2b8923a3c392080f3521df3bd.png

aa2a496e50e23792f621e406fae29175.png

成功之后发现转化后的数据集格式为:

cfb55997d16f51995007f7d0d88d86d9.png

这时候会在 /kitti-voc/VOC2012/ImageSets/Main 下面生成一个trainval.txt文件, 我们需要将上面生成的train.txt和val.txt文件都放到这, 并将val.txt改成test.txt. 还将目录中的VOC2012改成了VOC2007了.

3251b694e28a7a1cf1d047bb92feb5d9.png

三:将准备好的数据集VOC2007放在darknet工程中

darknet/data/kitti/VOCdevkit/VOC2007

四:修改voc_label.py文件适应自己的数据集

所需工具:

voc_label.py(里面已经修改好了下面的三步)

(1)修改sets

(2)修改classes

039577c7f4363fe398794e8f5063cabf.png

(3)修改jpg-->png

654f807855da1afe2f41417382f26f01.png

然后运行 python voc_label.py,会在当前目录生成两个文件2007_train.txt和2007_test.txt,里面就是文件路径, 同时在VOCdevkit/VOC2007/目录下面还会生成一个labels/目录,用于存放对应图片的标签txt文件。

70414754dd0f513717349c466e4a5323.png

e78f5263a3b4df720281f2bba10d3fa2.png

五:修改src/data.c文件

将fill_truth_region函数里面labelpath = find_replace(labelpath, ".jpg", ".txt")的jpg全换成.png

0c73ebdc2c33b0a6c9ec3c97854a56e1.png

六:修改yolov2-tiny.cfg

所需工具:

yolov2-tiny.cfg(里面已经修改好了下面的三步)

1)注释testing,取消注释training,batch=64,subdivision=8

(2)修改classes=1,临近的filters=num*(1+1+4)=30

(3)输入图片尺寸(KITTI训练集的图片尺寸是1224*370)

cfg文件中的width和height必须能够被32整除,但是416>370,所以选择352*352

(4)为KITTI训练集重新生成anchors,修改cfg中的anchors,YOLOv2中的参数是相对于原图像的宽和高比例,不是实际的像素数,一共生成5组,每组包含一个width和一个height。

所需工具:

gen_anchors.py

5bce82985440605021b7e3dcecfa71aa.png

七:创建kitti.data,voc.names只剩下car

adc4b5c8be04360926dffb73e0967a92.png

八:重新编译darknet

make clean 
make

九:开始训练

./darknet detector train cfg/kitti.data cfg/yolov2-tiny.cfg yolov2-tiny.weights

十:输出可视化

(1)首先保存log信息

在上述的训练命令后面加上

| tee yolov2-tiny.log

(2)提取log信息

所需工具:

extract_log.py

(3)画损失值

所需工具:

train_loss_visualization.py

(4)画IOU

所需工具:

train_iou_visualization.py

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值