PaddlePaddle应用于百度视觉技术的工程实践

深度学习的出现,某种程度上改变了我们对计算机视觉的定义。而PaddlePaddle是百度开源的深度学习框架,它是如何支持百度视觉技术,有哪些工程实践,这篇文章将由百度视觉技术部主任研发架构师刘国翌为大家解答。

以下为刘国翌老师演讲实录

百度AI视觉能力

百度内部大规模应用计算机视觉的技术分为四个方面,第一是图像识别,包含图像分类、文字识别、人脸识别等。第二是图像检索,包含图文、相同图片、相似图片和商品图片检索。第三是视频理解,主要涉及视频分类、目标追踪、人体姿态跟踪,应用在商业、监控、安全、新零售等领域,。第四是机器人视觉,包括嵌入式视觉、SLAM、深度传感器。这是百度计算机视觉整体的划分,除机器人视觉大量应用深度学习技术,其余三个技术是从传统的机器视觉的方法逐渐过渡到现在最流行的深度学习的过程,是逐步替代的。

其中,图像识别是百度应用最广泛也是最重要的技术,包括无人车、推荐、图像配图等等。它的基础能力包含通用分类、文字识别、图像检索、细粒度识别、图像审核、视频内容分析六大能力。

图一:百度识图基础能力

? 通用分类:在实际应用中,我们需要处理上万类的通用分类以及各种各样的目标检测,因此百度内部建设自己的分类体系。
? 文字识别:和人脸识别一样,是图像识别的最主要的指令,是编码和解码的过程,方向是目标类检测。
? 图像检索:用以覆盖广泛的需求,可以搜到互联网所有包含这张图片的网页,以及跟这张图片关联的商品,包括垂类的识别,比如商品、景点、红酒、外币等等,这些无法通过一个简单分类来解决。因此需要通过图像特征学习,从而实现从图片到信息的关联。基于此,图像检索技术最关键的是图像深度学习,基于通用分类,提取分到某个中间层,定义图像不良的相应损失函数,使得相同的或者相类似的问题能得到统一的表达。另外重要的垂类,比如动植物、商标、车型等等,这种采用专用的分类技术或者分类数据,并建设一个分类的数据闭环来持续进行迭代。模型迭代需要解决三个问题,第一个问题是如何在众多的模型结构里选择最适合、最先进、最好的结构。第二个问题是上百个模型如何进行评价,这时我们需要系统的方法。换句话说,第二个问题就是如何快速经济的复现模型,希望有流程使其自动化和标准化。第三个问题:如何沉淀模型研发中大量的算法经验。因此视觉研发的实现目标是使得机器学习拥有流程化,标准化,持续快速迭代的能力。

基于PaddlePaddle,如何实现视觉模型研发

现在市场上有各种各样的不同的框架,不同框架的使用会带来模型研发、训练不同实现的问题。因此,百度内部趋向于使用同一种框架和流程,把所有的算法研发经验,包括数据处理流程都往一个方向去努力。

其中,PaddlePaddle是提供基础的平台或架构,它为我们提供了符合论文实现标准的算子的实现。同时,PaddlePaddle复现使用单卡进行训练,来保证单机单卡以及多机多卡效率互有分工。因此,基于PaddlePaddle,实现了训练的标准化和自动化以及最底层的训练框架。

PaddlePaddle训练平台中的Paddle Cloud是公司级的平台,它的数据读取可以实现从数据仓库和HDFS、AFS直读,大家通过这个平台去共享复现方案以及降低模型复现和训练的门槛。

目前,PaddlePaddle中已发布的视觉模型有:

?图像分类:image_classification
?人脸检测:face_detection
?OCR识别:ocr_recognition
?目标检测:object_detection
?图像分割:ICNet
?模型转换:image_classification/caffe2fluid

同时,还在开发中的模型如下:

?图像特征学习
?OCR 检测
?定点化训练
?视频分类
?GAN

图二:图像分类模型的论文结果复现

这是我们在图像分类模型复现的结果,我们在研发过程中使用的一些数据集,通过提高社区提交代码文档和质量的要求,所有代码进行持续的集成测试,保证随着版本的迭代,使得稳定性和正确性能保持。
PaddlePaddle涉及大量的基础算法和优化算法,里面任何一部分的修改都有可能造成潜在的错误,为保证这些修改能持续得到验证,一方面在公司内部持续使用,另一方面我们会有专门的QA团队来保证持续迭代的功能,当然,我们也会有专门的团队来负责PaddlePaddle训练模型之后的预测优化。所有这些通过分工协作,视觉模型研发及相应预测的优化,更多是接近真正的使用场景。除复现大量经典的模型,我们自己也做一些自研的模型研发,如人脸检测,大规模分类以及视觉识别方面,在公开数据做到世界领先水平。未来会逐步把这些模型开放出来,跟大家一起去改进和升级这些算法。

工程示例:OCR PaddlePaddle v1 迁移到PaddlePaddle Fluid

OCR长期适用比较老的版本进行模型识别训练,期望使用最新PaddlePaddle Fluid进行研发,并统一到Paddle Cloud集群训练,应用最新的模型预测优化。因此成立PaddlePaddle vision联合项目组,模型研发和对齐并进行训练迁移和预测迁移。

模型迁移主要有四个步骤:

?完成C++端OP开发。
?完成模型网络配置,验证前向网络
?与旧版本Paddle对齐模型训练指标。
?对比多种优化方法和学习率动态调整策略。

最终试验的效果是识别率可以跟以前的版本打平,经过优化,可以有提升的空间。

模型训练主要有两个方面的提高:第一实现Fluid框架训练OCR英文识别模型。与旧版本PaddlePaddle训练出的模型相比精度相对提升1%;第二在Paddle Cloud上实现afs数据分发,实现Paddle Cloud进行单机单卡,单机多卡训练OCR识别模型。

以上这些工作和PaddlePaddle技术团队一起完成,不仅实现了PaddlePaddle的升级,也实现了自己整个训练方式的升级。

整体实现迭代之后影响面大概是1500万文本图像的识别,流量得到了升级。概括来说,我们是基于PaddlePaddle开发了一个流程:首先是基线算法采用公开数据集,实现公开的算法并在社区上提交代码和文档,以保证基线模型的正确性,以及跟其他分发的图像对比。第二是代码经过反复review,提高了代码和文档的质量,也通过社区的反馈,实现了技术的积累以及相应的问题解决。第三基于PaddlePaddle框架,实现了统一的集群训练方式,实现了标准化、自动化去做机器学习,且一些高级的训练特性,可以快速集成到框架中去。第四预测框架通过专业专门的团队,进行优化,可以达到世界领先水平。同时,独立的训练QA测试,保证训练结果随版本迭代是可复现的。

实录结束

刘国翌,百度视觉技术部主任研发架构师,百度AI技术部识图技术负责人,负责研发基于图像检索、大规模图像分类和垂类识别技术的识图系统,满足手机拍照场景下的以图搜图、以图搜信息的用户需求,组织研发并建设了百度视觉技术开放平台,开放百度的各项视觉能力。

原文地址:http://blog.51cto.com/13970240/2288309

时间: 2024-10-14 10:30:50

PaddlePaddle应用于百度视觉技术的工程实践的相关文章

【140810】VC++数字图像模式识别技术及工程实践pdf电子书

VC++数字图像模式识别技术及工程实践pdf电子书,本书介绍模式识别和人工智能中的一些基本理论和相关模型,比如神经网络.聚类技术.线性差别函数等,同时结合了模式识别中的一些经典问题,比如人脸检测.车牌识别.印章识别等内容,从不同角度介绍了这些问题的解决思路. 源码: 电子书下载地址:点击下载 本书源码下载地址:点击下载 [140810]VC++数字图像模式识别技术及工程实践pdf电子书

百度前端技术学院task1.10

任务十:Flexbox 布局练习 面向人群: 有一定HTML及CSS基础的同学 难度: 中 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度的合理性,但即使如此,真正决定课程效果的,还是你的每一次思考和实践. 课程多数题目的解决方案都不是唯一的,这和我们在实际工作中的情况也是一致的.因此,我们的要求不仅仅是实现设计稿的效果,更是要多去思考不同的解决方案,评估不同方案的优劣,然后使用在该场景下最优雅的方式去实现.那些最终

百度前端技术学院task1.12

任务十二:学习CSS 3的新特性 面向人群: 初学者 难度: 简单 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度的合理性,但即使如此,真正决定课程效果的,还是你的每一次思考和实践. 课程多数题目的解决方案都不是唯一的,这和我们在实际工作中的情况也是一致的.因此,我们的要求不仅仅是实现设计稿的效果,更是要多去思考不同的解决方案,评估不同方案的优劣,然后使用在该场景下最优雅的方式去实现.那些最终没有被我们采纳的方案,同

百度前端技术学院task1.9

任务九:使用HTML/CSS实现一个复杂页面 面向人群: 有一定HTML/CSS基础的同学 难度: 中等 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度的合理性,但即使如此,真正决定课程效果的,还是你的每一次思考和实践. 课程多数题目的解决方案都不是唯一的,这和我们在实际工作中的情况也是一致的.因此,我们的要求不仅仅是实现设计稿的效果,更是要多去思考不同的解决方案,评估不同方案的优劣,然后使用在该场景下最优雅的方式去

百度前端技术学院—-小薇学院(HTML+CSS课程任务)

任务一:零基础HTML编码 课程概述 作业提交截止时间:04-24 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度的合理性,但即使如此,真正决定课程效果的,还是你的每一次思考和实践. 课程多数题目的解决方案都不是唯一的,这和我们在实际工作中的情况也是一致的.因此,我们的要求不仅仅是实现设计稿的效果,更是要多去思考不同的解决方案,评估不同方案的优劣,然后使用在该场景下最优雅的方式去实现.那些最终没有被我们采纳的方案,同

百度前端技术学院任务-01

这两天发现了一个很不错的学习前端的地方:百度前端技术学院. 里面有不同类型的任务,任务之间的难度是递增的,很适合作为练习. 下面是任务-01的代码(并没有涉及到CSS): <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>百度前端技术学院任务-01</title> </head> <bod

【碎碎念】百度前端技术学院春季班

早上迷迷糊糊被读研阶段的室友的微信叫醒了,邀约组队参加百度前端技术学院春季班(http://ife.baidu.com/),前室友在前端方面还是有一定造诣的,自己本身对前端开发又有一定兴趣,因此准备组团参与下. 想想我的技能树长得确实有点奇葩,最早是做嵌入式的,做了三个月点唱机跑去做产品和实施,跑完了大半个福州高校做某系统推广与实施后觉得做开发的童鞋的Bug有点多就边实施边改代码,久而久之就慢慢转向了开发,想想读研阶段白天上班写C#晚上下班写实验室的Java横向项目的经验也是蛮奇葩的,导致现在我

百度前端技术学院-task1.3源代码

因为其中有图片,所以就给有图片的位置加了边框和设置了大小,这样哪怕图片不显示也可以知道在哪里. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Task1-3</title> <link rel="shortcut icon" href="/sjq_ico.png" /> <style

(作业)百度前端技术学院 任务八:响应式网格(栅格化)布局

百度前端技术学院 任务八:响应式网格(栅格化)布局 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>IFE Task1-8</title> <style> body{ margin:0; } .container{ box-sizing: border-box; padding: 10px;