作者 | 李雨珂

责编 | 屠敏

深度学习图像算法近年来在学术领域经历了爆发式的发展,目前已经在工业界多个实际场景取得了较完整的应用落地,例如安防、营销、娱乐、金融等场景。其中内容安全也是非常典型的落地案例,深度学习图像算法在鉴黄鉴暴、广告识别、违禁拦截、敏感人物过滤等方向都取得了不错的应用效果。

算法自动识别一方面可以全面减轻人工审核投入,另一方面可以更有效率、更快速地对信息进行判断。本篇分享将会介绍如何快速搭建深度学习图像算法服务以及易盾在图像算法优化方面的经验。

内容安全难点

内容安全领域是一个相对特殊的场景,我们面对的问题往往目标定义不明确,数据种类繁杂多变、图像质量差距大,还会经常面临对抗攻击,这一场景对算法能力的要求较高。

相比较而言,在2C营销场景中,例如手机扫描商品/图标,对用户来说召回能力相对重要一些,误判在使用过程中不容易被发现;在门禁考勤场景中,由于摄像头采集到的图像质量较高,算法需要解决的是限定图片质量范围内的效果问题。

而在内容安全领域,由于线上数据正常比例较高,且图像类型众多,误判问题非常容易集中体现;另一方面,由于UGC图像质量参差不齐,图像敏感特征往往不够明显,小目标、模糊、形变等问题较常出现。

伴随易盾内容安全业务的发展,我们深入探索了深度学习图像算法在这个领域内的应用,在实际场景中取得了预期效果。

小试牛刀:教你快速搭建深度学习图像算法服务

深度学习算法已经成为图像算法中的重要组成部分,深度学习相关公开资源已经非常丰富,针对图像任务创建一个简单模型是十分容易上手的,这里将会展示如何快速搭建一个深度学习图像分类服务。

我们以场景识别为例子,即根据图像全局信息判断拍摄场景,例如泳池、车内、公寓等。我们可以选取公开数据集places365用于模型训练、数据说明和下载链接参见[1],通过tensorflow-slim接口进行图像分类模型训练[2],最终使用常见服务框架将算法服务进行透出。

其中数据方面仅以公开数据为例,实际应用中需要以业务数据为主。模型训练采用的框架可以选择Tensorflow\Keras、Mxnet\Gluon、Pytorch、Chainer等。随着深度学习框架的逐步发展,训练便捷性越来越高,相比较而言Tensorflow-slim也不算特别友好,但其代码组织思路和拓展性还是很值得借鉴的。这里我们将以Tensorflow-slim为例分几个步骤完成这项工作。

数据处理

原始PLACES365数据集的标签类别较多,为了快速验证代码我们仅挑选了其中小部分类别,用作示例。数据按如下进行组织,一个文件夹存储一类数据,文件夹为标签名。

参考源码中flowers数据集处理脚本download_and_convert_flowers.py,创建图像数据到tfrecord文件转换的脚本,原始项目中似乎没有一个通用的数据文件转换工具,建议可以自己简单写一个,将可变参数做成脚本入参,转换数据即可用命令方式执行,便于后续处理其他数据集。

脚本处理结束后,目标图像数据将转换成tfrecord文件,同时标签描述文件label.txt会自动生成。参考源码中flowers数据集描述脚本flowers.py,构建一个对应于场景数据的描述脚本,这里会对数据集的一些基本信息进行定义,如下所示:

通过上面一系列操作,数据准备层面的工作基本完成。

模型训练和测试

完成数据处理后,我们将挑选一个模型进行训练,我们以inception-v3为例,实际工作中模型挑选主要考虑的是性能和效果的平衡,需要通过一定量的实验来评估。

首先我们根据开源项目中提供的链接将IMAGENET预训练模型下载到本地。tensorflow-slim项目已经对训练功能进行了非常棒的上层包装,我们在实际使用过程中直接调用train_image_classifier.py脚本即可。我们首先以较大的学习率训练最后一层全连接参数,其他参数保持不动,然后以较小的学习率对所有参数进行调整。

训练脚本train_image_classifier.py对数据读取、预处理选择、模型选择、参数配置等都有较好的支持,建议详细阅读其中的代码和组织形式。完成训练后,我们通过测试脚本eval_image_classifier.py完成效果评估,如果在测试集上取得比较好的效果,我们就可以进入下一步。

服务透出

完成训练和评估后,我们可以简单写一个转换脚本将原始模型文件处理成pb文件,这会带来一系列好处,不但可以只保留inference所需的网络结构,砍掉一些训练辅助结构,将网络参数值进行freeze,减小模型文件大小,而且由于pb文件和框架关联性不大,可以脱离tensorflow进行使用和部署。tensorflow-slim已经提供了pb文件转换支持,但个人建议可以参考其他方式进行编写[3],使用上更加直观和简便。

接下来是算法模型服务化的工作,这一部分可以选择的方案也比较多,可以使用基于tensorflow的tf-serving进行完整的服务管理,也可以只通过Flask、Tornado等通用框架创建HTTP服务,还可以选择跨语言RPC框架构建服务。其中Flask方案可以参考[3]。我们需要写一个服务脚本来启动服务,同时需要创建客户调用脚本对服务进行调用测试。如果有服务并发评估需求,建议可以通过Locust,使用上非常便捷[4]。

以上工作完成后,我们就基本上完成深度学习图像服务的简单构建,如果有移动端方面的部署需求可以参考tensorflow官方iOS的例子[5]。以上内容以场景识别为例子进行简单说明,实际上模型使用框架、服务使用框架选择的空间都是比较大的,个人比较建议算法模型部分可以按需求灵活挑选,服务部署部分需要有统一的规范进行约束。

重装上阵:实践优化经验分享

以上工作非常容易实现,也仅仅是算法工作的小开端,离算法应用到实际场景还有非常遥远的距离。

哪怕经历了业务数据扩充、负样本收集、参数调优、模型结构改造等大量工作之后,算法应用到线上数据后的实际效果仍会非常糟糕,不但会出现大量解释性较差的误判,而且存在困难样例不能召回的困境。

在实际工作中,笔者往往会从以下几个角度着手来提升算法真实效果:

  • 标签定义:明确识别范围,建议先缩小识别范围,再逐步增强召回能力,按照这种方式,效果测试相对容易进行。在场景识别中,总结出全局特征相似、具有分类意义的标签是非常关键的;

  • 数据有效收集:随着数据量的不断累积,数据收集的重点往往不是数量,而是收集效率和质量。我们在实际工作过程中采取了一些主动学习机制,既能保证数据有效性,又能尽可能减小标注成本。在场景识别中,我们利用初始数据训练一个简单模型后,就可以用于业务数据的过滤,挑选有效数据进行扩充。

  • 测试集定义:挑选足够代表线上实际情况的测试集,主要关注数据量和覆盖范围两个方面,并且针对特殊问题收集特定类型测试集,测试的有效性对线上算法效果起决定性作用。

  • 算法方案:结合多模型融合、目标检测和判定策略,扩充算法方案。场景识别相对来说使用全局特征为主,但如果遇到小目标、多尺度、模糊等问题,FPN、Attention等结构就可能发挥一定的作用。

  • 线上闭环:服务上线后回流数据,形成闭环迭代,对模型能力不断进行矫正。

尝试新算法、学习新知识往往是非常愉快的,但上述这部分的工作却是枯燥和痛苦的。真正对线上优化起到最直接帮助的往往不是模型调参,而是枯燥乏味的事前数据工作,以及不遗余力的事后测试工作。

文中资源汇总:

[1]. PLACES365数据集说明和下载:http://places2.csail.mit.edu/download.html

[2]. tensorflow-slim官方地址:https://github.com/tensorflow/models/tree/master/research/slim

[3]. 模型转换和Flask服务编写:https://blog.metaflow.fr/tensorflow-how-to-freeze-a-model-and-serve-it-with-a-python-api-d4f3596b3adc

[4]. 压力测试:https://locust.io/

[5]. IOS端部署:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/ios

作者介绍:李雨珂博士,网易易盾资深算法专家,毕业于浙江大学信息与电子工程学系,研究方向包括数据挖掘、机器学习以及计算机视觉,目前在网易易盾主导内容安全领域多媒体信息相关人工智能算法研发。

【END】

服吗!Python身家50亿,是java和C++总和!

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

 热 文 推 荐 

☞ 60 岁的人工智能,会是“人类历史最后的事件”吗?

Java 服务端乱象大盘点

☞ 如何战胜软件开发的复杂性?

Python爬取B站5000条视频,揭秘为何千万人为它流泪

☞主链100强榜单出炉, XRP竟与比特币比肩; 以太坊每周产生1248种新代币 | 数据周榜

Docker,一个傲娇的男人

AI“生死”落地:谁有资格入选AI Top 30+案例?

最前沿:堪比E=mc2,Al-GA才是实现AGI的指标性方法论?

边看边用!这本 Python 3.6 的书火爆了 IT 圈!

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢

深度学习图像算法在内容安全领域的应用实践和优化相关推荐

  1. 七夕“加餐”:深度学习图像算法在内容安全领域的应用实践和优化

    作者介绍:李雨珂博士,网易易盾资深算法专家,毕业于浙江大学信息与电子工程学系,研究方向包括数据挖掘.机器学习以及计算机视觉,目前在网易易盾主导内容安全领域多媒体信息相关人工智能算法研发. 深度学习图像 ...

  2. 深度学习图像算法在内容安全领域的应用

    互联网给人们生活带来便利的同时也隐含了大量不良信息,防范互联网平台有害内容传播引起了多方面的高度关注.本次演讲从技术层面分享网易易盾在内容安全领域的算法实践经验,包括深度学习图像算法在复杂场景下的效果 ...

  3. 眼界大开 声临其境丨胡宜峰:视频深度伪造检测技术在内容安全领域的探索与实践

    导读:「眼界大开 声临其境」技术系列课第三期.网易易盾资深计算机视觉算法工程师胡宜峰带来了主题为<视频深度伪造检测技术在内容安全领域的探索与实践>技术分享. 讲师简介:胡宜峰,网易易盾资深 ...

  4. Python实现的深度学习技术在水文水质领域应用

    当前,深度学习作为人工智能的热门技术发展迅速,以其强大的非线性和不确定性处理能力在图像识别.语音识别.自然语言处理等领域取得了显著的成效.它是一种端到端的处理方法,在训练算法的指导下,深层神经网络自发 ...

  5. 搜狗深度学习技术在广告推荐领域的应用

    内容来源:2017年4月17日,搜狗移动搜索广告策略研究组负责人舒鹏在七牛云和QCon联合主办的深度学习论坛"深度学习最新进展与实践"上进行<搜狗深度学习技术在广告推荐领域的 ...

  6. 深度学习在搜索和推荐领域的应用

    /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 深度学习在搜索和推荐领域的应用 (想更系统地学习深度学习知识?请参考:深度学习枕边书) 大纲: •深度 ...

  7. 机器学习深度学习高阶内容系列-kaggle广告点击欺诈识别实战

    机器学习深度学习高阶内容系列-kaggle广告点击欺诈识别实战 中国是全球最大的智能移动设备市场,每月有超过10亿台智能移动设备投入使用 .TalkingData是中国最大的独立大数据服务平台,覆盖全 ...

  8. 深度学习在雷达、无线通信领域应用

    本文是深度学习在雷达.无线通信领域应用视频的笔记,视频的链接见文末.下面是一些笔记. 目录 简介 深度学习流程 连接雷达硬件 预处理.特征提取和标注 示例演示-采用合成数据训练模型,实采数据进行模型测 ...

  9. 真·干货!这套深度学习教程整理走红,从理论到实践的带你系统学习 | 资源...

    铜灵 发自 凹非寺 量子位 出品 | 公众号 QbitAI 寒假/春节小长假给自己充电的真·干货来了. 如果你想要的是一份从理论到实践的深度学习教程清单,如果你想系统了解各类框架.基础网络与各种使用场 ...

最新文章

  1. Oracle(order by)
  2. 深度学习:推动NLP领域发展的新引擎
  3. 3950双层交换机生成树协议
  4. mysql范围查找性能_MYSQL(四)查询性能优化
  5. ce测试数据文章ce测试数据文章ce测试数据文章
  6. MySQL find_in_set()函数
  7. Elementary Methods in Number Theory Exercise 1.2.31
  8. Java基础学习总结(145)——Java SPI(Service Provider Interface)简介
  9. php 日期转毫秒_高性能的PHP日志系统 SeasLog 使用
  10. Jzoj5662 尺树寸泓
  11. 2018ICPC焦作D(几何)---Keiichi Tsuchiya the Drift King
  12. [抽奖系统下载]多进程现场抽奖展示系统V2-双屏PPT版-专业抽奖展示工具-具有强劲引擎的抽奖系统-PPT双屏技术深度应用,国内唯一
  13. 身份证号判断男女和生日
  14. mc java送win10_微软针对Windows 10的免费Minecraft赠品在Java播放器的午夜结束
  15. python爬iptv直播源_GitHub - xkloveme/iptv-m3u: python 爬的直播源数据
  16. 知乎关于王阳明心学的高赞答案。
  17. Phonetic symbol 双元音 -- ɔɪ --(ɔi)
  18. Unity 2021.1.15 ARCore环境配置与样例开发
  19. 人工智能在生物学和神经科学中的应用
  20. 今夕何年 模拟 思维题

热门文章

  1. Java基础学习笔记(五)Iterator
  2. 换一种态度看程序员(转)
  3. ORACLE自增长字段实现(转)
  4. [hashmap|空间换时间] leetcode 1 两数之和
  5. 211计算机建设,“211工程”重点学科信息资源建设综述
  6. 递归算法经典实例_【经典算法】利用递归方法求5!
  7. python38pip装不了东西_python – pip不能安装任何东西
  8. python向excel写数据_Python向excel中写入数据的方法
  9. 中国水稻种子行业市场供需与战略研究报告
  10. 2021-2025年中国磁弹性扭矩传感器行业市场供需与战略研究报告