Mask R-CNN神應用:像英《黑鏡》一樣屏蔽人像

文章選自GitHub,機器之心編譯

黑鏡特別篇《白色聖誕節》中有種名為「屏蔽」的黑科技,每個人安裝上智能眼,可以憑意願屏蔽動態視界中的任何人(及其相關的任何影像和聲音),變成一團移動的白色馬賽克。被屏蔽者無法解除這種屏蔽,除非死亡。相比之下,朋友圈的屏蔽是不是弱爆了?本文作者給出了一種自動「屏蔽」人像的腳本(不同於黑鏡中的視頻屏蔽),底層實現是在 MS COCO 數據集上預訓練的 Mask R-CNN,但它不需要 GPU!此外,它不僅可屏蔽人像,還可以屏蔽包括長頸鹿和汽車在內的多達 80 種不同類型的物體,向黑鏡中的黑科技邁出了第一步。

黑鏡之《白色聖誕節》中的黑科技:屏蔽

用法

Person Blocker 可使用以下命令行調用並輸出結果:

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

這個命令如下有一些參數來控制模型的推斷效果:

  • -i/--image:指定輸入圖像的路徑與文件。
  • -m/—model:載入預訓練 COCO 模型權重的路徑,默認情況下為當前目錄。如果沒有指定路徑,且當前目錄下不存在權重文件,那麼模型將自動下載預訓練權重至當前目錄。
  • -c/—color:指定掩碼的顏色,它可以是引號內的 16 進位或 RGB 三元素元組的格式,默認為白色。
  • -o/--object:遮掩目標的可用列表或具體目標的 ID,我們可以在文件 classes.py 中看到所有可遮掩的目標,或直接使用-names flag,默認的遮掩目標為「person」。
  • -l/—labeled:通過檢測的目標和對應的目標 ID 標註圖像並保存。
  • -n/—names:列印目標的類別選項,並退出。

這一份腳本可輸出兩種圖像,即靜態的 png 圖像和動態的 gif 圖像。我們可選的遮掩目標有 80 種,如下 classes.py 文件中給出了所有的目標類別:

def get_class_names(): return np.array([BG, person, bicycle, car, motorcycle, airplane, bus, train, truck, boat, traffic light, fire hydrant, stop sign, parking meter, bench, bird, cat, dog, horse, sheep, cow, elephant, bear, zebra, giraffe, backpack, umbrella, handbag, tie, suitcase, frisbee, skis, snowboard, sports ball, kite, baseball bat, baseball glove, skateboard, surfboard, tennis racket, bottle, wine glass, cup, fork, knife, spoon, bowl, banana, apple, sandwich, orange, broccoli, carrot, hot dog, pizza, donut, cake, chair, couch, potted plant, bed, dining table, toilet, tv, laptop, mouse, remote, keyboard, cell phone, microwave, oven, toaster, sink, refrigerator, book, clock, vase, scissors, teddy bear, hair drier, toothbrush])

使用案例

python3 person_blocker.py -i images/img1.jpg

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

遮掩特定的目標需要兩個步驟:首先執行推斷模型並獲取所有的目標 ID,然後再根據 ID 選擇性地遮掩這些目標。

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

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

最後,如果讀者想使用或測試該腳本,那麼它需要的依賴庫與 Mask R-CNN 基本相同:

  • Python 3.4+
  • TensorFlow 1.3+
  • Keras 2.0.8+
  • Numpy, skimage, scipy, Pillow, cython, h5py
  • matplotlib, imageio

推薦閱讀:

TAG:MaskRCNN | 人工智慧 |