Могут ли CNN быть быстрее, чем классические дескрипторы?
Отказ от ответственности: я почти ничего не знаю о CNN, и я понятия не имею, где я мог спросить это.
Мое исследование сфокусировано на высокой производительности приложений для компьютерного зрения. Мы генерируем коды, представляющие изображение менее чем за 20 мс на изображениях с наибольшим размером 500 пикселей.
Это делается путем объединения дескрипторов SURF и кодов VLAD, получения вектора, представляющего изображение, которое будет использоваться в нашем приложении распознавания объектов.
CNNs может быть быстрее? Согласно этому эталону (который основан на изображениях гораздо меньшего размера), необходимое время увеличивается, почти вдвое, учитывая, что размер изображения составляет половину нашего.
3 ответа
Да, они могут быть быстрее. Полученные вами цифры относятся к сетям, подготовленным для классификации ImageNet, 1 миллион изображений, 1000 классов. Если ваша проблема с классификацией не похожа, использование сети ImageNet является излишним.
Вы также должны помнить, что эти сети имеют вес порядка 10-100 миллионов, поэтому они довольно дороги для оценки. Но вам, вероятно, не нужна действительно большая сеть, и вы можете спроектировать свою собственную сеть с меньшим количеством слоев и параметров, которые намного дешевле оценивать.
Исходя из моего опыта, я спроектировал сеть для классификации 96х96 патчей сонарного изображения, и, имея в общей сложности около 4000 весов, он может получить более 95% точности классификации и работать при 40 мс на кадр на RPi2.
Большая сеть с массой 900 Кбайт и тем же размером ввода занимает 7 мс для оценки на Core i7. Так что это, безусловно, возможно, вам просто нужно поиграть с небольшими сетевыми архитектурами. Хорошее начало - это SqueezeNet, сеть, которая может достичь хорошей производительности в Imagenet, но весит в 50 раз меньше, и, конечно, намного быстрее, чем другие сети.
Я бы с осторожностью относился к ориентирам и общим заявлениям. Важно знать каждую деталь, которая использовалась для генерации указанных значений. Например, может ли запуск CNN на оборудовании GPU улучшить указанные значения?
20 мс кажется мне очень быстрым; так же 40мс. Я понятия не имею, каково ваше требование.
Какие еще преимущества может предложить CNN? Может быть, это больше, чем просто скорость.
Я не верю, что нейронные сети - идеальный метод для любой проблемы. Регрессия, SVM и другие методы классификации все еще жизнеспособны.
Здесь есть предвзятость на работе. Ваш вопрос звучит так, как будто вы ищете только для подтверждения того, что ваше текущее исследование лучше. У вас есть непогашенная цена, которую вы не хотите выбрасывать, но вы беспокоитесь, что там может быть что-то лучшее. Если это правда, я не думаю, что это хороший вопрос для SO.
"Я почти ничего не знаю о CNN" - если вы настоящий исследователь, ищущий правду, я думаю, что вы обязаны учиться и отвечать за себя. TensorFlow и Keras делают это легко.
Ответьте на ваш вопрос: да, могут. Они могут быть медленнее и быстрее классических дескрипторов. Например, использование только одного фильтра и нескольких максимальных пулов почти наверняка будет быстрее. Но результаты также, безусловно, будут дрянными.
Вы должны задать гораздо более конкретный вопрос. Соответствующие части:
- Проблема: классификация / обнаружение / семантическая сегментация / сегментация экземпляра / проверка лица / ...?
- Ограничения: Минимальная точность / максимальная скорость / максимальная задержка?
- Особенности оценки:
- Какое оборудование доступно (графические процессоры)?
- Вы оцениваете на одном изображении? Часто вы можете оценить до 512 изображений примерно за одно время.
Также: Размер входного изображения не должен соответствовать. Если CNN достигают лучших результатов при меньших входных данных, чем классические дескрипторы, почему это должно вас волновать?
документы
Пожалуйста, обратите внимание, что CNN обычно не настроены на скорость, но на точность.
- Обнаружение: быстрее R-CNN: на пути к обнаружению объектов в реальном времени с сетями предложений региона: 600px x ~800px за 200 мс на графическом процессоре
- InverseFaceNet: глубокая однократная обратная визуализация лица с одного изображения: 9,79 мс с GeForce GTX Titan и AlexNet для получения функций FC7
- Семантическая сегментация: пиксельная сегментация улицы с нейронными сетями 20 мс с GeForce GTX 980