五一劳动节,今天好好劳动了一波,体验了一下padllehub提供一些模型,这里对项目进行一个总结。
项目地址:https://aistudio.baidu.com/aistudio/projectdetail/444942
首先声明我的项目都是在AI Studio上完成的,所以没有进行本地测试。我的代码全是参考官方文档进行实现的。官方文档地址:https://www.paddlepaddle.org.cn/hublist
不得不承认,paddlehub提供的模型使用起来都很简单,直接复制官方文档提供的代码,修改一下资源地址就可以运行,加上AI Studio的加成,体验不要太爽。
我主要在这个项目中使用了图像生成模型、图像分割模型、目标检测模型和关键点检测模型,详细介绍如下:
图像生成模型
我使用模型stylepro_artistic(https://www.paddlepaddle.org.cn/hubdetail?name=stylepro_artistic&en_category=GANs)实现图片的风格迁移
上面左图是原始图片,中间是迁移的目标风格图片,右图为进行风格迁移后的图片
这里需要注意模型输入的images参数。images是一个列表,每一个元素都为一个字典,字典有三个关键字 :content, styles, weights(可选)。content是一个存储待转换的图片数组,注意其格式为BGR,所以一般使用opencv进行图片读取;styles 是一个存储风格图片的列表,BGR格式;weights存储各个 style 对应的权重。当不设置 weights 时,默认各个 style 有着相同的权重;我的项目里只是用了一张风格图片。
图像分割模型
我使用deeplabv3p_xception65_humanseg模型(https://www.paddlepaddle.org.cn/hubdetail?name=deeplabv3p_xception65_humanseg&en_category=ImageSegmentation)进行图片分割。
上面左图为原图,右图为分割出的图片。
结合图片分割和风格迁移,我们可以将图片的背景进行风格转换效果图下:
其实现流程是:将图片分别进行风格迁移和图像分割,在把两个操作得到的结果进行合成。
在项目里面。结合上面的技术,实现了将gif动态图的背景风格迁移。由于图片大小限制,请感兴趣的朋友到项目内查看。
对于gif动态图的读取,我是用Pillow的ImageSequence;对于gif动态图的制作我是用imageio。这里存在一个问题是对于gif动态图的帧间延迟duration的设置,由于使用ImageSequence读取gif动态图好像不能获取duration,所以对于duration的设置就不能和原图一模一样,为了获得好的对比效果,我是用原图读取出来的图片,生成了新的动态图作为对比参考。
目标检测模型
我是用ultra_light_fast_generic_face_detector_1mb_320模型(https://www.paddlepaddle.org.cn/hubdetail?name=ultra_light_fast_generic_face_detector_1mb_320&en_category=ObjectDetection)实现人脸遮挡。
上图可以看到,为坤坤美丽的脸蛋上加了面具(龟龟,我本来的图片由于太过于性感上传失败了。。。)
实现流程是:首先通过人脸检测出图片中人脸的位置,然后使用Image.paste在对应位置上添加面具。
这里需要注意的是对于输出人脸坐标的转换和面具大小的更改,需要使面具和人脸大小一致。另外模型输出的坐标使浮点数,这里需要将坐标转化为整数。
关键点检测模型
我使用模型pose_resnet50_mpii(https://www.paddlepaddle.org.cn/hubdetail?name=pose_resnet50_mpii&en_category=KeyPointDetection)实现对人体的关键点标注。
上图实在人脸遮挡的基础上加了人体关键点标注。(我的实例图还是太过性感,上传失败。绅士们请移步项目内观看)
人体关键点标注就比较简单了,直接调用官方提供的代码就行了。项目里结合前面所有模型进行了动态图的转换。
总结
总的来说,paddlehub的使用非常简单,模型效果也十分不错,推荐大家使用。
对于paddlehub的模型,我有一个建议:因为有的模型输入要求是输入图片路径,这样在处理使用的时候,就需要想把视频帧保存为图片,在进行处理,这显得有点麻烦,这也是在这个项目中,我没有对视频进行处理的原因。希望可以对输入进行一个兼容,既可以直接输入图片数组也可以输入图片路径。
接下来我会继续体验更多的模型,项目也会持续更新。
神经网络风格迁移效果好好,支持了