数据处理
首先到手的数据是这个样子的:
从图片就可以看出来,大的大小的小,明显是不符合直接训练的要求的。
多次实验之后目前的数据处理思路:
- 获取最大的长宽,这个用numpy很好做到
- padding到大于且接近最大尺寸且为2倍数的尺寸,windows自带的有程序猿计算器可以很方便的用2进制数找到一个十进制数
- 选择一个合适的尺寸
失败尺寸192*144,用滑动窗口算法切割若干小图片,呼应2中的倍数要求 - 切割之后的数据作为原始数据
训练算法
算法这一块就只是默认的套壳unet,内部为Resnet。
模型调优
主要任务是图像分割,由于模型反复出现了梯度消失和过拟合问题,采用了很多方法收效甚微:
- 由于unet没有ps这个参数,so dropout改不了
- cut 没什么用,主要是用于梯度爆炸,没有碰到过爆炸的情况
- resnet19/34/50,12G显存对应的batchsize56/56/4,50基本不考虑使用一个epoch十几个小时非常难受。
- 早停,用处不大
- 减小验证集,有一定用处
- 注意力机制引入,用处不大
成绩与思考
单打独斗,且也没有什么好设备用。综合准确率只达到了76%&