當前位置:
首頁 > 知識 > 手把手教你十分鐘搞定人物檢測

手把手教你十分鐘搞定人物檢測

本文為 AI 研習社編譯的技術博客,原標題 Can you solve a person detection task in 10 minutes?,作者為 Supervise.ly。

翻譯 | shunshun 老趙 審核 | Lamaric

你能在 10 分鐘之內解決人物檢測的問題嗎?

當然可以!


動機

人物檢測任務是隨處可見的。如果你的工作和計算機視覺領域相關,那麼你很有可能在之前遇到過這個問題。無論你從事什麼行業,人物檢測幾乎都會應用。下面例舉了一些行業:

自動駕駛:識別道路場景中的人物

零售業:分析超市內的消費者的行為

時尚業:確定特定品牌和佩戴它們的人

安全行業:限制某些人訪問某些地方

移動應用:找到你喜歡的那位,劃掉你不喜歡的那位

但是,今天來看,這個任務有多難呢?

好吧,5 年前,主導解決方案是使用 opencv,基於 Haar-like 特徵使用級聯分類器實現的。這些檢測器需要時間和精力來構建,並且按照目前的標準,檢測結果不是很好。

在深度學習時代,特徵工程和簡單分類器的結合的方法逐漸被拋棄(至少,當談到計算機視覺時),神經網路成為了主導方法。


工具選擇

我們將使用 Supervise.ly 平台來解決人員檢測任務。除了推薦平台外,原因如下:

我們需要 5 分鐘才能獲得初始解決方案

無需編寫代碼並在各種開發工具之間來回切換

開箱即用:一系列預訓練的模型,可視化和部署


如何處理任務

實際上,我們有兩種方法來解決這個問題:

(1)使用預訓練的模型

(2)訓練我們自己的人物檢測器。

有了 Supervise.ly 平台,上面的方法都可以使用。但是,為了簡單起見,我們主要使用第一種方法。我們將使用在 COCO 上預訓練的基於 NASNet 的 Faster R-CNN 模型。

因此計劃如下:

I. 初始化人物檢測模型

II. 檢測圖像上的人物以衡量檢測質量

III. 為生產應用部署模型

讓我們開始吧……


執行步驟

首先,我們需要進入 Supervise.ly 網站並登錄。然後按下面步驟一步一步來。


I. 初始化人物檢測模型

初始化一個人物檢測模型很簡單。為了完成這步,我們需要將你的 GPU 機器連接到 Supervise.ly,然後選擇一個預訓練的模型。

1. 將你的 GPU 機器連接到 Supervise.ly 平台

(1) 點擊「connect your first node」按鈕

(2)在終端上運行所選命令

(3)檢查您的計算機是否已連接到平台

轉到「Cluster」頁面,點擊圖(1)「connect your first node」按鈕,然後,你將看到圖(2)窗口,只需複製命令並在終端中執行即可。Python 代理將安裝在你的計算機上,它將顯示在可用節點列表中(3)。

2. 選擇預訓練模型

(1)轉到 Model Zoo 頁面(2)選擇你的檢測器(3)檢查「My Models」列表

轉到「Neural networks」->「Model Zoo」頁面(1)。您將看到一系列用於語義分割和目標檢測任務的預訓練模型。如果將游標懸停在「FasterRCNN NasNet」上,您將看到「Add model」按鈕(2)。點擊後,模型將出現在「My Models」列表(3)。

現在,Faster R-CNN 檢測器準備就緒。下一步是看它是如何作用於圖像的。


II. 檢測圖像上的人物以衡量檢測質量

在將模型部署為 API 之前,最好可視化神經網路預測,以了解它是否符合要求。使用 Supervisely 非常簡單:只需點擊幾下即可拖放圖像並運行推理過程。

1. 導入圖像

(1)轉到「Import」->」Upload」頁面並拖放圖像

(2)定義項目名稱並開始導入

(3)勾選「Projects」頁面

轉到「Import」頁面,然後拖放包含測試圖像的文件夾(1)。將項目命名為保存圖像的項目。在我們的例子中,項目名稱是「test_images」。然後單擊"start import"按鈕(2)。導入完成後,轉到「Projects」頁面,檢查包含你的圖像的項目是否已創建(3)

2. 運行推理過程

(1)單擊「測試」按鈕(2)選擇項目(3)定義推理參數

現在讓我們在你的圖像上測試我們的人物檢測器。轉到「我的模型」頁面,然後單擊「測試」按鈕(1)。然後,你選擇一個帶有圖像的項目來檢測人物。在我們的例子中,它是「test_images」項目,然後單擊「下一步」按鈕(2)。然後,我們應該指定將存儲檢測結果的項目的名稱。在我們的例子中,它是「inf_test_images」項目(3)。

唯一剩下的就是選擇推理模式。在列表「inference_full_image」中選擇。最後一步是替換該行:

這行:

點擊開始「推理」按鈕。

3. 檢查結果

(1)點擊生成的項目(2)查看預測

推理過程完成後,你將在項目頁面(1)上看到「inf_test_images」。要檢查結果(2),請單擊「inf_test_images」項目,然後單擊此項目中的數據集。

現在我們知道我們的模型符合要求,讓我們進入最後一步 - 模型部署。


III. 為生產應用程序部署模型

在大多數情況下,一旦我們對檢測質量感到滿意,我們就需要通過 API 從自定義環境中使用該模型。以下說明介紹了如何為生產應用程序部署模型。

1. 部署人物檢測模型

(1)單擊「Deploy」按鈕(2)指定並提交部署參數(3)確保任務完成

轉到「我的模型」頁面,然後單擊「部署」按鈕(1)。然後,在指定目標 GPU 機器和設備後,單擊「提交」按鈕(2)。因此,將創建一個新任務,並且一旦完成(3),你就可以將 API 請求發送到你的人員檢測模型。

2. 發送 API 請求

(1)單擊「Deploy API Info」項(2)獲取部署信息

在調用 API 之前,我們需要獲取令牌和 URL 信息。為此,在「Cluster-> Tasks」頁面上單擊上下文菜單(1)中的「Deploy API info」。在下一頁,你將看到通過 API(2)使用我們的檢測模型所需的所有信息。

更具體地說,這裡(2)我們可以看到:

1.API 令牌RsiYTrSBsyE5BIXRYYCFBLJf13JqVQ4NeEUUxX2oE1SdkwgdpmErjZ0tHEKljadILv8cQrosxMVmirJVOOf025mR8XB88feSRDbbeAYpKL2MwJ1MAZtJ2PfideN4UmNP

2.URL

https://app.supervise.ly/public/api/v1/models/435/deploy/upload

3. 用法示例

很明顯,不過我要說的是,您的 API 令牌和網址將與上述不同。

例如,假設你有「dl_heroes.jpg」圖像。

Yann LeCun, Geoffrey Hinton, Yoshua Bengio, Andrew Ng

因此,如果你在終端中運行以下命令:

然後,Supervise.ly 會以 json 格式給你回複檢測結果:

上面的 Json 對應於檢測到的所有對象,包括坐標和置信度。可視化後,我們得到

API 返回的預測可視化

為了讓生活更輕鬆,我們提供了一個 python notebook,它實現了 API 調用並可視化檢測結果。我們鼓勵你使用它。

Jupyter notebook


回到主要問題

回想一下標題中的問題「你能在 10 分鐘內解決一個人檢測任務嗎?」

快速回答是,只需按照上面的說明操作即可。

更為深思熟慮的答案是「它取決於」,細節決定成敗。

同樣,需要人員檢測的可能應用程序的數量是巨大的。以下是引起頭痛的三個最受歡迎的因素:

硬體限制。對於某些應用程序,可以使用板載高端 GPU 的台式計算機。其他應用程序應該可以在手機上或機器人內部使用。在這種情況下,我們需要以犧牲模型精度為代價來使用小而快速的神經網路。

實時要求。例如,在自動駕駛行業中,軟體應該是實時工作的。在這種情況下,最新的 GPU 仍然不夠強大,無法運行更快的 R-CNN 的最先進的實現。因此,我們必須犧牲準確性並選擇更簡單的模型。

具體情況。如果我們構建一個安全應用程序,那麼很可能,我們必須在夜間發現不需要的人。無法保證開箱即用的探測器可以解決此任務。許多其他變化是可能的 - 不同的天氣,攝像機角度或只有一小部分人可見的事實。好消息是我們可以訓練模型在特定條件下運行良好,但它可能需要我們一些額外的工作。

將來,我們將發布一系列博客文章,解決更複雜的場景,包括自定義對象檢測器的培訓。

如果你發現這篇文章很有趣,那就多分享它一些,這樣更多的人就能看到它!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI研習社 的精彩文章:

從 1 數到 13,想當數據科學家的你這些錯誤可別犯
Python 3.7.0 發布,包含多項新特性和優化

TAG:AI研習社 |