UI2CODE复杂背景没法识别?闲鱼工程师这样打造高准确率方案

引言:

复杂背景内容提取指的是从复杂的背景中提取出特定的内容,例如在图片中提取特定的文字,在图片中提取特定的叠加图层等等。
这是一个业界难题,基于传统的图像处理的方法存在准确率和召回率的问题,无法解决语义的问题。而主流的机器学习的方法,例如目标检测没法获取像素级别的位置信息,而语义分割的方法则只能提取像素而没法获取半透明叠加前的像素信息。
本文考虑到这些痛点,从UI2CODE业务的业务场景出发,采用了目标检测网络来实现内容召回,GAN网络实现复杂背景中特定前景内容的提取和复原。算法

处理流程:

复杂背景的处理流程分为以下几个步骤:网络

内容召回:经过目标检测网络召回元素,即元素是否须要作背景提取操做。
区域判断:根据梯度等视觉方法判断所处区域是不是复杂区域。
简单区域:基于梯度的方式找到背景区块。
复杂区域:采用SRGAN网络进行内容提取。

内容召回:

内容召回咱们采用目标检测网络来实现,例如Faster-rcnn或者Mask-rcnn等,以下图所示:

 

image.png

区域判断:

根据拉普拉斯算子计算周边梯度,判断所处区域是不是复杂区域。机器学习

简单背景:

因为目标检测模型自己的局限性,会致使无法达到像素级别的精确性,所以须要对位置作修正。若是是简单背景就能够基于梯度的思想作位置修正,具体计算方式以下:

 

image.png
image.png

复杂背景:

背景是复杂背景时,左图是原图,右图是提取的文字区块:

image.pngimage.png

  此时提取出的框不是彻底正确,那么此时根据梯度等机器视觉算法已经不能对位置作正确的修正了。本文提出了基于GAN网络的方式来解决复杂背景内容提取问题,网络的主要结构以下图所示:
image.png函数

为何选择GAN网络?

1)基于srGAN网络,该网络加入了特征图的损失函数,这样能够很好保留高频信息,能更好的保留边缘。特征图的损失函数以下图所示:
image.png学习

2)因为有对抗损失的存在,能够很好的下降误检率。优化

3)最重要的一点是在有透明度的场景下,语义分割网络只能“提取”元素,没法“还原”元素。而GAN网络不只能够在提取元素的同时还原出未叠加时的像素状况。spa

网络训练流程图

image.png

针对业务场景对GAN网络作的改进

1.因为咱们不是超分辨率场景,所以不用pixelShuffler模块作上采样3d

2.因为场景比较复杂,能够引入denseNet和加深网络来提升准确率。code

3.内容损失函数对于压制误判的噪点效果不理想,所以加大了误判的惩罚,具体以下图所示:
image.pngblog

预测获取的结果图I:

image.pngimage.png

预测获取的结果图II:

image.png
image.png

结束语

本篇咱们经过复杂背景内容提取的介绍,提出了一种机器学习为主,图像处理为辅去精确获取特定前景内容的方法,获得了高精确率、高召回率和高定位精度的识别结果。
下图分别是传统算法grabcut,语义分割方法deeplab和本文方法的各个指标的状况。
image.png

通过数据论证,咱们发现了一个值得进一步优化的点——须要大量样本适配不一样的特征尺度,这里的投入会相对较大。如何进一步提升打标效率呢,咱们将会在后续系列文章中和你们分享。

 

本文做者:仝辉,深宇

原文连接

本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索