YOLOv8 應用於營造業工地橋式起重機危險告警

朱訓威
Aug 4, 2024

--

Looking at Taipei 101 from the Sun Yat-Sen Memorial Hall, photo by Galois Chu

筆者近期接下了一個專案,目標是在營造業工地中為橋式起重機提供危險告警系統。具體功能是在橋式起重機在工地井上作業時發出告警廣播,提醒井底作業人員注意安全,當吊掛鉤放下至井底時停止告警。這一功能需要用到影像辨識技術。

影像辨識的挑戰

由於工作環境是工地,攝影機捕捉到的畫面包含各種工作器具和不同衣著的工人,還要面對雨天、夏季強烈陽光反射等因素,增加了模型辨識的難度。

攝影機設置與數據集

我們在起重機上和工地井底各安裝了一台攝像機,用於捕捉井上和井底的畫面。影像辨識使用的是自訓練的 YOLOv8 模型,目標是識別工地井、人以及吊掛鉤。我們使用 VLC 錄製現場攝像機的畫面並轉成圖片,再結合 coco 數據集中合適的圖片來擴展我們的數據集。

工地井的辨識相對容易,唯一的問題是強烈陽光反射導致的辨識度下降,如下圖。

為了解決這個問題,我們錄製了白天半反光半陰暗的井上影片,每分鐘截取一幀,確保不同光照條件下的畫面都有覆蓋。經過重新訓練,工地井的辨識置信度幾乎都能維持在 0.9 以上。

吊掛鉤的識別難題

整個專案最棘手的問題是識別工地用的黃色吊掛鉤。為了解決這個問題,作法就是從頭到尾仔細檢查每個可能影響辨識的因素並不斷嘗試改進。首先將數據集的圖片逐張重新檢視,過程中筆者意識到標註物件時得盡可能框得很貼,像是以下這張圖。

特別是右上方的黃色吊掛鉤,這是參考coco資料集標註的方式而得到的想法,若是不標得如此貼,實作時幾乎辨識不出來或是誤判。另外標註吊掛鉤的時候只需標註黃色部分即可,下方的鉤鉤不要框進去,下圖所示是不好的標註方式。實際測試把鉤鉤框進去準確率是比較差的。

筆者還發現吊掛鉤和警戒線重疊時,標註時會誤標到雜訊而影響準確率。因此將這些圖片從數據集中刪除。

此外,每次訓練完吊掛鉤類別的平均精度(AP)值都在0.9以上,但實測效果差,判斷是 overfitting 的現象。於是筆者採取以下措施:

  1. 下調訓練的 epoch,參考 YOLOv8訓練參數,參數設置為 100,超參數使用默認值。
  2. 針對吊掛鉤圖片進行數據增強,通過鏡像、調整圖片大小、旋轉等方式擴充數據集。

其他問題與解決方法

在訓練過程中,影像右下角的時間軸部分時常被誤判為有人出現,導致一直發出告警聲。臨時解決方式是在右下角時間軸部分繪製一個黑色框遮住。

總結

在整個專案執行過程中,我認識到作為一名工程師需要具備以下能力:

正確處理事情的邏輯:科學化、有條理地分析和解決問題。

善用資源:充分利用 Google、ChatGPT、上網問人和同事交流等方式,無所不用其極地將可用的資源發揮到極致,並具備獨立思考的能力判斷什麼資訊是有效的,有些方法可能看起來並不高明,但能夠解決問題的方法就是好方法。

參考資料

YOLOv8訓練參數

--

--

朱訓威

AI Software Engineer. Sharing insights on understanding the universe and life with a touch of humor.