偵測速度快又精準?中研院開發人工智慧YOLOv4辦到了!(上)
YOLOv4 創生故事
「只要讓我看一眼,我就ㄎㄜ知道這是什麼!(You Only Look Once, YOLO)」YOLO,是目前當紅的 AI人工智慧 物件偵測演算法。中研院資訊科學研究所所長廖弘源及博士後研究員王建堯,與俄羅斯學者博科夫斯基(Alexey Bochkovskiy)共同研發最新的 YOLO 第四版(簡稱為 YOLO v4),一舉成為當前全世界最快、最高精準度的物件偵測系統,引爆全球 AI 技術社群,已然改寫物件偵測演算法的發展。究竟,他們在演算法裡動了哪些手腳?又是什麼樣的契機,開啟了這項研究?
產業出難題,學界來解題
故事,是從一項產學合作開始。前幾年,科技部提出了「產學共創」機制:產業出題、學界解題,中研院合作對象義隆電子,出了一個考題給資訊所:如何增進十字路口的交通分析?也就是即時偵測車流量、車速等等。當時義隆電子已經在十字路口架設了監視器,包括全景攝影機及單一方向的槍型攝影機,接下來最需要的,就是辨識車輛的物件偵測技術。
「但我們需要的不只是辨識車輛而已。」王建堯說。在馬路上運行中的車速度很快,物件辨識必須非常即時,在短時間內就能辨識出車輛,並能持續追蹤,計算車速。換句話說,這個技術對物件的偵測必須「快、狠、準」。此外,因為影像資料不斷產生,如果把資料都上傳雲端運算,不但比較耗時,也會給雲端電腦帶來太大的負擔,因此這個偵測技術還得做到一件事──計算量必須夠小,小到可裝在十字路口監視器上的小型計算器, 即可完成物件偵測的任務。
要做到交通路況的即時分析,必須有一種速度快、仍能精準辨識,但又可應用在生活中小型計算器的物件偵測技術。
YOLOv4 人工智慧演算法達到這個不可能的任務!它是目前世界最快、最精準的物件偵測演算法,卻又能小到放在十字路口的監視器內,已實際應用於如「智慧城市交通車流解決方案計畫」,即時偵測車輛、停等車列、車速等等 。
物件辨識的阿基里斯腱:梯度消失問題
怎麼辦到的?首先,王建堯著手研究著名物件偵測系統 YOLOv3 ,「我們想找出在建立一個物件偵測系統時,哪一個步驟會是最關鍵的呢?如果改善了,效率和精確度會提升最多?」廖弘源強調:「雖然是工程問題,但我們要把科學思考帶進來。」
先來認識物件偵測技術!它是個卷積神經網路(Convolutional Neural Network, 簡稱CNN),具有許多網路層,每一層負責抽取某些圖像特徵。一個輸入的影像通過層層層層層層……分析,最後找出最可能的答案。理論上,層數越多、判斷結果應該越精確。
訓練這個卷積神經網路的方法是:先倒入大量已標記正確答案的學習材料 (如標記好各種車輛的圖片),讓機器學習應該如何做出判斷。每次機器判斷結果與正確答案不符,就將這個資訊反饋到前面的網路層,調整每一層的參數,以期下次達到更準確的判斷。
那麼,哪一步改善後可以大幅提升表現呢?王建堯找到的關鍵是:學習的反饋過程。當卷積神經網路的網路層數愈多,在訓練階段,因為反饋計算方式,每回傳一層就會損失一些資訊,越前面的網路層學習到的東西越少,稱為「梯度消失問題」(vanishing gradient problem)。
為了解決梯度消失問題,前人曾經提出 ResNet、DenseNet 等卷積神經網路,簡單來說,即是將後面資料備份後往前「跳級」傳遞。以 ResNet 為例,可想像成「含水傳話」,從最後一個人往前傳,愈前面的人資訊愈缺失。但如果最後一層開始,每層都備份錄音,再把錄音跳過一層直接往前傳,那麼前面所有層都可接收資訊,前面網路層就不會學不到東西。
然而,ResNet 具有太多重複的拷貝,不僅會浪費計算量,而且不同層的參數用來學習重複、但多餘的資訊,換句話說,每一層能學到的東西基本上來說都差不多。「是否有一種更好的方式,在不改參數量,讓機器運算變快,省下來的資源 (參數) 還能讓機器多學一點,提高精確度?」廖弘源說。
別急著跳出!請點此看本系列文章下集。
(作者:郭雅欣、黃曉君;本文由 研之有物 以創用 CC 姓名標示–非商業性–禁止改作 4.0 國際 授權條款釋出。)
更多閱讀:
人工智慧釀酒「人生釀造 craft」20、30、40、50 世代都有不同的專屬啤酒
【人工智慧預防糖尿病患失明】台大打造人工智慧醫療,診斷視網膜病變準確度達95%
【AI在瘟疫蔓延時】台灣 AI「雅婷」化身音樂家 發表首張專輯「武漢肺炎」
【AI在瘟疫蔓延時】AI 大神吳恩達公司最新技術 用AI自動檢測社交距離