yolo算法_基于YOLO算法的装维质检目标检测(一)

01

装维质检的目标

用户到营业厅或在线申请安装宽带后,BOSS系统会下发一个业务工单分配该用户资源,具体到用户住址和分光器端口序号。AI图像识别通过使用卷积神经网络算法识别出端口情况,并与原系统分配资源进行比对,可以保证装维资源分配准确性,完成质检校验工作,优化资源配置和管理

2105ade1d8413d79c60da94b39fa3251.png AI装维质检

02

解决方案

接下来针对装维质检目标过程中如何实现根据回单照片检测端口情况,提出下图方案

2.1 整体思路

45de6b8b44463ab7fd69d824360922ca.png

模型实现思路

2.2算法介绍YOLO(You Only Look Once)是目前比较流行的目标检测(object detection)算法,速度快且结构简单,属于卷积神经网络范畴,为了更好的理解YOLO的精髓,本期我们先简单介绍一下卷积神经网络的基础知识。下一期文章再对YOLO算法的思想及应用进行详细的介绍

2.2.1 卷积神经网络

从神经网络到CNN

我们知道经典的神经网络的结构是这样的:

be0fa202a403c60b43ff95407ddfc05b.png 神经网络架构 卷积神经网络依旧是层级网络,只是层的功能做了变化,可以说是传统神经网络的一个改进。比如下图就多了许多神经网络没有的层次,比如:CONV层、POOL层 a7e92ab4088c35792ac6007753d50cf1.png CNN架构案例图 另外我们知道,图像是由一个个像素点构成,每个像素点有三个通道,分别代表RGB颜色。例如下图:关于猫的图像尺寸是(1000,1000,3),即代表这个图像的是一个长宽均为1000,channel为3的图像。当使用全连接的网络结构,即网络中的神经与相邻层上的每个神经元均连接,那就意味着我们的网络有1000 * 1000*3 = 3*103 个神经元,假如每个hidden层采用了10个神经元,于是需要的参数个数(w和b)就有: 3*103* 10*10*1+10+10+1 ≈  3e+08 这个参数太多了,随便进行一次反向传播计算量都是巨大的,从计算资源和调参的角度都不建议用传统的神经网络。 1974046edd38c7cb4241168c2b71be30.png 神经网络识别猫

CNN的网络结构

CNN的网络结构主要包括:数据输入层(Input Layer)、卷积层(CONV Layer)、ReLU激励层(ReLU Layer)、池化层(Pooling Layer)和全连接层(FC Layer) a606c5c4b67b96a0cd96ee8ee6400db0.png 卷积神经网络网络结构图

数据输入层

Input Layer

该层要做的处理主要是对原始图像数据进行预处理,其中包括:
  • 去均值:把输入数据各个维度都中心化为0,如下图所示,其目的就是把样本match的中心拉回到坐标系原点上

  • 归一化:幅度归一化到同样的范围,如下图所示,即减少各维度数据取值范围的差异而带来的干扰

f85ca18dda338ff22b7c7c0088bcec6d.png 去均值和归一化效果图
  • PCA/白化:用PCA(主成分分析)降维;白化是对数据各个特征轴上的幅度归一化

7a9aa632d9d189b11a5efc40b6766c6d.png 去相关性与白化效果图

卷积层

Conv Layer

这一层是CNN最重要的一个层次,也是“卷积神经网络”的名字来源。在卷积层,有两个关键操作:
  • 局部关联。图像本身具有“二维空间特征”,通俗点来说就是局部特性,譬如上图中猫,可能看到猫的眼睛或者嘴巴就知道这是一张猫图片,而不需要每个部分都要看了才知道这是个猫。故我们可以用某种方式对一张图像的某个典型特征识别,即知这张图片的类别

  • 窗口滑动,filter对局部数据的计算

卷积的计算: 图像尺寸为6*6*1,1个卷积核,看看运用卷积核后图像样子 485fdf1ec16ca569b5244a96da00d462.png 对于上图,假如大于0的像素值为代表白色,等于0的为灰色,小于0为黑色。通过上图可以看出在白色和灰色的分割线轮廓通过卷积层后体现出来了垂直边缘 计算方式如下为: 6d25413d6f81c86fddd7be5959a8dd46.png 计算步骤: 10*1+10*0+10*(-1)+10*1+10*0+10*(-1)+10*1+10*0+10*(-1)=0 76ac64fa14f49663f1ebc8cceee06544.png 计算步骤: 10*1+10*0+0*(-1)+10*1+10*0+0*(-1)+0*1+10*0+0*(-1)=30 以此类推;得到
030300
030300
030300
030300
需要我们注意: 在计算过程中涉及卷积步长Stride,表示filter在原图片中水平方向和垂直方向每次的步进长度。比如上例子中stride=1,则表示filter每次步进长度为1,即隔一点移动一次 e09f694ec6652e2e8b6e83a2f888ed24.png 在此需要提到一个重要的现象,卷积运算后,输出图片尺寸缩小。另外越是边缘的像素点,对于输出的影响越小,因为卷积运算在移动的时候到边缘就结束了。中间的像素点有可能会参与多次计算,但是边缘像素点可能只参与一次。所以我们的结果可能会丢失边缘信息。那么为了解决这个问题,我们引入padding, padding是在图片外围补充一些像素点,把这些像素点初始化为0. 如下图: ef04173da9c30bfebdfe5a5178f6a623.png padding的用途: (1)  保持边界信息,如上述,无padding时,图片最边缘的像素点信息只会被卷积核操作一次,但是图像中间的像素点会被扫描到很多遍,那么就会在一定程度上降低边界信息的参考程度,但是在加入padding之后,在实际处理过程中就会从新的边界进行操作,就从一定程度上解决了这个问题; (2)  可以利用padding对输入尺寸有差异图片进行补齐,使得输入图片尺寸一致; (3)  卷积神经网络的卷积层加入padding,可以使得卷积层的输入维度和输出维度一致; (4)  卷积神经网络的池化层加入Padding,一般都是保持边界信息和(1)所述一样 padding模式:

SAME和VALID,其中SAME:是填充,保持和输入图像大小一样,填充大小 p = (f-1)/2;VALID:是不填充,直接计算输出,输出大小在2.2.1.3中给出了通用计算公式

激励层

ReLU Layer

把卷积层结果做非线性映射: 85ca2e2a0c648d272d68a8208f32517c.png CNN采用的激励函数一般为ReLU(The Rectified Linear Unit修正线性单元),它的特征是收敛快,求梯度简单,但较脆弱,图像如下: 019d97637c9e9d01c3fa89f332c5334e.png ReLU图

池化层

Pooling Layer

池化层夹在连续的卷积层中间, 对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征 作用:
  • 特征不变性,即特征的尺度不变性,池化操作就是图像的resize

  • 特征降维

  • 在一定程度上放置过拟合,更方便优化

54ae7c0eae4204546eaf911ccf0334eb.png 池化层用的方法有,Avg Pooling和Max Pooling,而实际用的较多的是Max Pooling如下: 0b74d4bdcf39663a48f56921743fb4c1.png 注意:这里的pooling操作是特征图缩小,有可能影响网络的准确度,因此可以通过增加特征图的深度来弥补

全连接层

FC Layer

两层之间所有神经元都有权重连接,通常全连接层在CNN尾部,也就是跟传统的神经网络元的连接方式是一样的。

卷积后图像大小

在上面卷积层或者池化层计算后,图像大小都发生了变化,针对这种变化并不是无规律可循的,是有通用计算公式的 卷积后图像的大小加入stride后卷积图像大小的通用计算公式为: 输入图像:n*n;过滤器(filter):f*f;padding:p

输出图像大小为: f6dcb6bfe54828192316bb8aceb3035e.png  表示向下取整。

彩色图像的卷积

在上文中讲述的卷积都是灰色图像的,如果想在RGB图像上进行卷积,过滤器(filter)的大小不是3*3而是3*3*3.最后一个3对应为通道数(channels)。卷积生成图像中每个像素值为3*3*3过滤器对应位置和图像对应位置相乘累加,过滤器依次在RGB图像上滑动,最终生成图像大小为4*4                                              cbd599696dbd8f154590f943aebd37c8.png 另外一个问题是,如果我们不仅仅检测单一特征,还要同时检测垂直边缘、水平边缘、45度边缘等等,也就是多个过滤器的问题。如果有两个过滤器,最终生成图像为4*4*2的立方体,这里的2来源于我们采用了两个过滤器。如果有10个过滤器那么输出图像就是4*4*10的立方体 e691cf532357f6d64538b0d05998823c.png
下期将为大家详细介绍YOLO算法的思想及应用                     

关注我了解更多

f6dbaf9cb8c68aba99d216dce0ce0f38.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值