使用TensorFlow分类图像的简单教程-逐步指南

使用TensorFlow分类图像的简单教程-逐步指南

图:1→Kaggle的狗品种数据集

在本教程中,我将展示如何使用Tensorflow深度学习框架轻松地按类别训练图像。对于本教程,我从Kaggle的预测比赛“ 狗品种识别 ”中获得了一个简单的用例,以确定图像中的一只狗的品种。

预训练的模型

有许多CNN使用各种CNN架构对模型进行了培训(在我的博客中早些时候解释了这些架构LeNet,AlexNet,VGG,GoogLeNet Inception,ResNet)。这些CNN已接受ILSVRC-2012-CLS图像分类数据集的培训。

这些模型默认可以将物体分为汽车,卡车,大象,飞机,猫,狗等。为了训练您自己的数据集,我们需要通过分类来获取大量图像,以实现高精度。在某些情况下,我们可能无法从任何来源获得更多的训练数据集。在这些场景中,数据增强技术派上用场,通过变换解决数据集限制,并从现有图像创建新图像以翻转,旋转,应用颜色变化等。有关更多详细信息,请参阅斯坦福大学的数据增强纸。

数据集预处理

首先,使用从Kaggle下载训练和测试数据集及其标签。详情请参阅下面的截图(https://www.kaggle.com/c/dog-breed-identification/data)

使用TensorFlow分类图像的简单教程-逐步指南

图:2→Kaggle的狗品种数据集网站

第1步:安装和安装

  • 克隆项目

git clone [email protected]:RaghavPrabhu / Deep-Learning.git

cd Deep-Learning / dogs_breed_classification /

使用TensorFlow分类图像的简单教程-逐步指南

图:2 → Tutorial Github Repo

  • 创建虚拟环境,如果你想使用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脚本将按照狗品种名称来组织文件夹。请参照下面的截图作为有组织的输出处理文件夹的狗品种名称。每个狗品种文件夹中都包含相应的狗图像。

使用TensorFlow分类图像的简单教程-逐步指南

图:4→有组织的输出文件夹

第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

以下是处理输出。

使用TensorFlow分类图像的简单教程-逐步指南

图:5→训练我们的模型

上述训练模型的Tensorboard精度图

使用TensorFlow分类图像的简单教程-逐步指南

图6→TensorFlow Accuracy Graph

要运行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

使用TensorFlow分类图像的简单教程-逐步指南

图:6~输出犬品种分类

您可以跳过上述教程中的第3步,直接使用我的github中提供的预训练模型(trained_model / retrained_graph.pb)来测试模型。

相关推荐