2017-03-15 186 views
0

我正在尝试准备从零开始培训ImageNet模型的日期,我对培训的工作原理有点困惑。Tensorflow Slim Imagenet培训

在准备TF记录时,我在Inception模型数据目录中注意到这个文件:“imagenet_metadata.txt”。该文件包含21842类的标签,但培训脚本和“imagenet_lsvrc_2015_synsets.txt”文件仅适用于1000个类。

我想知道我需要做什么修改来训练21K类的模型而不是1K的?

回答

0

这是很简单的用slim.To列车imgnet 21K采用纤薄的,我建议做以下步骤:

1.In tf_models /超薄/数据集文件夹创建imagenet.py文件(例如imgnet的副本。 PY)。在新的文件更改所需的 变量到你所需的值:

_FILE_PATTERN = ####your tfrecord_file_pattern. for me('imgnet_%s_*.tfrecord') 
    _SPLITS_TO_SIZES = { 
     'train': ####Training Samples, 
     'validation': ####Validation Samples,} 
    _NUM_CLASSES = 21841 

* WordNet的同义词集包含21482项,但在21481(n04399382遗漏)的imagenet21k类的总数。所以可以肯定的关于可用类的总数。

*您还需要对代码进行一些修改,以便从本地地址加载synset文件。

base_url = '/home/snf/libraries/tf_models/slim' 
    synset_url = '{}/listOfTags.txt'.format(base_url) 
    synset_to_human_url = '{}/imagenet21k_metadata.txt'.format(base_url) 
  1. 添加新的数据集tf_models /超薄/数据集datasetfactory.py:

    from datasets import imgnet 
    datasets_map = { 
    'cifar10': cifar10, 
    'flowers': flowers, 
    'imagenet': imagenet, 
    'mnist': mnist, 
    'imgnet': imgnet, #add this line to dataset_map 
    
    } 
    
  2. 在tf_models /超薄/创建一个包含这些行Train_Imgnet.sh文件:

    TRAIN_DIR=trained/imgnet-inception-v4 
    DATASET_DIR=/media/where/tfrecords/saved/tfRecords-fall11_21k 
    CUDA_VISIBLE_DEVICES="0,1,2,3" python train_image_classifier.py 
    
        --train_dir=${TRAIN_DIR} \ 
        --dataset_name=imgnet \ 
        --dataset_split_name=train \ 
        --dataset_dir=${DATASET_DIR} \ 
        --model_name=inception_v4 \ 
        --max_number_of_steps=10000000 \ 
        --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\ 
        --num_readers=12 \ 
        --num_clones=4 
    
  3. 将文件设置为可执行文件(Chmod + x Train_Imgnet.sh)并运行它(./Train_Imgn et.sh)