ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-12-13 17:33:49  阅读:290  来源: 互联网

标签:yolov3 baseline 训练 py classes fps path txt annotation


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'
 

标签:yolov3,baseline,训练,py,classes,fps,path,txt,annotation
来源: https://blog.csdn.net/weixin_42189664/article/details/121908698

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有