Компьютерное зрение

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску
Genderqueer.jpg
Этот материал изначально был размещен в вики-энциклопедии Lukomore.org Ефремова, сохранён в архивных целях и пока что не был проверен человеком. До проверки в статье может содержаться сомнительная информация, упоминаться запрещённые в России организации и действия, которые мы осуждаем. Если вы заметите что-то не то, пожалуйста обратитесь к администрации, и материалы будут переписаны и доработаны. До проверки администрация не одобряет и не поддерживает то, что написано в статье.

Компьютерное зрение (иначе техническое зрение, зрение роботов, машинное зрение) — теория и технология создания машин, которые могут производить обнаружение, отслеживание и классификацию объектов.

Классификация[править]

Как научная дисциплина, компьютерное зрение относится к теории и технологии создания искусственных систем, которые получают информацию из изображений. Видеоданные могут быть представлены множеством форм, таких как видеопоследовательность, изображения с различных камер или трехмерными данными, например с устройства Kinect или медицинского сканера.

Несуществующие пропиты[править]

На десятые годы 21-ого века ещё не изобрели не одной общей нормальной системы машинного зрения, то есть роботы ещё не научились полноценно видеть, да и ходят неуверенно так как в алгоритме перемещения и удержания равновесия используется только датчики положения в пространстве. Встроенным лазерным дальномером робот может довольно точно вычислить дистанцию до цели, инфракрасным термометром может измерить температуру цели, датчиком движения может заметить перемещение, тепловизором может засечь живую силу, при помощи баз данных и нейронных сетей может распознавать лица людей с большой точностью как делают соцсети, но полноценно видеть пока ещё не может. Именно поэтому разного рода править] Распознавание лиц

Известная всем с 21-ого века технология распознавания и узнавания лиц это лишь малая часть общего процесса разбора изображения компьютером. Короче говоря, умение робота/программы распознавать лица это ещё не полноценное машинное зрение. Узнавание лиц реализуется за счёт нейронных сетей на которые многие делали ставки в плане развития искусственного интеллекта.

Проблемы[править]

Разработка компьютерного зрения затруднена тем, что нет общепризнанной концепции зрения человека. Короче говоря, никто точно не знает по каким именно принципам работает человеческое зрение, точнее не совсем понятно как человеческий мозг разбирает переданную от глаза картинку. Точно также до конца никто ещё не объяснил как работает человеческий мозг и поэтому не могут сделать полноценный править] Компьютерное зрение в компьютерных играх

В виртуальном пространстве всё точно также как и в реале, те же проблемы. В компьютерных играх NPC/боты также не могут полноценно видеть как человек. Для ориентации и движения в пространстве NPC/боты используют либо заранее заготовленный нав мэш (навигационная сетка), либо просто перемещаются в пространстве как физический объект, как и котроллер персонажа (в зависимости от физики), которым управляет игрок.

Навигационная сетка[править]

Навигационная сетка это заранее заготовленная (запечёная) разработчиком для каждой локации/карты сетка путей по которым может ходить NPC/бот. Сеть как правило (в 99 % случаев) двумерная ибо так гораздо легче с ней работать человеку и просчитывать компьютеру. Густота сетки может быть самой разной. Маршруты перемещения NPC/бота высчитываются исходя из этой сетки возможных маршрутов. Сеть представляет собой граф. Например, в высшей математике в математической теории графов простыми и тривиальными задачами является высчитывание кратчайшего пути между точками графа. Именно по таким же формулам высчитывает себе кротчайший путь на этой навигационной сетке и сам NPC/бот. Поэтому NPC/бот всегда выбирает максимально близкий путь, если, конечно, не задано другого.

Большинство топовых игровых движков в комплектации «из коробки» предоставляют разработчику инструментарий этой навигационной сетки и агентов (ходителей) на ней. Тупо запекаешь навигационную сеть на локации (показываешь на локации где тебе на ней нужна эта сеть перемещения), делаешь ботов агентами этой сети и всё, считай боты уже могут легко и осознанно ходить по всей карте, где для них проложена навигационная сеть. В инструментарий работы с сетью как правило уже заложено куча приёмов, таких как передвижение к конкретной точке и автоматическая прокладка ближайшего к ней маршрута из текущей точки, или же просто вычисление расстояния от точки до точки, например, для того, чтобы боты стреляли на нужном расстоянии и ходили ближе или дальше когда надо.

В большинстве игр все основные боты двигаются именно по навигационной сетке. Это простое и общее решение, но оно скучное. Большинство зон являются недосягаемыми для ботов так как обычно навигационной сеткой покрывается не вся локация, а самые важные её части. Более того, навигационная сетка как правило двумерная, а виртуальные миры давно трёхмерные. То есть для всяких верхних этажей и подвалов делаются отдельные рукава этой сети. То есть сеть получается всячески разорванная. Прыгать по различным рукавам проблематично также как и вычислять приемлемость таких прыжков. Например, есть здание, для захода на его крышу имеется сетка. А для срыгивания сети нет. В момент прыжка боту приходится отключать сетку и он будет лететь просто как физический объект, пока не упадёт на сеть снизу чтобы можно было его вновь подключить к какой-либо ближней координате навигационной сети. Короче говоря, навигационная сеть это очень легко, но накладывает существенные ограничения. Поэтому в большинстве игр боты перемещаются очень скучно. Например, в игре Stalker игрок может легко залезть на крышу избы на том же Кордоне, а боты туда попасть никак не могут так как до туда у них не проложена навигационная сетка. То есть эта территория для них недосягаема.

Сам по себе процесс создания на большой карте/локации такой навигационной сетки (запекания мэша) довольно тяжёлый в плане производительности, сравни рендеру/пережатию. Поэтому все эти сети движения обычно строятся заранее во время разработки, а не на ходу во время игры. Поэтому изменения в игровом мире никак не влияют на поведение ботов. Например, если на пути боту кинуть динамический ящик, то бот просто пойдёт дальше и отодвинет ящик собой, но путь не сменит. Всё потому, что для бота никаких препятствий не существует, ведь он двигается по мэшу. Если же динамически менять навигационный мэш (убрать сетку передвижения под ящиком во время его покоя), то это очень затратно по ресурсам. Короче говоря, в большинстве случаев заранее запечёная навигационная сетка не меняется во время игры и поэтому боты игнорируют все динамические объекты, которые стоят у них на пути.

Физическое перемещение[править]

Физическое перемещение стало возможным тогда, когда в игры стали встраивать полноценные физические движки (примерно с 2004-ого года). Это реальное перемещение роботов (ботов) как в жизни. Такие боты перемещаются в виртуальном пространстве также как и игрок. В современных компьютерных играх такой способ перемещения ботов используется очень редко. Точнее, почти вообще не используется за редкими исключениями. Например, такое перемещение используют курицы в CS:GO или механические мячики в Half-Life 2. Это невероятно интересное и непредсказуемое перемещение. Писать логику такого перемещения очень сложно именно по той самой причине так как не изобретено компьютерное зрение. Писать логику такого перемещения бота это как писать логику перемещения реального робота IRL (1 в 1).

Мало кто берётся за это муторное дело, особенно в играх, которые надо побыстрее сделать и продать. Писать логику перемещения физического объекта (бота, робота, машины/авто) именно как физического объекта это по сути заниматься научной работой. Есть базовые методы такого перемещения. Кидаем луч вперёд до первого столкновения с объектом и смотрим как далеко можно пройти по такой прямой траектории. Брошенный луч сталкивается с первым попавшимся на пути объектом и возвращает дистанцию до точки столкновения. В реале так же работает лазерный дальномер и парктроники у авто на его основе. Если дистанция до ближайшей цели критично мала, то идти/ехать по этому пути нельзя. Это для того, чтобы бот в игре, робот или машина IRL не шли/ехали в стену. Для авто этого вполне достаточно, но для реального робота или бота в игре этого крайне мало. Надо бросать такие измерительные лучи во все стороны и делать это каждую секунду по десятку раз так как бросаются они не только в состоянии покоя, но и во время движения. И вот тут мы натыкаемся на непреодолимое препятствие — производительность. Пару десятков таких измерительных лучей в секунду не хило так загружают систему и это только от одного бота. А тут и сказочке конец. Тупо не хватает производительности для того чтобы бот мог довольно точно оценить ситуацию вокруг себя. Мало того, что надо просто куда-то пройти, надо ведь и более сложные маршруты составлять. А это всё не слабо подвешивает систему. Поэтому в играх такие способы почти не используются. Те же механические шарики в Half-Life 2, которые двигаются по такой продвинутой системе физического объекта, они не бросают никуда никаких измерительных лучей, а просто двигаются в сторону игрока и постоянно рандомно подпрыгивают чтобы преодолевать препятствия. Курицы в CS:GO тоже не бросают на путь измерительные лучи, поэтому бездумно двигаются куда попало и часто идут в стену. Если же бросать лучи и писать сложную логику движения, то это сильно нагружает систему.

Человеческое зрение[править]

К слову сказать, человек тоже далеко не идеально разбирает изображения, то есть человеческое зрение не идеально. Например, бывали случаи, когда полицейские в некоторых странах стреляли по людям у которых в руках были модели оружия (игрушки в реальный размер). Да и далеко не каждую капчу типа «цифры и буквы с помехами» человек может разобрать. Короче говоря, человек тоже не может с точность в 100 % определить что перед ним. С бутафорским оружием люди умудряются грабить магазины так как человек (жертва) не может точно определить объект (настоящее оружие или бутафорское). Изображения симметричные относительно вертикали пятна/кляксы у психиатра (<a href="/w/index.php?title=%D0%A2%D0%B5%D1%81%D1%82_%D0%A0%D0%BE%D1%80%D1%88%D0%B0%D1%85%D0%B0&action=edit&redlink=1|Тест Роршаха]]) тоже все определяют по-разному в зависимости от того, что мозг подставил. Бывает и неоднозначное определение цели, когда под одну кляксу подпадают несколько образов.

Также человеческое зрение легко обмануть. По сути всё изобразительное искусство этим и занимается, когда изображения художников или компьютера ([[CGI (страница не существует)">CGI</a>) выдаются за реальные фотографии и человек зачастую не может сразу определить подлинность.

<a href="/w/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Robotics&action=edit&redlink=1|Шаблон:Robotics]]