基於caffe的CNN_訓練+預測_思考記錄(1)

訓練與測試數據集的預處理與製作,對於CNN在訓練時的loss值和預測時的準確度起着至關重要的作用,本節我來介紹如何對數據集進行預處理,並且製作相應的hdf5文件。


以我最近的一個項目爲例進行介紹,項目的主要內容是對於輸入圖片進行迴歸,迴歸得到人羣密度圖。所以數據集便是含有人羣的圖像。在項目的前期,我選取的數據集是著名的UCSD人羣密度數據集。


在分類或迴歸問題中,標籤是與數據集相輔相成的第一要素,爲數據集進行標定標籤,又是一項極其繁瑣的工作,需要耗費大量人力,所以選取附帶有已經標定好標籤的數據集會給整個項目提高效率。UCSD數據集在前4000張照片中給出了已標定好的標籤,所以我暫時先使用前4000張照片作爲此次項目的原始數據集。


關於標籤,如果是分類問題則會很好理解,像imagenet這樣的數據集,每一張圖片都有它的類別,例如只要是汽車,不管什麼顏色什麼型號,最終都會被分類到汽車這樣一個標籤中去,所以對於imagenet來說,標籤就是不同圖片的類別名稱。而我的項目並非分類問題,而是迴歸問題,所以標籤的概念自然與分類問題不同。分類問題可能是很多圖片對應一個標籤,而標籤本身也十分簡單,可能是一個詞也可能是一個數字。但是迴歸問題則不然,每一個不同的圖片都對應一個獨一無二的標籤,並且標籤本身也是十分抽象的,可能是一張圖片,也可能是一個高維向量,其取決於最終要回歸的目標。


就我的項目而言,自然是要將一副含有人羣的圖片迴歸到一副人羣密度圖,那麼我的標籤則應該是與不同圖片分別相對應的人羣密度圖。在UCSD數據集中,所給出的標籤僅僅是對於圖像中人頭進行標定的關於人頭座標的mat文件,從mat文件到人羣密度圖還需要一個轉化的過程。另外補充一點,對於圖片中人羣密度的計算,關於人的標定,該領域內絕大部分都是對於人頭進行標定,並且均取得了不錯的效果,當然也有對身高肩寬等進行標定的,但是因爲其複雜性以及非通用型,並沒有得到很好的效果。


使用CNN訓練數據集的目標便是提取數據集中的圖片特徵,而一副圖片中的特徵又有很多,僅僅依靠標籤給出的要求很難精確地提取出想要的特徵。如果將除感興趣特徵以外的其他大部分特徵都是濾去,那麼對於感興趣特徵提取的準確率就高多了。舉個例子,A老師想要從操場上正在做廣播體操的全校同學中找到B同學,但是他只記得B同學的面孔卻不知道他的名字,此外他還知道B同學是男生,身高1米8,這可以算是三個特徵。如果A老師從全校幾千人中挨個尋找的話,很難在短時間準確地找到。所以此時就應該將其他不必要的特徵除去,即將不符合以上三個特徵的人除去,於是A老師在主席臺上用擴音器喊道:“1米8左右的男生留下,其他人都回教室。”很快操場上便剩下很少一部分符合要求的人了,此時A老師再一個一個地找便很容易找得到。


對於數據集預處理也是同樣的道理,對於一副圖片,我們感興趣的特徵只是圖片中的人,對於圖片中的其他特徵諸如樹、草坪、石頭我們都不感興趣,如果能夠將這些特徵除去,則能縮短訓練的時間,同時又能提高訓練的準確率。UCSD數據集中的場景正好是一條行人通道,所以基本上所有的人都集中在此一條行人通道上,採取ROI的方法便可以只截取行人通道上的部分,而通道兩邊的花草樹木則都被濾去。通過此一預處理的圖片,則會大大提高訓練與預測的準確度。具體方法可採用先標定邊界點,然後將原始圖像通過權值爲1和0的蒙板計算得到處理後的圖片。


由於有些圖片因爲人羣距離攝像機的遠近不同,而導致人體尺度不同,可以考慮對於圖片進行透視矯正,對於UCSD數據集中我暫時並未進行透視矯正,可能會在後一階段考慮加入。


當數據集前期預處理好之後,便要開始製作數據集,因爲caffe是不支持直接將圖片當作輸入的。通常情況下數據集可製作成lmdb和hdf5兩種形式,其中lmdb形式對應的是分類問題,在訓練時會將分好類的圖片和其相應的標籤列表寫入lmdb文件中,例如caffe自帶的mnist手寫數字識別模型,lmdb便是一種caffe能夠識別的CNN網絡輸入形式。而對於迴歸問題,則通常要使用hdf5的形式輸入CNN,我在項目中,將預處理後的圖片和通過mat文件轉後生成後的人羣密度圖文件一一對應分別寫入hdf5文件中,每一個訓練與測試圖片都要生成一個hdf5文件,當作爲數據集導入網絡的時候,卻是導入寫有所有hdf5文件地址的txt文件。


在導入hdf5文件之前,還要對圖片進行最後一次預處理,因爲考慮到CNN的尺度大小,以及爲了滿足無論怎樣大小的圖片網絡都可以識別,需要對原始圖片進行切塊,最好爲正方形。在訓練時,將圖片切塊輸入網絡,在預測時,將分塊得到的密度圖進行組合拼湊,最終變成原始圖片大小。


以上便是我在項目中關於數據集預處理和製作時的一些思考記錄。如果CNN是從github上clone下來的,此時預測結果出問題,多半的原因都在數據集的預處理和製作過程。

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