pytorch实现的Faster-RCNN模型,参考了许多人写的代码积累起来的。
pytorch版本为1.5 python版本为python3.7(只要是3问题不大) 内存最好32G, 数据集的那个类用了空间换时间的思想, 本来需要频繁IO装载图片张量, 我写的是直接一次性全拉到内存, IO次数大大减少, 缩短了训练单张图片的时间。
checkpoints:存放训练时每个epoch得到的权重(基本上一个权重都有1G多)的包。
configs:存放配置文件的包。
nets:网络结构的包。
pre_model_weights:存放预训练的vgg16权重的包。
show_result:预测时候生成图片保存的包。
utils:一些工具函数。
kitti:kitti数据集。
https://blog.csdn.net/cj1561435010/article/details/106649040
https://blog.csdn.net/cj1561435010/article/details/106958266
训练所需要的数据集格式为VOC格式。
VOCx
--Annotations
--*.xml(存放总训练集中各个图片的标注, 图片名和标注文件名一一对应)
--ImageSets
--Main
--train.txt(总训练集中抽出一部分作为训练集的txt)
--val.txt(总训练集中抽出一部分作为验证集的txt)
--trainval.txt(总训练集中抽出一部分作为训练和验证集的txt)
--train_test.txt(总训练集中抽出一部分作为测试集的txt)
--test.txt(真正测试集的txt)
--JPEGImages
--resize_test(真正测试集中将最小边放缩到600px之后的图片路径)
--resize_train_test(总训练集中抽出一部分作为测试集中将最小边放缩到600px之后的图片路径)
--resize_trainval(总训练集中抽出一部分作为训练和验证集中将最小边放缩到600px之后的图片路径)
--testing(原始的真正测试集图片路径)
--training(原始的总训练集图片路径)
1、写入训练的txt文件
修改configs包下面的config文件中三个属性,如下图:
然后根据自己的数据集的标注文件是怎么个形式选择执行data包下面process_data.py文件中的两个方法。
我这里写了两个方法:
① 方法后缀名为_byTXT是根据txt标注生成txt文件同时生成xml标注, 这里注意要修改train_label_path为自己数据集中txt标注文件的绝对路径(process_data.py文件的最上方);
② 后缀名为_byXML是根据xml标注生成txt文件。
2、修改配置文件中两个代表类名属性(一个是元组,一个是列表)以及class_num(总类别数, 而且对应类别的下标都是从1开始, 0表示背景), 都改为自己数据集中的类别即可。
3、根据机子来修改下面的两个配置, 一个是vgg16预训练权重的路径, 另一个是device(再GPU上跑还是CPU上跑)。
4、先根据下图修改配置, 再点击nets包下面的train.py文件即开始训练。
5、训练完成之后, 先根据下图修改配置, 再点击根目录下面的show_result.py文件即开始批量保存预测后的结果到show_result的文件夹下面。