[無監督式學習]-自學習目標分類器/檢測器探究

開始做新項目啦QAQ

一些背景知識

什麼是無監督式,監督式學習?

在正文開始前,我想搞懂這個問題是非常重要的。在目前的機器學習領域,大概把訓練(/學習)過程分爲三類,一類是監督式學習,一類是半監督式學習,一類是無監督式學習。自學習目標分類器/檢測器正是屬於無監督式學習的範疇。半監督式學習在這裏就不展開說了。下面大概說一下自己對剩下兩種模式的理解:

監督式學習

顧名思義,就是人爲提供數據與標定。比如在目標分類中,每張圖片標定一個onehot編碼/數字索引。在目標檢測中每張圖片提供一些bounding box座標。以上的這些把數據人爲標定上一定的值,輸入網絡,進行訓練,從而擬合出一個合適的數據關於標定的“公式” 的思路,稱爲監督式學習。

無監督式學習

不提供標定好的數據,直接向網絡輸入數據,由網絡根據輸入數據,進行特徵提取,從而輸出結果。意義:有些數據人工無法標定;有些數據,人工標定的難度太高。

自學習目標分類器

在探究了自學習目標分類器後,我覺得它應該算是最簡單的無監督式學習demo了。它的主題思想如下:

訓練

將矩陣輸入backbone後得到fmap,再將fmap做聚類。不過此處有個地方,我還是不太理解。就是在數據不確定的情況下,如何用手肘法確定合適的K值。(後面再仔細想想)

預測

經過聚類後,假設我們得到了n個類別。此時,便完成了學習的過程(特徵提取並分類)。之後,我們便可以進入預測。假設此時有一個圖像矩陣輸入網絡,得到了fmap。我們的目標是爲了得到這個fmap的類別(即圖像矩陣的類別)。而再上一步中,我們已經通過聚類獲得了n個類別了。那麼,判斷這個fmap的類別也非常簡單了。我們只需計算這個fmap和n個類別中心點的距離,找出距離最小值所對應的類別中心點索引,就可以實現對fmap類別的分類。

實操

嘴上說起來還是挺簡單的QAQ,但是許多問題還是要實操下才行。這樣纔會暴露一些bug出來。明天早上再去研究研究,今天就先寫這麼多吧。

運行效果

在這裏插入圖片描述
在這裏插入圖片描述

一些重要的地方

K值如何確定?

經過,今早的思考。我認爲,這個K值是無需像yolo裏面的anchor聚類一樣,通過手肘法找到K值。K值就是分類值(你希望把一個數據的特徵,用多少個特徵中心點表示(/概括))

backbone選擇?

根據對以上原理的推敲,我們希望backbone輸出是個fmap。故我們只需要找個合適的backbone,假如它的輸出就是fmap的話,那再好不過了(比如mobilenet 的no include top)。如果他的輸出不是fmap,我們只需要在頂層重新加個conv就行。

剛好最近對於無監督的目標檢測沒啥思路,所以打算下週一開始,花個1-3天左右,在pc上搭個自學習目標分類器看看。以便於自己更加深入瞭解整個搭建過程中的思路,收穫一些靈感,爲後面做無監督目標檢測提供些靈感。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章