UNet实现文档印章消除

论坛 期权论坛     
选择匿名的用户   2021-5-30 11:16   141   0
<div id="js_content">
<p><img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-1b9d9a3ac6dda19e26ceb6076b9f9739"><br></p>
<p>向AI转型的程序员都关注了这个号????????????</p>
<p><strong>机器学习AI算法工程   公众号:datayx</strong></p>
<p>一个分割网络——Unet,Unet借鉴了FCN网络,其网络结构包括两个对称部分:前面一部分网络与普通卷积网络相同,使用了3x3的卷积和池化下采样,能够抓住图像中的上下文信息(也即像素间的关系);后面部分网络则是与前面基本对称,使用的是3x3卷积和上采样,以达到输出图像分割的目的。此外,网络中还用到了特征融合,将前面部分下采样网络的特征与后面上采样部分的特征进行了融合以获得更准确的上下文信息,达到更好的分割效果。</p>
<p style="text-align: center"><img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-87e1c2c8cb2b35aabb4ca39191ba66d6"></p>
<p>Unet使用一种称为overlap-tile的的策略,使得任意大小输入的图片都可以获得一个无缝分割。over-tile策略如下图所示:</p>
<p style="text-align: center"><img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-361b7807824dea2194571d72053253b3"></p>
<p>该策略的思想是:对图像的某一块像素点(黄框内部分)进行预测时,需要该图像块周围的像素点(蓝色框内)提供上下文信息(context),以获得更准确的预测。</p>
<p>这样的策略会带来一个问题,图像边界的图像块没有周围像素,因此作者对周围像素采用了镜像扩充。下图中红框部分为原始图片,其周围扩充的像素点均由原图沿白线对称得到。这样,边界图像块也能得到准确的预测。</p>
<p>另一个问题是,这样的操作会带来图像重叠问题,即第一块图像周围的部分会和第二块图像重叠。因此作者在卷积时只使用有效部分(valid part of each convolution),虽然卷积的时候会用到周围的像素点(蓝色框内),但最终传到下一层的只有中间原先图像块(黄色框内)的部分(可理解为不加padding)。</p>
<p>至于为什么要对图像分块不输入整张图像则是因为内存的限制,有的机器内存比较小,需要分块输入。即便如此,相较之前的滑窗输入,Unet已经快乐非常多了,其一是因为不用取那么多块,其二是因为取块时候没有那么大的重叠。</p>
<h3>另一个比较有意思的点是对于细胞边缘的分割像素点加大了损失权重,使得网络更加重视边缘像素的学习。<br></h3>
<p style="text-align: center"><img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-752a2d80e75969dcb70d5542ebfa13f6"></p>
<p><strong>UNet 实现文档印章消除</strong></p>
<h1><br></h1>
<h1><strong>Requirement</strong></h1>
<p>pytorch&#61;&#61;1.5</p>
<p>opencv-python 4.2</p>
<p>numpy</p>
<h3>代码及运行教程 获取:</h3>
<p>关注微信公众号 datayx  然后回复  <strong>印章</strong>  即可获取。</p>
<p>AI项目体验地址 https://loveai.tech</p>
<p><strong>data 的目录结构如下图:</strong></p>
<p style="text-align: center"><img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-4aa5e09f54e44d4c9f88d8d2ffd6e0a2"></p>
<ul><li><p>test:测试集图片的路径</p></li><li><p>mytest:测试结果的输出路径</p></li><li><p>train:训练集图片的路径,包含含印章的图片以及标注印章位置的xml文件</p></li><li><p>train_cleaned:训练集图片人工去除印章后的标签</p></li><li><p>valid:验证集图片的路径,包含含印章的图片以及标注印章位置的xml文件</p></li><li><p>valid_cleaned:验证集图片人工去除印章后的标签</p></li></ul>
<ol><li><p>config.py 设置参数,包括文件路径、模型结构参数和训练的参数等。</p></li><li><p>train.py 运行 python train.py 训练模型。</p></li><li><p>predict.py 运行 python predict.py 测试。</p></li></ol>
<h1>
  <svg height="16" viewbox="0 0 16 16" width="16">
   <path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path>
  </svg>Note:</h1>
<ol><li><p>由于作者所使用的图像分辨率极高,在训练和测试时从完整图像中扣出包含印章的区域(ImageSize&#61;512*512),然后进行训练。如果图片的分辨率适中或者显存足够大,可以跳过此步骤,无需进行印章标注,直接使用原图进行UNet训练。</p></li><li><p>从原图中扣出印章区域也可以使用yolm
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP