基于OpenCV的人員剔除
點擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時間送達(dá)
? ? ? ? ? ?

? ?
01.準(zhǔn)備工作
1.?Python 3.xx(Python 3.7.4)
2.?OpenCV(4.1.2版)


一個檢測幀示例
要解決的第二個問題是找到一種方法來檢測要刪除的對象。OpenCV提供了一種簡單的方法:基于支持向量機的“定向梯度直方圖”檢測器。它是必不可少的檢測器,不是最快,不是最準(zhǔn)確,不是最好的,但它可以正常工作。
1.?實例化?HOGDescriptor
2.?獲取視頻的第一幀用作遮罩
3.?遍歷每一幀,對于每個檢測到的人,從第一幀開始用相應(yīng)的“空”替換該區(qū)域
4.?保存輸出
按照前面描述的工作流程,代碼保存在github中,見文末。
讓我們測試一下!
像一個老板一樣。手放在口袋里消失了!
但是,引用伊隆·馬斯克(Elon Musk)的話:“仍有改善的空間”。實際上結(jié)果并不是那么精確,尤其是當(dāng)離相機更近的時候。
在測試了這段代碼之后,整個輸出看起來有問題且不穩(wěn)定。因此,需要找到一種方法來改進(jìn)它:用第一幀替換每個檢測到的人似乎是個好方法,因此我可能需要找到一種更好的方法來檢測物體!
改進(jìn)之處:
在搜索COCO的模型ZOO時,我們發(fā)現(xiàn)了一個實例分割模型,每幅圖像的推理時間為0.07秒,這是最快的實例之一(可能不是最準(zhǔn)確的)。
我們自定義了模型,需要安裝所有需要的依賴,例如pytorch,torchvision和detectron2:
# install dependencies:!pip install -U torch==1.4+cu100 torchvision==0.5+cu100 -f https://download.pytorch.org/whl/torch_stable.html!pip install cython pyyaml==5.1!pip install -U ‘git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'import torch, torchvision
以下代碼和說明已在Google Colab實例上進(jìn)行了測試,做出此選擇是為了使此實驗更易于復(fù)制,而不會因缺少依賴項,版本沖突和所有經(jīng)常發(fā)生的無聊而苦惱。
然后我們需要安裝Detectron2:
# install detectron2:!git clone https://github.com/facebookresearch/detectron2 detectron2_repo!pip install -e detectron2_repo
現(xiàn)在,我們可以繼續(xù)導(dǎo)入所有需要的庫并加載模型:
cfg = get_cfg()cfg.merge_from_file(model_zoo.get_config_file(“COCO-InstanceSegmentation/mask_rcnn_R_50_DC5_1x.yaml”))cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5 # set threshold for this modelcfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url(“COCO-InstanceSegmentation/mask_rcnn_R_50_DC5_1x.yaml”)predictor = DefaultPredictor(cfg)
無法使用我們的predictor類進(jìn)行推斷,predictor需要在Tensors上返回一個需要轉(zhuǎn)換為numpy數(shù)組的數(shù)組,然后可以像以前一樣迭代該數(shù)組:
outputs = predictor(frame)outputs = outputs[“instances”].pred_boxes.to(‘cpu’).tensor.numpy().astype(int)
讓我們檢查一下最終結(jié)果。

Detectron2 VS HOGDetector
從gif可以觀察到Detectron2如何更準(zhǔn)確地檢測到一個人,但是,需要說的是,當(dāng)然,它需要更多的“深度”配置(依賴有時會很麻煩)。但是,最終結(jié)果不言而喻!
代碼鏈接:https://github.com/robertosannazzaro/person-removal-detectron2
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~
