VGG16 — это модель CNN (сверточная нейронная сеть), которая уже изучена. Мы можем распознавать и классифицировать изображения с помощью VGG16 в Python.

Что такое VGG16?

VGG16 — это модель CNN, которая изучается с помощью крупномасштабного набора данных, называемого ImageNet. VGG16 имеет 16 слоев. Эта технология была представлена ​​в 2014 году, как одна из известных моделей распознавания образов.

VGG16 имеет 1000 выходных слоев, поэтому входное изображение можно классифицировать по 1000 классам.

С Керасом

import numpy as np
from keras.applications.vgg16 import VGG16, preprocess_input, decode_predictions
model = VGG16(include_top=True, weights='imagenet', input_tensor=None, input_shape=None)

В первой и второй строчках импортируем необходимые библиотеки. VGG16 доступен в библиотеке Keras.

В третьей строке мы импортируем уже обученный класс VGG16. Каждый параметр означает следующее:

include_top: использовать 1000 подготовленных классов или нет.

веса:вид весов

imagenet= вес из ImageNet

Нет = случайный

input_tensor: когда мы вводим изображение модели, мы используем этот параметр.

input_shape: как следует из этого слова. Нет=(224, 224,3)

Пришло время распознавать изображения

Для импорта необходимых библиотек необходимы пять строк ниже.

from keras.applications.vgg16 import VGG16, preprocess_input, decode_predictions
from keras.preprocessing import image
import requests
import numpy as np
model = VGG16(include_top=True, weights='imagenet', input_tensor=None, input_shape=None)

Переменная «модель» имеет класс VGG16. Параметры установлены.

def download(url, file_name):
    r = requests.get(url, stream=True)
    if r.status_code == 200:
        with open(file_name, 'wb') as f:
            f.write(r.content)

Функция загрузки изображения в папку.

if __name__ == '__main__':
    url = 'https://www.autocar.jp/wp-content/uploads/2019/09/ferrari-f8-tributo-2019_190905_1.jpg'
    file_name = 'ferrari.jpg'
    download(url, file_name)
    img = image.load_img(file_name, target_size=(224, 224))

На этот раз я использую это изображение Ferrari, которое будет предсказывать то, что на фото. Поэтому я использовал функцию загрузки с этим URL-адресом и именем файла.

ary = image.img_to_array(img)
ary = np.expand_dims(ary, axis=0)

Здесь загруженное изображение PIL преобразуется в массив. После этого этот код увеличил одно измерение до выборочных данных, в результате чего выборочная дата стала четырехмерным тензором.

preds = model.predict(preprocess_input(ary))
    results = decode_predictions(preds, top=5)[0]
    for result in results:
        print(result)

model.predict используется для прогнозирования типа изображения. И выведите 5 лучших возможных классов.

Это результат!! Но сделать это просто.

№1. Спортивный автомобиль 57,4%

№2. Гонщик 24,0%

№3.Конвертируемый 11,0%

No4.Автомобильное колесо 3,6%

№5. Пляжный фургон 2,0%

А вот и спортивный автомобиль на вершине! И 57,4%!!!

Феррари определенно спортивная машина!!

Я думаю, это хороший прогноз!!

Давайте воспользуемся этим методом для классификации неизвестных фотографий!!