开发者市集是WAVE SUMMIT+峰会上由开发者们基于飞桨打造酷炫项目的展示和交流平台。开发者们脑洞大开的Al创意,每年都会吸引不少人驻足观看。
今年11月的WAVE SUMMIT+2022峰会也将展示30余个开源展示项目,覆盖智慧城市、体育、趣味互动等产业应用。通过市集系列文章,我们先一探究竟~
今天将由飞桨开发者技术专家张一乔介绍“美甲预览机”项目。
项目简介
很多人觉得时尚感重点都在衣服的选款,其实很多小细节也影响着造型给人的感觉,美甲就是这样的时髦细节之一。随着美甲的流行,做美甲已经成为了很多人的日常休闲方式之一。但是面对琳琅满目的美甲照片“卖家秀”,很多人会存有疑虑,这些美甲的颜色呈现在自己的手上会有什么效果?美甲预览机就为大家解决这个问题。
美甲预览机可以被看作在指甲上的AI试衣间(下文简称美甲机)。它的主要功能是实时识别摄像头拍摄的画面,并将画面中的指甲部分渲染成涂过美甲的样子,无需用户真正做一次美甲,即可便捷地观察到自己做过美甲的样子,可以用来给不确定美甲方案、单纯对美甲感兴趣的人进行预览。
项目效果
项目流程图
本项目详细介绍了如何通过深度学习方法,轻松构造美甲机。项目内容包含训练指甲识别模型、Jetson Nano配置(Jetson Nano可用笔记本代替)、美甲机组装、效果优化等。项目主要流程如下:
技术细节
开发环境准备
AI Studio在线运行环境(若算力允许,可以自行替换其他训练设备)、个人主机、摄像头。(可选)Jetson Nano/Aibox、补光灯、双面胶、纸箱、线。
注:所有边缘设备,包括PC都可用于部署,本文以AiBox为例,使用FastDeploy进行部署。
关于FastDeploy,部署环境中可以直接使用CPU进行模型推理,安装命令如下:
https://github.com/PaddlePaddle/FastDeploy
训练分割模型
https://aistudio.baidu.com/aistudio/datasetdetail/68764/0
图片地址1<空格>标签地址1
图片地址2<空格>标签地址2
图片地址3<空格>标签地址3
图片地址4<空格>标签地址4
图片地址5<空格>标签地址5
我们选择飞桨图像分割套件PaddleSeg中的PP-LiteSeg模型进行训练,下载并安装PaddleSeg,链接如下。
https://github.com/PaddlePaddle/PaddleSeg
将上述内容写入yaml文件,并且命名为myconfig.yml放置于AI Studio根目录/home/aistudio下,就可以通过下述代码一键训练了。
训练好的模型保存在~/PaddleSeg/output/best_model/中。最后,将训练后的模型导出成预测模型,用于后续部署。
数据扩充
在实际使用中,有时候会发现模型的分割效果并不好,解决这个问题的直接方法就是数据扩充。由于本项目的基础训练集一共只有52张图片,本项目直接基于52张图片对新采集到的图片进行标注,从而通过增加数据集数量的方式提高模型的检测质量。主要的数据集扩充流程如下。
美甲渲染
当我们完成了模型训练后,只能将手指图片中的指甲部分分割出来,想要真正“做美甲”,还需要设计指甲渲染策略。下面,简单介绍如何对指甲进行渲染。
在不考虑指甲前缘和指甲弧的情况下,不妨假设指甲部分的颜色是统一且均匀的。则最后呈现在我们眼前的指甲色彩主要由几部分决定:指甲基色和光线、景深以及各种因素。
我们做美甲,相当于对指甲基色,也就是Base_ColorBase进行修改。因此,只需要将抖动项,也就是Influence求出即可。
对于一张给定的指甲图片,其指甲盖部分的基色可以通过求均值、求中位数获得。而Influence可以通过Color−Base_Color获得。从而做了美甲的图片中各个像素点的值为:
对于HSV模型,可以认为亮度(V)是不需要调整的。因此仅对色调(H)和饱和度(S)应用上述模型即可。
PyQt5封装
现在已经有了分割模型和渲染策略,稍作结合即可。使用PyQt5时,只需要读取模型,并在展示图片之前自行实现图片处理逻辑即可。封装函数如下:
FastDeploy部署优化
FastDeploy是一款全场景、易用灵活、极致高效的AI推理部署套件。提供开箱即用的云边端部署体验, 支持超过150+模型,并实现端到端的推理性能优化,覆盖多个任务场景,满足开发者多场景、多硬件、多平台的产业部署需求。
本案例使用FastDeploy进行美甲机部署,只需要在PyQt5的部署代码中替换如下内容:
相比传统推理引擎的Infer函数,FastDeploy推理套件的Infer函数不需要写入一大堆数据预处理的内容,直接调用FastDeploy封装好的predict即可预测,极大加速AI模型部署落地速度。
总结
整个美甲机部署和优化的全过程就结束了,美甲机的应用效果可以通过不断填充数据集逐渐完善。这个项目中使用了PaddleSeg套件和FastDeploy,前者可以便于我们快速应用很多鲁棒的分割模型,后者则方便我们快速地在多种边缘设备上优化部署性能,免除了根据不同设备配置不同加速框架的烦恼,真正的一套代码完成所有。
如果对上述两个工具感兴趣,可以前往PaddleSeg和FastDeploy的Github仓库了解~最后的最后,美甲机除了标准深度学习支持,还需要一些数据渲染上的优化策略,本项目使用了基于HSV的渲染策略,还可以考虑对RGB信息进行融合,欢迎大家对模型进行改进~
本文分享自 PaddlePaddle 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!