学习目标:
数据集获取途径以及处理方面的技巧
学习内容:
老师挺年轻的,好像学生,但又专业。
这次课程的内容挺杂挺多的,数据、模型的一些问题都涉及到了。讲课过程中,弹幕也提出了许多问题,老师进行了解答。
1.数据集的获取
老师废话不多说,开门见山,依照Notebook,直接开始讲数据集的获取。
数据获取来源方面在notebook上面列举了很多,其实AI Studio上的数据集已经很丰富了。
通过老师的介绍,成功注册了kaggle账号,仿佛发现了新大陆----好多好多数据集还有别人的实现代码。又一个新手学习的天堂。
另外浏览了一下科大讯飞的平台,听老师讲解了一下COCO数据集,知道其是微软发布的。
2.图像处理
老师介绍了一下图像处理的方法,讲到为什么要处理,特别是为什么要对数据进行归一化, 目的是提高收敛效率,统一不同输入范围的数据对于模型学习的影响,映射到激活函数有效梯度的值域
,举了个使用平均值归一化的例子。
3.数据处理
老师拿VOC与COCO两种数据集分别举例介绍。详细介绍了两者不同的标注格式,标注的意思。
另外,学会了在代码中直接写模板,这样也方便数据格式转换。
#写好模板,里面的%s与%d 后面文件输入输出流改变 -------转数据集阶段--------
headstr = """
<annotation>
<folder>VOC</folder>
<filename>%s</filename>
<source>
<database>My Database</database>
<annotation>COCO</annotation>
<image>flickr</image>
<flickrid>NULL</flickrid>
</source>
<owner>
<flickrid>NULL</flickrid>
<name>company</name>
</owner>
<size>
<width>%d</width>
<height>%d</height>
<depth>%d</depth>
</size>
<segmented>0</segmented>
"""
objstr = """
<object>
<name>%s</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>%d</xmin>
<ymin>%d</ymin>
<xmax>%d</xmax>
<ymax>%d</ymax>
</bndbox>
</object>
"""
tailstr = '''
</annotation>
'''
后面讲到了划分训练集与验证集,老师按照0.85:0.15,一般按8:2也可以。
老师边讲课边运行,实现从COCO标注到VOC的转换。
自定义数据集进行训练
老师实际展示了几种常见标注工具,简单介绍了下用法。
数据增强
这里老师简单介绍了位图和矢量图的区别,讲到根据数组绘制图像,还有灰度,缩略,RGB显示图,锐化等概念
数据增强老师讲了原因,notebook上也有。防止过拟合。
提到运行时占用内存会很大。
后面老师展示了数据是否增强对训练的影响
使用了VisualDL 2.0可视化工具。
介绍mAP
最后讲到mAP
TP、FP、FN、TN这东西逻辑上有点绕。可以慢慢理解。
模型方面
老师一部分时间花在讲解训练模型的参数方面,讲解了弹幕提到的batch_size问题。说明了如何设置batch_size