1. 程式人生 > >使用yolo v3+alexnet做上衣顏色識別專案總結

使用yolo v3+alexnet做上衣顏色識別專案總結

上衣顏色識別專案總結

  • 流程:
  1. 先用yolo v3的Keras版本訓練coco資料集的模型做行人檢測,過濾掉非行人以及超大框,得到行人的位置
  2. 使用alexnet進行顏色分類,一共12類,資料集是之前標定好的資料集,格式是pascal voc的格式,大概3萬張資料集。按照train-set :val-set=9:1的比例進行訓練,得到顏色識別模型的val acc=76%,想用vgg模型繼續改,但是訓練到21%左右準確率就不再提升不知道原因。嘗試失敗
  3. 測試訓練好的顏色模型:將第一步的行人位置的圖片截取出來,傳入顏色識別模型中進行識別,然後將結果返回。但是測試階段很慢,每幀需要400秒的測試時間,因此視訊當中的每一秒的測試時間是400*25幀=10000秒,時間太長,需要修改網路結構

優化方向:感覺可以使用Yolo v3訓練全景圖,也就是5元組,4個座標位置+1個顏色label,這樣實時效能高很多,畢竟僅僅使用Yolo v3這個框架,並不需要呼叫顏色識別函式。

  • 相關說明:

訓練資料:僅僅設計涉及到上衣顏色資料集,用的之前標定的資料集,並沒有用RAP資料集

測試資料:將視訊當中的行人用yolo v3訓練coco資料集的模型檢測出來,然後傳入顏色識別模型進行測試,但是誤檢率比較高

測試平臺:ubuntu14.04,python3.6.1,keras==2.1.3,tensorflow-gpu==1.4.1

評價指標以及測試demo,由於需要的時間太長,11分鐘的視訊,需要11*60*400*25約等於76天,沒有做,需要方法優化,不過做這個小實驗也有一些收穫,踩了很多坑,最後都解決了。

三.專案收穫

1)RAP資料集

RAP資料集的label是mat檔案,第一次使用,所以需要先轉化為xml格式,然後再進行讀取,並且RAP資料集僅僅能做圖片訓練,不能做行人檢測【問了RAP資料集的作者】;

RAP資料集的上衣位置,需要將上衣的位置-人的位置,才可以找到上衣的位置

2)yolo v3的多分類

之前使用yolo v3做了人臉識別,僅僅有face這一個類別,這次用yolo v3做了多分類,產生了一個比較奇怪的現象,返回了多個預測類別,因此需要將sigmoid層改為softmax層重新訓練,這樣才可以得到最終的預測一種類別。

3)兩個專案的拼接:

我是以yolo v3作為主專案,然後顏色識別的測試做子專案,兩個專案的拼接也用了一段時間,遇到了好多坑,比如說,影象處理的庫:opencv以及PIL,這兩個庫的channel順序不同,opencv是BGR,PIL是RGB,因此需要轉換,並且在用PIL的剪裁行人的框的時候也遇到了一些小問題,導致在專案拼接的時候始終調用不了顏色識別模型的測試檔案。

4)一定要寫異常處理函式!!

這點很重要,因為資料集的標定並不像想象那樣標註的很好,遇到了問題就是,讀取了一個標註檔案,沒有衣服顏色屬性,導致返回空值,在批處理的時候由於資料量太大,始終發現不出來問題,就是報錯,後來printf這個方法搞定了。