打造自己的圖像識別模型(1):將準備好的圖片轉化爲tfrecord格式

微調

圖像識別是人工智能領域的Hello World,小白的第一個人工智能項目,應該是手寫識別的MNIST。

話說,圖像識別已經有了很多知名的demo,CIFAR-10也好,ImageNet也罷,那都是前人的經驗,也是後來人的資源。

如果你想要搭建自己的圖像識別程序,比如識別你院子裏的雞,鴨子,還有大白鵝,或者你的女朋友,那麼歸根到底,都是圖像識別,區別只是拿誰的照片去教人工智能框架。它和知名的圖像識別demo一樣,都要提取特徵,然後總結經驗,最後得出結論。

所以,簡單的圖像識別,我們最好是在知名demo上進行微調。

圖像識別有個知名的ImageNet數據集,我們可以在他的基礎上進行微調。

 

VGG16

VGG16的結構是卷積層+全連接層,卷積層5個部分總共13層,然後還有3層全連接層,總共13+3=16,所以叫VGG16。

我們微調就拿它開刀。

ImageNet是讀取被打上標籤的數千萬張圖片(大約1000個種類的事物),訓練而成。它最後達到一種神功,看到一張圖片,就會得出是1000箇中的哪個。

那麼,我們只微調最後不輸出1000個分類,我們只識別三種:雞鴨鵝,最後輸出3個分類。給一張圖片,它可以告訴我是屬於哪一個分類。這樣也是達到我們的小目的了。

 

圖片準備

你要在人家的demo上微調,那麼就得遵循他們的格式。

首先,我們要做的就是將你的數據按照他們的格式整理好。

你要新建一個pic文件夾。

下面有兩個文件夾,一個叫train,一個叫validation。

pic

------train 訓練用

------validation 驗證訓練結果用

然後,你把你準備好的圖片分好類,放到文件夾裏,上面兩個都放一些,訓練的多,驗證的少。

pic

------train 訓練用

------------chicken 雞

--------------------- 001.jpg 某隻小雞的照片

--------------------- 002.jpg 另只小雞的照片

------------duck 鴨

------------goose 鵝

------validation 驗證訓練結果用

tensorflow訓練數據是需要使用tfrecord格式的數據,這種數據可以讓tensorflow比較好地操作裏面的信息。

因此,我們需要把我們費心整理的圖片轉化爲tfrecord格式的數據。

 

tfrecord轉換

轉換的代碼文件如下。

---pic 我們準備的圖片

------train 訓練用

------validation 驗證訓練結果用

---data_convert.py 將我們準備的圖片,轉換爲tfrecord

---src 資源工具代碼

------tfrecord.py tfrecord的轉換類

 代碼可以下載 點擊下載

其中,data_convert.py是我們轉換的主要代碼。

使用方法:

在文件夾下,運行:

python data_convert.py -t pic/ \
  --train-shards 2 \
  --validation-shards 2 \
  --num-threads 2 \
  --dataset-name satellite

 解釋這裏參數的含義:

  •  -t pic:表示轉換 pic文件夾中的數據。 pic 文件夾中必須有一個train目錄和一個validation目錄,分別代表訓練和驗證數據集每個目錄下按類別存放了圖像數據。
  • --train-shards:將訓練數據集分爲兩塊,即最後的訓練數據就是兩個tfrecord 格式的文件。
  • --validation-shards:將驗證數據集分爲兩塊。
  •  --num-threads:採用兩個線程產生數據。注意線程數必須要能整除train-shards validation-shards ,來保證每個線程處理的數據塊數是相同的。
  •  --dataset-name:給生成的數據集起一個名字。這裏將數據集起名叫satellite,最後生成文件的開頭就是 satellite_train、satellite_validation。

運行完畢後,在pic文件夾下就會生成4個tfrecord文件和1個label.txt文件。

其中tfrecord結尾的就是我們最終生成的tfrecord格式數據,因爲我們指定了--train-shards 2 和  --validation-shards 2,所以訓練數據和驗證數據都分爲了2部分。

另外的label.txt是分類。就是我們整理存放圖片的種類。

chicken 

duck 

goose 

這樣,圖片有了,分類標籤也有了,下一步就交給tensorflow去訓練數據了。

 

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