使用TensorFlow分类图像的简单教程-逐步指南
在本教程中,我将展示如何使用Tensorflow深度学习框架轻松地按类别训练图像。对于本教程,我从Kaggle的预测比赛“ 狗品种识别 ”中获得了一个简单的用例,以确定图像中的一只狗的品种。
预训练的模型
有许多CNN使用各种CNN架构对模型进行了培训(在我的博客中早些时候解释了这些架构LeNet,AlexNet,VGG,GoogLeNet Inception,ResNet)。这些CNN已接受ILSVRC-2012-CLS图像分类数据集的培训。
这些模型默认可以将物体分为汽车,卡车,大象,飞机,猫,狗等。为了训练您自己的数据集,我们需要通过分类来获取大量图像,以实现高精度。在某些情况下,我们可能无法从任何来源获得更多的训练数据集。在这些场景中,数据增强技术派上用场,通过变换解决数据集限制,并从现有图像创建新图像以翻转,旋转,应用颜色变化等。有关更多详细信息,请参阅斯坦福大学的数据增强纸。
数据集预处理
首先,使用从Kaggle下载训练和测试数据集及其标签。详情请参阅下面的截图(https://www.kaggle.com/c/dog-breed-identification/data)
第1步:安装和安装
克隆项目
git clone [email protected]:RaghavPrabhu / Deep-Learning.git
cd Deep-Learning / dogs_breed_classification /
创建虚拟环境,如果你想使用virtualenv命令
安装相关库文件
pip install -r requirements.txt
解压缩我们从Kaggle网站下载的所有文件夹
unzip train.zip
unzip test.zip
unzip labels.csv.zip
第2步:组织你的训练文件夹
运行数据处理python代码,以按品种名称重新排列文件夹
"""
Iterate train dataset folder to create dataset folders by dog breed names.
Each 32 bit UUID file name have a equivalent reference name (dog breed) name in labels.csv file.
"""
def organise_dataset(root_path,):
dataset_path = root_path+'/dataset'
train_data = root_path+'/train/'
os.makedirs(root_path, exist_ok=True)
df = pd.read_csv(root_path+'/labels.csv')
files = os.listdir(train_data)
print("Organising dataset by creating folders by dogs breeds using names in labels")
for file in files:
# Define folder name reference in labels csv by 32 UUID file name
folder_name = df.loc[df['id'] == file.split('.')[0],'breed'].values[0]
os.makedirs(dataset_path+'/'+folder_name, exist_ok=True)
source = train_data+file
destination = dataset_path+'/'+folder_name+'/'+file
# Moving files from source (train folder) to detination folder under each breed
os.rename(source, destination)
print("Dataset folders successfully created by breed name and copied all images in corresponding folders")
python data_processing.py /Users/raghav/dogs_breed_classification/
上面的python脚本将按照狗品种名称来组织文件夹。请参照下面的截图作为有组织的输出处理文件夹的狗品种名称。每个狗品种文件夹中都包含相应的狗图像。
第3步:使用我们处理的数据集训练您的模型
运行以下命令以使用CNN体系结构来训练您的模型。默认情况下,下面的脚本将下载'谷歌的初始架构 - 'inception-2015-12-05.tgz'。
python retrain.py — image_dir=dataset/ — bottleneck_dir=bottleneck/ — how_many_training_steps=500 — output_graph=trained_model/retrained_graph.pb — output_labels=trained_model/retrained_labels.txt — summaries_dir=summaries
以下是处理输出。
上述训练模型的Tensorboard精度图
要运行TensorBoard,请运行此命令
User:/dogs_breed_classification$ tensorboard — logdir summaries/ — host=0.0.0.0 — port=8888
TensorBoard 1.7.0 at http://0.0.0.0:8888 (Press CTRL+C to quit)#
第4步:测试你的模型
运行下面的python脚本,根据我们的预先训练的模型对测试图像进行分类。
python classify.py
您可以跳过上述教程中的第3步,直接使用我的github中提供的预训练模型(trained_model / retrained_graph.pb)来测试模型。