深度学习发展到现在,各路大神都发展出了各种模型。在深度学习实现过程中最重要的最花时间的应该是数据预处理与后处理,会极大影响最后效果,至于模型,感觉像是拼乐高积木,一个模块一个模块地叠加,拼成最适合自己的模型。
1 数据预处理
1.1 图像切割
一般而言,训练集会是一整张大图,所以需要自己切割成小图训练,可以做切割,也可以在训练时划窗读取,最好先做切割,可以检查数据。切割的图片大小根据服务器性能来看,12G的GPU切为256或512的比较合适一些。
切割的时候最好有重叠的切割,至于重叠率可以根据实际情况自己做一些尝试,这样可以尽量避免将要识别的物体切割,导致模型训练时不能很好地识别该类物体。同理,在模型预测时,在边缘部分的预测结果也不准确,需要重叠切割,并且取中间部分的结果,舍弃边缘部分。
1.2 数据平衡
待识别的物体如果占比不平衡,则会很影响模型,比如草地占比99%,喷泉占比1%的数据,只要模型将所有物体都分类为草地,那么模型的准确率也会达到99。
所以我们希望模型的数据占比尽量达到均衡。为此有很多策略可以使用,先进行数据统计,数据分析后再制定策略。
1.2.1 数据统计
拿到数据后一般需要分析标签中各个类别的占比。
import gdal
import numpy as np
data_path = r'/home/fsl/image_2_label.png'
src = gdal.Open(data_path).ReadAsArray()