使用AI來檢測違反社交距離的行為

2021-10-09 22:51:11 字數 2999 閱讀 1138

作者|priya dwivedi 編譯|flin **|medium

美國和歐洲的許多城市現在都在謹慎地重新開放。人們被要求在外出時保持安全距離。但是人們照著做嗎?城市對人們的安全距離是否符合規則進行評估並採取相應的行動是很重要的。如果大多數人都遵守疫情期間的命令,那麼就可以安全地開放更多的公共場合。

然而,如果出現了太多違規行為,那麼關閉這些場合可能更安全。

這正是邁阿密海灘公園發生的事。公園於四月底開放,但由於太多人藐視與戴口罩和社交安全距離有關的規定,公園在一周內就關閉了。該市通過警員監控公園並發出警告。但人類監測可能不是乙個切實可行的解決辦法。

我們如何使用人工智慧和機器學習來檢測人們是否遵循社交距離規則?大多數城市已經在公共場所安裝了攝像頭,這些攝像頭正好可以用於此目的。

在這個部落格中,我展示了如何使用行人跟蹤演算法來監控違規行為。我也在我的github上開源了**。請參閱下面的模型。

社會距離違規檢測和計數:

資料mot資料集是計算機視覺行人跟蹤的標準資料集。許多最先進的演算法都是在這些資料上訓練和測試的。這個資料集有許多開源的剪輯片段顯示在不同的相機角度下的人的運動。我選擇了乙個固定在乙個高度的攝像機的乙個小片段,它顯示在德國的城鎮中心。

使用深度排序進行行人跟蹤

在計算機視覺中,行人跟蹤是指給乙個人乙個id,在他出現的每一幀中檢測出他,並將他的id**出去。一旦他離開了這個id,我們就不會重複使用他的id。如果乙個新的人進入,他就會被乙個新的id初始化。

跟蹤往往是一項困難的任務,因為人們可能看起來很相似,導致模型切換id。人們可能會被另乙個人或物體擋住,當他們出現時會被分配乙個新的id。近年來,深度學習技術在多目標跟蹤基準( 上的效能有了顯著提高。目前多目標跟蹤技術的精度是62.0

你可以在我的部落格中閱讀更多關於深度學習行人跟蹤的內容。

為什麼我們需要進行行人跟蹤?

原因是我們想找出違***距離規則的人的數量。在沒有***的情況下,如果兩個人走得很近,那麼他們在每一幀中都會被視為違規,但是如果我們使用***,那麼我們可以將其視為一次違規事件。

在這個部落格中,我使用了深度排序模型( 進行跟蹤。

這個模型的**是作者在他們的github( 上公開發布的。

深度排序模型使用人的位置和外觀來跟蹤。位置資訊通過kalman濾波器捕獲,kalman濾波器**盒子的下乙個可能位置,而外觀資訊是使用生成嵌入的深度學習模型生成的。

我已經在github上( 共享了這個檔案,我們將在**的下一部分使用它。

使用深度排序模型進行行人跟蹤:

發現違反社交距離的行為

為了檢測社會距離違規行為,我們在框架中選取每個軌道,並測量其與框架中其他軌道的距離。每個軌跡基本上都是乙個帶id的邊界框,因此可以使用它們之間的歐氏距離將邊界框與另乙個邊界框進行比較。**如下所示。

def distance_boxes (boxa, boxb):

import math

center_boxa = [(boxa[0] + boxa[2])/ 2.0, (boxa[1] + boxa[3])/2.0]

center_boxb = [(boxb[0] + boxb[2])/ 2.0, (boxb[1] + boxb[3])/2.0]

pixel_distance = math.sqrt( ((center_boxa[0]-center_boxb[0])**2)+((center_boxa[1]-center_boxb[1])**2) )

return pixel_distance

現在我們開始建模。其**在下面共享。這與我的github中的**相同。

對每個幀執行的主要步驟是:

比較每個軌跡和其他軌跡之間的畫素距離

如果距離小於接近距離閾值,則兩人距離太近。因此,將 safe=1 放在兩個邊界框的資料框中。變數「safe」稍後用於視覺化

我們還想計算每個id的總違規次數。這被計算為它們太接近的其他id。因此,只要距離小於接近距離閾值,我們都會在字典中維護乙個過於接近的軌跡列表

**執行得很慢,因為它需要將每個軌道與其他軌道進行比較,並在600幀以上執行此操作。這些計算中有許多是重複的,因為它將分別測量軌道1與軌道2之間的距離,然後軌道2與軌道1之間的距離。

為了節省時間,我將兩次計算的結果儲存在一次傳遞中。因此,當比較track1和track 2時,結果將寫入資料幀中各自的行中。這樣可以將執行時間減少一半。

我發現,畫素距離為70對於檢測那些「似乎」走得太近的人來說是相當合理的。**的視覺化模組會在框太近時亮顯紅色框,並顯示每個框的違規計數。帶有結果的示例框架如下所示。

實際部署

如果要部署它,需要考慮一些事情。

攝像機需要註冊,這樣我們就可以正確地將畫素距離對映到現實世界中的距離

如果存在連續的攝像機陣列,那麼我們可能需要新增行人重識別功能,以幫助***在攝像機之間**id和違規計數。在過去的幾年裡,人們對行人重識別( 進行了大量的研究

這裡的**是輕量級的,可以在與攝像機繫結的jetson tx2( 之類的嵌入式裝置上執行。

跟蹤是計算機視覺中的乙個重要問題,有著廣泛的應用。其中乙個應用程式就是檢測社交距離違規行為。這可以幫助城市評估公共衛生風險,並在較安全的情況下重新開放公共場合。

我希望你能嘗試一下**,並嘗試一下在更改接近標準距離時會發生什麼。

參考文獻

mot挑戰

深度排序演算法

sklearn機器學習中文官方文件:

你的食物變質沒?用AI演算法來檢測一下吧

摘要 本文使用ai演算法檢測披薩是否變質,為食品檢測提供乙個新的思路。最近一條幼兒園採用過期食物的新聞引起了社會的強烈關注,對於食品安全而言,國家一直是嚴格要求的,尤其是對於嬰幼兒食品安全的標準,部分已經超越了國際上的標準。但可能是由於無法嚴格地執行到每乙個地方且檢測週期較長,造成這一現象的出現,著...

使用向量的方法來計算點到直線的距離

問題的原型如下圖所示,紅色的點為滑鼠位置,藍色的點 x0,y0 x1,y1 為線段的端點,求紅色的點到直線的距離 可以將點到線的距離轉換為直角三角形的問題,如下圖所示 我們定義滑鼠所在點為m,線段起點為a,終點為b,ma為向量a,ab為向量b,向量c為向量a在向量b上的投影,向量e為m點到ab的垂線...

使用layui框架根據欄位來設定tr行的背景色

問題 最近在寫公司專案時使用layui遇見的問題,老闆要求根據td欄位來設定整行tr的背景色。解決 一開始資料比較少的時候只是直接在頁面根據js動態判斷字段然後來更改背景色,結果能夠成功,但是後面資料一多起來就發現剛剛寫的動態css只限於在第一頁有效,其他頁沒有,在做搜尋 增加 刪除 修改後動態cs...