vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2019-07-23 07:43 pm

Заглядываем внутрь ResNet-50

В продолжение темы нейронных сетей. Примерно с 2015 года они научились распознавать изображения лучше, чем это делают люди. К примеру, 50-слойная cеть ResNet, или сокращённо ResNet-50, умеет делить изображения на 1000 категорий. На каждое изображение затрачивается 3.8 миллиарда вычислений с плавающей точкой.

Если у вас есть компьютер с третьим Питоном и установленным пакетом tensorflow, то скачать готовую натренированную сеть ResNet-50 можно следующим скриптом:
#!/usr/bin/env python3
import tensorflow as tf
model = tf.keras.applications.ResNet50(weights = "imagenet", include_top=True)
model.save('resnet50.h5')
Получится бинарный файл resnet50.h5 размером 98 мегабайт. Он содержит как топологию самой сети, так и данные, так называемые веса и смещения. Для укладки сети с данными в файл используют формат HDF5, сокращённо H5. Посмотреть список слоёв сети и их параметры можно скриптом:
#!/usr/bin/env python3
import tensorflow as tf
model = tf.keras.models.load_model('resnet50.h5')
model.summary()
Результат здесь: https://gist.github.com/sergev/0923997ef8f3254bfd243716fee2d00d

Чтобы подробнее рассмотреть структуру сети, её можно преобразовать в читабельный формат YAML посредством скрипта:
#!/usr/bin/env python3
import tensorflow as tf
model = tf.keras.models.load_model('resnet50.h5') model_yaml = model.to_yaml()
with open("resnet50.yaml", "w") as yaml_file:
yaml_file.write(model_yaml)
Получится такой файл: resnet50.yaml
vit_r: default (Default)

[personal profile] vit_r 2019-07-24 06:42 am (UTC)(link)
Обмануть её можно, выяснив, по каким признакам она научилась сортировать, а потом подсунуть что-то, что обманывает эти признаки. Например, наклеить на дорожный знак стикер или посадить кота на полосатый ковёр.

Только сами тренировщики не знают, как это работает. Потому что это не обучение, а дрессировка.
vit_r: default (Default)

[personal profile] vit_r 2019-07-24 09:08 pm (UTC)(link)
Это уже жульничество. У сетей нет способности на переключение внимания. Я всё-таки о взломах, не создающих дополнительных образов.