不會用Photoshop摳圖?Python助你一鍵“除”人!

大資料v發表於2018-06-18

640?wx_fmt=gif

導讀:看過英劇《黑鏡》嗎?聖誕特別版《白色聖誕節》中有這樣一個場景:其中一個未來科技有自由遮蔽人像的功能,可以讓你遮蔽任何一個不想看見或不喜歡的人,然後留下的是一片灰白影像,就像是 Photoshop 軟體中的摳圖功能應用在了動態場景中。


640?wx_fmt=png


與此不同的是,本文作者則通過在 MS COCO 資料集上使用預先訓練好的 Mask R-CNN 模型來自動生成影象中行人的掩碼指令碼,實現人像遮蔽,並且不需要 GPU 就可以執行這個程式。所以,如果你發現相簿裡有以前開心合過影但現在討厭的人,可以讓他/她一鍵變成白底了。此外,你還可以用這個指令碼生成多達 80 種不同型別目標的掩碼,包括長頸鹿和公交車等事物。


作者:minimaxir

翻譯:林椿眄

來源:AI科技大本營(ID:rgznai100)


640?wx_fmt=gif



01 使用方法


可以通過以下命令執行行人掩碼指令碼:


python3 person_blocker.py -i images / img3.jpg -c'(128,128,128)'-o'bus''truck'


-i / - image:指定的影象檔案。

-m / - model:載入預訓練好的 COCO 模型權重的路徑(預設是當前目錄):如果沒有或不存在指定路徑,模型將自動下載到當前目錄(注意:權重檔案的大小為 258 MB)。

-c / - color:掩碼的顏色,採用引號包裝的十六進位制或 RGB 3 元組格式(預設是白色)。

-o / - object:要掩碼的目標型別列表(或特定物件的 ID)。你可以在 classes.py  中或通過使用 -names 來檢視掩碼的物件選擇(預設值是行人)。

-l / - labeled:儲存檢測到的物件及其物件 ID 註釋的標記影象。

-n / - names:列印目標的類別選項,然後退出。


該指令碼輸出兩張影象:靜態影象(雙關意圖) person_blocked.png 和動畫影象 person_blocked.gif。



02 示例


python3 person_blocker.py -i images/img1.jpg


640?wx_fmt=png


python3 person_blocker.py -i images/img2.jpg -c '#c0392b' -o 'giraffe'


640?wx_fmt=png

python3 person_blocker.py -i images/img3.jpg -c '(128, 128, 128)' -o 'bus' 'truck'


640?wx_fmt=png


特定目標的掩碼需要兩個步驟:在推理模式下執行以獲取每個目標 ID,然後掩碼這些目標 ID。


python3 person_blocker.py -i images/img4.jpg -l


640?wx_fmt=png


python3 person_blocker.py -i images/img4.jpg -o 1


640?wx_fmt=png



03 安裝環境


這個指令碼所需的環境配置和 Mask R-CNN 一樣:


Python 3.4+

TensorFlow 1.3+

Keras 2.0.8+

Numpy, skimage, scipy, Pillow, cython, h5py


此外,還需要新增 matplotlib 和 imageio 依賴庫。


原文連結:

https://github.com/minimaxir/person-blocker


推薦閱讀


2018世界盃資料清單:真球迷看球必備,偽球迷速成指南(附完整賽程)

到底需要多少人口,才能找出11個會踢球的?

端午出行大資料:去這幾個地方,你就只能看人人人……

各地高考“難度係數”告訴你,天津戶口為什麼值得搶



Q: 你覺得這比photoshop簡單嗎?

歡迎留言與大家分享

覺得不錯,請把這篇文章分享給你的朋友

轉載 / 投稿請聯絡:baiyu@hzbook.com

更多精彩,請在後臺點選“歷史文章”檢視

640?wx_fmt=jpeg

相關文章