paddleseg人像分割windows下实现与证照自动生成实现
近日研究了一下用人脸识别作自动证件照生成。刚开始以为很简单不就是识别出人脸,然后按比例切出。这一步当然很简单,结果看了各种证件照,原来要去除背景的,这样一来原来简单的事搞得复杂无法。先后测试了n多种方法,均不能实现。先进一点就是人点区域来分割,这显然不是一般人能做到的。没办法,只用用人工智能的方式来解决了。看了几个解决方法,以deepv3方案还可以,无耐没法下到模型,直到看到paddleseg人像分割才觉得有了一线曙光。paddleseg是什么大家自已网上看一下。我来说下windows下的预测实现。
因为paddleseg人像分割只依赖的库是yaml-cpp.所以能常上git的很容易就搞定了但上不了就杯具了,我前前后后折腾了一个多月,各种尝试,均告失败。最后终于成功,方法如下:(需要小许银子)
1、购买一个云服务器。操作系统为windows64位的。
2、在远程服务器上安装社区版本的vis2005(主要是能免费用)
3.安装cmake64位的最新版本。
4.下载opencn3.46.
5.下载paddlsee源码。
6.按以下过程操作。我编译的cpu版本的。(下面的代码及文档主要来自官方说明,只修改了文件路径)
### Step1: 下载代码
C++
预测库代码在C:\projects\PaddleSeg\deploy\cpp
目录,该目录不依赖任何PaddleSeg
下其他目录。
Step2: 下载PaddlePaddle C++ 预测库 fluid_inference
PaddlePaddle C++ 预测库主要分为两大版本:CPU版本
解压后D:\projects\fluid_inference
目录包含内容为:
fluid_inference
├── paddle # paddle核心库和头文件
|
├── third_party # 第三方依赖库和头文件
|
└── version.txt # 版本和编译信息
Step3: 安装配置OpenCV
- 在OpenCV官网下载适用于Windows平台的3.4.6版本, 下载地址
- 运行下载的可执行文件,将OpenCV解压至指定目录,如
C:\projects\opencv
- 配置环境变量,如下流程所示
- 我的电脑->属性->高级系统设置->环境变量
- 在系统变量中找到Path(如没有,自行创建),并双击编辑
- 新建,将opencv路径填入并保存,如
C:\projects\opencv\build\x64\vc14\bin
Step4: 以VS2015为例编译代码
以下命令需根据自己系统中各相关依赖的路径进行修改
- 调用VS2015, 请根据实际VS安装路径进行调整,打开cmd命令行工具执行以下命令
- 其他vs版本(比如vs2019),请查找到对应版本的
vcvarsall.bat
路径,替换本命令即可
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
在使用CPU版本预测库进行编译时,可执行下列操作。
# 切换到预测库所在目录
cd /d C:\projects\PaddleSeg\deploy\cpp\
# 创建构建目录, 重新构建只需要删除该目录即可
mkdir build
cd build
# cmake构建VS项目
C:\projects\PaddleSeg\inference\build> cmake .. -G "Visual Studio 14 2015 Win64" -DWITH_GPU=OFF -DPADDLE_DIR=C:\projects\fluid_inference -DOPENCV_DIR=C:\projects\opencv -T host=x64
这里的cmake
参数-G
, 表示生成对应的VS版本的工程,可以根据自己的VS
版本调整,具体请参考cmake文档
C:\projects\PaddleSeg\inference\build> msbuild /m /p:Configuration=Release cpp_inference_demo.sln
Step5: 预测及可视化
上述Visual Studio 2015
编译产出的可执行文件在build\release
目录下,切换到该目录:
cd /d C:\projects\PaddleSeg\deploy\cpp\build\release
之后执行命令:
demo.exe --conf=/path/to/your/conf --input_dir=/path/to/your/input/data/directory
生成成功能就可以运行上面的命令得到相应的mask.
有了mask就一切好办了,下期专门写用qt实现证件照片自动生成。