一、观察数据
数据的核心就是:
测试集,训练集和验证集他们虽然都是街景图片,但是由于照片角度的问题,这三个集的照片所处的“环境”不太一样,这就导致,我们训练出的数据,可能在验证集和测试集上不能达到更好地效果。
具体的来说,训练集和验证集的图片距离更远,也就是更加不好识别,测试集的图片反而更好识别一些。
训练集图片:
验证集图片:
测试集图片:
感觉测试集明显大不少。
二、解决方法
理论上我们最正确的做法是进行”目标识别“。但是如果使用传统网络,也是能有办法解决一部分的问题的。
三、传统网络解决方案
具体的做法就是,在读取数据的时候,对数据进行预处理时,对不同的集,采用不同的图片大小预处理方法。
理论上就是将训练集和验证集的图片使用Resize方法等比放大了,这样的效果想起来肯定要高不少。
transforms.Resize((80, 160))训练和验证集
transforms.Resize((68, 136))测试集
四、测试结果
正确率这次来到了0.747,感觉还可以,就是有点玩花招的感觉了,当然了这也可以算是数据处理的一部分,不过第一时间很难看出来了。
网络还有很多超参数可以去调,感觉单一传统网络的上限也就在0.85左右。本文用的RESNET18,用RESNET50再调参可能会取得更好的效果。
接下来可能会研究下TTA,集成训练。
如果能取得一定的结果,就差不多可以学习YOLO网络了。