使用TensorFlow slim資料夾當中的inception_resnet_v2網路訓練自己的分類資料集
使用TensorFlow slim資料夾當中的inception_v4網路訓練自己的分類資料集
下載slim庫 git clone https://github.com/tensorflow/models/
使用的資料集是史丹佛的狗臉分類資料集:http://vision.stanford.edu/aditya86/ImageNetDogs/
每個資料夾存放一種類別的圖片 資料夾名稱即為類別名稱
轉換資料集為TFRecords格式的檔案:
進入下載以後的資料夾中/models/research/slim/,使用pycharm開啟slim資料夾,開啟轉換格式的檔案download_and_convert_data.py,只有cifar10、flowers、mnist這幾種下載和轉換的檔案,為了轉換自己的資料集,這裡在資料夾datasets中複製貼上download_and_convert_flowers.py檔案,得到副本download_and_convert_flowers - 副本.py檔案,將副本重新命名為download_and_convert_dogs.py
然後download_and_convert_data.py引入庫檔案
from datasets import download_and_convert_dogs
在main函式中新增
elif FLAGS.dataset_name =='dogs':
download_and_convert_dogs.run(FLAGS.dataset_dir)
檔案download_and_convert_flowers.py就配置好的
接著配置download_and_convert_dogs.py檔案,由於資料集已經下載好的,不需要重複下載,這裡註釋掉run函式中下載資料集的程式碼:
將檔案中的字元flowers全部替換為dogs
然後將函式 _get_filenames_and_classes中的
flower_root = os.path.join(dataset_dir, 'flower_photos')改為flower_root = os.path.join(dataset_dir, 'Images')
修改驗證集圖片的數量 _NUM_VALIDATION = 350 為 _NUM_VALIDATION = 2100
(如果第一步已經修改,這一步可以跳過)修改函式_get_dataset_filename中的:
output_filename = 'flowers_%s_%05d-of-%05d.tfrecord' 為 output_filename = 'dogs_%s_%05d-of-%05d.tfrecord'
如果不需要生成TFRecords檔案以後,圖片資料集被刪除,需要註釋掉:
clean_up_temporary_files(dataset_dir)
生成TFRecords檔案:
python download_and_convert_data.py --dataset_name=dogs --dataset_dir=~/zstanf/data
訓練:
主檔案就是train_image_classifier.py,檢視dataset_name變數,dataset_factory.py的檔案中字典datasets_map只有cifar10、flowers、imagenet、mnist這四種資料集處理方式,訓練我們自己的資料集就需要新增資料處理方式,這裡在字典中新增新的item,'dogs':dogs
由於每個value都是一個py檔案,所以需要在datasets資料夾中新建dogs.py檔案,這裡的做法是複製貼上datasets資料夾中的flowers.py檔案,得到副本flowers - 副本.py然後重新命名為dogs.py
dataset_factory.py引入庫檔案
from datasets import dogs
開啟dogs.py檔案進行相應的修改:
將檔案中的字元flowers全部替換為dogs,這樣就修改_FILE_PATTERN = 'flowers_%s_*.tfrecord'為_FILE_PATTERN = 'dogs_%s_*.tfrecord'修改訓練集和驗證集的圖片數量 SPLITS_TO_SIZES = {'train': 19000, 'validation': 2100}
修改類目數量 _NUM_CLASSES = 120
修改_ITEMS_TO_DESCRIPTIONS = { 'image': 'A color image of varying size.', 'label': 'A single integer between 0 and 122', }
修改get_split函式中的圖片解析格式'image/format': tf.FixedLenFeature((), tf.string, default_value='png')修改為:'image/format': tf.FixedLenFeature((), tf.string, default_value='jpg')
下載預訓練權重檔案:
wget http://download.tensorflow.org/models/inception_resnet_v2_2016_08_30.tar.gz
tar zxf inception_resnet_v2_2016_08_30.tar.gz
執行命令開始訓練網路:
python train_image_classifier.py \
--train_dir=./model/inception_resnet_v2_model \ #訓練過程中用於儲存ckpt、index、meta檔案的目錄
--dataset_name=dogs
--dataset_split_name=train
--dataset_dir=~/zstanf/data \ #存放TFRecords檔案的目錄
--model_name=inception_resnet_v2 \ #網路的名稱
--checkpoint_path=./model/inception_resnet_v2_2016_08_30/inception_resnet_v2_2016_08_30.ckpt \ #預訓練權重檔案
--checkpoint_exclude_scopes=InceptionResnetV2/Logits,InceptionResnetV2/AuxLogits \
--trainable_scopes=InceptionResnetV2/Logits,InceptionResnetV2/AuxLogits
--clone_on_cpu=False \
--max_number_of_steps=10000 \
--batch_size=50 \
--learning_rate=0.01 \
視覺化:
tensorboard --logdir=/home/使用者名稱/model/inception_resnet_v2_model
驗證資料集:
python eval_image_classifier.py \
--checkpoint_path=./model/inception_resnet_v2_model \
--eval_dir=./model/eval_result \
--dataset_name=dogs \
--dataset_split_name=validation \
--dataset_dir=~/zstanf/data \
--model_name=inception_resnet_v2 \
參考內容:
使用TensorFlow-Slim進行影象分類
【Tensorflow系列】使用Inception_resnet_v2訓練自己的資料集並用Tensorboard監控
TensorFlow學習筆記(11)--【Ubuntu】slim框架下的inception_v4模型的執行、視覺化、匯出和使用
https://github.com/tensorflow/models/tree/master/research
相關文章
- 使用自己的資料集訓練MobileNet、ResNet實現影象分類(TensorFlow)
- Mxnet R FCN 訓練自己的資料集
- Windows10 使用 Tensorflow Object_detection API 訓練自己的資料WindowsObjectAPI
- 用SSD-Pytorch訓練自己的資料集PyTorch
- Mxnet-R-FCN-訓練自己的資料集
- 資料集訓練
- Caffe-SSD-Ubuntu16-04-訓練自己的資料集Ubuntu
- keras-retinanet 用自己的資料集訓練KerasNaN
- Caffe SSD Ubuntu16 04 訓練自己的資料集Ubuntu
- 谷歌colab訓練自己的資料集YOLOv3谷歌YOLO
- 全網最細 | 教你如何在 docker 容器下使用 mmdetection 訓練自己的資料集Docker
- 訓練自己的Android TensorFlow神經網路Android神經網路
- 資料集訓練+1
- tensorflow2.0在訓練資料集的時候,fit和fit_generator的使用
- fashion資料集訓練
- Yolov3程式碼分析與訓練自己資料集YOLO
- Caffe下自己的資料訓練和測試
- MXNet的資料格式轉化為tensorflow訓練用的資料格式
- Alink漫談(七) : 如何劃分訓練資料集和測試資料集
- DeepLab 使用 Cityscapes 資料集訓練模型模型
- yolov3訓練自己資料教程YOLO
- 【TensorFlow】 TensorFlow-Slim影像分類模型庫模型
- 訓練機器學習的資料集大小很重要 - svpino機器學習
- 如何改善你的訓練資料集?(附案例)
- OpenCV訓練自己的衣服探測分類器OpenCV
- 前饋神經網路進行MNIST資料集分類神經網路
- 深度學習tensorflow實戰筆記(1)全連線神經網路(FCN)訓練自己的資料(從txt檔案中讀取)深度學習筆記神經網路
- 用PyTorch版本R-FCN訓練自己的資料PyTorch
- 搭建 MobileNet-SSD 開發環境並使用 VOC 資料集訓練 TensorFlow 模型開發環境模型
- 非均衡資料集的分類問題
- 亮資料:高效率資料採集,加速大模型訓練!大模型
- 深度學習-Tensorflow2.2-預訓練網路{7}-遷移學習基礎針對小資料集-19深度學習遷移學習
- 棉花病害影像分類資料集
- 水稻病害影像分類資料集
- nnUNet使用指南(一):Ubuntu系統下使用nnUNet對自己的多模態MR資料集訓練Ubuntu
- 資料模型需要多少訓練資料?模型
- 首次!用合成人臉資料集訓練的識別模型,效能高於真實資料集模型
- yolov5 自建資料集訓練測試YOLO