参考论文:
《A fast and robust convolutional neural network-based defect detection model in product quality control》–Tian Wang·Yang Chen·Meina Qiao·Hichem snoussi

1. CNN结构设计:

1.1. 输入图像:

三通道彩色图像或单通道灰色图片

1.2. ConV(卷积层):

卷积层利用一组滤波器,且这组滤波器仅连接到最后一层输出的一小部分。使用33或55的矩阵去卷积计算在整个图像上提取特征

1.3. 激活函数层—ReLU:

主要是用来客服梯度消失并且加快训练速度(f(x)=max(0,x))

1.4. 池化层(Pool):

通过缩小参数矩阵尺寸,减小参数数量

1.5. Fully Connected Layer(全连接层):

该层的作用大概是整合前面具有类别区分性的局部信息,输出的neuron等于输入的类别数
P(zi)=exp(zi)/sum(exp(zi))

以上几层堆叠在一起形成完整的CNN,将输入值向前反馈到网络中进行决策,然后通过反向传播方法更新参数

2. 数据集设计:

总共分为6类输入数据,图片大小为512*512px,每类包含1000个无缺陷图片和150个有缺陷图片(每个纹理背景上只有一个标记的缺陷区域)
将数据分为70%用来train,30%用来验证

设计为11层的CNN网络体系结构,第一个全局帧分类部分已128*128像素大小的下采样图像作为输入,并输出6个神经元,每个神经元代表相应的类成员的概率。第二个子帧检测部分提取与第一部分相同的迷你块,并且金输出两个神经元,指示该快是否有缺陷

3.模型实施:

可以将模型分两个部分来实现,分别是全局帧分类部分和子帧检测部分

全局帧分类是根据背景纹理特征进行分类,最后output输出6个neuron,分别代表属于哪类纹理的概率

子帧检测部分在第一部分的基础上检测对应图片是否有缺陷,输出为2个neuron

主要结构如上图所示:
C(32,3,3)-S(2,2,2)-C(64,3,3)-C(64,3,3)-S(2,2,2)-C(128,3,3)-C(128,3,3)-S(2,2,2)-FC(1024)-FC(1024)-FC(6)/FC(2)

其中C(n,3,3)表示卷积层,用n个分类器及(3,3)大小矩阵来卷积

S(2,2,2)表示用2*2来进行下采样,步长为2

FC(n)表示用n个neuron来进行全连接

为了减少模型计算量,可以进行以下操作:

1.将512512px的图像进行下采样至128128大小的图像输入

2.使用填充策略在特征图的边界周围填充0

3.通过max-pooling进行下采样

第二部分主要是最后一层全连接层与第一部分不同,输出的是两个neuron表示图像是否有缺陷。

并且不同的是:
1.采用从原512512大小图像中提取128128像素图像块作为输入

2.按照滑动窗口的方法进行滑动,滑动窗口尺寸为128*128像素,以64像素步长沿图像的行、列进行滑动。

3.经过以上操作,可以得到49个结果小块,只需要训练6个类似的子网,每个子网可作为一类无缺陷与缺陷块输入

全局帧分类部分和子帧检测部分协同工作以进行缺陷检测。给定图像,第一部分确定该样本属于哪个类别。然后将此图像分为49个块,并进行馈送,根据第一部分的输出进入属于第二部分的子网中。如果检测到任何块有缺陷,则将整个图像标记为有缺陷

4.Training details

关于overfitting问题的优化:

1.对于第一部分,训练起来比较容易,且没有出现overfitting的现象,主要原因是6种纹理背景差异较大,易于区分并且训练数量足够

2.在第二部分,因为缺陷图像在每个类别中进展很小一部分比例(约13%),并且每个缺陷中只有很小一部分区域被标记成缺陷,因此要使用扩充training数据量的方法避免overfitting

解决方法:
对于训练数据,可以采用有效的数据扩充策略!

对于每一类训练集中的缺陷图像:

1.采样:从每幅图像中手动提取22个大小为128*128像素的缺陷块

2.扩充:通过线性变换(旋转/镜像)将这些块增多8倍

对于无缺陷图像:

1.执行滑动窗口(128X128px),沿x,y以64px为步长滑动,这样便增加了49倍无缺陷图像数

经过以上操作,在第二部分的training中,training set中每类有34300张无缺陷图像和18656张有缺陷图像

关于Loss function

1.采用cross-entropy的方法

2-在训练中用50个样本的mini-batches 随机梯度下降的方法来更新权重参数

3-将动量和学习率衰减纳入随机梯度下降优化器和每次迭代中权重的更新规则中

i–迭代索引;w-权重超参数;
u-动量系数;v-当前速度矢量;
lr–学习速率;d-学习速率的衰减参数;
▽g-每次迭代中对于w的mini-batch上梯度的平均值

经过上文实验,u动量系数一般设置为0.9;而学习速率衰减参数则设置为0.012

4-每一层的权重参数均根据满足N~(0,n/2)的截断随机正态分布进行初始化
n表示两层之间的连接数,
并将每一层的偏置值先初始化为0,并重新计划ReLU(根据He et al【1】)

其他:

5-引入L2正则化[2],在loss function中添加权重衰减项,以在训练过程中惩罚较大权重并避免overfitting(实验中正则化系数设为5X10^-5)

6-在训练阶段中,在倒数第二和第三层全连接层使用drop-out策略,概率为0.5,也有助于避免overfitting

7-为了加快训练速度,可以采用batch normalization 以解决内部convariate偏移问题

训练结果如下:

5.Result

论文中使用的机器硬件为NVIDIA GTX1080 8GB GPU,通过8小时完成,在测试中,每秒能够检测27张图片

6.相关索引:
【1】. He K ,Zhang X,Ren S,Sun J(2015) Delving deep into rectifiers:Surpassing human-level performance on imagenet classification. In:Proceedings of the IEEE international conference on computer vision,pp 1026-1034

【2】. L2正则化

缺陷检测(一)-- 通过CNN方法实现布匹缺陷检测相关推荐

  1. 【域名检测】使用CNN实现DGA恶意域名检测(TensorFlow)【代码】

  2. 解决ajax劫持,Ajax实现检测网站劫持的方法

    这次给大家带来Ajax实现检测网站劫持的方法,Ajax实现检测网站劫持的注意事项有哪些,下面就是实战案例,一起来看一下. https可以彻底解决劫持的问题.但是一般虚拟主机都不支持 https,难道h ...

  3. ssd服务器硬盘使用寿命,SSD能用多久在哪看 检测固态硬盘寿命方法

    3.M.2固态硬盘寿命检测 发展到NVMe固态硬盘后,SMART健康度信息终于统一了标准.下图是东芝RC100 240G NVMe固态硬盘的CrystalDiskMark检测信息:健康状态是由03 A ...

  4. 基于机器视觉的缺陷检测的原理与方法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|新机器视觉 基于统计分类的方法: (1)基于KNN方法( ...

  5. asp.net 检测是否关注公众号_太阳电池缺陷检测方法光致发光检测法

    光致发光是物体受外界光源进行照射,从而获得能量,产生激发而产生发光的现象.用紫外光.可见光或红外光激发发光材料可以产生光致发光的现象.光致发光包括吸收.能量传递及光发射三个主要阶段,光致发光可以提供有 ...

  6. halcon 圆环类缺陷检测的一种方法(极坐标变换法)

    目录 简介 极坐标变换 定义 原理 Halcon中的极坐标变换 1.polar_trans_image_ext算子用法与参数剖析 2.polar_trans_region_inv算子用法与参数剖析 圆 ...

  7. 基于Halcon学习的缺陷检测【四】光伏电池片的指纹以及划痕检测【第一种方法】

    此例子主要是为了把光伏电池片的指纹以及划痕标注出来.  总代码: *读取图片 read_image (Image, 'E:/研究生学习/电池片练习/手指印/截图.png') *清除窗口 dev_cle ...

  8. 基于Halcon学习的缺陷检测【五】光伏电池片的指纹以及划痕检测【第二种方法】

     此例子主要是为了把光伏电池片的指纹以及划痕标注出来. 总代码:  *读取图片 read_image (Image, 'E:/研究生学习/电池片练习/手指印/截图.png')*清除窗口 dev_cle ...

  9. 弹性理论法研究桩基受力计算公式_收藏!桩基检测的7种方法

    来源:网络 版权归原作者所有,侵删 桩基检测,分为桩基施工前和施工后的检测:施工前,为设计提供依据的试验桩检测,主要确定单桩极限承载力:施工后,为验收提供提供依据的工程桩检测,主要进行单桩承载力和桩身 ...

最新文章

  1. qq空间等闪动的文字怎么做?
  2. ueditor版本python3_GitHub - crazyinstall/DjangoUeditor3: Django Ueditor 兼容Python3改进,Python2上也可用...
  3. 解密迈向量产的百度Apollo自动驾驶技术与产品
  4. 菜鸟成长日记(四)之WMIC简单命令应用
  5. 18_clickhouse副本同步与高可用功能验证,分布式表与集群配置,数据副本与复制表,ZooKeeper整合,创建复制表,副本同步机制,数据原子写入与去重,负载平衡策略,案例(学习笔记)
  6. 79. Word Search 单词搜索
  7. 计算机模拟考总结,高职单考单招计算机模拟一技术总结.doc
  8. java 内存分布_一图看懂JVM内存分布,永久记住!
  9. spark学习-28-Spark数据倾斜问题
  10. 计算机网络即时通信系统设计_天天玩微信,Spring Boot 开发私有即时通信系统了解一下...
  11. Maven仓库—Nexus环境搭建及使用
  12. mysql操作 begin 命令_MySQL基础操作
  13. 数据结构大作业-家庭记账系统
  14. 开启霍比特人之意外内核优化旅行 -- 专栏序言
  15. 笔者在国庆期间发文的感概:思绪万千
  16. Dynamic Head Unifying Object Detection Heads with Attentions 论文阅读笔记
  17. 判断图片是否为现场照片(Live Photo亦即内含Exif信息)
  18. c语言怎么编程24小时制,[C语言][PTA] 7-7 12-24小时制
  19. 怎么恢复苹果内置的计算机,苹果自带软件删了怎么恢复原状
  20. 如何使用netstat命令辨别DDOS入侵

热门文章

  1. Flowable工作流兼容达梦、人大金仓数据库
  2. iOS开发中正则表达式的基础使用
  3. C/C++中的getenv()函数
  4. 获取银行简码类(php)
  5. 7-12 电话聊天狂人
  6. 服务器esxi虚拟机升级,VMware Esxi 升级
  7. 金蝶云星空-不重启IIS开发插件
  8. Ewebeditor最新漏洞及漏洞大全
  9. 一、Nginx是什么?
  10. typecho登录注册插件 集成聚合登录免申请开发者应用