soarli

百度飞桨PY深度学习7日结营心得
本文首发于我的CSDN博客(blog.csdn.net/weixin_43639287/article/detai...
扫描右侧二维码阅读全文
28
2020/04

百度飞桨PY深度学习7日结营心得

本文首发于我的CSDN博客(blog.csdn.net/weixin_43639287/article/details/105811630),转载请注明来源!

心得及一些经验分享:

百度的“Python小白逆袭大神”7日课程转瞬即逝,正如课程标题,参加本课程并按时完成本课程作业的同学们大多数应该着实实现了摘帽"小白"的蜕变。

在本课程中,第一天主要针对小白们进行python基础知识的讲解,主要学习python的基础语法及各类常见用法;第二天讲解了爬虫的相关概念和基础知识;第三天重点讲解了python的数据分析与处理库;第四天讲解了paddleHub的用法及相关内容;第五天主要是EasyDL的讲解;第六及七天主要是作业及课程答疑时间。

期间完成的各类作业和课堂笔记均已上传到博客,这里仅列出目录不再赘述。

相比这些,本次见识更多的应该就是了解了百度的飞浆深度学习平台。并通过一些案列和作业感受其强大。

百度飞桨(PaddlePaddle)是国内唯一功能完备的开源深度学习平台,自Paddle Fluid v1.0发布以来,飞桨陆续在开发、训练和部署全流程上进行全方面的升级。

总结一下,其有五大优势:

  1. 动态图&静态图:兼顾灵活性与效率。飞桨新增同时为用户提供动态图和静态图两种机制
  2. 官方模型:覆盖三大主流任务。飞桨提供了70多个官方的、达到工业级应用效果的模型,涵盖视觉、NLP、语音和推荐等AI核心技术领域。如 自然语言处理模型库PaddleNLP,视觉模型库PaddleCV,预训练模型库PaddleHub
  3. 大规模分布式训练:超大规模并行深度学习能力。飞桨同时支持稠密参数和稀疏参数场景的超大规模深度学习并行训练,支持千亿规模参数、数百个节点的高效并行训练。分布式训练的吞吐量和加速比都呈现线性增长。
  4. 端到端部署:训练到多端推理的无缝对接。PaddleSlim基于模拟退火的自动剪枝策略和轻量级模型结构自动搜索功能Light-NAS,相比MobileNet v2ImageNet类分类任务上精度无损情况下FLOPS减少17%
  5. 服务支持:唯一提供系统化深度学习技术服务。飞桨已实现了API的稳定和向后兼容,为用户提供完善的中英双语使用文档。

在这里体验了 PaddlePaddle的人脸口罩识别, 《青春有你2》评论检测过滤, 人脸识别分类, EasyDL 数据标记等等。

众所周知,无论什么领域环境和硬件配备方面通常对于新手不算友好,及时使用Docker也还是对使用者有一定的门槛要求,为此百度免费开放了Web在线开发平台AI Studio)供新手来使用。

AI Studio 使用和 Jupyter Notebook基本一样, 因此有一些AnacondaJupyter使用经验上手会特别快,当然会写Markdown是最基本的硬实力。

PaddlePaddle里面的模型,比如CV 方向的, 很多都是 Image Net 训练的模型做了一下迁移学习, 做的很不错, 同时也有自己亿级别的数据训练的模型。

PaddleHub引入了模型即软件的概念,通过Python API或者命令行工具,一键完成预训练模型地预测。此外还借鉴了Anacondapip软件包管理的理念设计了一套命令行接口。

深度学习时代,模型发展的趋势会逐渐向软件工程靠拢;未来模型可以当作一个可执行程序,一键预测;也可以是第三方库,通过模型插拔的方式可以提高开发者的开发效率。

同时模型会有版本的概念,通过不断迭代升级的方式提升我们模型的效果。通过命令行工具,可以方便快捷的完成模型的搜索、下载、安装、预测等功能,对应的关键的命令分别是searchdownloadinstallrun等。

数据集Dataset:PaddleHub提供多种NLP任务和CV任务的数据集,用户也可以在自定义数据集上完成Fine-tune

  • 数据预处理ReaderPaddleHub的数据预处理模块Reader对常见的NLPCV任务进行了抽象。
  • 预训练模型ModuleModule代表了一个预训练模型。
  • 优化策略Strategy:在PaddleHub中,Strategy类封装了一系列适用于迁移学习的Fine-tune策略。Strategy包含了对预训练参数使用什么学习率变化策略,使用哪种类型的优化器,使用什么类型的正则化等。
  • 运行配置 RunConfig:在PaddleHub中,RunConfig代表了在对Task进行Fine-tune时的运行配置。包括运行的epoch次数、batch的大小、是否使用GPU训练等。
  • 迁移任务TaskPaddleHub预置了常见任务的TaskTask代表了一个Fine-tune的任务。任务中包含了执行该任务相关的Program、数据Reader、运行配置等内容。每种Task都有自己特有的应用场景以及提供了对应的度量指标,用于适应用户的不同需求。预置的任务类型包括图像分类、文本分类、序列分类和多标签分类各类任务。

安装

$ pip install paddlepaddle     #CPU安装命令

或者

$ pip install paddlepaddle-gpu     # GPU安装

以上命令是安装CPU或者GPU版本的飞桨。通过以下命令则可以安装PaddleHub

$ pip install paddlehub

另外,PaddleHub内置了深度学习可视化工具VisualDL的依赖,通过VisualDL,可以很好的对深度学习任务进行可视化。

口罩检测模型感悟:

随着前几周各企业相继复工,节后经济开始逐渐恢复,人脸口罩检测方案成为返工潮中众多社区、大型厂商、央企的重要需求。如判断工区员工是否佩戴口罩、人流密集的关口运输中心如何识别戴口罩的人脸并测温、佩戴口罩是否也能完成日常刷脸打卡等等……都是新冠肺炎疫情下需要解决的真实痛点。

此次宣布免费开源的自研口罩人脸检测及分类模型,是基于2018年百度收录于国际顶级计算机视觉会议ECCV的论文PyramidBox研发,可以在人流密集的公共场景检测海量人脸的同时,将佩戴口罩和未佩戴口罩的人脸快速识别标注。基于此预训练模型,开发者仅需使用少量自有数据,便可快速完成自有场景的模型开发。

百度研发工程师介绍,口罩人脸检测及分类模型,由两个功能单元组成,可以分别完成口罩人脸的检测和口罩人脸的分类。经测试,模型的人脸检测算法基于faceboxes的主干网络加入了超过10万张口罩人脸数据训练,可在准确率98%的情况下,召回率显著提升30%。

而人脸口罩判断模型可实现对人脸是否佩戴口罩的判定,口罩判别准确率达到96.5%,满足常规口罩检测需求。开发者基于自有场景数据还可进行二次模型优化,可进一步提升模型准确率和召回率。如此高的准确率的背后是大量数据训练的结果,新模型采用了超过十万张图片的训练数据,确保样本量足够且有效。另一方面,人脸检测模型基于百度自研的冠军算法,整个研发过程都是基于百度开源的飞桨深度学习平台,能够进行高效、便捷的模型开发、训练、部署

对于实际场景中的光照、口罩遮挡、表情变化、尺度变化等问题,模型具有鲁棒性,并且能够在多种不同端、边、云设备上实时检测,在落地过程中做到真正实用。

#安装paddlehub
!pip install paddlehub==1.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from zipp>=0.5->importlib-metadata; python_version < "3.8"->pre-commit->paddlehub==1.6.0) (7.2.0)

口罩检测

PyramidBox-Lite是基于2018年百度发表于计算机视觉顶级会议ECCV 2018的论文PyramidBox而研发的轻量级模型,模型基于主干网络FaceBoxes,对于光照、口罩遮挡、表情变化、尺度变化等常见问题具有很强的鲁棒性。该PaddleHub Module基于WIDER FACE数据集和百度自采人脸数据集进行训练,支持预测,可用于检测人脸是否佩戴口罩。

一键使用

#安装口罩检测模型
!hub install pyramidbox_lite_mobile_mask==1.1.0
import matplotlib.pyplot as plt 
import matplotlib.image as mpimg 
test_img_path = "data/data31681/test.jpeg"
img = mpimg.imread(test_img_path) 

# 展示待预测图片
plt.figure(figsize=(10,10))
plt.imshow(img) 
plt.axis('off') 
plt.show()

# 预测结果展示
test_img_path = "./detection_result/test.jpeg"
img = mpimg.imread(test_img_path)

# 展示预测结果图片
plt.figure(figsize=(10,10))
plt.imshow(img) 
plt.axis('off') 
plt.show()

Python预测使用

import paddlehub as hub
import cv2

module = hub.Module(name="pyramidbox_lite_mobile_mask")

test_img_path = "data/data31681/test.jpeg"

# set input dict
input_dict = {"data": [cv2.imread(test_img_path)]}
results = module.face_detection(data=input_dict)
print(results)


[{'data': {'label': 'MASK', 'left': 678.9846324920654, 'right': 893.2966804504395, 'top': 241.9092297554016, 'bottom': 487.231333732605, 'confidence': 0.9711812}, 'id': 1}]

总结

借助深度学习7日打卡营Python小白逆袭大神的这个活动,概括性的了解了机器学习的主要步骤,初步会使用paddle,学习到了网页爬取、数据可视化展示、图片分类、文本分类等。虽然时间很短,但是收获颇丰。希望以后还能参加类似活动,最后感谢飞桨深度学习学院举办这次活动。

最后修改:2020 年 04 月 28 日 02 : 43 PM

发表评论