有了这个工具你将能安心摸鱼,动手搞一搞
来源:转载 作者:livingbody
编辑:学姐
还记得小时候爸妈不偷看电视的你吗?
还记得高中时代看小说防着老师的你吗?
还记得上班打游戏防着领导的你吗?
来感受下用PaddleDetection做上班偷懒神器
NO.1介绍
本文使用PaddleDetection自制数据集,做人脸分类,调用本地电脑的前置摄像头识别出现在屏幕前的人脸,根据不同的人脸切换本地电脑的窗口,实现偷懒神器~
NO.2效果
我的演示项目效果地址:
https://www.bilibili.com/video/BV1ni4y1V7TT
百度推广视频演示地址:
https://www.bilibili.com/video/BV1kC4y1t7s1
我实现的效果截图:

百度推广视频效果图:

NO.3 PaddleDetection介绍
目标检测是机器视觉领域的核心问题之一。7月3日百度AI开发者大会,飞桨核心框架Paddle Fluid v1.5宣布开源了PaddleDetection物体检测统一框架,用户可以非常方便、快速的搭建出各种检测框架,构建强大的各类应用。
PaddleDetection物体检测统一框架,覆盖主流的检测算法,即具备高精度模型、也具备高速推理模型,并提供丰富的预训练模型,具有工业化、模块化、高性能的优势。
•工业化:结合飞桨核心框架的高速推理引擎,训练到部署无缝衔接
•模块化:提供模块化设计,模型网络结构和数据处理均可定制
•高性能:基于高效的核心框架,训练速度和显存占用上有一定的优势,例如,YOLO v3训练速度相比同类框架快1.6倍。
NO.4现有的模型

NO.5 用PaddleDetection实现本项目
PaddleDetection下载地址:
https://github.com/PaddlePaddle/PaddleDetection
或者
https://gitee.com/paddlepaddle/PaddleDetection
01 本地制作数据集
实现本项目,最好用打算实验的相机拍摄数据集,就比如我想在自己的笔记本电脑上实现,那么可以直接调用本地电脑的前置相机来采集人脸照片,调用本地电脑拍照储存代码如会自动调用摄像头,按 **S** 按键,保存捕获的图像, **ESC** 退出。
02数据标注
上述代码执行完后会在本地这段代码所在路径创建pictures文件夹存放图片,接下来下载labelImg工具进行数据标注参考教程:
[labelImg在Python3 linux环境下安装]
(https://blog.csdn.net/weixin_40745291/article/details/85775708)
~ 安装完成后在本地执行以下命令打开labelImg:
打开图片路径:

选择框选,并给人脸标注名字(这里我用红绿灯的图为例保护隐私):

标注完成:

03训练模型
现在的路径应该是这样的:

pictures下放着我们的图片和xml文件。
3.1 生成图片和xmls关系的描述文件
上面两段代码执行完后会生成三个文件:

3.2修改配置文件
修改这个文件:PaddleDetection/configs/ssd/ssd_mobilenet_v1_voc.yml
主要修改就是改动了dataset_dir和anno_path和use_default_label,本项目的ssd_mobilenet_v1_voc.yml文件已经修改了。
内容如下:
NO.4 开始训练
NO.5 本地部署
转换模型后,这个路径下:
~/PaddleDetection-release/inference_model/ssd_mobilenet_v1_voc会有__params__ __model__ infer_cfg.yml
三个文件,下载到本地。
本地在python环境下下载PaddleDetection的包,将模型的三个文件放到PaddleDetection目录下的output目录下:

安装工具wmctrl 在linux的终端下执行:
sudo apt-get install wmctrl
修改本地PaddleDetection包中的这个文件:
/PaddleDetection-release-0.3/deploy/python/infer.py
内容如下:
上面代码的核心代码,根据个人使用一点修改,核心代码在585行,其他不用改动,内容如下:

NO.6 总结
PaddleDetection可以帮助我们很好的实现各种目标检测任务,不需要用户写大量的代码,只需要简单的配置
使用PaddleDetection也可以很轻松的实现本地的部署
如果项目有任何问题,欢迎在评论区留言指出
需要源代码吗?需要的话评论区留言嗷!