写点什么

闲鱼如何处理 UI2CODE 复杂背景识别

  • 2019 年 7 月 11 日
  • 本文字数:1083 字

    阅读完需:约 4 分钟

闲鱼如何处理UI2CODE复杂背景识别

引言

复杂背景内容提取指的是从复杂的背景中提取出特定的内容,例如在图片中提取特定的文字,在图片中提取特定的叠加图层等等。


这是一个业界难题,基于传统的图像处理的方法存在准确率和召回率的问题,没法解决语义的问题。而主流的机器学习的方法,例如目标检测无法获取像素级别的位置信息,而语义分割的方法则只能提取像素而无法获取半透明叠加前的像素信息。


本文考虑到这些痛点,从 UI2CODE 业务的业务场景出发,采用了目标检测网络来实现内容召回,GAN 网络实现复杂背景中特定前景内容的提取和复原。


处理流程

复杂背景的处理流程分为如下几个步骤


  • 内容召回:通过目标检测网络召回元素,即元素是否需要做背景提取操作。

  • 区域判断:根据梯度等视觉方法判断所处区域是否是复杂区域。

  • 简单区域:基于梯度的方式找到背景区块。

  • 复杂区域:采用 SRGAN 网络进行内容提取。


内容召回

内容找回我们采用目标检测网络来实现,例如 faster-tcnn 或 mark-rcnn 等。如下图所示



区域判断

根据拉普拉斯算子计算周边梯度,判断所处区域是否是复杂区域。


简单背景

游戏目标检测模型本身等局限性,会导致无法达到限速级别等精准性,因此需要对位置做修正。如果是简单背景就可以基于梯度对思想做位置修正,具体计算方式如下




复杂背景

复杂背景时,上图是原图,下图是提取的文字区块。




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



为什么选择 GAN 网络


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



  1. 由于有对抗损失的存在,可以很好的降低误检率。

  2. 最重要的一点是在有透明度的场景下,语义分割网络只能“提取”元素,无法“还原”元素。而 GAN 网络不仅可以在提取元素的同时还原出未叠加时的像素情况。


网络训练流程图



针对业务场景针对 GAN 网络做的优化


  1. 由于我们不是超分辨率场景,因此不用 pixelShuffler 模块做上采样

  2. 由于场景比较复杂,可以引入 denseNet 和加深网络来提高准确率。

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



结果图 1




结果图 2




结束语

本篇我们通过复杂背景内容提取的介绍,提出了一种机器学习为主,图像处理为辅去精确获取特定前景内容的方法,得到了高精确率、高召回率和高定位精度的识别结果。


下图分别是传统算法 grabcut,语义分割方法 deeplab 和本文方法的各个指标的情况。



本文转载自公众号闲鱼技术(ID:XYtech_Alibaba)


原文链接


https://mp.weixin.qq.com/s/jDIGduId6el1LG5dE9YOMQ


2019 年 7 月 11 日 08:002250

评论

发布
暂无评论
发现更多内容

Python代码调试指南

王坤祥

Python Python基础

rockchip的yocto编译环境搭建

良知犹存

Linux yocto rockchip

关于Aborted connection告警日志的分析

Simon

MySQL MySQL错误日志

1.Flink任务之间通信开销-6

小知识点

scala 大数据 flink

大数据技术思想入门(三):分布式文件存储的流程

cristal

Java 大数据 hadoop 分布式

ARTS打卡Week 11

teoking

Newbe.Claptrap 框架入门,第三步 —— 定义 Claptrap,管理商品库存

newbe36524

Docker 云计算 微服务 .net core ASP.NET Core

Docker 安装及配置镜像加速

哈喽沃德先生

Docker 容器 微服务

MacOS抓包工具Charles

叉叉敌

ios charles 抓包

速看!今天我才知道,UUID还分五个版本

爱写Bug的麦洛

Java uuid

我与游戏相伴【自我访谈2】

叶阳夏烟

系列 游戏 访谈录 剧情游戏 仙剑奇侠传

“深化产教融合·共育数字人才”全国产教融合信息化高峰论坛·江苏站成功举办

InfoQ_967a83c6d0d7

解读 Reference

浮白

ThreadLocal Reference ReferenceQueue Finalizer WeakHashMap

并发神器CSP的前世今生

soolaugust

并发编程 并发 Go 语言

架构师训练营第十一周作业

Melo

想问面试官什么问题么?

escray

学习 面试

6. 二十不惑,ObjectMapper使用也不再迷惑

YourBatman

json Jackson ObjectMapper

详解责任链模式

大头星

前端科普系列(2):Node.js 换个角度看世界

vivo互联网技术

node.js 大前端

一家估值20亿美元的公司,竟然没有办公室?

Atlassian

远程办公 Atlassian Jira

【程序员自救指南】中关村保洁大叔的一句话竟然帮我转正了

华为云开发者联盟

服务器 数字化 华为云 企业上云 云服务器

从Vessel到二代裸金属容器,云原生的新一波技术浪潮涌向何处?

华为云开发者联盟

Docker 容器 云原生 k8s Vessel

要刷LeetCode了,才发现自己连时间复杂度都不懂

大头星

算法 LeetCode

代理模式详解

大头星

ARTS打卡(20.08.17-20.08.23)

小王同学

你期待的薪酬是多少?

escray

学习 面试

utf8字符集下的比较规则

Simon

MySQL 字符集

看智微智能互动录播系统如何建设“三个课堂”

InfoQ_967a83c6d0d7

顺时针遍历矩阵,提高系统高并发350倍,React Native原理浅析 组件设计原则 安全架构 防火墙ModSecurity John 易筋 ARTS 打卡 Week 14

John(易筋)

ARTS 打卡计划 组件设计原则 React Native 高并发优化

浅谈 GET 和 POST 区别

叉叉敌

面试 post GET

想不出来问题的你

escray

学习 面试

闲鱼如何处理UI2CODE复杂背景识别_语言 & 开发_仝辉_InfoQ精选文章