智慧城市这些年抄的非常的热,主要的目的就是让人类更加方便的去生活。本项目为智慧城市类的一个图像分类的应用。通过对遥感图像(遥感图像包含的地图范围比较大)进行分类,得出很大一个地区范围内不同类别地质(河流,山川等)的分布。价值在于有效的判断大范围内的建筑分布,为整体的地图数据提供支撑,为地理学家提供有效的数据支撑。
本项目应用机器学习的分类方法。图像数据是一种维度特别大的非结构化数据,每一张图像都是一个矩阵,需要时间复杂度非常低的算法去进行支撑。
项目应用MATLAB进行算法验证,应用速度很快的分类算法ELM(极限学习机)。下面本文来详细阐述极限学习机在本项目算法分析的作用。不同类别的地质的图像进行一个分类模型的建设。
先来看下遥感图像的地质情况。即数据如下:
首先遥感图像都是灰度图,不同颜色的地方代表着不同的地质(可能是山川,河流等),地质类型很多这里只截取4种。以上即是训练的数据。图片为X,为输入,第N类地质的N为Y,为输出。
进而通过以上图像(数据)进行模型建立
ELM的第一步:
与SVM一样,要将数据转化成线性可分情况,即数据线性变化(可以参考我的其他文章)。X通过Sigmoid Function函数转化成:
MATLAB代码如下:
InputWeight=rand(NumberofHiddenNeurons,NumberofInputNeurons)*2-1;
BiasofHiddenNeurons=rand(NumberofHiddenNeurons,1);
tempH=InputWeight*P; % Release input of training data
ind=ones(1,NumberofTrainingData);
BiasMatrix=BiasofHiddenNeurons(:,ind); % Extend the bias matrix BiasofHiddenNeurons to match the demention of H
tempH=tempH+BiasMatrix;
H = 1 ./ (1 + exp(-tempH));
ELM的第二步:
第二步又到了Y=AX的公式用,求出Y和X之间那个关系A的时刻了。不像SVM需要繁琐的求解方法,大家都知道如果是个方阵矩阵求解直接可以用求逆的方法,但实际的数据基本没有方阵,但是可以用一个数学方法广义逆。ELM通过矩阵求广义逆的方法实现(黄广斌教授2006年证明有效),极大的减少了运算速度。
MATLAB代码如下:
Hp=pinv(H);%¼ÆËãHµÄMoore-Penrose¹ãÒåÄæ
beta=Hp*y;
此公式的T为输出(Y),HT为输入H(X)的广义逆。B为输入与输出的关系。此处模型已经建立完毕。极限学习机也可以理解成一种特殊的单隐藏层神经网络。
从此有了输入和输出的关系,就可以对遥感图像进行分类了。输入一个遥感图像就可以分辨出图中所有的地质。举个例子如下图像
对此图像进行分类,由于遥感图像为灰度图,最终我们要通过明显图像进行标注出来。
由于本图像只包含六个类别,这里我们把6个类别进行彩色颜色的标记。通过ELM此图为最终的分类结果:
未来输入一张遥感图像即可识别出此区域的不同地质特征,后续还与地质研究着实现一些地质上的科研研究,有兴趣的可以关注后续文章也可以关注微博Zason_張