Anchor Free系列模型13

2021SC@SDUSC
CenterNet训练自己的数据集(接上文)
注意这里json文件的命名要通过datasets/pascal.py中第44到48行的内容确定的。

self.data_dir = os.path.join(data_dir, 'voc')
self.img_dir = os.path.join(self.data_dir, 'images')
_ann_name = {'train': 'trainval0712', 'val': 'test2007'}
self.annot_path = os.path.join(self.data_dir, 'annotations', 'pascal_%s.json' % _ann_name[split])

为了方便命名对这些字段进行了修改:

self.data_dir = os.path.join(data_dir, 'voc') # ./data/voc
self.img_dir = os.path.join(self.data_dir, 'images') # ./data/voc/images
_ann_name = {'train': 'train2020', 'val': 'test2020'}
# 意思是需要json格式数据集
self.annot_path = os.path.join(
self.data_dir, 'annotations', 'pascal_%s.json' % _ann_name[split])

所以要求json的命名可以按照以下格式准备:

# ./data/voc/annotations
#   - pascal_train2020
#   - pascal_test2020

数据集总体格式为:

- data
  - voc
   - annotations
    - pascal_train2020.json
    - pascal_test2020.json
   - images
    - *.jpg
   - VOCdevkit(这个文件夹主要是用于测评)
    - VOC2007
            - Annotations
                - *.xml
            - JPEGImages
                - *.jpg
            - ImageSets
             - Main
              - train.txt
              - val.txt
              - trainval.txt
              - test.txt    

2.3 其他
在datasets/pascal.py中21-22行,标准差和方差最好替换为自己的数据集的标准差和方差。

VOC_MEAN = [0.485, 0.456, 0.406]
VOC_STD = [0.229, 0.224, 0.225]

训练和测试
训练命令
训练命令比较多,可以写一个shell脚本来完成。

python train.py --log_name pascal_resdcn18_384_dp \
                --dataset pascal \
                --arch resdcn_18 \
                --img_size 384 \
                --lr 1.25e-4 \
                --lr_step 45,60 \
                --batch_size 32 \
                --num_epochs 70 \
                --num_workers 10

log name代表记录的日志的名称。

dataset设置pascal代表使用的是pascal voc格式。

arch代表选择的backbone的类型,有以下几种:

large_hourglass
small_hourglass
resdcn_18
resdcn_34
resdcn_50
resdcn_101
resdcn_152

img size控制图片长和宽。

lr和lr_step控制学习率大小及变化。

batch size是一个批次处理的图片个数。

num epochs代表学习数据集的总次数。

num workers代表开启多少个线程加载数据集。

3.2 测试命令
测试命令很简单,需要注意的是img size要和训练的时候设置的一致。

python test.py --log_name pascal_resdcn18_384_dp \
               --dataset pascal \
               --arch resdcn_18 \
               --img_size 384
flip test属于TTA(Test Time Augmentation),可以一定程度上提高mAP。

# flip test
python test.py --log_name pascal_resdcn18_384_dp \
               --dataset pascal \
               --arch resdcn_18 \
               --img_size 384 \
               --test_flip

这种方法将检测,姿态估计,甚至分割都可以统一起来,做法十分优雅。不过CenterNet仍有缺点,例如在图像中,同一个类别中的某些物体的GT中心点,在下采样时会挤到一块,也就是两个物体在GT中的中心点重叠了,CenterNet对于这种情况也是无能为力的,可能结果就是只能检测一个目标了,不过这种密集检测的问题本就是这个领域仍未解决的难题

版权声明:本文为CSDN博主「SealedHeart」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/j98548/article/details/122182697

SealedHeart

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

Day 14 - 安装与执行 YOLO

Day 14 - 安装与执行 YOLO 在 介绍影像辨识的处理流程 - Day 10 有提到 YOLO 模型是由 Joseph Redmon 所提出,而到了 YOLOV4 后才换成另外一群人继续发展,

目标检测自动标注生成xml文件

前言 在训练目标检测时,标注数据是一项简单而又浪费时间的事情,如果能够自动标注数据将可以高效的扩充数据集,从而提高训练模型的效果。 目前能想到的一种自动标注方法是先训练一个检测效果较好的模型&#xff

Yolo v5 训练自己的数据集

Yolo v5 训练自己的数据集 前言 感谢各位大佬尤其是,博主:深度学习菜鸟,参考原文链接https://blog.csdn.net/qq_36756866/article/details/109