在本鳥寫文的當下,YOLO已經到了v10版本了。 YOLO一直是影像偵測的標準之一,隨著發展代數越來越多,效能也越來越強。V8在執行時就已經比V5快上不少,而V10更有高於V8的效能,更利於部署在一些算力有限的地方。可以說,在邊緣裝置上YOLO已經有了難以抹滅的地位--不論是效能或者是上手配置的難易度上。 而這些成果都在擴展YOLO的縱向強度,終歸還是在YOLO本身。那麼有沒有其他的橫向結合,讓YOLO變得更多工更好用呢? 第一個嘗試就是YOLOv7時加入了物件分割和類似OpenPose的關節點辨識功能了。而第二個,就是我們今天要提到的YOLOv8-world,將CLIP和YOLO結合達成零樣本物件偵測。 當然,我們要先解釋什麼是零樣本物件辨識。零樣本辨識指的是不進行再次訓練,將過往的辨識數據直接套用到未知的樣本上,並透過輸出的數據建立對未知樣本的分類。打個比方,我們訓練了一個簡單的神經網路模型,它可以分辨出照片中有沒有馬或者是孔雀。那麼在輸出層前,我們假設這個網路會歸納出以下結果進行分類: | 類別 | 有幾條腿 | 有無花紋 | | --- | --- | --- | | 馬 | 4 | 無 | | 孔雀 | 2 | 有 | 我們可以看到,神經網路最後歸結出用腿的數量和花紋的有無進行最終分類,假設我們用這個模型進行零樣本辨識,有沒有機會辨識出一隻斑馬呢? 答案是有可能的: | 類別 | 有幾條腿 | 有無花紋 | | --- | --- | --- | | 斑馬 | 4 | 有 | 此時,輸出的結果有其明確的邊界性,我們可以透過馬和孔雀的特徵結合得到斑馬這個新類別--那萬一此時來的是一隻老虎,我們可能就需要多一些特徵,比方說主色調來進行分別了。 我們了解了零樣本辨識後就可以回到CLIP和YOLO結合的議題上了。前面的例子相當簡略,實務上,若要對可能看到的任何東西進行這種特徵歸結,目前有且唯一實現成功的技術只有一個,也就是萬能的GPT。 GPT將所有的文字敘述都壓縮到一個特徵空間的向量中。雖然我們不知道那個向量最後到底代表了哪些基礎概念,但目前來看足以表達人類知識。而如果我們將圖片和圖片的敘述一起壓進這個向量空間中,則可以得到圖片特徵和對應敘述的向量--當然我們還是無法知道每個特徵維度具體代表什麼概念,但也達成了把影像的特徵定義並取出來的目的了,而這個模型就是CLIP。  利用CLIP,我們可以將文字提示和圖片壓到同樣的向量空間裡面,再利用相似度的方式計算圖片和文字敘述是否相符達成影像辨識。而由於文字提示是可以隨意輸入的,也就達成了零樣本學習的要件。 而如果我們將YOLO框出的物體和CLIP結合,就可以達成"疑似"零樣本影像偵測的結果:  如圖中,本鳥使用文字提示指定了bus、car、vehicle registration plate(車牌)三個類別,進而達成一個車牌偵測系統。只要將車牌的圖像截出送入OCR模型,我們就有一個讀取車牌的道路取締(?)系統的雛型了,藉由確認車子的位置判斷是否違規,並抓出車牌予以取締。 而更進階一點的則可以達成一些特殊的辨識目標,比方說只抓出紅色的車:  以往我們通常會使用先辨識出車,再用傳統影像方法抓出紅色的車。而YOLOv8-world可以在前一階段直接過濾完成,無疑對比較不擅長程式的人員開了一個便利的門。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up