Рубрики
Без рубрики

Классифицируйте любой объект, используя предварительно обученную модель CNN

Крупномасштабная классификация изображений с использованием предварительно обученного создания V3 Convolution Neural Network M … с меткой MachineLearning, Datascity, Python.

Крупномасштабная классификация изображений с использованием предварительно обученного создания 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”