【干货】mmdetection使用coco格式的CrowdHuman数据集进行训练及测试(附调参过程)

注:从mmdetection使用coco数据集在faster rcnn训练和测试,到了解crowdhuman数据集标注格式,再到crowdhuman的标注格式转换成coco数据集标注格式,现在就到了最终目的了:训练转换后的Crowd Human数据集。

以下是博主这一过程中整理的记录:

参考博客:

训练CrowdHuman数据集是实验室师兄安排给我的任务,因为刚接触目标检测,所以,片面的以为,训练CrowdHuman数据集(已经转换成coco标注格式),就是跟参考博客中的第一篇博客一样,简单设置一下,直接训练。训练的模型真真惨不忍睹。

看一下我的数据集格式:
crowdhuman数据集放在mmdetection文件夹下的data里。
在这里插入图片描述
odgt文件是crowdhuman数据集的原标注文件,两个json文件是本次要用的标注文件,是将crowdhuman数据集的odgt文件转换成coco数据标注格式后的json文件。转换过程记录和代码可看上面的第四篇博客
在这里插入图片描述

错误的CrowdHuman训练记录:

这次记录是完全参考第一篇博客的训练过程。当然博主并不是说这篇博客写得有误。错误是针对于CrowdHuman这个数据集而言的。

错误的原因是:博主相当于将crowdhuman的数据集当成了普通数据集处理了,使得训练后验证的量化结果,跟论文所给的实验结论数据相差甚大

正确的是应该参考论文中的实验细节,根据它的要求,来进行调整参数。

这是我的test的结果,可以看得出来,AP值很低(AP 应该是IoU=0.5那行)。
在这里插入图片描述
这是论文中给的实验数据。
在这里插入图片描述
这是训练的模型进行测试一张图片的结果,效果也是极差。(测试代码 这篇博客里有)
在这里插入图片描述
对比一下coco数据集训练的模型,跑上面图片的结果:
在这里插入图片描述
上面训练的模型,博主只改动了以下几处:
首先说明的是我的数据集类别一共只有2个,分别是:‘person’, ‘mask’, 。且我跑的模型是’configs/faster_rcnn_r50_fpn_1x.py’。

1.定义数据种类,需要修改的地方在mmdetection/mmdet/datasets/coco.py。把CLASSES的那个tuple改为自己数据集对应的种类tuple即可。例如:

CLASSES = ('person', 'mask')

2、接着在mmdetection/mmdet/core/evaluation/class_names.py修改coco_classes数据集类别,这个关系到后面test的时候结果图中显示的类别名称。例如:

def coco_classes():
    return [
        'person', 'mask'
    ]

3、修改configs/faster_rcnn_r50_fpn_1x.py中的model字典中的num_classes、data字典中的img_scale和optimizer中的lr(学习率)。例如:

num_classes=2,#类别数+1,虽然是两个类别,但其实只跑了person这一类而已
img_scale=(640,478), #输入图像尺寸的最大边与最小边(train、val三处都要修改)
optimizer = dict(type='SGD', lr=0.0025, momentum=0.9, weight_decay=0.0001) #当gpu数量为8时,lr=0.02;当gpu数量为4时,lr=0.01;我只要一个gpu,所以设置lr=0.0025

ok,以上就是修改的过程,据博主卑微的经验,这样的修改,应该是初级的,也就是说,适用于所有自定义的coco格式的数据集训练,具体的改进调优,则是在这基础之上再进行修改。


正确的CrowdHuman训练记录:

在Crowdhuman的论文中,实验的细节原文是这样说的:

We use the same setting of anchor scales as [15] and [16]. For all the experiments related to full body detection, we modify the height v.s. width ratios of anchors as {1 : 1,1.5 : 1,2 : 1,2.5 : 1,3 : 1} in consideration of the human body shape. While for visible body detection and human head detection, the ratios are set to {1 : 2,1 : 1,2 : 1}, in comparison with the original papers. The input image sizes of Caltech and CityPersons are set to 2× and 1× of the original images according to [31]. As the images of CrowdHuman and MSCOCO are both collected from the Internet with various sizes, we resize the input so that their short edge is at 800 pixels while the long edge should be no more than 1400 pixels at the same time. The input sizes of Brainwash is set as 640 × 480.
We train all datasets with 600k and 750k iterations for FPN and RetinaNet, respectively. The base learning rate is set to 0.02 and decreased by a factor of 10 after 150k and 450k for FPN, and 180k and 560k for RetinaNet. The Stochastic Gradient Descent (SGD) solver is adopted to optimize the networks on 8 GPUs. A mini-batch involves 2 images per GPU, except for CityPersons where a mini-batch involves only 1 image due to the physical limitation of GPU memory. Weight decay and momentum are set to 0.0001 and 0.9. We do not finetune the batch normalization [11] layers. Multi-scale training/testing are not applied to ensure fair comparisons.

中文翻译:
我们使用[15]和[16]中相同的锚尺度设置。对于所有与整体人体检测相关的试验,我们修正锚窗的高宽比为{1:1, 1.5:1, 2:1, 2.5:1, 3:1},以适应人体形状。而对于可见人体检测和头部检测,比例设置为{1:2, 1:1, 2:1}。根据[31],Caltech和CityPersons的输入图像尺寸设置为原图像的2倍和1倍。因为CrowdHuman和MSCOCO的图像都是从互联网上收集的,尺寸不一,我们改变图像尺寸,使其短边为800像素,同时长边不应超过1400像素。Brainwash的输入大小设置为640×480。
对于FPN和RetinaNet,我们训练所有的数据集迭代次数分别为60万次和75万次。基准学习速率为0.02,对于FPN,在15万次和45万次后除以10,对于RetinaNet在18万次和56万次后除以10。采用SGD在8GPU上优化网络。Mini-batch大小为每GPU 2幅图像,在CityPersons上是个例外,由于GPU内存的限制所以为每GPU 1幅图像。权值衰减和动量设置为0.0001和0.9。我们没有精调批归一化层[11]。公平起见,没有进行多尺度训练/测试。

针对论文所说的,我的configs/faster_rcnn_r50_fpn_1x.py文件内容如下(后文有具体的修改过解析):

# model settings
model = dict(
    type='FasterRCNN',       #model类型
    pretrained='modelzoo://resnet50',   #预训练模型
    backbone=dict(
        type='ResNet',      #backbone类型
        depth=50,			#网络层数
        num_stages=4,		#resnet的stage数量
        out_indices=(
  • 9
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 40
    评论
CrowdHuman数据集可以通过将其标注文件转换为COCO数据集格式进行转换。这个转换过程可以通过使用mmdetection工具包中的代码来完成。首先,你需要将CrowdHuman数据集的原始标注文件(odgt文件)转换为COCO数据集的标注格式(json文件)。转换过程中,你可以参考博主的博客中提供的代码和记录\[2\]\[3\]。 转换后的COCO格式的标注文件可以在mmdetection文件夹下的data文件夹中找到。这个文件夹中包含了两个json文件,它们是将CrowdHuman数据集的odgt文件转换成COCO数据集标注格式后的结果。 通过这个转换,你就可以使用转换后的CrowdHuman数据集进行训练了。你可以在mmdetection的configs文件夹中找到相应的配置文件,根据你的需求进行相应的设置\[1\]。 总结起来,要将CrowdHuman数据集转换为COCO格式,你需要进行以下步骤: 1. 使用mmdetection工具包中的代码将CrowdHuman数据集的odgt文件转换为COCO数据集的标注格式。 2. 在mmdetection的data文件夹中找到转换后的COCO格式的标注文件(json文件)。 3. 根据你的需求,在mmdetection的configs文件夹中选择相应的配置文件进行训练。 希望这个回答对你有帮助!\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [【干货mmdetection使用coco格式的CrowdHuman数据集进行训练测试调参过程)](https://blog.csdn.net/qq_41375609/article/details/95336216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值