精度:99.306%
排名:第二
目录
1.数据处理
2.搭建模型
3.模型集成
1.数据处理
1.1中值滤波(median filter)进行降噪
中值滤波的主要原理是将数字图像中的某点用该点的邻域中各个像素值的中值所来代替,例如黑点的像素值比较大,在周围都是白点的情况下,用中值进行填充,那么黑点的像素值就会变小,从而能在过滤出噪声点。标杆模型中用某点周围的5个像素值的中值进行代替,如图1: 图1.中值滤波(median filter)进行降噪1.2阈值分割法(threshold segmentation)生成掩膜(binary mask)
在本文中的阈值分割法原理就是以一张图片所有像素值的众数作为阈值,当某点的像素值小于阈值时,则通过布尔值进行分类,分成白点或黑点,例如众数对应是黑点的像素值,那么小于众数的像素值点就被分类为白点,那么一张图片就形成黑白分明的图。如图2: 图2.阈值分割法(threshold segmentation)生成掩膜(binary mask)1.3形态闭合(morphology closing)
形态变换分为形态闭运算和形态开运算,形态闭运算是形态先膨胀后腐蚀,可用来填充小孔,而开运算则是先腐蚀后膨胀,可用来消除小斑块。本文采用闭运算来填充图2中,阈值分割后的小孔。
膨胀:原理是在二值图像上,找到像素值为1的点,将它的邻近像素点都设置成这个值。1值表示白,0值表示黑,因此膨胀操作可以扩大白色值范围,压缩黑色值范围。
腐蚀:和膨胀相反的操作,将0值扩充到邻近像素。扩大黑色部分,减小白色部分。如图3:
图3.形态闭合(morphology closing)
1.4添加异型数量
由于训练集中并没有异型的样本,所以当测试集中出现异型样本时,模型不能识别。所以往训练集中添加异型样本,其中异性样本来自测试集,通过对数据的可视化,人工标识异型样本。如图4 图4.人工筛选1.5数据增广
keras中的图片生成器(ImageDataGenerator),其实就是对数据进行一些处理,比如去中心化、图片宽度、高度的处理、图片旋转等。
2.模型搭建
2.1卷积层
原理就是用一个超参数filter对图像矩阵进行局部提取特征。如图5:
图5.卷积运算
如上图所示,该图片的输入为一个三通道的图片,即RGB图像。而超参数为Filter_w0和Filter_w1。其中蓝色部分为图像的像素数据,为了增加对边缘数据的利用,在外层增加了一层灰色全为0的数据,目的就是在用超参数提取局部数据时,能增加外层数据的利用,其中b0为偏置项,一个filter就输出一组数据,即绿色部分。
2.2池化层
池化层就是对卷积层的结果进行进一步的提取,设置一个filter,对卷积结果进行局部提取,取局部矩阵中的最大值或者平均值,作为这个局部矩阵的代表值,这样就缩小的图像的大小,例如卷积层输出是4x4大小的矩阵,而池化层filter是2x2矩阵,那么池化后的输出结果为2x2的矩阵。如图6:
图6.filter为2x2以最大值为代表的池化层
2.3全连接层
其实就是传统神经网络,如图7:
图7.全连接层
3模型集成
集成原理就是少数服从多数,我们采用三个卷积神经网络模型的预测结果进行一个集成,例如样本1在三个模型中的预测结果是一样时,集成结果即三个模型一致的结果,若三个模型中,两个模型的预测结果是一致,而只有一个模型的预测结果不同时,那就少数服从多数,取两个模型一致的预测结果作为集成结果,若三个模型预测结果均不一样时,取最优模型的预测结果作为集成结果。
最后结果如下:
网友评论