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 為例,我們可以想像成「含水傳話」,從最後一個人往前傳,愈前面的人資訊愈缺失。但如果最後一層開始,每一層都備份錄音,再把錄音跳過一層直接往前傳,那麼前面的所有層都可接收到資訊,前面網路層就不會學不到東西。
上圖為原始的卷積神經網路 (CNN) ,假設只有三層,在資料回傳的過程中會逐層遞減,稱為梯度消失問題。下圖為改良版 ResNet ,從最後一層開始,每一層都備份,再把備份越過一層「跳級」傳遞,前面網路層就能接收到後面的資訊。 圖│研之有物 (資料來源│王建堯)
然而,ResNet 具有太多重複的拷貝,不但浪費計算量,而且不同層的參數用來學習重複、但多餘的資訊,換句話說,每一層能學到的東西都差不多。「是否有一種更好的方式,在不改參數量,讓機器運算變快,省下來的資源 (參數) 還能讓機器多學一點,提高精確度?」廖弘源說。
不只最快,還要最精準!
2019 年年初,廖弘源與王建堯團隊首先研發出局部殘差網路 PRNet(partial residual networks, PRNet),將資訊「分流」,減少無謂的計算量,使運算速度增加兩倍。「一開始做出 PRNet,我還是覺得效果不夠好。雖然減少計算量,大幅加快了計算的速度,但是正確率和原本相比並沒有什麼提升。」廖弘源自信的說:「我覺得這樣沒什麼意思,因為我們的目標,是做出全世界最好的物件偵測技術!」
2019 年 11 月,他們在 PRNet 的基礎上,緊接著研發出跨階段局部網路 CSPNet(cross stage partial network, CSPNet),利用分割–分流–合併的路徑,成功達到了大幅減少計算量、卻能增加學習多元性的目標。
"從 PRNet 與 CSPNet,我們一步步把物件偵測的計算量減低,但是學習卻能更多元,因此也得到更好的精確度。"
以上為 CSPNet 簡化結構的一部分,三色箭頭代表機器學習過程中,後面的資料如何反饋往前傳。這個設計的重點在於資訊的分流與多了過渡層 (Transtion),讓反饋的學習資訊在分流後產生差異,提高每一網路層參數的利用率,目標是讓機器學到更多樣的東西,提高判斷的精確度。另一方面,因為資料分流的關係,有部分直接往後傳,不經過分析計算,使整個計算量變少,運算速度也因此加快。 圖│研之有物 (資料來源│王建堯)
「我們發表 CSPNet 之後,吸引 YOLO 技術的維護者博科夫斯基(Alexey Bochkovskiy)的注意。」廖弘源說。他們很快與博科夫斯基(Alexey Bochkovskiy)展開合作,將 CSPNet 用於開發新一代的 YOLO,並於今年 4 月發表了 YOLOv4 ,成為當前全世界最快、最準的物件偵測技術,引爆全球的 AI 社群。廖弘源笑說:「我們 4 月發表的論文,短短不到三個月,閱讀次數就超過了 1400 次,比我以往發表的任何論文都還多。」其中的關鍵技術正是 CSPNet。
此外,由於 YOLOv4 的技術是開放的,各式各樣的應用也如雨後春筍般快速出現。舉例來說,YOLOv4 可即時偵測人們的社交距離,或是快速判斷路上的行人有沒有戴口罩。
計算社交距離
YOLOv4 甚至能辨識並捕捉滑雪運動中的人,廖弘源進一步解釋:「滑雪的人姿勢以及運動軌跡都不斷變換,甚至可能拋物線飛起,偵測難度相當高,但 YOLOv4 都能追蹤得非常精準。」
捕捉滑雪運動的人
帶學生的第一要求:把科學帶進來!
中研院資訊所所長廖弘源長期研究多媒體視訊處理,從雞尾酒浮水印到人臉資料庫、數位化影片修補等,再到這次的 YOLOv4 物件偵測技術,研究成果卓越。而每一項成果的後面,都是廖弘源帶領資訊所前後屆學生一起努力的成果。
想在廖弘源的實驗室工作,可不是件輕鬆的事。他說:「做研究,不該只想著工程問題,應該本著科學家的精神,從中找出最具科學價值的關鍵下手。」許多學生一到廖弘源的實驗室,必須將過去狹隘、僵化的工程解題模式打掉重練,重新以科學看待問題。例如:本次 YOLOv4 的成功關鍵,即在於一開始問了個好問題,找到最值得改善的環節。
"不論面對的是何種問題,我的第一個要求,就是把科學帶進來。"
儘管治學甚嚴,個性海派的廖弘源和學生也有著亦師亦友的關係。他喜歡和學生一起找出好的研究議題後,一起埋首投入研究工作的熱血感,也喜歡在研究遭遇瓶頸時,與學生一起「大吃一頓解憂愁」。如今,他的學生遍布國際級知名公司與研究單位,持續發揮「廖式思考」的深刻影響力,開發更多如 YOLOv4 般頂尖的科研成果。
雖然團隊屢屢創造具商機的研究成果,但廖弘源對於獎項或是申請專利等,卻是看得很淡。「我的目的本來就不是賺錢,」廖弘源說:「我只希望我們對世界的好奇與探索,能真正轉化為對人類的貢獻。」
中研院記者會合影。由左到右,義隆電子葉儀皓董事長、中研院周美吟副院長、中研院資訊所廖弘源特聘研究員、中研院資訊所王建堯博士後研究員、科技部前瞻司楊琇雅司長、台大人工智慧研究中心陳信希主任、杜維洲執行長。 圖│研之有物 (中研院秘書處)
本文轉載自《研之有物》,一個串聯您與中央研究院的科普橋梁。