yolov3实现Kitti baseline(含评估代码:easy、moderate和hard的AP计算,fps计算)(上)

yolov3实现Kitti baseline(含评估代码:easy、moderate和hard的AP计算,fps计算)

1. 项目下载

在Linux系统下运行以下代码,下载yolov3训练代码和后面的评估代码

yolov3模型训练项目库

git clone https://github.com/bubbliiiing/yolo3-pytorch.git

评估代码项目库

git clone https://github.com/ChenhongyiYang/KITTI_evaluation_for_2d_detection.git

2. 数据集处理

2-1数据集准备

按照yolo3-pytorch项目所描述的将上一篇博客处理好的VOC的kitti数据的xml标签文件放到Annotations文件夹内,将kitti数据的png格式文件放到JPEGImages中。

本文使用VOC格式进行训练,训练前需要自己制作好数据集,
训练前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的Annotation中。
训练前将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的JPEGImages中。

2-2数据集处理

①运行以下命令,将JPEGImages文件夹内的png格式文件转换为jpg格式文件,本项目的代码只能处理jpg格式的文件。

ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.png}.jpg"'

②在运行以下命令,删除png格式的图片,本项目不需要png格式的图片

rm -r *.png

③在完成数据集的摆放之后,我们需要利用voc_annotation.py获得训练用的2007_train.txt和2007_val.txt。修改voc_annotation.py里面的参数。第一次训练可以仅修改classes_path,classes_path用于指向检测类别所对应的txt。训练自己的数据集时,可以自己建立一个cls_classes.txt,里面写自己所需要区分的类别。
model_data/cls_classes.txt文件内容为:

Car
Pedestrian
Cyclist

④修改voc_annotation.py中的classes_path,使其对应cls_classes.txt,确定mode=0,用于获取训练集、验证集和测试集并运行voc_annotation.py。

#--------------------------------------------------------------------------------------------------------------------------------#
#   annotation_mode用于指定该文件运行时计算的内容
#   annotation_mode为0代表整个标签处理过程,包括获得VOCdevkit/VOC2007/ImageSets里面的txt以及训练用的2007_train.txt、2007_val.txt
#   annotation_mode为1代表获得VOCdevkit/VOC2007/ImageSets里面的txt
#   annotation_mode为2代表获得训练用的2007_train.txt、2007_val.txt
#--------------------------------------------------------------------------------------------------------------------------------#
annotation_mode     = 0
#-------------------------------------------------------------------#
#   必须要修改,用于生成2007_train.txt、2007_val.txt的目标信息
#   与训练和预测所用的classes_path一致即可
#   如果生成的2007_train.txt里面没有目标信息
#   那么就是因为classes没有设定正确
#   仅在annotation_mode为0和2的时候有效
#-------------------------------------------------------------------#
classes_path        = 'model_data/cls_classes.txt'

3. yolov3网络训练

3-1预训练模型权重下载

下载预训练权重并查看train.py代码

链接: https://pan.baidu.com/s/1ncREw6Na9ycZptdxiVMApw
提取码: appk
#   网络一般不从0开始训练,至少会使用主干部分的权值,有些论文提到可以不用预训练,主要原因是他们 数据集较大 且 调参能力优秀。
    #   如果一定要训练网络的主干部分,可以了解imagenet数据集,首先训练分类模型,分类模型的 主干部分 和该模型通用,基于此进行训练。
    #----------------------------------------------------------------------------------------------------------------------------#
    model_path      = 'model_data/yolo_weights.pth'

3-2路径修改(开始训练)

训练的参数较多,均在train.py中,大家可以在下载库后仔细看注释,其中最重要的部分依然是train.py里的classes_path。
classes_path用于指向检测类别所对应的txt,这个txt和voc_annotation.py里面的txt一样!训练自己的数据集必须要修改!
修改完classes_path后就可以运行train.py开始训练了,在训练多个epoch后,权值会生成在logs文件夹中

#--------------------------------------------------------#
#   训练前一定要修改classes_path,使其对应自己的数据集
#--------------------------------------------------------#
classes_path    = 'model_data/cls_classes.txt'
 

你可能感兴趣的:(kitti,yolov3,深度学习,计算机视觉,目标检测)