對於會PhotoShop的人來說,摳圖是非常簡單的操作了,有時候幾秒鐘就能扣好一張圖。不過對於一些比較複雜的圖,有時候還是需要花點時間的,今天就給大家帶了一個非常快速簡單的辦法,用Python來批量摳取人像。
效果展示
剛開始,我也不看好什麼自動摳圖,總覺得不夠精確,摳不出滿意的圖。下面我就直接展示一下效果圖吧。
我們先看看原圖 :
這張圖片背景是純色,我們平時用PhotoShop摳起來也比較簡單,對我們計算機來說也不是什麼難題,下面是效果圖:
因為本身是PNG圖片,而且原圖是白色背景,所以看不出什麼區別。為了顯示效果,我把原圖和摳好的圖放到一張黃色背景圖片上:
這樣一看效果明顯多了,感覺摳圖效果還是非常好的。但是,摳這種簡單的圖片,不怎麼過癮,我們再來看看複雜一點的圖片:
這張圖片背景色比之前複雜一些,而且有漸變,我們來看看摳圖後的效果如何:
這個原圖背景不是白色,我就不弄黃色背景了,感覺這個效果也還算滿意。
那麼,對於多人物的圖片,效果如何呢?我們再看看下面這張圖片:
這裡有三個人,我們看看程序能不能自動摳出來:
雖然是有點瑕疵,不過還是很不錯了。
下面我們看看最後一個例子:
這個比前面的圖都複雜的多,那麼效果如何呢,我們來看看:
哈哈,不僅識別出了人,還把火炬識別出來並摳了出來。總的來說,在完成人物摳圖方面是沒有什麼問題的。
這是如何實現的?
看完效果,你肯定想問這是如何實現的呢?這就需要用到飛槳了,飛槳是一個開源的深度學習平臺,使用其工具僅用十幾行代碼就能實現遷移學習。
在使用之前,我們先來安裝飛槳,可以進入官網,按指引快速安裝:
https://www.paddlepaddle.org.cn/install/quick
為了方便,這裡直接使用pip安裝CPU版本的。我們執行下列語句:
python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
安裝完成後,可以在環境中測試一下是否成功。我這裡使用命令行窗口,先運行python.exe(前提是你已經配置了環境變量):
C:\Users\zaxwz>python
然後在程序中運行如下代碼:
importpaddle.fluidpaddle.fluid.install_check.run_check()
如果控制臺顯示Your Paddle is installed successfully! Let's start deep Learning with Paddle now,就代表我們已經安裝成功了。另外我們還需要安裝PaddleHub:
pip install -i https://mirror.baidu.com/pypi/simple paddlehub
下面我們就可以開始寫代碼了。
開始摳圖
實現摳圖的代碼很簡單,大概分為下面幾個步驟:
導入模塊加載模型獲取文件列表摳圖實現起來沒有什麼難度,為了方便讀代碼,我將代碼寫清楚一點:
1、導入模塊
import osimport paddlehub as hub
2、加載模型
humanseg = hub.Module(name='deeplabv3p_xception65_humanseg')
3、獲取文件列表
# 圖片文件的目錄path = 'D:/CodeField/Workplace/PythonWorkplace/PillowTest/11_yellow/img/'# 獲取目錄下的文件files = os.listdir(path)# 用來裝圖片的imgs = []# 拼接圖片路徑for i in files: imgs.append(path + i)#摳圖results = humanseg.segmentation(data={'image':imgs})
4、獲取文件列表
我們在控制臺運行一下這個程序:
python 摳圖.py
輸出:
運行完成後,我們可以在項目下看到humanseg_output目錄,摳好的圖片就會存放在該目錄下。當然了,上面的代碼我們在獲取文件列表的操作還可以簡化一下:
import os, paddlehub as hubhumanseg = hub.Module(name='deeplabv3p_xception65_humanseg') # 加載模型path = 'D:/CodeField/Workplace/PythonWorkplace/PillowTest/11_yellow/img/' # 文件目錄files = [path + i for i in os.listdir(path)] # 獲取文件列表results = humanseg.segmentation(data={'image':files}) # 摳圖
至此,我們就完成了5行代碼批量摳圖,感興趣的開發者趕緊上手試試吧!
飛槳官網:
https://www.paddlepaddle.org.cn/
PaddleHub平臺:
https://github.com/PaddlePaddle/PaddleHub
飛槳開源框架項目地址:
GitHub:https://github.com/PaddlePaddle/Paddle
Gitee: https://gitee.com/paddlepaddle/Paddle
如在使用過程中有問題,可加入飛槳官方QQ群進行交流:703252161