课程简介
直播内容包含两个部分,理论和实践,课后需要完成每次的作业和一次比赛。整个课程的内容还是比较丰富的,参加课程前还是需要掌握基本的python和深度学习基础知识。
其中几次作业虽然标题不一样,数据不一样,本质上都是分类任务。day2对于不同的手势图片进行分类,day3是对于切割后的车牌字符(省份简称和字母、数字)进行分类,day4对于戴口罩和不戴口罩的人脸图片进行二分类。这三个作业主要就是去搭不同结构的网络,相同的步骤就是:
1.数据处理:从给定文件夹读数据和相应的label,自定义数据的reader
2.定义网络:卷积Conv2D,池化Pool2D,全连接Linear 分类网络主要就是使用这三种操作
3.网络训练:选定一种优化器Optimizer,设置初始学习率,迭代次数
4.模型校验:eval模式,使用测试集进行准确率评估
通用的调优技巧:
- 对于数据量较小,也比较简单的数据集,网络容易过拟合,使用常用的防止过拟合手段:数据增强,减少模型参数量,正则化,early stopping,dropout
- 每隔一定数量的minibatch就在验证集评估一次模型效果,仅保存表现最好的模型(但是在这个课程中有些混淆测试集和验证集的概念,应该说明提供的是验证集而不是测试集)
- 选择合适的优化器sgd,adam等等,设置学习率decay
- 适当调整batch_size和训练的迭代次数
比赛:人流密度检测
比赛这个课题之前没怎么接触过,想要查找相关论文的话,关键词是crowd counting,最近北航有发一篇综述
比赛时间紧张,就大概看了一下 CSRNet: Dilated Convolutional Neural Networks for Understanding the Highly Congested Scenes, CVPR2018
整个网络架构很简单,就是vgg backbone接空洞卷积,生成密度图,论文里写到配置b效果最好。
比赛中提供数据的标注方式有两种:1.number+ 人的检测框 2.number + 头部点
CSRNet需要将标注转换成密度图,然后进行训练,实际跑下来,效果不是很好,和其他同学交流下来做到的精度度也是差不多
排名比较靠前的方案有:直接回归,目标检测,最后请了第二名同学来分享,用的方法是头部点转头部框,检测头部+检测人 接nms,想法还是挺好的。
实际上比赛的数据并不是非常crowd,一张图像里至多也就几十人,最少两三人。
对于这个方向之后有空会研读一下综述论文,感觉这个课题还是挺有意思的,而且感觉还有继续挖掘的潜力。