Быстро и точно: ученый ускорил работу нейросети по распознаванию изображений
Профессор НИУ ВШЭ в Нижнем Новгороде Андрей Савченко разработал алгоритм, работающий на 40% быстрее аналогов. При этом потери в точности составили не более 0,5-1%. Это позволит ускорить работу систем видеонаблюдения в режиме реального времени. Результаты исследования опубликованы в журнале Information Sciences.
Для распознавания изображений используются сверточные нейронные сети, которые представляют собой последовательность слоев. В каждом слое есть вход и выход. На вход первого слоя поступает цифровое описание изображения, которое преобразуется в другой набор чисел на выход. Новое описание поступает на вход следующего слоя и так далее до тех пор, пока в последнем слое не будет предсказан класс объекта, изображенного на снимке: например, человек, кошка или стул. Для этого нейросеть обучается на изображениях, класс которых заранее известен. Чем больше различных изображений каждого класса в наборе данных, тем точнее будет работать обученная сеть.
Если примеров мало, используется алгоритм дообучения (fine-tuning) нейросети. Сеть предварительно обучается распознавать изображения из похожего большого набора данных, решающего исходную задачу. Например, при обучении распознаванию лиц или их атрибутов (эмоции, пол, возраст) сеть предварительно обучают идентифицировать знаменитостей по их фотографиям. Затем полученная нейросеть дообучается распознавать изображения из доступного небольшого набора данных, например, идентифицировать лица членов семьи или родственников в домашних системах видеонаблюдения. Чем больше глубина (число) слоев в нейронной сети, тем точнее она работает, то есть правильнее предсказывает тип объекта на изображении. Но с увеличением числа слоев нейросеть распознает объекты дольше.
Автору исследования, профессору НИУ ВШЭ в Нижнем Новгороде Андрею Савченко удалось до 40% ускорить работу дообученных глубоких сверточных нейросетей произвольного вида, состоящих из 90-780 слоев, при этом контролируя потери в точности — не более 0,5-1%. Ученый опирался на статистические методы последовательного анализа и множественных сравнений (множественной проверки гипотез).
«Решение в задаче распознавания изображений принимает классификатор — специальный математический алгоритм, который получает на вход массив чисел (характерные признаки изображения), а на выходе выдает предсказание о том, к какому классу относится изображенный объект.
Классификатор можно применять, подавая ему на вход выходы любого слоя нейронной сети. Для распознавания «простых» изображений классификатору достаточно проанализировать данные (выходы) из первых слоев нейронной сети.
Не нужно дальше терять время, если мы уже уверены в надежности принятого решения. Для «сложных» картинок первых слоев явно недостаточно — нужно переходить к следующим. Поэтому в нейронную сеть были добавлены классификаторы на несколько промежуточных слоев. Они в зависимости от сложности входного изображения решали, продолжать распознавание или завершить. Так как в такой процедуре важно контролировать ошибки, я применил теорию множественных сравнений: ввел много гипотез, на каком промежуточном слое остановиться, и последовательно проверял эти гипотезы», — объяснил Андрей Савченко.
Если уже первый классификатор выдавал решение, которое считалось процедурой множественной проверки гипотез надежным, алгоритм останавливался. Если же решение объявлялось ненадежным, вычисления в нейросети продолжались до следующего промежуточного слоя, и проверка надежности повторялась.
Как отмечает ученый, наиболее точные решения получаются для выходов последних слоев нейронной сети. Выходы ранних слоев сети классифицируются намного быстрее, но чаще всего неточно. Поэтому необходимо все классификаторы одновременно обучить так, чтобы ускорить распознавание, при этом контролировать потерю в точности. Например, чтобы ошибка за счет более раннего останова оказывалась не более 1%.
«Высокая точность важна всегда при распознавании изображений. Например, если решение в системах распознавания лиц принято неверно, то либо кто-то посторонний может получить доступ к конфиденциальной информации, либо, наоборот, пользователю будет многократно отказано в доступе, потому что нейросеть не смогла его правильно идентифицировать. Скоростью иногда можно пожертвовать, но она имеет значение, например, в системах видеонаблюдения, где крайне желательно принимать решения в реальном времени, то есть не более 20-30 миллисекунд на один кадр. Чтобы распознать объект на видеокадре здесь и сейчас, очень важно действовать быстро, не теряя при этом точности», — подчеркнул профессор Савченко.