目标检测:DA-faster-rcnn(pytorch版本)训练自己的数据集

下面是利用pytorch版本的DA-faster-rcnn训练自己的数据集流程:

代码链接:https://github.com/VisionLearningGroup/DA_Detection

说明:该代码主要基于pytorch版本的faster-rcnn修改的,至于如何使用pytorch版本的faster-rcnn训练自己的数据集参考我之前的博客;

当训练时考虑全局特征对齐gc和局部特征对齐lc时,训练命令示例如下:

 CUDA_VISIBLE_DEVICES=$GPU_ID python trainval_net_global_local.py \

                    --dataset source_dataset --dataset_t target_dataset --net vgg16 \

                    --cuda –lc  --gc

具体需要修改的文件如下:

  1. parse_func.py,在该脚本中加入自己的数据集的相关信息;
  2. factory.py,该脚本中加入lambda函数,调用自己的数据集的相关类;
  3. 仿照pascal_voc.py写自己的数据集的相关类并拷贝至/lib/datasets/下,相关的数据集py里需要重点考虑添加下标越界的检查处理和相关的devkit_path,data_path路径的设置
  4. /lib/model/faster-rcnn/resnet-global-local.py中预训练模型地址修改成自己预训练模型的存放地址,也可以直接在config.py中修改_C.RESNET_PATH等;
  5. /lib/roidb_data_layer/minibatch.py中misc的imread改成cv的imread,同时考虑rgb和bgr的相关转换;
  6. 酌情考虑修改/lib/datasets/下的voc_eval.py,该脚本主要是test阶段用于评估模型的rec(召回率)、prec(准确率)和ap(召回率和准确率围成的曲线面积)的,可以根据自己的实际情况修改,默认的计算方式根据use_07_metric而定,有voc07和07之后的两种计算方式,现在一般用的是07之后的计算方式,当然有需要的话可以自己进一步用cocoapi评估模型的检测性能;
  7. 可以根据情况修改lib/datasets/imdb.py,包括修改imdb中坐标越界的处理,不然的话loss很容易出现nan;
  8. 准备own数据集,并按照voc的格式放置在data目录下,如data/vocdevkit/voc2007/目录下有Annotations、ImageSets和JPEGImages,其中Annotations目录下直接存储的数据集的所有xml标注文件,JPEGImages目录下存放的所有数据图片,ImageSets的Main目录下主要是trainval.txt和test.txt文件,主要是相应的训练或测试的数据集图片名称,注意不带路径,也不带图片后缀名,制作own datasets的相关数据时,txt文件的格式一定要注意;
  9. 清除一些不必要的缓存文件,该程序training和testing阶段都会保存大量的信息,如VOCdevkit/result下存放的testing时每个类别的检测结果的txt文件,output目录下存放的testing时总的检测结果和分类别的评估结果的pkl,以及testing时保存在vocdevkit/annotaion_cache/下的测试数据集的gt的pkl文件,训练和测试时保存在data/cache下的一些关于数据集gt和尺寸的相关文件;当需要重新训练时,一定注意清理这些缓存文件,因为程序训练和测试时默认读取的是缓存文件;
  10. 模型训练后会将pth文件存放在项目主目录的model下,testing时可以将可视化结果保存在项目主目录的results下。

你可能感兴趣的:(目标检测)