0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Keras实现:用部分卷积补全图像不规则缺损

zhKF_jqr_AI 来源:未知 作者:李倩 2018-10-26 08:54 次阅读

编者按:图像补全是一个热门研究领域,今年4月,NVIDIA发表了一篇精彩的论文:Image Inpainting for Irregular Holes Using Partial Convolutions。文章指出,以往图像补全技术都是用残缺位置周边的有效像素统计信息填充目标区域,这种做法虽然结果平滑,但存在效果不逼真、有伪像,且后期处理代价昂贵的缺点。因此他们用大量不规则掩膜图像训练了一个深度神经网络,它能为图像生成合理掩膜,再结合仅以有效像素为条件的部分卷积(Partial Convolutions),最终模型的图像补全效果远超前人的成果。

而近日,有网友复现了这篇论文,并在GitHub上公开了他的Keras实现,感兴趣的读者前去一看:github.com/MathiasGruber/PConv-Keras

NVIDIA论文

环境

Python 3.6

Keras 2.2.0

Tensorflow 1.8

如何使用这个repo

repo中包含的PConv2Dkeras实现可以在libs/pconv_layer.py和libs/pconv_model.py中找到。除此之外,作者还提供了四个jupyter NoteBook,详细介绍了实现网络时经历的几个步骤,即:

step 1:创建随机不规则掩膜

step 2:实现和测试PConv2D层

step 3:实现和测试采用UNet架构的PConv2D层

step 4:在ImageNet上训练和测试最终模型

实现细节

在设计图像补全算法时,研究人员首先要考虑两个因素:从哪里找到可利用的信息;怎么评判整体补全效果。无论是天然破损的图像,还是被人为打上马赛克的图像,这之中都涉及图像语义上的预测。

这篇论文发表之前,学界在图像补全上的最先进方法之一是利用剩余图像的像素统计信息来填充残缺部分,这利用了同一幅图像素间的连接性,但缺点是只反映了统计上的联系,无法真正实现语义上的估计。后来也有人引入深度学习的方法,训练了一个深度神经网络,以端到端的方式学习语义先验和有意义的隐藏表示,但它仍局限于初始值,而且使用的是固定的替换值,效果依然不佳。

NVIDIA在论文中提出了一种新技巧:添加部分卷积层(Partial Convolutional Layer),并在这一层之后加上一个掩膜更新步骤。部分卷积层包含生成掩膜和重新归一化,它类似图像语义分割任务中的segmentation-aware convolutional(分段感知卷积),能在不改变输入掩膜的情况下分割图像信息。

简而言之,给定给定一个二元掩膜,部分卷积层的卷积结果只取决于每一层的非残缺区域。相比segmentation-aware convolutional,NVIDIA的创新之处是自动掩膜更新步骤,它可以消除部分卷积能够在非掩膜值上操作的任何掩膜。

具体设计过程可以阅读论文查看,下面我们只总结一些细节。

生成掩膜

为了训练能生成不规则掩模的深度神经网络,论文研究人员截取视频中的两个连续帧,用遮挡/解除遮挡创建了大量不规则掩膜,虽然他们在论文中称将公开这个数据集,但现在我们还找不到相关资源。

在这个Keras实现中,作者简单创建了一个遮挡生成函数,用OpenCV绘制一些随机的不规则形状,以此作为掩膜数据,效果目前看来还不错。

部分卷积层

这个实现中最关键的部分就是论文的重点“部分卷积层”。基本上,给定卷积filter W和相应的偏差b,部分卷积的形式是:

其中⊙表示点乘,即每个矩阵元素对应相乘,M是由0和1构成的二进制掩码。在每次完成部分卷积操作后,掩膜要进行一轮更新。这意味着如果卷积能够在至少一个有效输入上调节其输出,则在该位置移除掩码:

这样做的结果是,在网络够深的情况下,最终掩码将全部为0(消失)。

UNet架构

下图是论文中提供的PConv整体架构,它类似UNet,只不过其中所有正常的卷积层都被部分卷积层代替,使图像+掩膜无论何时都能一起通过网络

PConv整体架构

PConv彩色图解

损失函数

论文涉及的损失非常多样,简而言之,它包括:

掩膜区(Lhole)和非掩膜区(Lvalid)的每个像素损失

基于ImageNet预训练的VGG-16(pool1, pool2 and pool3 layers)的感知损失(Lperceptual)

VGG-16在预测图像(Lstyleout)和计算图像(Lstylecomp)上的风格损失(以非残缺区像素为真实值)

残缺区域每个像素扩张的总变差损失(Ltv),也就是1像素扩张区域的平滑惩罚

以上损失的权重如下:

论文补全效果

下图是论文中呈现的图像补全效果,其中第一列是输入图像,第二列是GntIpt算法的输出,第三列是NVIDIA论文的结果,第四列是真实完整图像。可以发现,无论图像缺失区域有多不规则,PConv的补全效果在颜色、纹理、形状上都更逼真,也更平滑流畅。

小结

最后一点,也是最重要的一点,如果是在单个1080Ti上训练模型,batch size为4,模型训练总用时大约在10天左右,这是个符合论文所述的数据。所以如果有读者想上手实践,记得提前做好硬件和时间上的准备。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4765

    浏览量

    100548
  • 图像
    +关注

    关注

    2

    文章

    1083

    浏览量

    40418
  • 深度学习
    +关注

    关注

    73

    文章

    5493

    浏览量

    120983

原文标题:Keras实现:用部分卷积补全图像不规则缺损

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    教你设计不规则形状的PCB

    我们预想中的完整 PCB 通常都是规整的矩形形状。虽然大多数设计确实是矩形的,但是很多设计都需要不规则形状的电路板,而这类形状往往不太容易设计。本文介绍了如何设计不规则形状的 PCB。
    发表于 02-16 11:10 6148次阅读
    教你设计<b class='flag-5'>不规则</b>形状的PCB

    创建不规则窗体和控件

    具有的功能所需的代码。 具体步骤下面我就具体向大家介绍如何创建不规则窗体。 创建一个具有不规则形状的位图文件 1.任何画图程序就可以创建不规则形状的位图,你可以使用最容易也是最方便的
    发表于 03-04 17:02

    示波器去测量不规则波形

    想要用示波器去测量一个不规则波形在某点突然停止的波形,求助怎么办
    发表于 11-27 14:22

    labview前面板部分透明,不规则界面

    本帖最后由 a156789156782 于 2015-8-12 14:33 编辑 labview前面板部分透明,任意形状界面项目:不规则窗口平台:labview8.5 技术:引用、调用、控件
    发表于 08-12 12:00

    labview中怎么实现控件按指定的不规则的路线移动?

    labview中怎么实现控件按指定的不规则的路线移动?
    发表于 10-05 16:45

    利用Keras实现四种卷积神经网络(CNN)可视化

    Keras实现卷积神经网络(CNN)可视化
    发表于 07-12 11:01

    不规则PCB封装编辑

    不规则PCB封装编辑
    发表于 09-05 11:17 0次下载

    不规则变换循环LED闪烁电路

    电子设计研发部分的研发人员常用资料,不规则变换循环LED闪烁电路
    发表于 11-02 18:31 0次下载

    一种基于距离变换的不规则区域匹配算法

    部纹理确定不规则区域的支撑区域;然后给出了一种基于距离变换的子区域划分方法,与传统方法相比,能够减少图像亮度变化带来的匹配错误;最后针对区域存在形状、尺寸大小不一且具有不同像素点数的问题,采用均值标准差MS构造描述
    发表于 11-28 17:32 0次下载
    一种基于距离变换的<b class='flag-5'>不规则</b>区域匹配算法

    一种新的对不规则珠宝图像的自动检测方法

    针对不规则物体形状特征难以估计的问题,以实现对珠宝的自动测量技术为前提,通过引入主成分分析的概念,提出一种新的对不规则珠宝图像的自动检测方法。该算法首先利用主分量分析提取出目标珠宝
    发表于 12-11 11:56 0次下载
    一种新的对<b class='flag-5'>不规则</b>珠宝<b class='flag-5'>图像</b>的自动检测方法

    线积分卷积技术的详细资料说明

    LIC,即线积分卷积是一种基于纹理的方法。LIC使用卷积的结果来表示矢量的方向。它通过将矢量场某一时刻及该时刻前后的几个时刻的图像相互叠加,最终的结果便可以表示矢量场的方向信息。LIC算法可以有效地表征二维矢量场,即能清楚直观地
    发表于 07-03 08:00 1次下载
    线积<b class='flag-5'>分卷积</b>技术的详细资料说明

    基于密集卷积生成对抗网络的图像修复方法

    图像修复是一项利用缺损图像中已知信息对缺损区域信息进行估计修复的技术。针对大面积语义信息缺失的图像进行修复时,若训练数据集较小且
    发表于 05-13 14:39 15次下载

    基于生成式对抗网络的图像补全方法

    图像补全是数字图像处理领域的重要研究方向,具有广阔的应用前景。提出了一种基于生成式对抗网络(GAN)的图像补全方法。生成式对抗网络模型由生成
    发表于 05-19 14:38 14次下载

    OpenCV初学者如何提取这些不规则的ROI区域

    ,而且这些ROI区域往往不是矩形区域,一般都是不规则的多边形区域,很多OpenCV初学者都不知道如何提取这些不规则的ROI区域。
    的头像 发表于 10-31 14:51 844次阅读

    基于差分卷积神经网络的低照度车牌图像增强网络

    车牌识别作为现代化智能交通系统中重要的环节,对提升路网效率以及缓解城市交通压力等问题具有重要的社会意义,然而弱光照车牌图像识别仍然具有重大的挑战。构建了一个基于差分卷积神经网络的弱光照车牌图像增强
    的头像 发表于 11-11 10:29 121次阅读
    基于差<b class='flag-5'>分卷积</b>神经网络的低照度车牌<b class='flag-5'>图像</b>增强网络