1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        基于OpenCV的人員剔除

        共 2313字,需瀏覽 5分鐘

         ·

        2020-11-19 09:27

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

        重磅干貨,第一時間送達

        把不需要的人從背景中移除是一個有趣的任務(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)定。因此,需要找到一種方法來改進它:用第一幀替換每個檢測到的人似乎是個好方法,因此我可能需要找到一種更好的方法來檢測物體!

        改進之處:

        在搜索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實例上進行了測試,做出此選擇是為了使此實驗更易于復(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類進行推斷,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、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


        瀏覽 71
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产理论| 中文字幕一区三区三A片密月Av | 18禁无套内射 | 他的粗大挺进了护士的湿润 | 三级黄色小说 | 亚洲AV无码成人精品区www | 日本东京热一区二区 | 久久精品国产亚洲AV成人婷婷 | 国产麻豆网 | 91免费观看网站入口 |