向AI转型的程序员都关注了这个号👇👇👇python
机器学习AI算法工程 公众号:datayx程序员
一个分割网络——Unet,Unet借鉴了FCN网络,其网络结构包括两个对称部分:前面一部分网络与普通卷积网络相同,使用了3x3的卷积和池化下采样,可以抓住图像中的上下文信息(也即像素间的关系);后面部分网络则是与前面基本对称,使用的是3x3卷积和上采样,以达到输出图像分割的目的。此外,网络中还用到了特征融合,将前面部分下采样网络的特征与后面上采样部分的特征进行了融合以得到更准确的上下文信息,达到更好的分割效果。web
Unet使用一种称为overlap-tile的的策略,使得任意大小输入的图片均可以得到一个无缝分割。over-tile策略以下图所示:面试
该策略的思想是:对图像的某一块像素点(黄框内部分)进行预测时,须要该图像块周围的像素点(蓝色框内)提供上下文信息(context),以得到更准确的预测。算法
这样的策略会带来一个问题,图像边界的图像块没有周围像素,所以做者对周围像素采用了镜像扩充。下图中红框部分为原始图片,其周围扩充的像素点均由原图沿白线对称获得。这样,边界图像块也能获得准确的预测。flask
另外一个问题是,这样的操做会带来图像重叠问题,即第一块图像周围的部分会和第二块图像重叠。所以做者在卷积时只使用有效部分(valid part of each convolution),虽然卷积的时候会用到周围的像素点(蓝色框内),但最终传到下一层的只有中间原先图像块(黄色框内)的部分(可理解为不加padding)。浏览器
至于为何要对图像分块不输入整张图像则是由于内存的限制,有的机器内存比较小,须要分块输入。即使如此,相较以前的滑窗输入,Unet已经快乐很是多了,其一是由于不用取那么多块,其二是由于取块时候没有那么大的重叠。微信
另外一个比较有意思的点是对于细胞边缘的分割像素点加大了损失权重,使得网络更加剧视边缘像素的学习。
UNet 实现文档印章消除网络
Requirement
pytorch==1.5app
opencv-python 4.2
numpy
代码及运行教程 获取:
关注微信公众号 datayx 而后回复 印章 便可获取。
AI项目体验地址 https://loveai.tech
data 的目录结构以下图:
test:测试集图片的路径
mytest:测试结果的输出路径
train:训练集图片的路径,包含含印章的图片以及标注印章位置的xml文件
train_cleaned:训练集图片人工去除印章后的标签
valid:验证集图片的路径,包含含印章的图片以及标注印章位置的xml文件
valid_cleaned:验证集图片人工去除印章后的标签
config.py 设置参数,包括文件路径、模型结构参数和训练的参数等。
train.py 运行 python train.py 训练模型。
predict.py 运行 python predict.py 测试。
Note:
因为做者所使用的图像分辨率极高,在训练和测试时从完整图像中扣出包含印章的区域(ImageSize=512*512),而后进行训练。若是图片的分辨率适中或者显存足够大,能够跳过此步骤,无需进行印章标注,直接使用原图进行UNet训练。
从原图中扣出印章区域也能够使用yolo代替。
阅读过本文的人还看了如下文章:
基于40万表格数据集TableBank,用MaskRCNN作表格检测
《深度学习入门:基于Python的理论与实现》高清中文PDF+源码
2019最新《PyTorch天然语言处理》英、中文版PDF+源码
《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码
PyTorch深度学习快速实战入门《pytorch-handbook》
【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》
李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材
【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类
如何利用全新的决策树集成级联结构gcForest作特征工程并打分?
Machine Learning Yearning 中文翻译稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx
机大数据技术与机器学习工程
搜索公众号添加: datanlp
长按图片,识别二维码
本文分享自微信公众号 - 机器学习AI算法工程(datayx)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。