实现的功能
利用torchvision的语义分割模型deeplab3+,进行转换,然后部署到安卓上,实现二寸证件照的生成。
详细功能如下:
1. 从相册中选择一张 相片
2. 利用语义分割模型实现相片的分割,并且背景换成证件照的蓝色
3. 生成的证件照,分割的边缘带有一点之前的背景;进行再处理让分割的相片和蓝色背景更好的融合
4. 对生成的证件照进行保存
总体效果如下(相片为默认的相片,用户可以从相册中选择要处理的相片):
具体实现
1.生成可以在安卓上运行的模型
把转换生成的.pt模型拷贝到安卓项目的assets文件夹
2. 在安卓项目的app的build.gradle中增加
implementation 'org.pytorch:pytorch_android:1.7.1'
implementation 'org.pytorch:pytorch_android_torchvision:1.7.0'
-
完成从相册选择相片的功能
-
在代码中load此模型,使用此模型
得到分割之后的人像,并且把背景更换成证件照的蓝色
即点击生成二寸证件照的button,生成效果如下:
此时生成的相片:人物边缘带有一点原来的背景,需要进一步处理,让人物边缘和蓝色背景更好的融合。此外,相片的底部有一点多余的蓝色,需要做裁剪处理。 -
点击生成相片再处理,对生成的二寸证件照进一步处理,效果如下:
-
可以将生成的相片保存下来
此外: 二寸相片的像素是:274*379
我们以二寸相片像素大小来展示一下处理前后效果
A: 最终生成的二寸证件照:
B:语义分割没有再处理的效果图:
C:没有进行任何处理,从相册选择相片之后的效果图:
写在最后的话
今天就写到这里啦~~有做过类似的或者准备做的童鞋,欢迎相互交流学习~~