Крупномасштабная классификация изображений с использованием предварительно обученного создания V3 Convolution Neural Network Model
Сегодня у нас есть суперэффективная техника, как Передача обучения где мы можем использовать предварительно обученную модель Google Ai Для классификации любого изображения классифицированных визуальных объектов в мире компьютерного видения.
Обучение передаче – это метод обучения машины, который использует предварительно обученную нейронную сеть. Здесь Распознавание изображения Модель под названием Mainception-V3 состоит из двух частей:
Добыча функций Часть с сверточной нейронной сетью.
Классификация Часть с полностью подключенными и софтмаксными слоями.
MANCEPTION-V3 – это предварительно обученная сверточная нейронная сетевая модель, которая в глубине 48 слоев.
Это версия сети уже обучена более чем за миллион изображений из ImageNet база данных. Это третье издание Mainception Model CNN Google, первоначально сконструированным во время Признание ImageNet Challenge Отказ
Эта предварительно обученная сеть может классифицировать изображения на 1000 категорий объектов, таких как клавиатура, мышь, карандаш и многие животные. В результате сеть научилась богатыми представлениями о функциях для широкого спектра изображений. Сеть имеет размер ввода изображения 299-к-299. Модель извлекает общие функции из входных изображений в первой части и классифицирует их на основе этих функций во второй части.
Схематическая диаграмма наживления V3 – Google Ai
Влияние V3 Это широко используемая модель распознавания изображений, которая была показана, что достигает более 78,1% точности на набор данных ImageNet и около 93,9% точности в результатах 5 лучших результатов. Модель является кульминацией многих идей, представленных несколькими исследователями за последние годы. Он основан на оригинальной бумаге: « Переосмысление архитектуры наживления для компьютерного зрения «Сыгеди, эт. al.
Дополнительная информация о архитектуре наживления можно найти здесь Отказ
В этой статье мы просто будем использовать модель V3 V3, чтобы предсказать некоторые изображения и извлечь 5 лучших предсказанных классов для того же. Давайте начнем.
Мы используем Tensorflow v2.x
Импорт данных
import os import numpy as np from PIL import Image from imageio import imread import tensorflow.compat.v1 as tf tf.disable_v2_behavior() import tf_slim as slim from tf_slim.nets import inception import tf_slim as slim import cv2 import matplotlib.pyplot as plt
Загрузка данных
Установите все начальные переменные с местами файлов по умолчанию и соответствующие значения.
ckpt_path = "/kaggle/input/inception_v3.ckpt" images_path = "/kaggle/input/animals/*" img_width = 299 img_height = 299 batch_size = 16 batch_shape = [batch_size, img_height, img_width, 3] num_classes = 1001 predict_output = [] class_names_path = "/kaggle/input/imagenet_class_names.txt" with open(class_names_path) as f: class_names = f.readlines()
Создать создание v3 модель
X = tf.placeholder(tf.float32, shape=batch_shape) with slim.arg_scope(inception.inception_v3_arg_scope()): logits, end_points = inception.inception_v3( X, num_classes=num_classes, is_training=False ) predictions = end_points["Predictions"] saver = tf.train.Saver(slim.get_model_variables())
Определите функцию для загрузки изображений и изменение размещения для отправки к модели для оценки в режиме RGB.
def load_images(input_dir): global batch_shape images = np.zeros(batch_shape) filenames = [] idx = 0 batch_size = batch_shape[0] files = tf.gfile.Glob(input_dir)[:20] files.sort() for filepath in files: with tf.gfile.Open(filepath, "rb") as f: imgRaw = np.array(Image.fromarray(imread(f, as_gray=False, pilmode="RGB")).resize((299, 299))).astype(np.float) / 255.0 images[idx, :, :, :] = imgRaw * 2.0 - 1.0 filenames.append(os.path.basename(filepath)) idx += 1 if idx == batch_size: yield filenames, images filenames = [] images = np.zeros(batch_shape) idx = 0 if idx > 0: yield filenames, images
Загрузка предварительно обученной модели
session_creator = tf.train.ChiefSessionCreator( scaffold=tf.train.Scaffold(saver=saver), checkpoint_filename_with_path=ckpt_path, master='')
Классифицировать изображения с использованием модели
with tf.train.MonitoredSession(session_creator=session_creator) as sess: for filenames, images in load_images(images_path): labels = sess.run(predictions, feed_dict={X: images}) for filename, label, image in zip(filenames, labels, images): predict_output.append([filename, label, image])
Прогнозы
Мы будем использовать некоторые изображения из Животные-10 DataSet от Kaggle, чтобы объявить модельные прогнозы.
for x in predict_output: out_list = list(x[1]) topPredict = sorted(range(len(out_list)), key=lambda i: out_list[i], reverse=True)[:5] plt.imshow((((x[2]+1)/2)*255).astype(int)) plt.show() print("Filename:",x[0]) print("Displaying the top 5 Predictions for above image:") for p in topPredict: print(class_names[p-1].strip())
Несмотря на длину, все классы классифицируются на месте, и мы также можем увидеть, что топ-5 похожих классов, как прогнозируется моделью, довольно хорошими и точными.
Оригинал: “https://dev.to/imsparsh/classify-any-object-using-pre-trained-cnn-model-1pbm”