paddle - crowdHuman数据集训练人体识别模型
数据集annotationcrowdhuman的odgt文件各项意义转换为paddle yolo的格式输入哪些数据?输出模型数据集annotation
使用paddle paddle yolo v3的模型,将这个数据集的json内容转换为xml格式。
crowdhuman的odgt文件各项意义
参考官网:/download.html
但说得并不明确,这里对照图片总结了一下:
JSON{"ID" : image_filename, ---> filename"gtboxes" : [gtbox], ---> gtbox框列表}gtbox{"tag" : "person" or "mask", ---> mask表示是人群,或者反光,或者像人的东西,需要被忽略的数据,此时extra中的ignore = 1"vbox": [x, y, w, h], ---> visible box,可看见的部分的检测框,框坐标为左上角x,y + weight, height"fbox": [x, y, w, h], ---> full box,预测的全部的检测框,当extra的occ == 0时, 这个值和vbox相等"hbox": [x, y, w, h], ---> head box,预测头的部分的检测框"extra" : extra, ---> person额外描述"head_attr" : head_attr, ---> head额外描述}extra{ ---> 内容均为可选项"ignore": 0 or 1, ---> 对应上述mask,ignore = 1"box_id": int, ---> 当前gtbox的id"occ": int, ---> 图像是否有遮挡, =1有遮挡}head_attr{ ---> 内容均为可选项"ignore": 0 or 1, ---> 未知?"unsure": int, ---> 图像是否不确定(置信度低)"occ": int, ---> 同上}
转换为paddle yolo的格式
输入哪些数据?
一开始:
box分为三类,只用于摄像头采集的场景ignore = 1,unsure = 1时, 不使用这个box遮挡:一开始occ = 1也输入,发现效果不好,loss不下降,不使用分辨率:数据集中很多人群图片,box像素太少的,不使用
发现loss一直不下降,怀疑是数据集问题。再看了下这个odgt文件中的数据,发现occ为0时,fbox和vbox相等。
于是:
分为两类,head and body,只输入vbox和hboxignore/ unsure == 1时,对应的vbox/hbox忽略head_attr的occ==1时,忽略hbox图片先缩放为XXX*480的大小,再根据缩放后的box,过滤较小尺寸的box。发现剩下的图片里,有很多人体重合度高的情形,因此再过滤次小尺寸,且occ==1的vbox调整尺寸过滤的阈值,使最终的总boxes里,两类样本数量接近。
剔除后,验证集acc在85左右就不能提升了,loss也很高。另外一个使用项目场景的图片训练的人脸识别模型,效果就非常好,实际使用到项目时,还是以项目场景的图片作训练效果最好,同时要剔除那些可能存在干扰的项。
输出模型
yolo模型的输入图片像素需要为32的倍数。采用192*192,384*384等分辨率freeze模型。较小的输入图像速度会快很多,相较之下会损失检测框精度,最主要的是画面中较小目标的识别能力。因此输入图像分辨率也是根据实际情况来权衡。
如果觉得《paddle - crowdHuman数据集训练人体识别模型》对你有帮助,请点赞、收藏,并留下你的观点哦!