深度學習-物件偵測:You Only Look Once (YOLO)
CNN與YOLO等演算法已經被炒作成影像辨識似乎無可置疑的主流技術了?市場上的狀況真是如此嗎?我的公司主要業務就是專做各種影像辨識軟體開發,2015年創業至今所有影像辨識專案都能順利成功!而且多數是承接號稱擁有AI技術的廠商已經做失敗的案例!但是我的產品至今都沒有正式使用過這些「主流」技術,我不會為了蹭「那種AI」的熱度,謊稱使用CNN或YOLO?我試過,但效果不好就不用了!我想告訴大家的是:其實有比它們更好的影像辨識技術選擇!
我現在是商人,已經不是學者教授,我追求的目標不是學術光環與地位,所以沒有門派之見的堅持,只想追求影像辨識產品設計的最高效率,極盡一切可用的技術替客戶省錢也替自己賺錢!所以我也會很認真看待學習這些「新」技術的!「新」字所以會括號是因為這些方法並沒有很新,近40年前我讀碩士班(1985-1986)時用矩陣掃描二維資料取得特定資訊就已經是很常用的資料處理技巧了!
那時候稱之為「數位濾波」(Digital Filter),現在的CNN本質仍然是一樣的!如上圖左邊的黑框就是當時老師教我們時說的Filter,現在稱之為卷積核(kernel),就是根據你想要掃描偵測的特徵,譬如中間凸起的一個富士山,就設計一個參數中央大周邊小的矩陣,讓這個矩陣掃到富士山時會有一個很大的數值結果(響應),你就知道富士山的位置了!當然碰到小山就會有小響應,碰到窪地就是負響應了!
這種偵測物件的方式最大的問題是:矩陣中的每個元素在每一個位置都要跟原圖的對應元素相乘最後加總,運算量很大,應該說是太大了!所以我們年輕時雖然都知道這種技術,但是如果手邊沒有超級電腦是沒辦法盡情使用的!我的博士論文其實就是類似的應用,以特殊設計的「卷積核」掃描地形找出山脊與山谷的軸線,但當時的電腦算一個解析度只有十幾萬資料點的台灣地形資料就必須好幾個小時!程式開跑後我就可以去吃個午飯睡個午覺再回來看結果了!
CNN用一個固定大小的矩陣掃描全圖計算量就爆棚了!如果不確定要找的目標大小,必須用不同大小的矩陣做多次掃描呢?計算量當然就更恐怖了!所以直到近年多核心電腦進步到計算能力大到有剩時CNN的暴力運算概念才死灰復燃的!而且它們一出現CPU的超額運算能力就立即不夠用了!必須呼叫GPU來救援?真的是超級敗家子!這樣的演算法還能稱之為「先進」新科技嗎?叫GPU做一般計算那是類似使用童工,只有逼不得已的貧窮家庭才會被迫如此,這也算是科技進步嗎?
如上文章清楚說明了YOLO與CNN的關係,其實就是試圖解救CNN計算量太大困境的一種變通方法!只用一個固定大小的矩陣掃描一次,然後盡量重複使用這一次掃描時獲得的資訊去嘗試組織出不同大小目標的辨識結果!可以想見要找出各種大小與特徵目標的數學操作會更複雜,不確定性或錯誤率都會更高!
YOLO「相對於正規的CNN」計算時間是比較少了,但不是說他們比用「其他」的技術做影像辨識快!YOLO的計算量還是遠遠高於OCR技術好多倍的,準確度也確定不如使用OCR方法!數學操作的複雜度也更高!所以一樣的辨識目的,使用CNN或YOLO技術,如果要「追上」傳統的OCR辨識成效,是成本很高,還未必能做到的!
所以CNN與YOLO很像被過度吹捧呵護的富二代,再怎麼沒效率大家都還是極盡努力維護它們的繼續存在!輝達努力讓GPU可以加入一般運算增加可用之兵是沒錯,但如果只是為了解救大公子無止盡的過度揮霍呢?是不是我們可以考慮讓其他不會那麼揮霍無度的演算法來取代呢?CNN與YOLO根本不是唯一不得不的選擇,他們甚至只是「候選人」而已!現有的商用影像辨識軟體都還「不是」用它們做的!你知道嗎?
這就是目前我知道的影像辨識市場的實況!很奇怪是不是?怎麼跟大家在網路上看到的AI資訊很不一樣?大家可以高度懷疑我的說法,但是希望大家因為懷疑願意去看清楚事實!減少因為對影像辨識技術的不了解受到假AI廠商的蒙騙而錯誤採購或投資浪費太多錢!
如下圖所示,我的車牌辨識是完全使用OCR技術研發出來的,跟機器學習、深度學習與CNN或YOLO都完全無關!我多次嘗試在部分流程中引進那些所謂的新AI技術,但是最後的評估都是得不償失,48萬畫素的影像辨識車牌只需要0.053秒?我還需要YOLO或GPU來幫我嗎?反之,如果選擇的演算法效率太差(如CNN或YOLO)時,連超級電腦都救不了你的!即使能做出結果成本都太高了!在市場上一定會徹底被我這種使用傳統技術的廠商KO的!
須知,因為運算量太大而去找GPU幫忙不是增加競爭優勢的根本解決方案!如果YOLO靠著GPU暫時領先了其他傳統技術,那等到OCR等傳統技術也開始呼叫GPU幫忙計算時不是立刻又要回領先了?AI技術好壞的根本還是合理有效率的演算法,有沒有GPU其實是不影響最終技術優勢的!就像穿跑鞋的即使跑贏打赤腳的也不算贏,等大家都穿跑鞋比賽時才是見真章的時候。我的軟體現在都不用GPU,是因為我打赤腳都跑得比CNN或YOLO快,還沒必要而已。
限會員,要發表迴響,請先登入