上一期我们对大赛做了一个基本的介绍并按照Datawhale小组给出的baseline跑了一边代码,熟悉了一下整个流程。
本期我们就对数据进行进一步研究,并尝试着在baseline的基础上进行改进,看看能不能上分。
首先,我们对官方给出的数据做一个初步统计查看,有个大概的了解
一般在比赛中第一步都是要对数据进行基本的统计聚合分析,做到心中有数。但是上一期我们只是按照baseline运行,并没有对数据这一块进行深入的查看。
将数据下载完后解压,可以看到官方一共提供了9576张图片用于训练,其中有瑕疵图片5913张,无瑕疵图片3663张
下面展示其中一张:
image.png
同时提供了一个json文件,如下:
image.png
1.json文件中包含多个疵点样本,每个疵点样本都包含name、defect_name、bbox三个字段。
2.name字段为训练图片的文件名;defect_name字段为该疵点详细的疵点名称;bbox为xyxy格式坐标框;
3.对于存在多个疵点的图片,在标注文件中依次列出了每个疵点样本;
4.normal Images中的图片无疵点图片,没有在标注文件中出现。
5.defect_name字段中的疵点名称,是疵点的中文名称,编码格式为unicode。
瑕疵类别共有34个类别,在最终提交结果上对一些相似类别进行了合并后,共分为15个瑕疵类别。
说明如下:
image.png
对瑕疵进行统计汇总后如下:
image.png
从上面的统计分析可以发现样本存在目标类别分布不均衡现象。而且具体查看各个瑕疵类别时可以发现目标类别的形状差异大,有些目标相对原图过小,而有些目标呈现细长状的,如下:
image.png
由于瑕疵目标大小不一,增加了检测的难度
关于改进,我觉得可以从下面几个方面入手:
- anchor 聚类。在Faster-RCNN中,Anchor都是手动设定的,当我们使用k-means聚类算法对训练集中的边界框做了聚类分析,尝试找到合适尺寸的Anchor。如果采用标准的k-means聚类,在box的尺寸比较大的时候其误差也更大,而我们希望的是误差和box的尺寸没有太大关系。这里通过更改使其符合数据特性来提高分数
- fpn层 dcn,但是这一点对显卡开销要求较高
- GN+ws (分组Normalize)
- rpn 调参
由于Docker的设置问题,暂时未能顺利提交获取分数,等后期完善!