<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          基于OpenCV的人員剔除

          共 2313字,需瀏覽 5分鐘

           ·

          2020-11-19 09:27

          點擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時間送達(dá)

          把不需要的人從背景中移除是一個有趣的任務(wù)。本期,我們一起探索如何使用帶OpenCV從實時流中刪除一個人。

          ? ? ? ? ? ?

          ? ?

          01.準(zhǔn)備工作

          1.?Python 3.xx(Python 3.7.4)

          2.?OpenCV(4.1.2版)

          要從圖像中刪除一個對象,我們可能需要一個錨點作為起點,然后復(fù)制粘貼每個幀,類似對每個后續(xù)幀應(yīng)用一個Mask。我們可以簡單地從錨定框架中復(fù)制它,然后將其替換為要從中隱藏對象的當(dāng)前框架來隱藏要隱藏的區(qū)域的坐標(biāo)。

          一個檢測幀示例

          要解決的第二個問題是找到一種方法來檢測要刪除的對象。OpenCV提供了一種簡單的方法:基于支持向量機的“定向梯度直方圖”檢測器。它是必不可少的檢測器,不是最快,不是最準(zhǔn)確,不是最好的,但它可以正常工作。


          02.工作流程


          1.?實例化?HOGDescriptor

          2.?獲取視頻的第一幀用作遮罩

          3.?遍歷每一幀,對于每個檢測到的人,從第一幀開始用相應(yīng)的替換該區(qū)域

          4.?保存輸出

          03.代碼


          按照前面描述的工作流程,代碼保存在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ā)送廣告,否則會請出群,謝謝理解~


          瀏覽 71
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日屄的视频 | 99视频在线免费 | 国产女人18毛片水真 | 这里只有精品在线观看 | 亚洲逼逼|