Tensorflow models 使用官方神经网路模型训练自己的数据
Mobilennet使用方法
Tensorflow models公式library neural network来训练自己的模型
開発環境
Anacoda3
Python 3.6
Pip 19.3.1
cudatoolkit 10.1.243
cudnn 7.6.5
tensorflow-gpu 1.14.0
TensorFlow Research Models为研究开发模型公开募集的项目
在github上models/research/的研究项目里
Frameworks / APIs with Models
Maintainer(s) sguada, nathansilberman来管理管理范围下记
| slim | TensorFlow-Slim Image Classification Model Library | A lightweight high-level API of TensorFlow for defining, training and evaluating image classification models• Inception V1/V2/V3/V4• Inception-ResNet-v2• ResNet V1/V2• VGG 16/19• MobileNet V1/V2/V3• NASNet-A_Mobile/Large• PNASNet-5_Large/Mobile |
训练详细可根据官方网站来进行调整
TFRecord训练数据做成
本人使用food101的公开数据集根据个人喜好更改数据集即可
Slim/
Datasets/
文件夹下
download_and_convert_flowers.py
复制文件重新命名保存
cp download_and_convert_flowers.py convert_food101.py
source修正
1.
# The number of images in the validation set.
_NUM_VALIDATION = 350
# Seed for repeatability.
_RANDOM_SEED = 0
# The number of shards per dataset split.
_NUM_SHARDS = 5
2. # 把数据集换成自己的
flower_root = os.path.join(dataset_dir, 'food101')
3. # 数据保存名字也换成自己的
def _get_dataset_filename(dataset_dir, split_name, shard_id):
output_filename = 'food101_%s_%05d-of-%05d.tfrecord' % (
split_name, shard_id, _NUM_SHARDS)
return os.path.join(dataset_dir, output_filename)
4.
# 数据再次下载已经没有必要comment out
#dataset_utils.download_and_uncompress_tarball(_DATA_URL, dataset_dir)
photo_filenames, class_names = _get_filenames_and_classes(dataset_dir)
class_names_to_ids = dict(zip(class_names, range(len(class_names)))
5.
#这一行是输出后会删除原始数据一定要comment out
#_clean_up_temporary_files(dataset_dir)
print('\nFinished converting the Fruits dataset!')
回到下面文件夹下更改文件
Slim/
download_and_convert_data.py
#追加
from datasets import convert_food101
#追加
elif FLAGS.dataset_name == 'food101':
download_and_convert_mnist.run(FLAGS.dataset_dir)
制作Shell脚本 perform.sh
python download_and_convert_data.py \
--dataset_name=food101 \
--dataset_dir=/food101/ #自己的数据保存地址
実行
Sh perform.sh
执行完成后会自动保存在下面文件夹内
/food101/
TFRecord的格式
訓練
Slim/
Datasets/
flowers.py
flowers.py文件复制重命名保存为food101.py
更改food101.py的数据
#改为自己的数据集
_FILE_PATTERN = 'food101_%s_*.tfrecord'
#需要训练和测试的图像数我的总数居是4000
SPLITS_TO_SIZES = {'train': 3000, 'validation': 1000}
#我只训练food101中的4个分类
_NUM_CLASSES = 4
Slim/
Datasets/
dataset_factory.py
更改文件dataset_factory.py
#追加
from datasets import food101
#追加
datasets_map = {
'cifar10': cifar10,
'flowers': flowers,
'imagenet': imagenet,
'mnist': mnist,
'visualwakewords': visualwakewords,
'food101': food101,
}
Shell脚本作成 perform_train.sh
export TF_FORCE_GPU_ALLOW_GROWTH=true
python train_image_classifier.py \
--train_dir=./my_save_model/food101-models/mobilenet_v2_140_02 \
--dataset_name=food101 \
--dataset_split_name=train \
--dataset_dir=datasets/record/ \
--model_name=mobilenet_v2_140 \
--max_number_of_steps=60000 \
--preprocessing_name="mobilenet_v2_140" \
--learning_rate=0.045 \
--label_smoothing=0 \
--moving_average_decay=0.9999 \
--batch_size=20 \
--num_clones=1 \
--learning_rate_decay_factor=0.98 \
--num_epochs_per_decay=2.5
実行
Sh perform_train.sh #訓練開始
好了数据可以训练了
我用的是mobilenet_v2_140模型来进行训练大家可以改为自己喜欢的模型
后续会陆续更新
如有错误还希望大家指正

1239

被折叠的 条评论
为什么被折叠?



