inceptionv3 /v4遷移學習影象分類
阿新 • • 發佈:2018-11-19
研究一個影象分類的任務,現在的問題是對6類影象資料做分類任務,資料的特徵是每一類都只有非常少的資料,並且存在類別不平均,在這種情況下我們的實驗結果存在準確率的問題,對於少量資料,採用端到端從頭開始訓練的方法,模型學習到的特徵很少,泛化能力不夠,採用從ImageNet資料集訓練得到的結果,我們可以採用預訓練權重初始化特定的深度網路,如這裡的Inception網路,採用slim輕量庫構建模型,模型在三個公開資料集上的例項已經在github中可見,參照例項可用訓練自定義的網路模型。
需要自己下載inceptionv3/v4的預訓練權重,以及自定義的資料集。
構建資料訓練程式碼,v3的訓練和測試過程如下
python download_and_convert_data.py \ --dataset_name=flowers \ --dataset_dir=${DATASET_DIR} # Fine-tune only the new layers for 1000 steps. python train_image_classifier.py \ --train_dir=${TRAIN_DIR} \ --dataset_name=flowers \ --dataset_split_name=train \ --dataset_dir=${DATASET_DIR} \ --model_name=inception_v3 \ --checkpoint_path=${PRETRAINED_CHECKPOINT_DIR}/inception_v3.ckpt \ --checkpoint_exclude_scopes=InceptionV3/Logits,InceptionV3/AuxLogits \ --trainable_scopes=InceptionV3/Logits,InceptionV3/AuxLogits \ --max_number_of_steps=1000 \ --batch_size=32 \ --learning_rate=0.01 \ --learning_rate_decay_type=fixed \ --save_interval_secs=60 \ --save_summaries_secs=60 \ --log_every_n_steps=100 \ --optimizer=rmsprop \ --weight_decay=0.00004 # Run evaluation. python eval_image_classifier.py \ --checkpoint_path=${TRAIN_DIR} \ --eval_dir=${TRAIN_DIR} \ --dataset_name=flowers \ --dataset_split_name=validation \ --dataset_dir=${DATASET_DIR} \ --model_name=inception_v3 # Fine-tune all the new layers for 500 steps. python train_image_classifier.py \ --train_dir=${TRAIN_DIR}/all \ --dataset_name=flowers \ --dataset_split_name=train \ --dataset_dir=${DATASET_DIR} \ --model_name=inception_v3 \ --checkpoint_path=${TRAIN_DIR} \ --max_number_of_steps=500 \ --batch_size=32 \ --learning_rate=0.0001 \ --learning_rate_decay_type=fixed \ --save_interval_secs=60 \ --save_summaries_secs=60 \ --log_every_n_steps=10 \ --optimizer=rmsprop \ --weight_decay=0.00004 # Run evaluation. python eval_image_classifier.py \ --checkpoint_path=${TRAIN_DIR}/all \ --eval_dir=${TRAIN_DIR}/all \ --dataset_name=flowers \ --dataset_split_name=validation \ --dataset_dir=${DATASET_DIR} \ --model_name=inception_v3
v4
train: python train_fracture_classifier.py --train_dir=/home/root1/models/research/slim/fracture_traindir --dataset_name=fracture --dataset_split_name=train --dataset_dir=/home/root1/data/fracture_data --model_name=inception_v4 --checkpoint_path=/home/root1/models/research/slim/pre_trained/inception_v4.ckpt --checkpoint_exclude_scopes=InceptionV4/Logits,InceptionV4/AuxLogits/Aux_logits --trainable_scopes=InceptionV4/Logits,InceptionV4/AuxLogits/Aux_logits --max_number_of_steps=10000 --batch_size=32 --learning_rate=0.001 --learning_rate_decay_type=fixed --save_interval_secs=60 --save_summaries_secs=60 --log_every_n_steps=100 --optimizer=rmsprop --weight_decay=0.00004 --learning_rate_decay_factor=0.5 --num_epochs_per_decay=50 --moving_average_decay=0.9999 --optimizer=adam --ignore_missing_vars=True python train_fracture_classifier.py \ --train_dir=/home/root1/models/research/slim/fracture_traindir1 \ --dataset_name=fracture \ --dataset_split_name=train \ --dataset_dir=/home/root1/data/fracture_data \ --model_name=inception_v4 \ --checkpoint_path=/home/root1/models/research/slim/pre_trained/inception_v4.ckpt \ --checkpoint_exclude_scopes=InceptionV4/Logits,InceptionV4/AuxLogits/Aux_logits \ --trainable_scopes=InceptionV4/Logits,InceptionV4/AuxLogits/Aux_logits \ --max_number_of_steps=10000 \ --batch_size=32 \ --learning_rate=0.01 \ --learning_rate_decay_type=fixed \ --save_interval_secs=60 \ --save_summaries_secs=60 \ --log_every_n_steps=100 \ --optimizer=rmsprop \ --weight_decay=0.00004 eval: python eval_fracture_classifier.py --checkpoint_path=/home/root1/models/research/slim/fracture_traindir --eval_dir=/home/root1/models/research/slim/fracture_traindir --dataset_name=fracture --dataset_split_name=validation --dataset_dir=/home/root1/data/fracture --model_name=inception_v4