重磅干貨,第一時(shí)間送達(dá) 01.準(zhǔn)備工作 1. Python 3.xx(Python 3.7.4) 2. OpenCV(4.1.2版) 一個(gè)檢測(cè)幀示例 要解決的第二個(gè)問(wèn)題是找到一種方法來(lái)檢測(cè)要?jiǎng)h除的對(duì)象。OpenCV提供了一種簡(jiǎn)單的方法:基于支持向量機(jī)的“定向梯度直方圖”檢測(cè)器。它是必不可少的檢測(cè)器,不是最快,不是最準(zhǔn)確,不是最好的,但它可以正常工作。 1. 實(shí)例化 HOGDescriptor 2. 獲取視頻的第一幀用作遮罩 3. 遍歷每一幀,對(duì)于每個(gè)檢測(cè)到的人,從第一幀開(kāi)始用相應(yīng)的“空”替換該區(qū)域 4. 保存輸出 按照前面描述的工作流程,代碼保存在github中,見(jiàn)文末。 讓我們測(cè)試一下! 像一個(gè)老板一樣。手放在口袋里消失了! 但是,引用伊隆·馬斯克(Elon Musk)的話:“仍有改善的空間”。實(shí)際上結(jié)果并不是那么精確,尤其是當(dāng)離相機(jī)更近的時(shí)候。 在測(cè)試了這段代碼之后,整個(gè)輸出看起來(lái)有問(wèn)題且不穩(wěn)定。因此,需要找到一種方法來(lái)改進(jìn)它:用第一幀替換每個(gè)檢測(cè)到的人似乎是個(gè)好方法,因此我可能需要找到一種更好的方法來(lái)檢測(cè)物體! 改進(jìn)之處: 在搜索COCO的模型ZOO時(shí),我們發(fā)現(xiàn)了一個(gè)實(shí)例分割模型,每幅圖像的推理時(shí)間為0.07秒,這是最快的實(shí)例之一(可能不是最準(zhǔn)確的)。 我們自定義了模型,需要安裝所有需要的依賴(lài),例如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 以下代碼和說(shuō)明已在Google Colab實(shí)例上進(jìn)行了測(cè)試,做出此選擇是為了使此實(shí)驗(yàn)更易于復(fù)制,而不會(huì)因缺少依賴(lài)項(xiàng),版本沖突和所有經(jīng)常發(fā)生的無(wú)聊而苦惱。 然后我們需要安裝Detectron2: # install detectron2: !git clone https://github.com/facebookresearch/detectron2 detectron2_repo !pip install -e detectron2_repo 現(xiàn)在,我們可以繼續(xù)導(dǎo)入所有需要的庫(kù)并加載模型: 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 model cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url(“COCO-InstanceSegmentation/mask_rcnn_R_50_DC5_1x.yaml”) predictor = DefaultPredictor(cfg) 無(wú)法使用我們的predictor類(lèi)進(jìn)行推斷,predictor需要在Tensors上返回一個(gè)需要轉(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)確地檢測(cè)到一個(gè)人,但是,需要說(shuō)的是,當(dāng)然,它需要更多的“深度”配置(依賴(lài)有時(shí)會(huì)很麻煩)。但是,最終結(jié)果不言而喻! 代碼鏈接:https://github.com/robertosannazzaro/person-removal-detectron2 交流群 |
|
來(lái)自: 小白學(xué)視覺(jué) > 《待分類(lèi)》