Clipping de notas en medios acerca de Copamos Rio de Icolic, gestión de Singularis
Ready to use классификатор изображенийReady to use...
Transcript of Ready to use классификатор изображенийReady to use...
![Page 1: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/1.jpg)
Ready to use классификатор изображений
Алексей Алексеев, Singularis Lab
IT Meetup’18, 26 мая 2018, Волгоград
![Page 2: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/2.jpg)
0
Машинное обучение за 15 минут
26 мая 2018 IT Meetup'18, Волгоград 2
![Page 3: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/3.jpg)
0
Введение, машинное обучение
26 мая 2018 IT Meetup'18, Волгоград 3
Машинное обучение – это поиск модели (зависимости выходных переменных от входных) на основе известных наблюдений, называемых обучающей выборкой.
Задача классификации — соотнесение наблюдений с заранее известным набором классов.
Сущность, решающая задачу классификации, называется классификатор.
![Page 4: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/4.jpg)
0
Введение, наша задача – кошка или собака?
26 мая 2018 IT Meetup'18, Волгоград 4
![Page 5: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/5.jpg)
0
А какие еще задачи?
14 апреля 2018 IT Meetup'18, Волгоград 5
1) PlantNet https://play.google.com/store/apps/details?id=org.plantnet
2) CamFind https://play.google.com/store/apps/details?id=com.msearcher.camfind
3) FindOut https://play.google.com/store/apps/details?id=com.devinsy.findout
![Page 6: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/6.jpg)
0
Подготовка данных
1. Создадим папку «data» (или любое другое имя);2. Внутри data создадим две подпапки: «train» и «valid»;3. В каждой из папок «train» и «valid» создадим по подпапке
«cats» и «dogs»;4. Берем все картинки наших котиков, 80% котиков кидаем в
train/cats, 20% - valid/cats;5. Аналогично с собачками;6. …7. PROFIT!
26 мая 2018 IT Meetup'18, Волгоград 6
![Page 7: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/7.jpg)
0
Настройка окружения
26 мая 2018 IT Meetup'18, Волгоград 7
https://www.python.org/http://keras.iohttps://www.tensorflow.org/https://www.anaconda.com/
![Page 8: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/8.jpg)
0
Настройка окружения
1. Скачать и установить анакоду с официального сайта;
2. Идем в консоль, создаем новое виртуальное окружение:
conda create --name meetup python=3.6
3. Активируем: activate meetup
4. Устанавливаем tensorflow, keras и pillow:
pip install --ignore-installed --upgrade tensorflow
pip install keras
pip install pillow
26 мая 2018 IT Meetup'18, Волгоград 8
![Page 9: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/9.jpg)
0
Проверка работоспособности
Запускаем python, импортируем keras и получаем версию:
import keras
print(keras.__version__)
Вывод примерно такой:
26 мая 2018 IT Meetup'18, Волгоград 9
![Page 10: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/10.jpg)
0
Transfer learning
26 мая 2018 IT Meetup'18, Волгоград 10
Источник: https://www.udemy.com/advanced-computer-vision/
![Page 11: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/11.jpg)
0
Transfer learning
26 мая 2018 IT Meetup'18, Волгоград 11
≈ 14 000 000 Images
![Page 12: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/12.jpg)
0
Transfer learning
26 мая 2018 IT Meetup'18, Волгоград 12
≈ 1000 Images
![Page 13: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/13.jpg)
0
Как это работает внутри?
26 мая 2018 IT Meetup'18, Волгоград 13
https://xkcd.com/
![Page 14: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/14.jpg)
0
Inception V3 – CNN, Convolutional Neural Network
26 мая 2018 IT Meetup'18, Волгоград 14
Кошка или собачка?
Источник: https://arxiv.org/abs/1409.4842
![Page 15: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/15.jpg)
0
Inception V3 – CNN, Convolutional Neural Network
26 мая 2018 IT Meetup'18, Волгоград 15
Фичи (особенности) разных уровней
![Page 16: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/16.jpg)
0
Inception V3 – CNN, Convolutional Neural Network
26 мая 2018 IT Meetup'18, Волгоград 16
![Page 17: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/17.jpg)
0
Inception V3 – CNN, Convolutional Neural Network
26 мая 2018 IT Meetup'18, Волгоград 17
Извлечение особенностей Определение класса
![Page 18: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/18.jpg)
0
Inception V3 – CNN, Convolutional Neural Network
26 мая 2018 IT Meetup'18, Волгоград 18
![Page 19: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/19.jpg)
0
Обучение (дообучение) модели
Модель — это ядро нашего приложения, это объект, который получает изображение на входе и выносит вердикт-класс на выходе.
Модель в keras — объект типа Sequential(унаследован от Model). Мы будем использовать предобученную модель и дообучать ее на нашей задаче
26 мая 2018 IT Meetup'18, Волгоград 19
![Page 20: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/20.jpg)
0
Обучение, модель
def get_model(count_classes):inception_model = InceptionV3(pooling='max')for layer in inception_model.layers:
layer.trainable = Falseinception_out = inception_model.outputour_output = Dense(count_classes, activation='softmax')(inception_out)result_model = Model(inputs=inception_model.input,
outputs=our_output) result_model.compile(loss='categorical_crossentropy',
optimizer='adam',metrics=['accuracy'])
return result_model
26 мая 2018 IT Meetup'18, Волгоград 20
![Page 21: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/21.jpg)
0
Обучение, модель
def get_model(count_classes):inception_model = InceptionV3(pooling='max')for layer in inception_model.layers:
layer.trainable = Falseinception_out = inception_model.outputour_output = Dense(count_classes, activation='softmax')(inception_out)result_model = Model(inputs=inception_model.input,
outputs=our_output)result_model.compile(loss='categorical_crossentropy',
optimizer='adam',metrics=['accuracy'])
return result_model
26 мая 2018 IT Meetup'18, Волгоград 21
![Page 22: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/22.jpg)
0
Обучение, модель
def get_model(count_classes):inception_model = InceptionV3(pooling='max')for layer in inception_model.layers:
layer.trainable = Falseinception_out = inception_model.outputour_output = Dense(count_classes, activation='softmax')(inception_out)result_model = Model(inputs=inception_model.input,
outputs=our_output)result_model.compile(loss='categorical_crossentropy',
optimizer='adam',metrics=['accuracy'])
return result_model
26 мая 2018 IT Meetup'18, Волгоград 22
![Page 23: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/23.jpg)
0
Обучение, модель
def get_model(count_classes):inception_model = InceptionV3(pooling='max')for layer in inception_model.layers:
layer.trainable = Falseinception_out = inception_model.outputour_output = Dense(count_classes, activation='softmax')(inception_out)result_model = Model(inputs=inception_model.input,
outputs=our_output)result_model.compile(loss='categorical_crossentropy',
optimizer='adam',metrics=['accuracy'])
return result_model
26 мая 2018 IT Meetup'18, Волгоград 23
![Page 24: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/24.jpg)
0
Обучение, подготовка данных для передачи в модель
train_data_dir = 'data/train/'validation_data_dir = 'data/valid'image_size = (299, 299)batch_size = 16
train_datagen = ImageDataGenerator(rescale=1. / 255,shear_range=0.2,zoom_range=0.2,horizontal_flip=True)
train_generator = train_datagen.flow_from_directory(train_data_dir,target_size=image_size,batch_size=batch_size,class_mode='categorical')
26 мая 2018 IT Meetup'18, Волгоград 24
![Page 25: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/25.jpg)
0
Обучение, подготовка данных для передачи в модель
train_data_dir = 'data/train/'validation_data_dir = 'data/valid'image_size = (299, 299)batch_size = 16
train_datagen = ImageDataGenerator(rescale=1. / 255,shear_range=0.2,zoom_range=0.2,horizontal_flip=True)
train_generator = train_datagen.flow_from_directory(train_data_dir,target_size=image_size,batch_size=batch_size,class_mode='categorical')
26 мая 2018 IT Meetup'18, Волгоград 25
![Page 26: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/26.jpg)
0
Обучение, подготовка данных для передачи в модель
train_data_dir = 'data/train/'validation_data_dir = 'data/valid'image_size = (299, 299)batch_size = 16
train_datagen = ImageDataGenerator(rescale=1. / 255,shear_range=0.2,zoom_range=0.2,horizontal_flip=True)
train_generator = train_datagen.flow_from_directory(train_data_dir,target_size=image_size,batch_size=batch_size,class_mode='categorical')
26 мая 2018 IT Meetup'18, Волгоград 26
![Page 27: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/27.jpg)
0
Обучение, подготовка данных для передачи в модель
val_datagen = ImageDataGenerator(rescale=1. / 255)
validation_generator =
val_datagen.flow_from_directory(
validation_data_dir,
target_size=image_size,
batch_size=batch_size,
class_mode='categorical')
26 мая 2018 IT Meetup'18, Волгоград 27
![Page 28: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/28.jpg)
0
Само обучение
model = get_model(2)
count_train_images = 20000
count_val_images = 5000
model.fit_generator(
train_generator,
steps_per_epoch=count_train_images//batch_size,
epochs=20,
validation_data=validation_generator,
validation_steps=count_val_images//batch_size)
26 мая 2018 IT Meetup'18, Волгоград 28
![Page 29: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/29.jpg)
0
Сохранение и загрузка модели
model.save_weights('my_model_weights.h5')
….
model.load_weights('my_model_weights.h5')
26 мая 2018 IT Meetup'18, Волгоград 29
![Page 30: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/30.jpg)
0
Предсказание
def inference(file_name):
model = get_model(2)
model.load_weights('my_model_weights.h5')
img = np.array(image.load_img(file_name,
target_size=(299,299)))/255
img = np.expand_dims(img, axis=0)
result = model.predict(img)
return result[0]
26 мая 2018 IT Meetup'18, Волгоград 30
![Page 31: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/31.jpg)
0
Как выглядит процесс обучения
26 мая 2018 IT Meetup'18, Волгоград 31
![Page 32: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/32.jpg)
0
Результаты
• Для обучения использовалась база Dogs vs. Cats с соревнования kagglehttps://www.kaggle.com/c/dogs-vs-cats
• Полученная точность ~ 98% (соревнование проходило 4 года назад, на первом месте результат 98.9%)
• Transfer learning – легкий и простой метод для быстрого создания своих классификаторов
26 мая 2018 IT Meetup'18, Волгоград 32
![Page 33: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/33.jpg)
0
Примеры работы
26 мая 2018 IT Meetup'18, Волгоград 33
99.9 % кот 92.7 % собака 99.5 % собака
99.8 % кот 99.9 % кот 87.0 % собака
![Page 34: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/34.jpg)
0
Где попробовать
• Бот в телеграмме, который на загруженную картинку выдает кошка или собака:@cats_vs_dogs_bot
• Бот в телеграмме, выдает жанр загруженной картинки (пейзаж, портрет и тд): @image_maker_bot
• Исходный код примера из презентации:
https://gist.github.com/Kwentar/47c853a0db9f98805110a04b6aaa4460
26 мая 2018 IT Meetup'18, Волгоград 34
![Page 35: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/35.jpg)
0
Полезные ссылки
26 мая 2018 IT Meetup'18, Волгоград 35
• Похожий туториал от keras: https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html
• Обученную модель можно запустить на мобильном устройстве с помощью TensorFlowLite https://www.tensorflow.org/mobile/tflite/
• Учебные курсы по основам ML: https://classroom.udacity.com/courses/ud730 и https://www.udemy.com/zero-to-deep-learning/
![Page 36: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/36.jpg)
0
Вопросы?
26 мая 2018 IT Meetup'18, Волгоград 36
![Page 37: Ready to use классификатор изображенийReady to use классификатор изображений Алексей Алексеев, Singularis Lab aleksey.alekseev@singularis-lab.com](https://reader033.fdocument.pub/reader033/viewer/2022060901/609e7d8e78ca2c4e4b3dbbdb/html5/thumbnails/37.jpg)
026 мая 2018 IT Meetup'18, Волгоград 37