DeftechSenior

Компʼютерний зір

Компʼютерний зір — це практика перетворювати зображення з камери на детекції, за якими може діяти машина чи людина, і модель тут рідко є складною частиною. Складно тут тому, що він працює на пристрої з бюджетом живлення й без мережі, на зображеннях, не схожих на ті, на яких його навчали, і живить рішення, у якому за два типи помилок платять різні люди. Сторінка починається з дванадцяти польових збоїв — причини кожного й перевірки, що його ловить; далі — бюджет на пристрої, проблема даних, поріг як політика, що треба записувати, і сім задокументованих збоїв.

Працює
На пристрої, самотньо
Найважчий вхід
Той, якого не було в навчанні
Поріг —
Політика, не метрика

Дванадцять польових збоїв — і перевірка для кожного

Спершу весь список — бо детектор рідко ламається в лабораторії й дуже часто ламається одним із цих дванадцяти способів у перші місяці в полі. Кожен рядок ставить поруч те, що ви побачите, те, що насправді не так, і перевірку, яка спіймала б це до розгортання. Рядки пронумеровано, щоб на рев’ю можна було сказати «у нас немає перевірки для рядка 8», а розділи нижче посилаються на них за номером.

#Що ви бачите в поліЩо насправді не такПеревірка, що це ловить
1Чудово на тестовому наборі, погано вже в перший тижденьТестові кадри взяли з тих самих польотів чи сесій, що й навчальні, тож модель оцінювали на сценах, які вона вже бачила.Ділити за польотом, місцем і датою — ніколи за кадром.
2Працює там, де навчали, і провалюється в новому сезоні чи на новій камеріУмов розгортання — сезону, погоди, сенсора — ніколи не було в навчальних даних.Оцінювати за умовами; перевіряти заново на кожному новому сенсорі й перед кожним новим сезоном.
3Добре зблизька, сліпий на дальностіЗамало пікселів на обʼєкті за такої висоти чи фокусної відстані.Оцінювати за розміром обʼєкта в пікселях і заявити найменший розмір, який система підтримує.
4У полі повільніше й пізніше, ніж на стендіТротлінг від нагріву і затримка, виміряна без захоплення й черги. На рухомій платформі запізнення — це похибка позиції.Міряти від затвора до рішення за робочої температури; ставити мітку часу на затворі.
5Нешкідливе з вигляду оновлення все ламаєПристрій готує зображення інакше, ніж під час навчання: масштаб, порядок кольорів, нормалізація, квантування.Тест на еталонних зображеннях для всього конвеєра на пристрої проти еталонних виходів.
6Має 99,99% і нічого не знаходитьНезбалансованість класів: модель вивчила, що «тут нічого» майже завжди правильно.Звітувати повноту на рідкісному класі й хибні тривоги на годину — ніколи не загальну частку правильних відповідей.
7Оператори перестають реагувати на тривогиЗабагато хибних тривог на годину оператора за обраного порога.Письмова політика порога з обома частками помилок і названим власником.
8Точність (precision) чудова, а щось однаково проскочилоПропуск не дає ні тривоги, ні запису, тож його ніхто ніколи не бачить.Вибірково переглядати кадри, на яких детектор мовчав.
9Упевнена відповідь на те, чого він ніколи не бачивСистема не має способу сказати «не знаю».Смуга непевності, скерована на розбір, а не операторові.
10Обʼєкт утрачає історію щоразу, коли змінюється його міткаТрекінг привʼязаний до класу, тож перекласифікований обʼєкт починається заново як новий.Ідентичність треку незалежна від мітки, а мітка — атрибут, який можна переглянути.
11Модель вивчила не теОбхідний шлях: тло, водяний знак чи джерело зображення корелюють із міткою.Розрізати результати за джерелом і тлом і тестувати на джерелі, якого модель не бачила.
12Її обманює візерунок, укриття чи макетВхідні дані обирає той, хто хоче, щоб детекція провалилася.Набір оцінювання від «червоної команди» з приховуванням і макетами, окремий від навчання.

Інференс живе всередині бюджету, і бюджет — це не памʼять GPU

Обслуговування моделей у дата-центрі оптимізують за пропускною здатністю на долар. На пристрої обмеження інші за природою, а не за ступенем, і три з них узагалі не стосуються обчислень. Загальний матеріал про сервінг живе на сторінках MLOps; далі — лише те, що змінюється.

БюджетЩо він насправді обмежує
Живлення, у ватахКожен ват на інференс — це не витрачений час польоту чи роботи. Модель конкурує з місією, а не з іншими орендарями.
ТеплоГерметичний корпус на сонці тротлить. Бенчмарк на столі — не те саме число, що бенчмарк у полі через двадцять хвилин.
Затримка на кадрЯкщо платформа рухається, детекція, що запізнилася, описує місце, яке обʼєкт уже залишив. Затримка тут є проблемою точності, а не комфорту.
Памʼять і сховищеВирішує, чи можна зберегти сирі кадри, потрібні пізнішому розслідуванню, — саме їх зазвичай жертвують першими й першими ж їх бракує.
Шлях оновленняМодель, яку не замінити пів року, мусить бути правильною пів року, — а це змінює те, наскільки ви готові її спеціалізувати.

Рядок 4 вступної таблиці заслуговує на картинку, бо саме там метрика моделювання тихо стає позиційною. Бенчмарк, який наводить більшість команд, — лише інференс, на холодному стенді. Число, що важить, — від затвора до рішення, на справжньому пристрої, після того, як він постояв на сонці.

На рухомій платформі затримка — це похибка позиції. Ту саму модель показано двічі з умовними числами: на холодному стенді конвеєр від затвора до рішення займає 173 мілісекунди, а в герметичному корпусі після двадцяти хвилин на сонці інференс сповільнюється через тротлінг, черга росте, і виходить 363 мілісекунди. За відносної швидкості 15 метрів на секунду це різниця між детекцією за 2,6 метра від того місця, де обʼєкт тепер, і за 5,4 метра. Зазвичай міряють лише етап інференсу, та ще й на стенді, тож польове число — саме те, якого ніхто не виміряв. Ставте мітку часу, коли відкривається затвор, а не коли готовий результат, і міряйте весь конвеєр на справжньому пристрої за робочої температури.

Рядок 5 теж належить сюди, бо це рішення про бюджет, яке виглядає рішенням моделювання. Стиснення моделі під пристрій — квантування до 8-бітних цілих, компіляція під прискорювач, масштабування входу під те, що любить залізо, — змінює її виходи. Іноді ні на що, іноді настільки, що детекції біля порога перевертаються. Фіксований набір еталонних зображень, проганяний через увесь конвеєр на пристрої й порівнюваний з еталонними виходами на кожній збірці, — найдешевший тест на цій сторінці, і він ловить переплутані канали кольору раніше за політ.

Проблема даних, якої не полагодить жодне навчання

Детектор вивчає той розподіл, який йому показали. У розгортанні він зустрічає інший, і розрив не є випадковим шумом: він систематичний, великий і достатньо передбачуваний, щоб його планувати. Це найбільше джерело польових збоїв у системах зору — рядки 2, 3 і 6, — і воно майже ніколи не є помилкою моделювання.

  • Зсув сенсора. Модель, навчена на кольоровому зображенні, не переноситься на тепловізійне, а навчена на одній тепловізійній камері часто не переноситься на іншу. Сенсор є частиною навчальних даних, а не їхньою деталлю.
  • Сезон і погода. Листя, сніг, багно, дощ на обʼєктиві, низьке сонце просто в сенсор. Модель, перевірена влітку, перевірена на чверті року.
  • Геометрія. Висота, кут і фокусна відстань змінюють кількість пікселів на обʼєкті на порядок, і детектор, навчений на одному масштабі, тихо провалюється на іншому.
  • Свідоме приховування. На відміну від майже будь-якого іншого домену, тут хтось активно працює над тим, щоб детекція не спрацювала: укриття, макети, деформувальні патерни. Розподіл не просто інший — його обирає супротивник; це рядок 12.
  • Гранична незбалансованість класів. Те, що вас цікавить, може траплятися в одному кадрі з пʼятдесяти тисяч, тож модель, що завжди каже «нічого немає», дає 99,998% і не варта нічого.
Сукупна оцінка — це зважене середнє, а ваги — те, що випадково опинилося в тестовому наборі. У цього умовного детектора більшість тестових кадрів — денні кольорові, де він має 98%, тож загальна цифра виходить 94%, тоді як тепловізор на великій дальності — 4% набору і, цілком можливо, саме та умова, заради якої систему купували, — має 41%. Та сама форма задокументована для комерційного аналізу облич: Gender Shades знайшло частку помилок до 34,7% для однієї підгрупи й щонайбільше 0,8% для іншої — у системах, кожна з яких звітувала одне число точності. Звітуйте кожну умову окремо, а рідкісний клас — окремо від поширеного.

Два збої зі списку стосуються самого тесту, а не світу, і саме вони змушують брехати кожне інше число. Рядок 1 — це витік: кадри одного польоту майже однакові, тож поділ кадр за кадром кладе майже-копії по обидва боки, і модель оцінюють на сценах, які вона запамʼятала. Рядок 11 — обхідний шлях: щось у зображенні, що не має стосунку до обʼєкта, — тло, водяний знак, яка камера знімала, — корелює з міткою, і модель вивчає саме це. Ліки для обох — та сама дисципліна. Діліть за польотом, місцем і датою й відкладіть ціле джерело, якого модель не побачить до самого кінця.

Практична відповідь не в кращій архітектурі. Вона в конвеєрі даних, що замикає цикл: кожне розгортання записує справжні кадри, процес розбору розмічає цікаві — особливо пропуски й хибні тривоги, — і вони входять до постійного набору оцінювання, згрупованого за умовами. Це та сама дисципліна, що й регресійний набір із розділу QA, прикладена до моделі, — і саме вона перетворює польовий досвід на те, що успадкує наступна версія, а не на те, що памʼятає інженер.

Поріг — це рішення політики з названим власником

Детектор не видає «так» чи «ні». Він видає число, і хтось перетворює це число на «так» або «ні», обираючи, де проходить межа. Цей вибір зазвичай робить той, хто налаштовував модель, у вівторок, за валідаційним набором, — і це найвагоміше рішення в системі.

Усі три колонки — та сама навчена модель. Між ними нічого не змінилося в мережі: змінилося одне число, а разом із ним — який тип помилки робить система і хто його вбирає. Поставте поріг низько, і майже нічого не пропускається, ціною потоку сповіщень настільки галасливого, що за тиждень оператор перестає його читати, — технічне налаштування перетворюється на людський збій, якого ніхто не фіксує. Поставте високо, і всі сповіщення варті уваги, а те, що лишилося під межею, не бачить ніхто й воно не лишає жодного сліду, — режим відмови взагалі без сигналу зворотного звʼязку. Середня колонка не є правильною відповіддю: вона є відповіддю, яку записали, з обома частками помилок, названими й прийнятими тим, хто має право їх приймати. Саме це і є результатом роботи: не поріг, що максимізує валідаційну оцінку, а число, привʼязане до політики, названого власника й дати перегляду.

Обидва напрямки помилки мають наслідки, що виходять за межі моделі. Забагато хибних спрацювань — і оператор перестає довіряти сповіщенням, рядок 7, — не через недбалість, а через арифметику: потік, що переважно є шумом, неможливо опрацьовувати. Цей збій виглядає людською проблемою, а спричинений числом. Забагато пропусків — і не стається взагалі нічого, рядок 8: ні сповіщення, ні запису, ні зворотного звʼязку, і система тихо звітує про чудову точність, поки те, заради чого вона існує, проходить повз. Із двох гірший другий — саме тому, що він не дає жодного сигналу про проблему.

Арифметику за рядком 7 варто побачити один раз, бо саме вона робить непридатною частку помилок, що звучить пристойно. Коли обʼєкт рідкісний, хибні тривоги беруться майже з кожного кадру, а справжні детекції — майже з жодного, тож навіть мала частка множиться на стіну шуму.

Коли обʼєкт рідкісний, частка хибних тривог, що звучить мало, однаково домінує в тому, що бачить оператор. Візьмімо умовну годину: переглянуто 10 000 ділянок зображення, обʼєкт є у 5, і детектор знаходить 4 з них. За частки хибних тривог 1% він також видає 100 хибних, тож справжні лише 4 зі 104 тривог — близько 4%. Якщо зменшити частку вдесятеро, до 0,1%, лишається 10 хибних, і справжні 4 з 14 — близько 29%. Стіну шуму ніхто не опрацьовує цілу зміну, тож перше налаштування привчає оператора перестати дивитися, і збій виглядатиме людським. Саме тому поріг оцінюють за хибними тривогами на годину оператора, виміряними на справжньому потоці, а не за часткою на кадр.

Ще одна властивість належить цій політиці й зазвичай відсутня — рядок 9: системі потрібен спосіб сказати «не знаю». Детектор, змушений відповідати бінарно на кожному кадрі, впевнено відповість на кадрах, подібних до яких він не бачив ніколи, — а це рівно протилежне до бажаного. Явна смуга непевності — нижче порога сповіщення, вище порога ігнорування, скерована на розбір, а не на оператора, — коштує мало, і саме там уперше проступають цікаві збої.

І за однією детекцією рідко діють: кадри зʼєднують у треки, і рядок 10 — це місце, де зʼєднання ламається. Якщо трекер привʼязує обʼєкт до класу, щоразу, коли класифікатор передумує, обʼєкт починається заново без історії, і його шлях неможливо передбачити. Мітка має бути атрибутом треку, який можна переглянути, а не тим, що його визначає, — те саме правило, що сторінка про формулює для номерів треків.

Що треба записати, щоб хибну відповідь можна було розслідувати

Детекцію, яку неможливо відтворити, неможливо розібрати, а система, чиї помилки неможливо розібрати, не покращується — вона накопичує думки про себе. Запис тут обмежений сховищем і тим, що пристрій може не повернутися, тож його треба проєктувати, а не вмикати.

  • Кадр або його фрагмент

    Без зображення розслідування немає — є суперечка. Якщо сховище не дозволяє зберігати все, зберігайте детекції й вибірку кадрів, на яких детектор мовчав, а не рівномірну вибірку нічого конкретного.

  • Ідентичність моделі

    Яка версія моделі, які ваги, який поріг, яка попередня обробка. Через пів року саме це відрізняє регресію моделі від зміненого середовища.

  • Умови

    Сенсор, висота, кут, час, температура. Саме вони дають потім різати якість за умовами — єдиний корисний спосіб її читати.

  • Що зробила людина

    Підтвердила, відхилила, проігнорувала. Це безкоштовно розмічені дані рівно потрібного розподілу, і більшість систем їх викидає.

Остання картка — та, з якою варто щось зробити цього тижня. Рішення операторів є розміченим потоком, породженим саме тим розгортанням, яке вас цікавить, без витрат на анотацію, — і це найкоротший шлях від «система інколи помиляється» до кейса в наборі оцінювання. Щоб їх зібрати, інтерфейс має робити «підтвердити» й «відхилити» однаково легкими, а це рішення дизайну в шарі C2, а не в моделі.

Сім збоїв — і рядок, що покриває кожен

Оборонні програми рідко публікують свої збої, тож задокументовані випадки тут — цивільні. Механізми переносяться точно: детектор не знає, для чого його розгорнули, і кожен із цих випадків — збій даних, порога, трекінгу чи нагляду, а не архітектури моделі.

ВипадокЩо сталосяРядок, що це покриває
Google Photos, 2015Застосунок для фото підписав двох темношкірих людей як горил. Виправлення, яке випустила Google, — заблокувати мітку «горила» й повʼязані мітки приматів повністю; тест Wired у 2018 році показав, що вони й досі заблоковані.2. Навчальні дані не покривали людей, яким служив продукт, а латка прибрала клас замість виправити дані.
Tesla, Віллістон, Флорида, травень 2016Автомобіль на автопілоті проїхав під напівпричепом, що перетинав шосе, і водій загинув. Система не виявила білий причіп на тлі яскравого неба. NTSB встановила, що дорога була поза умовами, під які систему проєктували, а дизайн дозволяв водієві надовго відключатися — руки на кермі 25 секунд із 37 хвилин.2 і 9. Вхід був поза проєктною областю, і ніщо в системі не могло сказати, що вона не бачить.
Gender Shades, лютий 2018Аудит трьох комерційних продуктів аналізу облич знайшов частку помилок класифікації статі до 34,7% для жінок із темнішою шкірою і щонайбільше 0,8% для чоловіків зі світлішою. Бенчмарки, на яких такі продукти зазвичай оцінювали, складалися переважно з людей зі світлою шкірою.2 — і діаграма вище: одне число ховало зріз, що провалювався.
Тестове авто Uber, Темпі, Аризона, березень 2018Безпілотне тестове авто збило й убило жінку, що вела велосипед через дорогу. Воно виявило її за 5,6 секунди до зіткнення, але раз у раз змінювало класифікацію — автомобіль, велосипед, інше, — і кожна зміна викидала історію треку, тож її шлях так і не спрогнозували. Секундне придушення дії затримало реакцію, екстрене гальмування було вимкнене, а водій-наглядач дивився в телефон.10 і рядок 6.1 сторінки про C2: ідентичність привʼязали до мітки, що постійно змінювалася, а людина над контуром не мала змоги діяти.
Наліпки на знаку «Стоп», 2018Дослідники наклеїли на знак «Стоп» чорні й білі наліпки, і класифікатор читав його як знак обмеження швидкості 45 миль/год у 84,8% кадрів, знятих із рухомого авто. Роботу опублікували на CVPR як попередження про входи з фізичного світу.12. Коли вхід обирає хтось інший, тестовий набір зі сцен, що «співпрацюють», нічого про це не міряє.
Пневмонія на рентгені, листопад 2018Дослідження моделей, навчених на рентгенограмах із трьох лікарняних систем, показало, що вони вміють визначити, з якої системи і навіть з якого відділення знімок, і гірше працюють на лікарнях, яких не бачили. Поширеність хвороби між закладами різнилася, тож саме джерело передбачало мітку.11 і 1. Модель вивчила джерело, а тест, що змішував джерела, її за це винагороджував.
Хибний арешт у Детройті, січень 2020Пошук за розпізнаванням облич зіставив кадр із камери спостереження в магазині з фото на посвідченні водія Роберта Вільямса, і його заарештували й протримали близько тридцяти годин за крадіжку, якої він не вчиняв. Мирова угода 2024 року забороняє поліції Детройта заарештовувати будь-кого лише на підставі результату розпізнавання облич.3 і 9 — і політика порога: кандидата, знайденого за поганим зображенням, сприйняли як ідентифікацію, і різниця не мала власника.

Де це вироджується

Чесне обмеження кожної перевірки на цій сторінці в тому, що вона міряє детектор на умовах, які хтось здогадався зібрати. Набір оцінювання, розрізаний на дванадцять зрізів, містить лише ці дванадцять; тринадцята умова — новий тип укриття, збій сенсора, погода, якої ніхто не записав, — приходить без попередження, і числа лишаються зеленими, доки вона не прийде. Смуга непевності з рядка 9 і перегляд кадрів, на яких детектор мовчав, із рядка 8 — єдині практики тут, спрямовані на те, чого ніхто не передбачив, і тому вони варті більше, ніж коштують.

  • Одне число точності на слайді, усереднене по умовах, яких ніхто не перелічує.
  • Тестовий набір, поділений кадр за кадром із тих самих польотів, що й навчальні дані.
  • Бенчмарк, зроблений на робочій станції, і наведений для пристрою в герметичному корпусі на сонці.
  • Поріг, якого ніхто не має за власника, виставлений у вівторок тим, хто налаштовував модель.
  • «Перегляд людиною» потоку тривог, що на девʼяносто шість відсотків є шумом.
  • Точність (precision), про яку звітують, жодного разу не глянувши на пропущене.
  • Клас, прибраний із продукту, бо модель у ньому помилялася, — а дані лишилися як були.
  • Набір оцінювання, зібраний лише зі сцен, що «співпрацюють», для системи, чий вхід обирає хтось інший.
  • Оцінка збігу, подана людині як ідентифікація.

Коли це застосовувати

Застосовуйте, коли

  • Як рев’ю перед розгортанням: дванадцять рядків угорі, кожен зі своєю перевіркою.
  • Коли інференс мусить працювати на пристрої, у бюджеті живлення, тепла й затримки, виміряному наскрізь.
  • Коли встановлюєте поріг детекції: він потребує письмової політики, обох часток помилок на годину оператора і названого власника.
  • Коли проєктуєте, що записує пристрій, — щоб хибну відповідь через пів року ще можна було розслідувати.

Уникайте, коли

  • Як загальну настанову з навчання чи сервінгу моделей: цим володіють сторінки AI/LLM та MLOps, і ця на них спирається.
  • Як підставу дозволити моделі вирішувати, а не детектувати: рішення й людина в контурі належать сторінці C2.
  • З єдиною сукупною цифрою точності — метрикою, що найімовірніше є водночас вражаючою й оманливою.
  • Там, де людина однаково може переглянути кожен кадр: тоді більшість цієї механіки є зайвим тягарем.

Джерела й метод

На чому стоїть ця стаття

  • 7 джерел
  • 4 задокументовані збої
  • Перевірено 13 жовтня 2026 р.

Дослідження з Claude. Пошук і звірку першоджерел зроблено з Claude (Anthropic). Відбір, текст і перевірку фактів — редакція Anatomy of IT Product.

Було корисно?

Поділіться з тим, хто працює над тією ж задачею.