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

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску

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

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

Как научная дисциплина, компьютерное зрение относится к теории и технологии создания искусственных систем, которые получают информацию из изображений. Видеоданные могут быть представлены множеством форм, таких как видеопоследовательность, изображения с различных камер или трехмерными данными, например с устройства 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 % определить что перед ним. С бутафорским оружием люди умудряются грабить магазины, так как человек не может точно определить объект (настоящее оружие или бутафорское). Изображения симметричные относительно вертикали пятна/кляксы у психиатра (Тест Роршаха) тоже все определяют по-разному в зависимости от того, что мозг подставил. Бывает и неоднозначное определение цели, когда под одну кляксу подпадают несколько образов.

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

Мышо.png Там счёт идет, баббага свет из афедрона поступает
ОсновыКомпьютерЭлектронно-вычислительная машинаПодсветка компьютераГрафические артефактыMacBook / МакбукДва монитораКомпьютеры Ворон и БобёрКалькуляторУгольный компМеждулициеКлавиатураМассовая компьютерная безграмотностьКомпуктерМемристорАппаратное ускорениеСистемный блокРасовое превосходство ПКОтупение человечества из-за компьютеровГенератор случайных чиселМикросхемаКомпьютеры пятого поколенияШифровкаИБПМониторДрайверСуперкомпьютерТелеметрияПробел
ПроцессорыРоссийский процессорRyzen 5 9600XDisable Core 0Infinity FabricX87Кулер процессорныйЦентральный процессор
ВидеокартыСгорание видеокартыGeForce 256GeForce 600NVIDIA OptiXNVIDIA Frame GenerationNvidia 3D VisionRTX 5090PhysX RIPNvidia Pre-rendered FramesRTX Mega GeometryMVSSМайнингНародный DLSSNvidia QuadroNvidia TeslaRTX PRO 6000GainwardPrecision Boost OverdriveAMD TruFormInno3dNVIDIA ReflexNVIDIA Smooth MotionDLSSNvidia HFTSNVIDIA Volumetric LightingNvidia NRCDisplayHDR True BlackФиолетовое свечение OLED
Хранилища данныхМесто на дискеКомпакт-дискПроверка памяти компьютераДедикОперативная памятьКривые флопыАрхивация и резервное копирование на оптический дискОптический дискДефрагментацияЗагрузите больше РАМROMЖёсткий дискSSDAMD FEMFXLXAAВаттное недомогание видеокартQuincunx Super Anti-Aliasing
ПрочееВиртуальная реальностьAMD vs IntelЕда за компьютеромПролил кофе на клавиатуруКомпьютерно-техническая экспертизаЗаправка картриджейAlt-TabКулерКремниевая пирамидаНоутбукATI vs NvidiaКомпьютерная мышьКомпьютерное зрениеКомпьютерная мышь в холодильникеRDNA 4ZalmanОверклокинг ЭЛТ-мониторовLG Optimus 3DЧастота опроса мышиТоп производителей блоков питанияДребезг контактовСкроллингRGB LEDKingSpec80 PLUSBe quiet!DINKioxiaШахматный рендерингGtG
МемыЖивотные за компьютеромСиний экран в публичном местеПеределка фамиклона из PAL в NTSCТысячеричная система счисленияБезопасность через умолчаниеПК vs консолиКрэкерСтруйный принтерЗмея в принтереПостукивание пальцем по клавиатуреВампир на клавиатуреЗмея в системном блокеЭникейщикКот за комьютеромOptaneResizable BARСпермопроблемы
Telepuz 2.jpg Человек нонче игры разные ценит весьма, дык
МетаRPGИгровая консольШтампы в компьютерных играхИгровой движокТиммейтМассовый запрет игровых видео на YouTubeРейтыАгроWarcraft III — не канонАвтокликерДонат в игры из РоссииАрхидьявол (Герои 3)Лесные тени (Герои 3)Это собака?Blizzard измеряет соцсправедливостьЭто игра?Дроп (видеоигры)Надо, чтобы на КЧ напалПол это лаваКоллекционная играШахматная доскаВизуальная новеллаКонсольТяжёлые танки (World of Tanks)САУФлеш-игрыЛёгкие танки (World of Tanks)Консоле-холопыСредние танки (World of Tanks)Кризис переводов современных видеоигрКомпьютерное зрениеТокенОтсутствие МефистоБоязнь женской грудиSteam для пиратовБонусЗахват движенияВырезанный контентПазлЗаконы жанраA-Life 2.0DxvkVkd3dСэм ХаузерClaw EngineCuckpointMi hermano no estáO3DEВыбор зомбиЧувак (Postal)Евгений ГришаковКрипыBaba YetuWarhammerСписок персонажей Sword Art OnlineГовноигрыБронечайка (Гвинт)ShovelwareШахматный рендерингDirectStorageAdventureЭкшн-триллерШутерыШутерыCRPGRTSTBS
ЯвленияЖульничество в шахматахРусская кибердеревняОткрытый мирКастомизация персонажаElden Ring против The Witcher 3ПапкаDarksiders GenesisЧекпоинтCheat EngineРед (персонаж)Speedrun.comМоей сестры нетЕврейские корни BioshockМитаСтиль миллениаловFextralifeДжонатан РоджерсМетание шахмат в оппонентаСломанная механикаПрокачкаПешкаЗемля свободныхФарм клоуновБольшая чёрная светящаяся сфераВойдзонаТень ОробиссаРаспуджовкаWho's Lila?Убийство АрхимондаПочему не ВайперНейтан ДрейкR.G. МеханикиГенеральский эффектОгромный боссЭпоха ремейковАлексей Воктаков (Катков)Травля Илона Маска псевдогеймерамиААА-игрыОптимизацияТройная буферизацияRTXSpeedrunБетрезенПацификаАльваро КалметTerminals.ioCs.rin.ruGaiminВайфугеймКвадратные кроссвордыПочему титаны слишком большого размера? (Хроники Хаоса)Души тьмыSegaФоллаут-онлайнГейлендКамень, ножницы, бумагаBASKACombats.ruАббревиатуры имени МедоксаОлег СтавицкийМобильные игрыАвтобаттлерОнлайн-игрыMOBABeat 'em upСкурвившиеся игрыТанки free-to-playZumaLuxorТапалки в ТелеграмеGLaDOSХейтеры про Ведьмак 3Деградация Equestria at WarDirectXValveБезумная сложностьСложность
ЭпическоеНайди отличияУльтаГриферыКрестики-ноликиДонатная помойкаМультиплеерГамблингАзартные игрыСеранаArdub92СасикSupermassive GamesСтарый богХагги ВаггиИл-2Шахматная партияВнутриигровая валютаГриндилкаКатсценаБэктрекингГлорхМясной жукВидениеRMTEMPRESSМемные карточки ХСЕкатерина СтадниковаЦарь Соломон и шахматыМасонские шахматыАвтошахматыСигма-гармонайзерЧёрная стражаTeam SpiritНиколай АрмоникБойкот лаунчеровАвтохукБуст аккаунта в ДотеДота как медитацияWraith KingFFAДмитрий РоммельДэвид МайерсБагоюзерствоАчивкаВетераны ВОВРуслан ДиденкоМоршуОлег ЯворскийЧерноруссияRagDollСаня ТропинGiboSteam MachinesЭльф-торговецHD-изданиеИнди-хитыМидирGrimtoolsИгра в настольные игрыМетарабыПавел БурзаNetHackГюнтер о'ДимКирилл Баранов (Пятёрка)FunpayКанобуТюрягаРенфриКастомизация оружияГенератор случайных чиселDisable Core 0HvHРомхакингИгры из репозиториевProton GEМегатекстураPS4-Fake-PKG-ToolsВидеоигры про АстериксаОказуаливаниеThe SinПовестка SJWКартриджи для восьмибитки от NintendoStop Killing Games
ЛегендарноеТактические шутерыВиртономикаE3Настольные ролевые игрыМеркиSonyChris-chanSourceНастольная играГнилецБорьба с задницей ТрейсераКамбиВпук Дагона на рядДагон на токенахКотовухаБерашна а, бегашийна аДелает ли прокачка титана его сильнее или слабее? (Хроники Хаоса)Нужен ли Тесак? (Хроники Хаоса)На чём ездит Марта? (Хроники Хаоса)КибердемонЩитспавнRedotAsset FlipФайтингиMoswar.ruXbox Турция: Алярм, суки, аккаунты горят!Игру убилиЖенщина на корабле к бедеУправление рандомомИвентТрассировка фотоновHZB OcclusionTressFXОбъективный обзор игрПлотваChangedПочему плотва это лошадь?Расстрел НильфгаардаОрден смертного бденияУроборукКолдовские богиМусилакШтормовая плетьАнастерияНадзиратель ПотустороннегоЗвук пердежа в видеоиграхФракции Grim DawnКлючникКейранДевятая силаPay2WinБитва против 7 противников в Red Alert 2Гача-игрыMMORPGARPGRTSКвестFatCatDDrawCompatLOVE the gameПАНЕЛЬКИEurasian Game ShowMy name is You and it's the only unusual thing in my lifeNEEDY GIRL OVERDOSERiotlocThe Tomorrow WarEcho
Моды, карты и васянствоЛегенда о ТильдеParagonHorn of the AbyssJebus CrossX-PiratezOpenXComJebus OutcastThe World of Terrifying Silence6lm10a (шаблон)VANOMAS DEMO5 ночей с Тимохой 2: ДеревняСильная прокачкаSteampassФреймрейтNVidiaВзрыв лутаGTA: Криминальная РоссияМод-сообщество Рога и Копыта (Barnyard)Шахматный корольПасьянс КосынкаPity SystemЛегендаркаИгровые ресурсы
Игры реалаLEGOMagic: The GatheringБерсеркГоДоминоКамень-ножницы-бумагаКубик РубикаМонополияНа раздеваниеПокерПреферансРусская рулеткаСтрайкбол / Пейнтбол / ХардболШахматыЭкономические игры с выводом средств