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%!!!
Феррари определенно спортивная машина!!
Я думаю, это хороший прогноз!!
Давайте воспользуемся этим методом для классификации неизвестных фотографий!!