Цитата: Alexandr Ivanov Nette от 01.04.2019 10:40:32все это давно известно.
тут важны ровно 5 вопросов:
1. время распознавания (заявляется РВ, хотелось бы в цифрах- секунда две, три...))
2.ошибка распознавания (танк/не танк)
3.ошибка идентификации (т90, м1 и т.п.)
4.вычислительные мощности
5.дистанция распознавания
и я б добавил 6 вопрос-распознавание не только в видимом диапазоне, но и по ИК сигнатуре.(причем для ЭОП и для тепловизора и какая минимальная матрица необходима в тепловизоре )
Я не спец по нейронкам, но маленько ковырялся в них, так могу немного ответить по теме, но чисто теоретически.
0. Основная проблема нейронок, это правильное моделирование сети и ее обучение. Это как с ребенком, если генетика хорошая и учителя вменяемые то результат будет приемлемым. Вообще тема нейронок в задаче распознавания настолько разобрана и разжевана, что это даже не задача, а лабораторный практикум для студентов после прохождении темы "Закон Ома". То есть програмист нам не нужен, нам нужен воспитатель.
1. Скорость распознавание достаточно велика, но зависит от размера и модели сети. Математика там простая, перемножение матриц, как ячейки в екселе, много ячеек. Но ничего сверхестественного, никаких тройных интегралов, по замкнутому контуру.
2. Принято формальное правило, 98% - хороший результат, 99- отличный, 100 - нереальный. 146%- ошибка в обучении.
3. Идентификация - это следующий уровень обучения. Сперва учить опознавать нейронку, что это танк, а потом, эту обученную, учим опознавать модели. Даже человека нельзя научить сразу метко и быстро стрелять. Сперва либо быстро, либо метко, а потом либо метко, либо быстро. Но если сильно хочется, то можно.
4, Большие мощности нужны для процесса обучения, чем круче тем быстрее обучить. А для работы хватит трофейного Пенька-2 на 120 мегагерц, особенно если код будет написан на низком уровне, а не на питоне как щас принято.
5, Дистанция не имеет значения. Значение имеет размер картинки, которую необходимо "осмотреть". То есть, какая у вас будет оптика и матрица в фотике, такая будет и дистанция. Если прикрутить эту нейронку к Хаблу, то он прекрасно может "запалить" БлекШакрка и на Альфе Центавре, но с условием, что он будет в танке.
6. Пох, видимый, не видимый. Какие картинки вы будите показывать в процессе обучения, такие нейронка научится распознавать. Есть метода, многослойное распознавание, по каналам, типа R-G-B. Так что, как в анекдоте "Доктор, откуда вы берете такие картинки?"
По поводу размера исходного изображения, тут был такое вопрос.
Отвечаю, размер не имеет значения. Хотя, чем больше тем лучше, но дольше.
Как это делается:
Если картинка как у Джавелина 64х64 пикселя. Это 64х64=4096 пикселей во всей картинке. Это уже много, но пусть будет так.
Каждый пиксель это информация о цвете это пикселя, если изображение цветное, то число от 0 до 65535, или от 0 или 1, если черно-белое. Нейронке по сути, без разницы ч/б или цветное. Количество цветов влияет на вычислительные мощности, чем меньше цветов тем быстрее будет считать. Но для упрощения процесса, все картинки переводят в ч\б или градации серого.
Итак имеем 4096 входных данных, это первый слой нейронки. Каждый пиксель отдается одному нейрону, то есть имеем 4096 нейронов в первом слое. Далее идет 2-й,3-1 n-й слои, так называемые скрытые слои. И на выходе - выходной слой.
Если вы рыбак, то представьте себе полотно рыболовной сети.
Узелки это нейроны, леска от узелков это связи нейронов между собой, причем каждый узелок связан со всеми соседями, слева и справа.. Первый столбец узелков слева- это входной слой, последний столбец с права это выходной, а между ними скрытые слои, там творится "магия". Скрытых слоем может быть от 1-го до бесконечности, в зависимости от модели сети.
В задачах классификации, модель сети выглядит как треугольник, первый слой равен количеству входных данных.
В нашем случае 4096/
Выходной равен 2, в нашем случае, танк или не танк.
Или даже выходной равен 1, насколько это танк в %
Теперь имеем сеть, мы должны ее обучить. Для этого на понадобится туева-куча картинок с танками или без, размером 64х64,
Делим эту кучу на две неравные части, большая это для обучения, меньшая для проверки результатов этого обучения.
По очереди, из обучающей кучи, "показываем" картинку сети, то есть в входной слой запихиваем 4096 значений из пикселей картинки.
И смотрим, что получили на выходном слое.
Если сеть не угадала, то производим "обучение". то есть меняем коэффициенты весов в скрытых слоях.
Что такое "обучение", писать не буду, там мат.ан и прочие фокусы.
Но все это уже есть в открытом доступе, и любой школьник следуя инструкциям может забабахать себе нейронку для любых целей, хоть для полета на луну.
В итоге, после недели, месяца или года, получаем обученную сеть.
Если все аккуратно делать, то будет уверено распознавать танки на любых изображениях размерностью 64х64.
А вот что делать если картинка у нас размером не 64х64, а больше.
Все уже
украдено придумано до нас.
Это называется сверточные нейронные сети. Физически их работа выглядит так:
Свёрточные нейронные сети (convolutional neural networks, CNN) и глубинные свёрточные нейронные сети (deep convolutional neural networks, DCNN) сильно отличаются от других видов сетей. Обычно они используются для обработки изображений, реже для аудио. Типичным способом применения CNN является классификация изображений: если на изображении есть кошка, сеть выдаст «кошка», если есть собака — «собака». Такие сети обычно используют «сканер», не парсящий все данные за один раз. Например, если у вас есть изображение 200×200, вы не будете сразу обрабатывать все 40 тысяч пикселей. Вместо это сеть считает квадрат размера 20 x 20 (обычно из левого верхнего угла), затем сдвинется на 1 пиксель и считает новый квадрат, и т.д. Эти входные данные затем передаются через свёрточные слои, в которых не все узлы соединены между собой. Эти слои имеют свойство сжиматься с глубиной, причём часто используются степени двойки: 32, 16, 8, 4, 2, 1. На практике к концу CNN прикрепляют FFNN для дальнейшей обработки данных. Такие сети называются глубинными (DCNN).
Читать статью (стр. 2278—2324)То есть, сеть не смотрит все изображение сразу, а постепенно, пробегая по нему неким "окном" обычно 20х20 пикселей. В итоге выдавая результат.
Причем в военное время размер окна может достигать 4-х пикселей. как на "Игле" если я не ошибаюсь
После обучения, сеть нужно внедрить в боевого робота. Это не сложно, и не очень большой объем данных.
1. Это программный код, реализующий модель нейронной сети. Порядка 5-6 экранов исходного текста на С/С#.
2. Массив коэффициентов весов, те который мы так долго и нудно "тренировали". Их размер зависит от модели, примерно от нескольких килобайт, до мегабайт.
Ничего сверх-естественного, справится практически любой процессор, даже Z80, еще и свободного времени останется, на осознание смысла жизни.
Что я хотел всем этим сказать? По сути новость, это из разряда, даже не диплома, а реферата, студента 4-го курса.
ЗЫ:
Так как тутта этто оффтопо, то АС, а АУнаУМ.