К содержимому
MoranaLabs
R&D — почему mAP не предсказывает поведение на объекте

Приемка по метрикам: что показывает mAP 

Средняя точность усредняет по классам, по порогам качества рамки, по размерам целей и по условиям съемки. Заказчику нужна вероятность пропустить одну цель на одной дальности. На нашем замере эти две величины ранжируют сборки в разном порядке: сборка с лучшей строгой метрикой пропускает 31,3 % целей мельче шестнадцати пикселей, а стоящая по той же метрике пятой — 14,5 %.

удачно

замер сделан: 9 прогонов, 2 245 целей, разрез по размеру и равный бюджет ложных

замер и публикация 16.08.2026

стек и предметная область
  • ultralytics / yolov8
  • coco-семантика диапазонов
  • bootstrap, интервалы уилсона
  • теория обнаружения сигналов
  • гост 34.603-92
  • оптика: gsd и критерий джонсона
аннотация

Работа разбирает, почему метрики, которыми отчитываются об обучении детектора, не предсказывают поведение системы на объекте, и что писать в приемочных документах вместо них. Показано, что средняя точность складывается из пяти усреднений, каждое из которых стирает конкретный вопрос заказчика, и что порог качества рамки IoU — это требование к точности локализации в долях размера цели, недостижимое на мелких целях геометрически: при неопределенности разметки в два пикселя потолок строгой метрики на целях мельче шестнадцати пикселей равен 0,51. Основная часть — собственный замер: девять сборок прогнаны по отложенной выборке из 2 200 кадров, метрики пересчитаны по шести диапазонам размера цели и приведены к равному бюджету ложных срабатываний. Ранжирование сборок по строгой метрике и по доле найденных мелких целей расходится: лидер по метрике пропускает 31,3 % целей мельче шестнадцати пикселей против 14,5 % у сборки, стоящей по той же метрике пятой, а при бюджете в десять ложных не находит из них ни одной. Парный бутстреп показывает, что разница в средней точности в третьем знаке статистически не существует, тогда как разница в полноте на мелких целях достоверна и направлена в другую сторону. Практическая часть переводит покадровые метрики в единицы дежурной смены, связывает пиксели с дальностью через оптику и дает протокол приемки на один рабочий день с кодом.

ключевые слова
  • приемка систем видеоаналитики
  • метрики детекции
  • mAP
  • IoU
  • мелкие цели
  • ложные тревоги
  • доверительные интервалы
  • техническое задание на компьютерное зрение
паспорт работы
объем
7 частей, 32 главы
источников
74, из них 3 — стандарты и 3 — материалы разработчиков инструментов
формул
10 со сквозной нумерацией
рисунков
7 плюс два интерактивных стенда
свой замер
9 прогонов по 2 200 кадрам, 2 245 целей, 6 диапазонов размера
срез
16.08.2026

Ссылки вида [12] в тексте ведут в список литературы. Формулы пронумерованы сквозной нумерацией.

кратко

Если читать работу целиком некогда

01

Что здесь измерено

Девять прогонов наших сборок детектора БПЛА по одной и той же отложенной выборке из 2 200 кадров с 2 245 целями. Все предсказания сохранены с порогом отсечения 0,001, метрики пересчитаны собственным кодом в шести диапазонах размера цели, приведены к равному бюджету ложных срабатываний и снабжены доверительными интервалами по бутстрепу. Сравнения сборок сделаны парным бутстрепом на одном и том же ресемпле кадров.

02

Главный результат

Ранжирование сборок по усредненным метрикам и по доле найденных мелких целей расходится, и расхождение статистически достоверно. Сборка-лидер по строгой метрике пропускает мелких целей в 2,2 раза больше, чем сборка, стоящая по этой метрике пятой. При бюджете в десять ложных срабатываний на выборку лидер по метрике не находит из целей мельче шестнадцати пикселей ни одной, а сборка, стоящая по метрике седьмой, находит больше половины.

03

Что с этим делать заказчику

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

факты
формат
длинная форма: 7 частей, 32 главы, глоссарий и библиография
источники
74 позиции: от PASCAL VOC 2010 и COCO до ISO/IEC TS 4213 и ГОСТ 34.603-92
свой замер
9 прогонов по отложенной выборке 2 200 кадров, 2 245 целей, один класс
разрез
6 диапазонов размера цели: от «мельче 16 px» до «96 px и больше»
главный результат
лидер по mAP@0,5:0,95 пропускает 31,3 % мелких целей, пятая сборка — 14,5 %
при жестком бюджете
на 10 ложных срабатываний лидер по метрике не находит ни одной цели мельче 16 px
калибровка
на общем пороге 0,25 девять сборок дают от 87 до 428 ложных — сравнение на общем пороге бессмысленно
разрешение входа
один и тот же вес на 512 и 960: полнота на мелких целях 0,434 против 0,687
статистика
парный бутстреп: разница 0,003 по mAP переворачивается в 13 ресемплах из 100
потолок метрики
при шуме разметки ±2 px идеальный детектор получил бы 0,508 на целях мельче 16 px — расчет
перевод в смену
точность 0,96 на кадре = 4 091 ложная тревога в час на камеру при 25 детекциях/с — расчет
стоимость проверки
один рабочий день: прогон 20 минут, весь пересчет — секунды
Часть I

Цифра, которую подписывают

Заказчик пишет в техническом задании «точность не ниже 95 процентов», подрядчик приносит отчет с mAP 0,93, обе стороны довольны до первого разбора инцидента. Часть разбирает, что именно измерено этой цифрой, какие пять усреднений спрятаны внутри нее и почему ни одно из них не отвечает на вопрос, который решает судьбу проекта: какую долю целей система пропустит на рабочей дальности.

глава 1

Как выглядит приемка систем машинного зрения

Обе стороны довольны ровно до первого разбора пропущенного события

Сценарий повторяется от проекта к проекту почти дословно. В техническом задании написано «точность распознавания не менее 95 %». Через три месяца подрядчик приносит отчет: обучили детектор, на тестовой выборке mAP@0,5 равен 0,93, mAP@0,5:0,95 — 0,64, precision 0,96, recall 0,89. Цифры выглядят убедительно, графики обучения приложены, матрица ошибок нарисована. Акт подписывается. Система едет на объект.

Через месяц эксплуатации выясняется, что дрон, зашедший со стороны леса на высоте двести метров, системой не увиден — оператор нашел его на записи глазами. Начинается разбор, и он упирается в стену. Подрядчик показывает акт: метрика в договоре выполнена, вот отчет. Заказчик показывает запись: цель в кадре была, тревоги не было. Оба правы. В договоре записана величина, которая не запрещает пропускать такие цели.

Дальше в тексте показано, что противоречия между отчетом и записью с объекта нет. Наш собственный замер по одной и той же сборке дает mAP@0,5:0,95 равный 0,575 в целом по выборке и 0,163 на целях мельче шестнадцати пикселей. Полнота на рабочем пороге в целом 0,882, на тех же мелких целях 0,482. Разбор инцидента, в котором дрон был виден как пятно в двадцать пикселей, попадает во вторую цифру, а в акте стоит первая. Ошибки в отчете нет: усреднение сработало ровно так, как устроено.

В АКТЕНА ОБЪЕКТЕ0,575mAP@0,5:0,95, вся выборкаprecision 0,92 · recall 0,882 200 кадров, порог 0,25пропуск целей мельче 16 px52 %пропуск целей 16–24 px21 %ложных тревог в час на камеру1 391задержка до тревогине измеренаНАШ ЗАМЕР, СБОРКА primary 512 НА ПОРОГЕ 0,25. ТРЕВОГИ В ЧАС — РАСЧЕТ ПРИ 5 ДЕТЕКЦИЯХ В СЕКУНДУЛЕВАЯ КОЛОНКА НЕ ЗАПРЕЩАЕТ НИЧЕГО ИЗ ПРАВОЙ
Рис. 1. Разрыв приемки. Слева — что записано в акте: одно число, усредненное по всем целям выборки. Справа — что решает судьбу проекта на объекте: доля пропусков на конкретной дальности и число ложных тревог за смену. Величины из левой колонки не запрещают ничего из того, что происходит в правой. Числа на схеме — наш замер по сборке primary_512, отложенная выборка 2 200 кадров.

Здесь нет ничьей злой воли. Подрядчик берет метрику, которую печатает его инструмент обучения по умолчанию [7]. Заказчик берет формулировку, которая выглядит понятной. Метрика была придумана для сравнения научных работ на общем наборе данных [1, 3], и для этой задачи она хороша. Проблема начинается там, где число из научного протокола переезжает в приемочный акт, не меняя определения и не приобретая ни одного условия применения.

глава 2

Три вопроса заказчика и что на них отвечает mAP

Ни один из трех вопросов не выражается через среднюю точность

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

какую долю целей мы пропустим
и не вообще, а на рабочей дальности: не «в среднем по выборке», а по цели размером двадцать пикселей, потому что именно так выглядит дрон на трехстах метрах в объектив, который уже куплен и висит на мачте.
сколько раз за смену оператор дернется зря
величина, которая определяет, будет ли система вообще работать через месяц. Двадцать ложных тревог за смену — и оператор перестает на них реагировать; это отказ системы, наступивший без единой аппаратной неисправности.
через сколько секунд после появления цели придет событие
задержка между тем, как объект вошел в поле зрения, и тем, как тревога дошла до человека. Складывается из темпа обработки, правила подтверждения и работы трекера — и в метриках детекции не присутствует вовсе.

Метрика mAP не отвечает ни на один из трех. На первый — потому что усредняет по размерам целей и по порогам качества рамки. На второй — потому что не привязана ни к какому конкретному порогу срабатывания и выражена в долях, а не в событиях за час. На третий — потому что вообще не содержит времени: AP считается по набору картинок, в котором нет ни последовательности кадров, ни частоты, ни задержки.

вопрос объектавеличина, которая на него отвечаетесть ли она в типовом отчете
доля пропусков на дальности Dполнота в диапазоне размеров цели при фиксированном порогенет
ложные тревоги за сменучисло ложных срабатываний в час на камеру при том же порогенет
задержка до событияp95 задержки от появления цели до тревогинет
устойчивость к погоде и времени сутокте же метрики на срезах «ночь», «дождь», «контровой свет»нет
сравнение двух сборокразность метрик с доверительным интерваломнет
академическое сравнение с чужой работойmAP@0,5:0,95 на общем набореда
Единственная строка, на которую отвечает типовой отчет об обучении, — последняя. Она же единственная, которая заказчику не нужна.
глава 3

Словарь: что именно считают TP, FP, precision, recall и AP

Половина споров на приемке снимается на этом месте, до всякой статистики

Разговор о метриках надо начинать с того, что в детекции нет ни одной величины, которая определялась бы сама по себе. Прежде чем посчитать хотя бы одно верное срабатывание, надо решить, какая предсказанная рамка считается совпавшей с какой разметочной. Эта процедура — сопоставление — и есть место, где принимаются все решения, а метрики уже только считают проценты по ее результату. Сама конструкция средней точности пришла в детекцию из информационного поиска [5, 6] и была приспособлена к рамкам организаторами соревнования PASCAL VOC [1, 2].

IoU
отношение площади пересечения предсказанной и разметочной рамок к площади их объединения. Число от нуля до единицы, непрерывная мера качества локализации.
TP (верное срабатывание)
предсказанная рамка, сопоставленная разметочной цели, у которой IoU не ниже заданного порога. Одна цель может дать не больше одного TP: вторая рамка на той же цели становится ложной.
FP (ложное срабатывание)
предсказанная рамка, которой не досталось цели. Сюда попадают и срабатывания на пустом небе, и дубли на одной цели, и рамки, накрывшие цель хуже порога.
FN (пропуск)
разметочная цель, которой не досталось ни одной рамки достаточного качества. Именно эта величина стоит за словом «система не увидела».
precision
TP / (TP + FP). Из всех срабатываний — какая доля верных. Метрика оператора.
recall (полнота)
TP / (TP + FN). Из всех реальных целей — какая доля найдена. Метрика заказчика.
AP
площадь под кривой «полнота — точность», построенной перебором порога уверенности от единицы до нуля. Одно число вместо всей кривой.
mAP
среднее AP по классам. В одноклассовой задаче — а именно такова задача обнаружения дрона — усреднять не по чему, и буква m в отчете означает только привычку инструмента.
IoU(A, B) = |A ∩ B| / |A ∪ B| precision = TP / (TP + FP) recall = TP / (TP + FN) AP = (1/101) · Σ_{r ∈ {0; 0,01; …; 1}} p_interp(r), p_interp(r) = max_{r' ≥ r} p(r')

где A — предсказанная рамка, B — разметочная; p(r) — точность на уровне полноты r; сумма берется по 101 равномерной точке полноты (схема COCO [3, 8])

(1)
Третья строка и есть определение AP в том виде, в каком его считают все современные инструменты. Обратите внимание на операцию max: точность монотонизируется справа налево, то есть провалы кривой затираются лучшим значением, которое встретится правее. Это делает метрику устойчивой к шуму, но заодно скрывает участки, где детектор ведет себя плохо.

Слово «точность» в русском языке добавляет к этому свою путаницу. В техническом задании «точность 95 %» может означать precision, recall, долю верно классифицированных кадров, mAP@0,5 или вообще accuracy из задачи классификации, которая в детекции не определена. Разница между этими прочтениями на одной и той же системе достигает десятков процентных пунктов. Первое, что надо сделать на переговорах, — заменить слово «точность» на конкретную формулу с указанием порога.

Когда мера становится целью, она перестает быть хорошей мерой.

формулировка закона Гудхарта в изложении М. Стратерн [18]

Эта формулировка описывает механизм точно. Метрика, назначенная целью приемки, начинает оптимизироваться сама по себе — разными способами, от безобидных до разрушительных, и все они разобраны в отдельной классификации искажений такого рода [19]. В машинном обучении на это накладывается вторая беда: одна метрика подменяет собой описание задачи, и решения принимаются по величине, которая измеряет лишь часть того, что нужно [20].

глава 4

Пять усреднений внутри одного числа

Каждое из них стирает ровно тот срез, который и был вопросом заказчика

Величина mAP@0,5:0,95 получается последовательным усреднением по пяти осям. Ни одно из усреднений не является ошибкой: каждое было осознанным решением организаторов соревнований, у которых стояла своя задача — ранжировать сотни работ одним числом [1, 3]. Проблема в том, что при переносе в приемку все пять решений едут вместе с числом и ни одно из них не обсуждается.

РАСПРЕДЕЛЕНИЕ РЕЗУЛЬТАТОВпо классамредкий класс весит столько же, сколько частыйпо порогам IoU8 из 10 порогов строже, чем нужно задачепо размерам целейцель 600 px и цель 12 px входят с равным весомпо кадрам100 кадров одного ролика = 100 разных сценпо условиямночь, дождь и ясный день в одной выборкеОДНО ЧИСЛО В АКТЕКАЖДЫЙ ШАГ СТИРАЕТ РОВНО ТОТ РАЗРЕЗ, КОТОРЫЙ ЗАКАЗЧИК ПОТОМ БУДЕТ ИСКАТЬ В ОТЧЕТЕ
Рис. 2. Пять усреднений, спрятанных в одном числе. Сверху вниз: по классам, по порогам IoU, по размерам целей, по кадрам и по сценам. Каждый шаг схлопывает распределение в одно число, и на каждом шаге теряется ровно тот разрез, который заказчик потом будет искать в отчете.
по классам
AP считается для каждого класса и усредняется. Класс «человек» с тысячей примеров и класс «оружие» с сорока входят в среднее с одинаковым весом — так устроены соревнования, в которых классов сотни и тысячи [4]. В одноклассовой задаче это усреднение отсутствует, и тем важнее понимать остальные четыре.
по порогам IoU
десять порогов от 0,5 до 0,95 усредняются с равным весом. Восемь из десяти порогов строже, чем нужно любой практической задаче обнаружения, и на мелких целях они недостижимы геометрически (глава 8). Итог: строгая метрика на 80 % описывает качество рамки, а не факт обнаружения.
по размерам целей
цель в шестьсот пикселей и цель в двенадцать входят в общее среднее с одинаковым весом. Если в наборе много крупных целей, метрика будет высокой при любой работе на мелких. Перекос выборки по размерам — один из известных видов дисбаланса в детекции [13], и наша выборка показывает его последствия в главе 12 напрямую.
по кадрам
все кадры равноправны. Сто кадров одного ролика, где цель висит в центре, весят столько же, сколько сто разных сцен. Из этого растет статистическая иллюзия главы 19.
по условиям съемки
ночь, дождь, контровой свет, туман и ясный день смешаны в одну выборку. Средняя метрика по такой смеси не описывает ни один из режимов и особенно опасна тем, что доля тяжелых кадров в тестовом наборе назначается тем, кто набор собирал. Смещение набора данных — отдельная большая тема [30], и на приемке она проявляется в чистом виде.

Дальше в работе показано, что три из этих пяти усреднений снимаются одним и тем же приемом: пересчетом метрик в разрезе. Разрез по размеру цели дает ответ на вопрос про дальность (часть III), разрез по условиям — на вопрос про погоду, разрез по порогу уверенности — на вопрос про ложные тревоги (часть V). Пересчет не требует нового обучения и вообще ничего не требует, кроме сохраненных предсказаний: наш прогон девяти сборок занял двадцать минут на ноутбуке.

глава 5

Стенд этой работы

Девять сборок, 2 200 кадров, 2 245 целей, весь пересчет — своим кодом

Все числа частей III и IV получены собственным прогоном. Веса взяты из поставки направления Falcon Eye — это семейство детекторов дрона в одноклассовой постановке, обученных нами и собранных под edge-ускоритель. Выборка — отложенная тестовая часть набора DUT Anti-UAV [53], которая в обучении этих весов не участвовала. Разметку мы не переделывали и не чистили: работа про метрики, а не про качество чужих рамок, и влияние этого решения разобрано отдельно в главе 8 и в границах.

параметр стендазначение
кадров в выборке2 200
целей размечено2 245 (2 167 кадров с одной целью, 21 с двумя, 12 с тремя)
разрешения кадров1920×1080 — 1 348 кадров; 1280×720 — 836; прочие — 16
классодин: drone
размер цели, корень из площадимедиана 40,9 px; 10-й процентиль 19,8; 90-й 184,3; минимум 8,1; максимум 659,6
прогонов9 (шесть разных весов, из них один прогнан на трех разрешениях входа)
порог отсечения при прогонеconf ≥ 0,001, NMS IoU 0,7, до 100 рамок на кадр
что сохранялосьвсе рамки с уверенностями в координатах исходного кадра, по одному файлу на прогон
пересчет метриксвой код: сопоставление, AP по 101 точке, диапазоны размеров с семантикой COCO, бутстреп
Паспорт стенда. Прогон девяти сборок по 2 200 кадрам занял около двадцати минут на ноутбуке; весь пересчет метрик после этого делается из сохраненных файлов за секунды и не требует ни модели, ни ускорителя.
диапазон размера цели, pxцелейдоля выборки
меньше 16833,7 %
16–2434315,3 %
24–3242218,8 %
32–4841018,3 %
48–9642619,0 %
96 и больше56125,0 %
Распределение целей по размеру, корень из площади рамки в пикселях исходного кадра. Почти двадцать процентов целей мельче 24 пикселей — и это ровно тот класс задач, ради которых систему наблюдения и ставят. В типовом отчете все шесть строк схлопываются в одно число.

Разбиение по размеру выбрано мельче, чем принятое в COCO деление на три группы с границами 32 и 96 пикселей [8]. Причина в главе 9: границы COCO привязаны к типовому кадру этого набора и к типовому объекту в нем, а в задаче наблюдения весь содержательный диапазон лежит внутри первой группы COCO. Мелкая сетка нужна потому, что переход между «видим уверенно» и «не видим» происходит на отрезке от шестнадцати до тридцати двух пикселей — и это показано замером в главе 12.

Часть II

Как устроен AP и что в нем ломается

Средняя точность — это не свойство детектора, а результат процедуры из четырех шагов, в каждом из которых зашито решение. Часть разбирает процедуру по шагам, выводит зависимость IoU от ошибки в пикселях, показывает, что на цели в двадцать пикселей строгие пороги недостижимы геометрически, и считает потолок метрики, который задает не модель, а разметчик.

глава 6

Процедура: сопоставление, сортировка, интерполяция

Четыре шага, в каждом из которых спрятано решение, которое никто не обсуждает

AP считается одинаково во всех современных инструментах, и полезно один раз проследить эту процедуру целиком — половина вопросов снимается на месте.

  • Все предсказания по всем кадрам собираются в один список и сортируются по убыванию уверенности. С этого момента кадры перемешаны: рамка из кадра 1500 может стоять в списке выше рамки из кадра 3.
  • Список проходится сверху вниз. Каждая рамка сопоставляется с еще не занятой разметочной целью того же кадра, у которой IoU максимален и не ниже порога. Сопоставилась — TP, цель помечается занятой; не сопоставилась — FP.
  • По ходу прохода считаются накопленные суммы TP и FP, из них — точность и полнота в каждой точке. Получается кривая «полнота — точность», у которой столько точек, сколько предсказаний.
  • Кривая монотонизируется (точность в каждой точке заменяется максимумом справа) и усредняется по 101 равномерному уровню полноты. Это и есть AP при одном пороге IoU. Дальше процедура повторяется для десяти порогов от 0,5 до 0,95, и результаты усредняются.

Первое решение спрятано в шаге 1: жадный проход по уверенности означает, что сопоставление зависит от порядка. Уверенная, но неточная рамка займет цель раньше менее уверенной, но точной, и вторая станет ложной. Второе — в шаге 2: одна цель принимает ровно одну рамку, поэтому дубли на одном объекте штрафуются как ложные срабатывания, хотя оператору они безразличны. Третье — в шаге 4: монотонизация затирает провалы кривой, и детектор с локальным ухудшением получает ту же оценку, что и ровный.

Отдельно стоит сказать про вариант с одним порогом — mAP@0,5. Он мягче и ближе к вопросу «обнаружили или нет», но у него другой недостаток: рамка, накрывшая половину цели, засчитывается как верная. Для трекера и для оценки дальности такая рамка часто бесполезна. Отсюда стандартная ошибка обеих сторон: подрядчик показывает mAP@0,5, потому что он выше, заказчик требует mAP@0,5:0,95, потому что он строже, и никто из них не спрашивает, какое качество рамки нужно системе на самом деле.

AP@0,5:0,95 = (1/10) · Σ_{t = 0,50; 0,55; …; 0,95} AP@t

где AP@t — средняя точность при пороге сопоставления IoU = t

(2)
Восемь из десяти слагаемых требуют качества рамки выше 0,5. В задаче обнаружения цели на дальности такое требование не следует ни из чего: тревога поднимается по факту наличия объекта, а точность рамки нужна трекеру на уровне «попал в цель», а не «совпал на 95 %». Строгая метрика при этом остается полезной как индикатор качества обучения — но в акте приемки ей делать нечего.
глава 7

Геометрия IoU: сколько стоит один пиксель

Цена ошибки в пикселях обратно пропорциональна размеру цели, и это чистая геометрия

Возьмем самый простой случай: цель — квадрат со стороной s, предсказание — такой же квадрат, сдвинутый на d пикселей по одной оси. Тогда пересечение равно s·(s−d), объединение равно 2s² − s·(s−d), и после сокращения получается формула, которую стоит держать в голове любому, кто принимает работу по детекции.

IoU(s, d) = (s − d) / (s + d) d_max(t) = s · (1 − t) / (1 + t)

где s — сторона цели в пикселях; d — сдвиг рамки по одной оси; t — порог IoU; d_max — предельный сдвиг, при котором сопоставление еще засчитывается

(3)
Вторая строка — это ответ на вопрос «насколько точно надо попасть». Для порога 0,5 допустимо промахнуться на треть стороны, для 0,75 — на седьмую часть, для 0,9 — на одну девятнадцатую. Величина d_max пропорциональна размеру цели, то есть требование к точности в пикселях ужесточается ровно во столько раз, во сколько цель мельче.
сторона цели, pxd_max при IoU 0,5при IoU 0,75при IoU 0,9IoU при сдвиге на 1 px
124,001,710,630,846
165,332,290,840,882
206,672,861,050,905
248,003,431,260,920
3210,674,571,680,939
4816,006,862,530,959
6421,339,143,370,969
9632,0013,715,050,979
12842,6718,296,740,984
20066,6728,5710,530,990
Расчет по формуле (3). Последний столбец — самый показательный: сдвиг всего на один пиксель роняет IoU цели в двенадцать пикселей до 0,846, то есть выбивает ее из четырех порогов из десяти. На цели в двести пикселей тот же пиксель не делает ничего. Строки таблицы — не свойство модели и не свойство набора данных, а арифметика отношения площадей.

Тот же эффект есть у ошибки масштаба. Если центр угадан точно, а сторона предсказана с относительной ошибкой e, то IoU равен 1/(1+e)² при завышении рамки. Порог 0,9 требует, чтобы сторона была угадана с точностью 5,4 %, порог 0,75 — 15,5 %, порог 0,5 — 41 %. Для цели в шестнадцать пикселей 5,4 % — это меньше одного пикселя: требование, которое не может выполнить ни детектор, ни разметчик, потому что координаты рамок целочисленные. Резкость этой зависимости известна и с другой стороны — как проблема обучения: из-за нее для регрессии рамок придумали смягченные варианты меры перекрытия [16, 17], а для совсем мелких целей — меры, на перекрытии вообще не основанные [46].

стенд: геометрия порога IoU
20 px

как выглядит цель в кадре: 12–20 px — дрон на дальнем рубеже, 100+ px — человек в двадцати метрах

2 px

ошибка локализации по одной оси, в пикселях исходного кадра — как в формуле (3)

0 %

рамка больше или меньше цели при том же центре

IoU0,818
,50
,55
,60
,65
,70
,75
,80
,85
,90
,95

Пройдено 7 порогов из десяти — вклад этой цели в mAP@0,5:0,95 равен 0,70 от максимума. Допустимый сдвиг для порога 0,5 — 6,67 px, для 0,9 — 1,05 px.

разметка 20 pxпредсказание

Цель нарисована одного экранного размера при любом значении ползунка: меняется только доля ошибки относительно стороны. В этом и вся суть — в пикселях кадра требование к точности ужесточается ровно во столько раз, во сколько цель мельче.

глава 8

Потолок строгой метрики: мы меряем разметчика

При шуме разметки в два пикселя идеальный детектор получает 0,51 на мелких целях

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

Посчитаем это на нашей же выборке. Берем все 2 245 разметочных рамок теста, к каждой стороне добавляем равномерный шум амплитудой a пикселей, считаем IoU зашумленной рамки с исходной и долю из десяти порогов, которые она проходит. Усреднение этой доли по трем сотням повторений и по целям диапазона и есть верхняя граница mAP@0,5:0,95, которую в этом диапазоне может показать идеальный детектор.

диапазон, pxшум ±0,5 px±1 px±2 px±3 px
меньше 160,8950,7540,5080,315
16–240,9480,8520,6780,523
24–320,9860,9040,7720,651
32–480,9990,9430,8430,750
48–961,0000,9940,9290,872
96 и больше1,0001,0000,9960,976
вся выборка0,9850,9390,8470,760
Расчет: потолок mAP@0,5:0,95 для идеального детектора при разметке, известной с точностью ±a пикселей по каждой стороне. Геометрия рамок взята из нашей выборки, модель тут ни при чем. При реалистичных для мелкой цели двух пикселях неопределенности потолок в первом диапазоне равен 0,508 — то есть значение строгой метрики около 0,5 на таких целях может означать безупречную работу детектора.

Отсюда два практических вывода. Первый: сравнивать по строгой метрике модели, которые работают на мелких целях, бессмысленно без оценки шума разметки — разница между 0,45 и 0,50 может целиком лежать внутри неопределенности эталона. Второй: требование «mAP@0,5:0,95 не ниже 0,8» в техническом задании на систему обнаружения мелких целей физически невыполнимо и говорит только о том, что его писали, не проверив арифметику. Ровно та же проблема известна в академической литературе: ошибки разметки в тестовых наборах сдвигают ранжирование моделей и делают сравнение по третьему знаку бессмысленным [31].

глава 9

Диапазоны COCO: почему 32 и 96 пикселей не про ваш объект

Вся содержательная часть задачи наблюдения лежит внутри первой группы

В отчетах часто встречаются строки AP_small, AP_medium, AP_large — разрез по размеру, который вроде бы и требуется. Границы этих групп заданы набором COCO: мелким считается объект площадью меньше 32² пикселей, крупным — больше 96² [8]. Границы разумны для набора фотографий бытовых сцен, где типичный кадр 640×480, а типичный объект занимает заметную часть кадра.

В задаче наблюдения эта сетка бесполезна. В нашей выборке в группу «мелкие» по COCO попадает 848 целей из 2 245 — 37,8 % выборки, и внутри этой группы лежит весь интересный диапазон: от восьми пикселей, где не видит никто, до тридцати двух, где все работает уверенно. Одно число по всей группе усредняет эти два режима и показывает нечто среднее, к чему нельзя привязать ни одну дальность. Наборы, собранные специально под мелкие цели, эту границу и двигают: в них вводят собственные градации вплоть до «крошечных» объектов в единицы пикселей [47, 48].

группаграницыцелей в нашей выборкедоля
small (COCO)площадь < 32²84837,8 %
medium (COCO)32² … 96²83637,2 %
large (COCO)> 96²56125,0 %
наша сетка6 диапазонов от 16 до 96 pxпо 83…561 в диапазонесм. главу 5
Сравнение сеток. Практический смысл имеет не согласие со стандартом соревнования, а привязка границ к дальностям объекта: диапазон должен соответствовать участку трассы, на котором система обязана видеть цель.

Правильная сетка строится с другого конца. Берется техническое задание: рубеж обнаружения, тип цели, ее физический размер. Через оптику камеры (глава 23) размер переводится в пиксели на каждой дальности. Границы диапазонов ставятся на дальностях, которые заказчик считает разными по смыслу: дальний рубеж предупреждения, рабочая зона, ближняя зона. Дальше метрики считаются в этих диапазонах — и каждая строка отчета соответствует строке технического задания.

глава 10

Что на самом деле показывает разрыв между mAP@0,5 и mAP@0,5:0,95

Две метрики отвечают на разные вопросы, а их отношение — индикатор качества рамки

Разность двух стандартных метрик содержит информацию, которую обе они по отдельности скрывают. Мягкая метрика измеряет в основном факт обнаружения, строгая — качество локализации. Их отношение показывает, насколько аккуратно детектор рисует рамку, когда цель найдена.

диапазон, pxAP@0,5AP@0,5:0,95отношение
меньше 160,5190,1630,31
16–240,8240,3640,44
24–320,9390,4920,52
32–480,8860,5340,60
48–960,9540,6880,72
96 и больше0,9610,7480,78
вся выборка0,9030,5750,64
Наш замер, сборка primary_512, отложенная выборка 2 200 кадров. Отношение строгой метрики к мягкой падает с 0,78 на крупных целях до 0,31 на мелких. Часть этого падения — реальная работа детектора, часть — геометрический потолок из главы 8. Разделить их можно только измерением шума разметки.

Практический смысл этой таблицы такой. Если система строит траекторию и оценивает дальность по размеру рамки, качество локализации важно, и строгая метрика имеет смысл — но только в разрезе по размеру и с поправкой на потолок. Если система поднимает тревогу по факту появления объекта, качество рамки за пределами «попал в цель» не нужно вовсе, и строгая метрика в приемке становится источником ложных отказов: подрядчика штрафуют за то, что заказчику не пригодится.

Часть III

Замер: что видно в разрезе по размеру

Девять сборок прогнаны по одной и той же отложенной выборке, метрики пересчитаны по шести диапазонам размера цели и приведены к общему бюджету ложных срабатываний. Результат: сборка с лучшей строгой метрикой пропускает мелких целей вдвое больше, чем сборка, стоящая по этой метрике пятой, а при жестком бюджете ложных — вообще все.

глава 11

Метод пересчета

Разрез по размеру нельзя сделать фильтрацией — нужна семантика игнорирования

Наивный способ посчитать метрику по диапазону размеров — выкинуть из разметки все цели другого калибра и прогнать обычную процедуру. Способ неверный: детекции на выкинутых целях превратятся в ложные срабатывания и обрушат точность в диапазоне, к которому они не имеют отношения. В наборе COCO эта проблема решена введением третьего состояния: цель вне диапазона помечается как игнорируемая, детекция, сопоставленная такой цели, выбрасывается из подсчета вместо того, чтобы стать ложной [8].

  • Сопоставление считается один раз на полной разметке, жадно по убыванию уверенности, отдельно для каждого из десяти порогов IoU.
  • Цели вне диапазона размеров помечаются игнорируемыми; число целей в знаменателе полноты берется только по диапазону.
  • Детекция, сопоставленная игнорируемой цели, выбрасывается из списка. Детекция, никому не сопоставленная, штрафуется как ложная только если ее собственный размер попадает в диапазон.
  • По оставшемуся списку строится кривая «полнота — точность», считается AP по 101 точке, дальше усреднение по десяти порогам.
python
in_range_gt = (gt_size >= lo) & (gt_size < hi)
in_range_dt = (dt_size >= lo) & (dt_size < hi)
n_gt = in_range_gt.sum()          # знаменатель полноты

for di in range(len(dets)):       # dets отсортированы по убыванию conf
    gi = assign[di]               # индекс сопоставленной цели или -1
    if gi >= 0:
        tp[di] = in_range_gt[gi]  # верное — только если цель нашего калибра
        ignore[di] = not in_range_gt[gi]
    else:
        ignore[di] = not in_range_dt[di]   # чужой калибр — не наш штраф

keep = ~ignore
ctp, cfp = np.cumsum(tp[keep]), np.cumsum(~tp[keep])
recall, precision = ctp / n_gt, ctp / (ctp + cfp)
Ядро пересчета. Полный скрипт вместе с прогоном предсказаний приведен в главе 28: он работает с сохраненным файлом детекций и не требует ни модели, ни ускорителя.

Проверка кода на согласие с внешним инструментом обязательна. Наши значения по всей выборке без разбиения совпадают с тем, что дает штатная процедура валидации инструмента обучения [7], в пределах третьего знака; расхождения того же порядка известны и между разными реализациями AP [14, 15] и объясняются мелкими различиями в интерполяции и в обработке одинаковых уверенностей. Для приемки это означает простую вещь: если два отчета расходятся в третьем знаке — они не расходятся.

глава 12

Главная таблица работы

Одна цифра в акте против шести цифр, которые описывают поведение системы

Ниже — полнота девяти прогонов по шести диапазонам размера цели. Порог уверенности у каждой сборки свой и подобран так, чтобы все они выдали одинаковое число ложных срабатываний: сто на 2 200 кадров. Почему сравнивать иначе нельзя, разобрано в главе 14; пока достаточно того, что при равном бюджете ложных строки таблицы сравнимы между собой.

прогонпорог<16 px16–2424–3232–4848–96≥96все
primary 5120,3830,4340,7700,9000,8170,9410,9480,868
primary 6400,4530,5540,8400,9310,8540,9230,9390,890
primary 9600,6170,6870,8540,9190,8660,8900,8980,880
robust pr 9600,2490,8310,8950,9410,8930,9230,9040,908
high recall 9600,2310,8190,8890,9530,8950,9130,9090,909
localize 9600,2410,7470,8720,9220,8760,8870,8820,883
low fp 9600,2200,8550,9010,9450,9070,9250,8860,910
hailo s 6400,3130,6510,8660,9500,9220,8570,8840,887
clean default 6400,3790,5780,7490,8150,7200,7860,7360,754
Наш замер: полнота по диапазонам размера цели при общем бюджете в 100 ложных срабатываний на 2 200 кадров. Последний столбец — то, что обычно и попадает в отчет. Разброс в нем от 0,754 до 0,910, разброс в первом столбце — от 0,434 до 0,855, то есть вдвое. Все различия, которые имеют значение на объекте, живут в первых двух столбцах и в итоговом усредняются почти в ноль.
ПОЛНОТА ПО РАЗМЕРУ ЦЕЛИ ПРИ РАВНОМ БЮДЖЕТЕ ЛОЖНЫХ (100 НА 2 200 КАДРОВ)0,40,60,81<1616–2424–3232–4848–96≥96low fp 960primary 960primary 512СПРАВА ВСЕ СБОРКИ ОДИНАКОВЫ. ВСЯ РАЗНИЦА, КОТОРАЯ ЗНАЧИТ ЧТО-ТО НА ОБЪЕКТЕ, — В ЛЕВОЙ ТРЕТИГОРИЗОНТАЛЬНАЯ ОСЬ — КОРЕНЬ ИЗ ПЛОЩАДИ ЦЕЛИ В ПИКСЕЛЯХ ИСХОДНОГО КАДРА
Рис. 3. Те же данные в виде кривых обнаружения. По горизонтали — размер цели в пикселях исходного кадра, по вертикали — доля найденных целей при равном бюджете ложных. Кривые расходятся веером слева и сходятся справа: на крупных целях все сборки одинаковы, и вся разница между ними — в левой трети графика, которую усредненная метрика взвешивает по числу целей, а не по их важности.

Читать таблицу надо построчно и с объектом в голове. Сборка primary 512 — это рабочий вариант под edge-ускоритель, тот самый, который поедет на объект. Ее полнота по всей выборке 0,868 выглядит приемлемо. Ее же полнота на целях мельче шестнадцати пикселей — 0,434: каждая вторая такая цель проходит мимо. Если объект требует раннего обнаружения на дальнем рубеже, где цель как раз и занимает десять-пятнадцать пикселей, эта сборка задачу не решает, и в отчете об этом нет ни слова.

прогон<16 px16–2424–3232–4848–96≥96все
primary 5120,1630,3640,4920,5340,6880,7480,575
primary 6400,2200,4480,5580,6020,7170,7500,618
primary 9600,3450,5050,6030,6420,7180,6960,630
robust pr 9600,3000,4580,5380,5630,6320,6340,540
high recall 9600,3610,5210,6020,6340,7240,7250,614
localize 9600,3870,5290,6230,6440,7080,6940,627
low fp 9600,3220,4870,5710,6040,6780,6630,576
hailo s 6400,1920,4140,5370,5400,6150,6000,511
clean default 6400,1880,3590,4820,5100,6260,6260,500
Строгая метрика AP@0,5:0,95 в тех же разрезах. Сравните первый столбец с потолком из главы 8: при неопределенности разметки в два пикселя идеальный детектор получил бы здесь 0,508. Значения 0,32–0,39 в этом свете означают уже не «модель плохая», а «метрика уперлась в эталон».
глава 13

Инверсия: три метрики — три разных победителя

Лучшая по строгой метрике сборка пропускает мелких целей вдвое больше пятой

Теперь главное. Возьмем те же девять прогонов и проранжируем их тремя способами: по мягкой метрике, по строгой и по доле найденных мелких целей на равном бюджете ложных. Если бы усредненные метрики предсказывали поведение системы, три ранжирования были бы согласованы. Они не согласованы.

прогонmAP@0,5место по мягкойmAP@0,5:0,95место по строгойполнота <16 pxместо по мелким
low fp 9600,94110,57650,8551
high recall 9600,94120,61440,8193
robust pr 9600,93830,54070,8312
localize 9600,93140,62720,7474
primary 9600,92750,63010,6875
primary 6400,92660,61830,5548
hailo s 6400,91670,51180,6516
primary 5120,90380,57560,4349
clean default 6400,86890,50090,5787
Наш замер. Три колонки мест — три разных порядка. Сборка robust pr 960 стоит седьмой из девяти по строгой метрике и второй по доле найденных мелких целей. Сборка primary 960 — первая по строгой метрике и пятая по мелким целям. Разность строгой метрики между ними 0,090 в пользу primary, разность полноты на мелких целях — 0,144 в пользу robust pr.

Переведем это в язык объекта. Сборка-победитель по строгой метрике пропускает 31,3 % целей мельче шестнадцати пикселей. Сборка, стоящая по той же метрике пятой, пропускает 14,5 %. Это разница в 2,2 раза по числу пропущенных целей — при том, что по метрике, записанной в акт, первая сборка лучше. Заказчик, выбравший модель по цифре из отчета, получит вдвое больше пропусков ровно там, где система и должна работать.

Жесткий бюджет ложных доводит эффект до предела. Сузим бюджет с ста ложных до десяти на 2 200 кадров — это все еще много по меркам объекта, но уже похоже на рабочий режим. Порог у каждой сборки поднимется, и полнота на мелких целях рассыпется по-разному.

прогонбюджет 10 ложных30100300
primary 960 (лидер по mAP)0,0000,1690,6870,843
robust pr 9600,5540,7230,8310,831
low fp 9600,4100,6990,8550,880
high recall 9600,4700,6140,8190,867
localize 9600,2290,3980,7470,867
primary 5120,0240,2530,4340,482
Полнота на целях мельче 16 пикселей при разных бюджетах ложных срабатываний на 2 200 кадров — наш замер. При бюджете в десять ложных лидер по строгой метрике не находит ни одной мелкой цели, а сборка, стоящая по метрике седьмой, находит больше половины. Ни одна усредненная метрика этого не показывает, потому что усреднение идет по всем порогам сразу, включая те, на которых система никогда не работает.

Тезис главы формулируется коротко. Средняя точность ранжирует модели по тому, как они ведут себя в среднем по всем режимам, включая нерабочие. Объект ранжирует модели по тому, как они ведут себя в одной точке: на его дальности, при его бюджете ложных. Эти два порядка не обязаны совпадать, и на наших данных они не совпадают.

глава 14

Порог 0,25 по умолчанию: сравнение калибровок вместо детекторов

На одном и том же пороге девять сборок дают от 87 до 428 ложных

Стандартная ошибка сравнения: взять две модели, прогнать обе на пороге уверенности 0,25 — значение по умолчанию в инструментах — и сравнить полученные полноту и точность. Ошибка в том, что уверенность моделей не откалибрована и не обязана быть сравнимой: одна и та же цифра 0,25 у двух сборок означает разную готовность срабатывать [40, 41].

прогонполнотаточностьложных на 2 200 кадровпорог для 100 ложных
primary 5120,8820,9211700,383
primary 6400,9120,8992290,453
primary 9600,9290,8304280,617
robust pr 9600,9080,954990,249
high recall 9600,9050,958890,231
localize 9600,8770,954940,241
low fp 9600,9010,959870,220
hailo s 6400,9140,9291580,313
clean default 6400,8220,8732690,379
Наш замер на общем пороге 0,25. Число ложных различается в пять раз — от 87 до 428. Последний столбец показывает, насколько по-разному сборки калиброваны: чтобы выдать одинаковые сто ложных, одной нужен порог 0,22, другой 0,62. Сравнение на общем пороге — это сравнение калибровок.

Правильная процедура обратная. Сначала назначается бюджет ложных — величина, которая берется из регламента дежурной смены, а не из свойств модели. Потом для каждой сборки подбирается порог, который в этот бюджет укладывается. И только потом на этом пороге измеряется полнота, в разрезе по размеру цели. Такое сравнение отвечает на вопрос заказчика: при одинаковой нагрузке на оператора какая сборка видит больше.

θ* = min { θ : FP(θ) ≤ B } сравнение сборок по R_d(θ*) при общем B

где θ — порог уверенности; FP(θ) — число ложных на приемочной выборке; B — назначенный бюджет ложных; R_d — полнота в диапазоне размеров d

(4)
Формулировка ровно та же, что в теории обнаружения сигналов: рабочая точка выбирается по допустимой частоте ложных тревог, и уже на ней сравнивается вероятность правильного обнаружения [42]. В машинном зрении это правило регулярно забывают, потому что инструмент по умолчанию печатает метрику, усредненную по всем порогам.
глава 15

Разрешение входа: один вес — три разных детектора

Полнота на мелких целях меняется в полтора раза, средняя метрика — на пять процентов

Три первых строки главной таблицы — это один и тот же файл весов, прогнанный на трех разрешениях входа: 512, 640 и 960 пикселей. Ни одного параметра модели между прогонами не менялось. Разница между строками — это цена решения, которое обычно принимается на уровне конфигурационного файла и в отчет не попадает вовсе.

входmAP@0,5mAP@0,5:0,95полнота <16 pxполнота 16–24полнота, вся выборка
5120,9030,5750,4340,7700,868
6400,9260,6180,5540,8400,890
9600,9270,6300,6870,8540,880
Один и тот же вес на трех разрешениях входа, равный бюджет ложных. Средняя метрика между 640 и 960 практически не меняется (0,618 против 0,630), а полнота на мелких целях растет с 0,554 до 0,687 — на четверть. По итоговой строке эти две сборки неразличимы, по рабочему диапазону — это разные системы.

Обратная сторона видна там же. Полнота на крупных целях у входа 960 ниже, чем у 512 (0,898 против 0,948), и это не парадокс: при равном бюджете ложных сборке с большим входом достался более высокий порог, потому что мелких ложных срабатываний у нее больше. Плюс к тому кадр в 960 пикселей стоит дороже по вычислениям — а бюджет узла конечен, и цена этого решения разобрана в отдельной работе о бюджете FPS. Разрешение входа — это не настройка качества, а обмен: полнота на мелких целях покупается кадрами в секунду и порогом.

глава 16

Сколько пикселей на самом деле видит сеть

Кривые обнаружения трех разрешений совпадают, если считать размер цели на входе

У предыдущей главы есть объяснение, и оно снимает половину мистики вокруг выбора модели. Кадр перед подачей в сеть масштабируется до квадрата фиксированной стороны. Кадр 1920×1080 при входе 640 сжимается в три раза: цель в двадцать пикселей превращается в шесть с половиной. При входе 960 — в десять. Сеть работает не с тем размером, который записан в разметке, а с эффективным.

s_eff = s_src · L / max(W, H) s_eff < stride ⇒ у цели нет своей ячейки на самом мелком уровне признаков

где s_src — размер цели в пикселях исходного кадра; L — сторона входа сети; W, H — размеры кадра; stride — шаг сетки признаков (у типового детектора самый мелкий уровень имеет шаг 8)

(5)
Отсюда сразу видно, где проходит физическая граница. При входе 640 и кадре 1080p восьмипиксельная ячейка сетки соответствует 24 пикселям исходного кадра. Цель мельче этого размера попадает целиком внутрь одной ячейки самого подробного уровня, и ее обнаружение держится на соседних активациях, а не на собственном отклике [43, 45].

Проверим это на своих данных. Пересчитаем размер каждой цели в пиксели входа и построим полноту не по исходному размеру, а по эффективному — для тех же трех прогонов одного веса.

эффективный размер, pxвход 512вход 640вход 960
меньше 40,456 (57)0,588 (17)— (0)
4–60,720 (293)0,664 (119)0,706 (17)
6–80,875 (368)0,841 (277)0,703 (64)
8–120,840 (424)0,905 (558)0,846 (332)
12–160,922 (153)0,866 (201)0,918 (413)
16–240,915 (177)0,928 (208)0,864 (346)
24 и больше0,944 (773)0,928 (865)0,895 (1073)
Полнота по эффективному размеру цели при равном бюджете ложных; в скобках — число целей в клетке. Три столбца, которые в предыдущей таблице отличались в полтора раза, здесь совпадают в пределах разброса. Вывод: увеличение входа не делает детектор лучше — оно перекладывает цели из левых строк таблицы в правые.
ПО РАЗМЕРУ В КАДРЕ — ТРИ РАЗНЫХ ДЕТЕКТОРА0,40,60,81<1616–2424–3232–4848–96≥96960640512ПО РАЗМЕРУ НА ВХОДЕ СЕТИ — ОДНА КРИВАЯ0,40,60,814–66–88–1212–1616–24≥24960640512ОДИН И ТОТ ЖЕ ФАЙЛ ВЕСОВ, ТРИ РАЗРЕШЕНИЯ ВХОДА, РАВНЫЙ БЮДЖЕТ ЛОЖНЫХ. НАШ ЗАМЕРРАЗРЕШЕНИЕ ВХОДА — КОЭФФИЦИЕНТ ПЕРЕСЧЕТА МЕЖДУ ОСЯМИ, А НЕ СВОЙСТВО МОДЕЛИ
Рис. 4. Тот же результат в виде схемы. Слева — три кривые обнаружения по размеру цели в исходном кадре, они расходятся. Справа — те же три кривые по эффективному размеру на входе сети, они ложатся друг на друга. Разрешение входа не свойство модели, а коэффициент пересчета между двумя осями.

Практический вывод отсюда прямой и денежный. Если цель на рабочей дальности дает меньше шести-восьми пикселей на входе сети, спорить о моделях бессмысленно: различия между сборками в этой зоне меньше, чем разброс замера. Работают три рычага, и все они лежат вне модели — оптика с большим фокусным расстоянием, разрешение входа и нарезка кадра на перекрывающиеся фрагменты с прогоном каждого отдельно [49, 50]. Со стороны обучения к ним добавляется работа с составом выборки: мелкие цели в наборах редки, и их долю поднимают специальными аугментациями [51]. Нарезка кадра увеличивает эффективный размер цели в разы, стоит ровно во столько же раз дороже по вычислениям и в отчетах о метриках обычно не упоминается вовсе.

Часть IV

Когда разница есть, а когда показалось

Метрика без интервала — это мнение. Часть пересчитывает тот же замер бутстрепом по кадрам, показывает, что разница в третьем знаке mAP статистически не существует, а разница в полноте на мелких целях существует и направлена в другую сторону; считает, сколько целей нужно, чтобы отличить 0,90 от 0,93, и разбирает две ловушки приемочной выборки — кластеризацию кадров и утечку теста.

глава 17

Бутстреп по кадрам: интервал вместо цифры

Разница 0,003 по mAP переворачивается в каждом седьмом ресемпле

Любая метрика, посчитанная на конечной выборке, — случайная величина. Другая выборка того же объема даст другое число, и вопрос только в том, насколько другое. Оценить это можно, не собирая вторую выборку: бутстреп берет исходную с возвращением, пересчитывает метрику и повторяет процедуру сотни раз [21, 22]. Единица ресемплирования — кадр, а не цель: цели внутри кадра зависимы.

прогонmAP@0,5:0,9595 % интервал метрикиполнота <24 px95 % интервал полноты
primary 5120,5750,561 … 0,5860,7050,662 … 0,746
primary 6400,6200,606 … 0,6310,7850,747 … 0,820
primary 9600,6300,619 … 0,6430,8210,779 … 0,852
robust pr 9600,5410,531 … 0,5530,8840,853 … 0,912
high recall 9600,6140,603 … 0,6250,8760,848 … 0,906
localize 9600,6270,615 … 0,6390,8470,811 … 0,882
low fp 9600,5760,565 … 0,5880,8910,859 … 0,916
hailo s 6400,5110,501 … 0,5220,8220,785 … 0,857
clean default 6400,5010,490 … 0,5130,7150,673 … 0,756
Наш замер, 300 ресемплов по кадрам. Ширина интервала для строгой метрики около 0,024, для полноты на мелких целях — около 0,07. Отсюда рабочее правило: разница в mAP меньше 0,02 на выборке такого объема ничего не значит, а разница в полноте на мелких целях меньше 0,06 требует проверки парным сравнением.
mAP@0,5mAP@0,5:0,95полнота <16 pxlow fp 960high recall 960robust pr 960localize 960primary 960primary 640hailo s 640primary 512clean default 640НАШ ЗАМЕР. ЛИДЕР ПО СТРОГОЙ МЕТРИКЕ — ПЯТЫЙ ПО МЕЛКИМ ЦЕЛЯМ, СЕДЬМОЙ ПО МЕТРИКЕ — ВТОРОЙ ПО МЕЛКИМ
Рис. 5. Ранжирование девяти прогонов по трем метрикам: мягкой, строгой и по доле найденных мелких целей при равном бюджете ложных. Линии, соединяющие один и тот же прогон в трех колонках, пересекаются: порядок, который дает усредненная метрика, и порядок, который важен на объекте, — разные порядки. Данные из глав 12 и 13.

Сравнивать интервалы «на глаз» по их пересечению неправильно: две метрики, посчитанные на одной и той же выборке, коррелированы, и парная разность имеет интервал уже, чем каждая из них по отдельности. Это то же соображение, из-за которого в сравнении алгоритмов обучения требуют парных схем и поправок на множественность [26, 27]. Правильный способ — ресемплировать кадры один раз и считать обе сборки на одном и том же ресемпле, а интервал строить для разности.

параΔ mAP@0,5:0,95интервал разности метрикP(первая лучше по метрике)Δ полнота <24 pxинтервал разности полнотP(первая лучше по полноте)
primary 960 − localize 960+0,003−0,003 … +0,0090,87−0,025−0,041 … −0,0090,00
primary 960 − low fp 960+0,054+0,046 … +0,0631,00−0,069−0,097 … −0,0440,00
primary 960 − robust pr 960+0,090+0,081 … +0,0991,00−0,060−0,090 … −0,0350,00
high recall 960 − low fp 960+0,038+0,032 … +0,0441,00−0,015−0,033 … +0,0040,04
Парный бутстреп, 300 ресемплов, один и тот же набор кадров для обеих сборок каждого сравнения. Первая строка — та самая ситуация, ради которой все и затевалось: разница в средней точности недостоверна (в 13 ресемплах из 100 победитель меняется), а разница в полноте на мелких целях достоверна и направлена в противоположную сторону.

Отдельно стоит помнить про источники разброса, которых бутстреп по тестовой выборке не видит вовсе: случайная инициализация, порядок данных, аугментации и выбор контрольной точки. Их вклад в машинном обучении измеряли неоднократно, и он сопоставим с разницей между «улучшениями», о которых пишут статьи [28]. Практическое следствие для приемки: сборка, повторно обученная на тех же данных, даст другие цифры, и договор должен фиксировать конкретный файл весов с контрольной суммой, а не «модель».

глава 18

Сколько целей нужно, чтобы отличить 0,90 от 0,93

Тысяча триста пятьдесят пять — и это в каждой из двух групп

Приемочные требования почти всегда формулируются в долях: полнота не ниже такой-то. У доли, измеренной на n целях, есть неопределенность, и она считается элементарно [23, 24]. Ниже — интервалы Уилсона для типичных объемов, с которыми приходят на приемку.

целей в проверкеизмеренная полнота95 % интервалширина
200,9000,699 … 0,9720,273
500,9000,786 … 0,9570,170
83 (наш диапазон <16 px)0,8550,764 … 0,9150,151
343 (наш диапазон 16–24 px)0,9010,865 … 0,9280,064
2 245 (вся наша выборка)0,9100,897 … 0,9210,024
Расчет по формуле Уилсона; для малых объемов и долей у границы диапазона строже считать точным биномиальным интервалом [25]. Приемка, на которой показали двадцать целей и полноту 0,9, доказывает только то, что истинная полнота лежит где-то между 0,70 и 0,97. Требование «не ниже 0,85» такой проверкой не подтверждается и не опровергается.
n ≈ ( z_{1−α/2} · √(2 p̄ q̄) + z_{1−β} · √(p₁q₁ + p₂q₂) )² / (p₁ − p₂)²

где p₁, p₂ — сравниваемые доли; p̄ — их среднее; q = 1 − p; z — квантили нормального распределения; α = 0,05, β = 0,2 (мощность 80 %)

(6)
Формула объема выборки для сравнения двух долей. Знаменатель — квадрат разности, поэтому цена различения растет квадратично: отличить 0,90 от 0,95 вчетверо дешевле, чем 0,90 от 0,93.
надо отличитьцелей в каждой группе
0,50 от 0,60387
0,85 от 0,90686
0,90 от 0,95434
0,90 от 0,931 355
0,95 от 0,971 506
Расчет по формуле (6) при мощности 80 %. Строка «0,90 от 0,93» объясняет, почему почти все приемочные сравнения двух подрядчиков статистически пусты: чтобы разница такого размера была доказана, нужно больше тысячи целей в каждом диапазоне размеров, а приносят обычно сотню кадров всего.

Тот же расчет применяется к бюджету ложных, только с другой стороны. Чтобы подтвердить требование «не более одной ложной тревоги в час на камеру» при пяти детекциях в секунду, нужна выборка фона объемом порядка ста тысяч кадров: даже полное отсутствие ложных на 2 200 кадрах дает верхнюю границу всего лишь около двадцати пяти тревог в час (глава 21). Приемочная выборка обязана содержать часы записи фона, а не только кадры с целями.

глава 19

Две тысячи кадров одного ролика стоят десяти сцен

Проверять выборку на кластеризацию надо до того, как считать по ней метрики

Расчеты предыдущей главы верны при одном условии: наблюдения независимы. Кадры видеопотока независимыми не бывают. Соседние кадры отличаются на доли секунды: та же цель, тот же фон, тот же ракурс, та же экспозиция. Если детектор ошибся на одном, он ошибется и на девяти следующих. Формально это эффект кластеризации, и он уменьшает эффективный объем выборки во столько раз, какова средняя длина серии [34].

n_эфф ≈ n / (1 + (m − 1) · ρ)

где n — число кадров; m — средняя длина серии из одного ролика; ρ — внутрисерийная корреляция результата

(7)
При m = 100 кадров подряд и ρ = 0,9 выборка из 2 000 кадров имеет эффективный объем около 22. Все интервалы, посчитанные по формулам главы 18 в предположении независимости, окажутся при этом уже реальных примерно в девять раз.

Проверить это в своей выборке можно за минуту и без всякой теории: взять соседние по времени кадры и посмотреть, насколько совпадают положения целей. Мы проверили свою: из 2 199 соседних пар только у 25 разметочные рамки перекрываются больше чем наполовину — 1,1 %. Средняя длина серии 1,01 кадра, максимальная 2. Тестовая часть используемого набора собрана из разных сцен и прорежена, поэтому интервалы предыдущей главы для нее корректны.

python
pairs = hits = 0
for a, b in zip(frames, frames[1:]):
    if not (a.boxes and b.boxes and a.shape == b.shape):
        continue
    pairs += 1
    hits += iou(a.boxes[0], b.boxes[0]) > 0.5
print(hits / pairs)   # наша выборка: 0.011
Проверка выборки на кластеризацию. Считается доля соседних кадров, у которых цели стоят практически на одном месте. Больше десяти процентов — интервалы, посчитанные как для независимых наблюдений, занижены, и объем выборки надо пересматривать.

Отсюда же следует правило разбиения данных, которое нарушают чаще всего. Делить набор на обучение и тест надо по роликам и по сценам, а не по кадрам. Случайное разбиение по кадрам кладет соседние кадры одного ролика по обе стороны границы, и тест перестает быть тестом: модель видела почти те же изображения [32, 33]. Метрики после такой ошибки завышаются на десятки процентных пунктов и не воспроизводятся на объекте — это и есть самый частый механизм «на стенде работало».

глава 20

Утечки: почему на стенде было 0,95

Шесть механизмов, каждый из которых дает завышение без единой подтасовки

Разрыв между стендовыми и объектовыми метриками почти никогда не создается умышленно. Он собирается из механизмов, каждый из которых по отдельности выглядит как разумное инженерное решение [32].

разбиение по кадрам
соседние кадры одного ролика попадают и в обучение, и в тест. Самый частый и самый мощный механизм; лечится разбиением по роликам и по сценам.
дубликаты и почти-дубликаты
один и тот же кадр присутствует в наборе дважды после сборки из нескольких источников. Лечится дедупликацией по перцептивному хешу до разбиения.
подбор по тесту
порог, разрешение входа, параметры подавления дублей и выбор контрольной точки подобраны по тестовой выборке. Формально тест в обучении не участвовал, фактически по нему принято двадцать решений. Лечится третьей, запечатанной выборкой.
выбор лучшей эпохи по тесту
частный случай предыдущего и самый незаметный: контрольная точка «best» выбирается по метрике на той же выборке, на которой потом отчитываются. Дает завышение на несколько процентных пунктов автоматически.
тест из того же дня и той же камеры
формально независимая выборка, фактически те же условия освещения, тот же фон, тот же ракурс. Метрика описывает один день, а не систему.
фильтрация трудных кадров
из выборки исчезли кадры, где цель плохо видна, — как «плохо размеченные». Механизм особенно коварен тем, что удаляются именно те случаи, ради которых система и покупалась.

Отдельного упоминания стоит эффект, который в машинном обучении померили прямо: модели, отобранные по одному и тому же тестовому набору годами, теряют часть качества на свежесобранном наборе из того же распределения [29]. Приемочная выборка стареет по той же причине, и это аргумент против ее повторного использования.

Заказчику из этого списка нужен один вывод: тестовая выборка, которую собирал подрядчик, не может служить основанием приемки — независимо от добросовестности подрядчика. Приемочная выборка собирается заказчиком или третьей стороной, запечатывается до начала работ и открывается один раз. Как это организовать технически, разобрано в главе 27.

Мы обнаружили ошибки разметки в тестовых частях распространенных наборов данных, и их достаточно, чтобы менялся порядок моделей в рейтинге.

изложение результата работы об ошибках в тестовых наборах [31]
Часть V

Метрики, которые предсказывают поведение

Полнота и точность на кадре — промежуточные величины. Заказчик живет в единицах смены: ложных тревог в час, пропущенных событий за месяц, секунд до тревоги, метров до рубежа. Часть строит переход от покадровых метрик к этим величинам и показывает, что по дороге меняется все, включая ответ на вопрос, какая сборка лучше.

глава 21

Ложные тревоги в единицах дежурной смены

Точность 0,96 на кадре означает четыре тысячи ложных тревог в час на камеру

Самый недооцененный переход в приемке — из долей в события за час. Доля ложных срабатываний на кадре выглядит безобидно, пока не умножена на частоту вызова детектора. Наш рабочий бюджет в сто ложных на 2 200 кадров — это 0,045 ложных срабатываний на кадр.

F_час = q · f_det · 3600 q = FP / N_кадров

где q — доля кадров с ложным срабатыванием; f_det — частота вызова детектора, детекций в секунду на камеру; F_час — ложных тревог в час на камеру

(8)
Формула тривиальная, и именно поэтому ее никто не пишет в отчете. Между тем она переводит метрику в единицу, в которой заказчик принимает решение: сколько раз за смену оператор посмотрит на пустой экран.
бюджет ложных на 2 200 кадровдоля на кадрпри 25 детекциях/спри 5 детекциях/с
1000,04554 091 в час818 в час
300,01361 227 в час245 в час
100,0045409 в час82 в час
10,0004541 в час8 в час
0 (не наблюдалось)не больше 0,0014не больше 123 в часне больше 25 в час
Расчет по формуле (8) для нашей выборки. Последняя строка — верхняя граница по правилу трех: если на 2 200 кадрах не встретилось ни одного ложного срабатывания, с доверием 95 % частота не выше 3/2200 на кадр. То есть выборка в две тысячи кадров в принципе не способна подтвердить требование «не более одной ложной тревоги в час».

Числа в правой части таблицы объясняют, почему системы, сданные по метрикам, потом выключают. Точность 0,96 на кадре звучит отлично и означает четыре тысячи ложных тревог в час на одну камеру при покадровой обработке. Оператор, получивший такой поток, отключает уведомления в первый же день — и дальше система работает как видеорегистратор, для которого нейросеть не нужна. На сильно несбалансированных потоках именно кривая «полнота — точность» описывает поведение честнее любой усредненной величины [35, 36, 37], а выбор рабочей точки на ней делается по стоимости ошибок обоих видов [38, 39].

Из таблицы следует и требование к объему приемочной выборки. Чтобы уверенно измерить частоту порядка одной ложной тревоги в час при пяти детекциях в секунду, нужна выборка порядка сотни тысяч кадров фона — это примерно пять часов записи с одной камеры при децимации. Такая выборка собирается за один день и стоит несопоставимо меньше, чем месяц спора после запуска. Арифметика объема разобрана в главе 18.

глава 22

От кадра к событию: правило N из M

Событийная метрика лечит и пропуски, и ложные, но не так сильно, как кажется

Ни одна система наблюдения не поднимает тревогу по одному кадру. Между детектором и оператором стоит логика подтверждения: цель считается обнаруженной, если она найдена не менее чем в N кадрах из M подряд, и обычно к этому добавляется трекер, который связывает срабатывания в траекторию [54, 55, 56]. Это меняет обе метрики сразу и в разные стороны: вероятность обнаружить событие растет, вероятность ложной тревоги падает.

P_событие = Σ_{i = N}^{M} C(M, i) · p^i · (1 − p)^{M − i}

где p — вероятность обнаружения цели на одном кадре (наша измеренная полнота в диапазоне размеров); N из M — правило подтверждения; C(M, i) — число сочетаний

(9)
Формула верна только при независимости кадров. Кадры видеопотока независимыми не являются: если цель не видна из-за размера, ракурса или фона, она не видна и в следующем кадре. Поэтому формула дает верхнюю границу, и разрыв между ней и реальностью тем больше, чем ближе кадры друг к другу по времени.
полнота на кадре1 из 32 из 52 из 103 из 10
0,434 (мелкие цели, сборка 512)0,8190,7190,9710,882
0,687 (мелкие цели, сборка 960)0,9690,9641,0000,998
0,855 (мелкие цели, low fp)0,9970,9981,0001,000
Расчет по формуле (9) при допущении независимости кадров. Даже покадровая полнота 0,434 при правиле «2 из 10» дает событийную 0,971 — если кадры независимы. Реальный выигрыш меньше, и насколько именно, определяется корреляцией пропусков во времени, которую надо мерить на видео, а не на выборке отдельных кадров.

Обратная сторона того же правила — подавление ложных. Ложные срабатывания на статичном фоне коррелированы (одна и та же ветка, один и тот же блик), а на движущемся шуме — почти независимы. В независимом приближении при нашем бюджете 0,045 ложных на кадр правило «2 из 5» дает 1,85 · 10⁻² ложных событий на окно, что при пяти окнах в секунду соответствует 333 тревогам в час. Правило «3 из 10» снижает это до 155. Чтобы получить около трех тревог в час, нужен уже покадровый уровень 0,0045 — то есть порог, при котором, судя по главе 13, полнота на мелких целях падает вдвое.

ЧТО СТОИТ МЕЖДУ МЕТРИКОЙ ДЕТЕКТОРА И СОБЫТИЕМ У ОПЕРАТОРАдетекцияна кадреp = 0,43…0,86измереноправилоN из M2 из 5расчеттрекер и длинатраектории≥ 3 точекне измеренофильтр зоныи геометрииполигонне измеренотревогаоператорусобытиеПРИЕМКА, КОТОРАЯ ПРОВЕРЯЕТ ТОЛЬКО ПЕРВОЕ ЗВЕНО, ПРОВЕРЯЕТ ОДНУ ПЯТУЮ СИСТЕМЫКАЖДОЕ ЗВЕНО МЕНЯЕТ ОБЕ ВЕРОЯТНОСТИ: И ОБНАРУЖЕНИЯ, И ЛОЖНОЙ ТРЕВОГИ
Рис. 6. Цепочка, по которой покадровая метрика превращается в событие: детекция на кадре → правило подтверждения N из M → трекер и минимальная длина траектории → фильтр по геометрии и зоне → тревога оператору. Каждое звено меняет обе вероятности, и ни одно из них не описывается метриками детекции. Приемка, которая проверяет только первое звено, не проверяет систему.
глава 23

Пиксели в метры: единственный честный мост к техническому заданию

Дрон 0,3 м на 300 м с объективом 8 мм дает 2,8 пикселя — и это конец разговора о моделях

Все метрики в разрезе по размеру бесполезны, пока размер выражен в пикселях: техническое задание пишут в метрах. Переход между ними задается оптикой и делается в одну строку.

s_px = (f / p) · (S / D)

где s_px — размер цели в пикселях; f — фокусное расстояние объектива, мм; p — размер пикселя матрицы, мм; S — характерный размер цели, м; D — дальность, м

(10)
Отношение f/p — это фокусное расстояние в пикселях; для матрицы 1/2,8 дюйма с пикселем 2,9 мкм и объектива 8 мм оно равно 2 759. Дальше все определяется отношением размера цели к дальности. Никакая модель на эту формулу не влияет.
объективполе зрения100 м200 м300 м500 м1000 м
4 мм≈80°4,1 px2,11,40,80,4
8 мм≈40°8,3 px4,12,81,70,8
16 мм≈20°16,6 px8,35,53,31,7
25 мм≈13°25,9 px12,98,65,22,6
50 мм≈6°51,7 px25,917,210,35,2
100 мм≈3°103,4 px51,734,520,710,3
Расчет по формуле (10): размер цели 0,3 м в пикселях кадра 1920 точек по ширине, матрица 1/2,8 дюйма, пиксель 2,9 мкм. Таблица объясняет, почему разговор про «обнаружение дрона на километре» на широкоугольной камере закрывается до обсуждения нейросети: цель занимает меньше пикселя.

К этой арифметике примыкает многолетний опыт тепловизионной и оптико-электронной разведки. Критерий Джонсона [60] и пришедшие ему на смену модели прицельных задач [62] выражают то же самое в разрешаемых линиях на цель: для обнаружения факта наличия объекта нужно порядка полутора-двух линий на характерный размер, для распознавания типа — вчетверо больше, для идентификации — вдесятеро [61]. В пикселях детектора это переводится в грубое, но полезное правило: обнаружение начинается с единиц пикселей, классификация типа цели требует десятков.

глава 24

Кривая обнаружения по дальности как приемочный документ

Одна таблица, которая заменяет все споры о метриках

Соберем предыдущие главы вместе. Берем измеренную полноту по диапазонам размера (глава 12), переводим размеры в дальности через оптику объекта (глава 23) и получаем документ, который можно приложить к акту: сколько целей система найдет на каждом рубеже при назначенном бюджете ложных тревог.

дальностьразмер целиполнота, сборка 512полнота, сборка low fp 960разница
100 м25,9 px0,9000,945+0,045
150 м17,2 px0,7700,901+0,131
200 м12,9 px0,4340,855+0,421
300 м8,6 pxниже 0,434ниже 0,855не измерено
Пример приемочного документа: объектив 25 мм, кадр 1920 точек, цель 0,3 м, бюджет сто ложных срабатываний на 2 200 кадров. Полнота взята из нашего замера по диапазону, в который попадает цель на этой дальности. Последняя строка честно помечена: в выборке слишком мало целей мельче девяти пикселей, чтобы говорить о числах, и это тоже часть документа.

Такой документ решает сразу три задачи. Заказчик видит, где система работает, а где нет, и может подвинуть рубежи или добавить камеру. Подрядчик получает проверяемое обязательство вместо расплывчатой «точности». Спор о том, кто виноват в пропуске, заменяется вопросом «на какой дальности была цель» — и ответ на него смотрится в таблице.

стенд приемки · наш замер, 2 200 кадроввход 960
сборка
0,25

Значение по умолчанию в инструментах — 0,25. Правильный порядок обратный: порог подбирается под допустимое число тревог.

темп детекции, кадров в секунду на камеру

25 — детекция каждого кадра, 5 — прореживание впятеро, 1 — раз в секунду.

полнота, вся выборка
0,901
ложных на 2 200 кадров
87
тревог в час на камеру
712
полнота по размеру целив скобках — дальность при объективе 25 мм и цели 0,3 м
меньше 16 px(162 м)
0,843 70/83
16–24 px(2 м)
0,892 306/343
24–32 px(1 м)
0,934 394/422
32–48 px(1 м)
0,898 368/410
48–96 px(1 м)
0,915 390/426
96 и больше px(27 м)
0,881 494/561
объектив для пересчета в дальность

Полнота и число ложных — измерены на нашей выборке. Тревоги в час и дальности — расчет: первое умножением на темп детекции, второе по формуле (10) для матрицы 1/2,8 дюйма с пикселем 2,9 мкм и кадра 1920 точек. Дальность в строке соответствует нижней границе диапазона: на ней цель дает ровно столько пикселей.

глава 25

Чего нет ни в одной метрике детекции

Темп, задержка и потерянные кадры не входят в AP, но определяют, увидит ли система цель

Все предыдущее считалось так, будто детектор видит каждый кадр. На объекте это неверно. Узел обрабатывает несколько камер, кадры прореживаются, очередь к ускорителю переполняется, корпус греется и снижает темп. Кадр, который не дошел до детектора, в метрике не участвует, а цель на нем была.

темп детекции
сколько раз в секунду детектор реально вызывается по каждой камере. При прореживании вдвое пропущенная на одном кадре цель получает следующий шанс не через 40 мс, а через 80 — и правило N из M растягивается вдвое по времени.
потерянные кадры
доля кадров, выброшенных из переполненной очереди. В метрике детекции они не видны вовсе: их просто нет во входе. На объекте они превращаются в разрывы траектории и в пропущенные быстрые цели.
задержка до события
время от появления цели в кадре до тревоги у оператора: обработка кадра, накопление N подтверждений, подтверждение трекером, доставка события. Складывается в единицы секунд и определяет, успеет ли смена среагировать.
устойчивость темпа
падение частоты обработки после теплового выхода узла на режим. Прямо переводится в пропуски: система, которая на стенде успевала за целью, на крыше в июле успевать перестает.

Все четыре величины меряются на том же стенде, что и метрики качества, и стоят один день. Модель бюджета кадров, разложение конвейера по стадиям и протокол суточного замера у нас вынесены в отдельную работу — ссылка на нее стоит в конце страницы. Здесь важно другое: приемка, которая проверяет только качество детектора, проверяет одну сторону системы из двух, и вторая обычно оказывается той, из-за которой все встало.

Часть VI

Протокол приемки

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

глава 26

Что писать в техническом задании

Требование проверяемо, если из него однозначно следует процедура проверки

Формулировка «точность распознавания не менее 95 %» непроверяема: в ней нет ни величины, ни порога, ни условий, ни выборки. Формально это нарушение самого устройства приемочных испытаний: программа-методика обязана задавать проверяемые показатели и условия их проверки [67], а характеристика качества без метода измерения показателем не является [68]. Для систем машинного обучения существует и профильный стандарт оценки качества классификации [69]. Проверяемое требование содержит пять обязательных частей.

  • Величина с формулой. Полнота обнаружения (доля найденных целей), точность (доля верных срабатываний), частота ложных тревог в час на камеру — с указанием, как считается сопоставление и при каком пороге IoU.
  • Рабочая точка. Порог уверенности фиксируется бюджетом ложных тревог, а не берется по умолчанию: «порог выбирается как минимальный, при котором частота ложных на фоновой части выборки не превышает B».
  • Разрез. Диапазоны дальности или размера цели, для каждого — свое значение требования. Одно число на всю выборку требованием не является.
  • Условия. Время суток, погода, ракурс, тип фона, для каждой тяжелой страты — свой порог или явная оговорка, что она в приемку не входит.
  • Выборка и статистика. Кто собирает, какого объема, как запечатывается, и по какой границе судится результат — по точечной оценке или по нижней границе доверительного интервала.

Обратите внимание на порог сопоставления IoU 0,3 в этой формулировке. Для задачи «поднять тревогу по факту наличия цели» строгие пороги вредны по причинам главы 7: они превращают требование к обнаружению в требование к точности рамки, физически недостижимое на мелких целях. Если системе нужен захват и сопровождение, порог поднимается — но осознанно и с проверкой по таблице потолков из главы 8.

формулировка в ТЗчто с ней не такчем заменить
точность не менее 95 %не указана величина, порог, выборкаполнота по диапазонам при заданном бюджете ложных
mAP не ниже 0,9усредняет ровно те разрезы, которые важныAP@0,5 по каждому диапазону размеров отдельно
mAP@0,5:0,95 не ниже 0,8на мелких целях недостижимо геометрическиполнота и порог IoU, соответствующий задаче
вероятность ложной тревоги не более 5 %проценты от чеголожных тревог в час на камеру и на объект
обнаружение на дальности до 1 кмне проверена оптикарасчет размера цели в пикселях до обсуждения модели
система должна работать в любых условияхнепроверяемоперечень страт с отдельным требованием для каждой
Шесть формулировок, которые встречаются в технических заданиях чаще всего, и чем их заменить. Замена не усложняет договор: она переносит спор из момента приемки в момент подписания, где он стоит на два порядка дешевле.
глава 27

Приемочная выборка

Собирает заказчик, запечатывается до начала работ, открывается один раз

Приемочная выборка — это не «тестовый набор подрядчика». Это отдельный артефакт с собственным жизненным циклом, и его свойства определяют, чего стоит вся приемка.

кто собирает
заказчик или третья сторона, с объекта или с объекта-аналога, на том оборудовании, которое реально будет установлено. Выборка, снятая другой камерой с другой оптикой, проверяет другую систему.
две части
целевая (кадры с целями, стратифицированные по дальности и условиям) и фоновая (часы непрерывной записи без целей). Первая меряет полноту, вторая — частоту ложных. Объемы считаются по главе 18 независимо друг от друга.
стратификация
по дальности или размеру цели, по времени суток, по типу фона, по погоде. В каждой страте — достаточное число целей; страта, в которой их меньше сотни, дает интервал шире 0,15 и требованием быть не может.
запечатывание
выборка размечается, архивируется, считается контрольная сумма архива, сумма фиксируется в протоколе, подписанном обеими сторонами. Подрядчик получает выборку в момент приемки, а не раньше.
открытая часть
10–15 % выборки отдается подрядчику заранее как образец формата и уровня сложности. Это снимает спор «мы не знали, что вы такое будете показывать» и не создает утечки, если открытая часть исключена из подсчета.
срок жизни
выборка одноразовая. После того как по ней принято решение и подрядчик увидел результаты, она становится частью цикла разработки и для следующей приемки не годится.

Отдельный пункт протокола — разметка. Она делается заказчиком по письменной инструкции, в которой описано, что считается целью, как размечать частично видимые объекты, что делать с целями на пределе различимости и как помечаются спорные случаи. Такой документ полезно оформлять по образцу паспорта набора данных: источник, условия съемки, правила разметки, известные ограничения [73]; у сдаваемой модели симметрично запрашивается карточка с условиями применимости [72]. Без инструкции два разметчика дадут разные наборы, и приемка превратится в спор о разметке. Полезно заранее измерить согласие разметчиков на сотне кадров — это дает потолок, выше которого требовать нельзя (глава 8).

глава 28

Процедура на один рабочий день

Прогон, пересчет в разрезах, интервалы, отчет — все с кодом

Процедура, по которой сделана эта работа, укладывается в один день и не требует ничего, кроме ноутбука. Прогон девяти сборок по 2 200 кадрам занял двадцать минут, весь последующий пересчет — секунды.

  • Прогон. Каждая сборка прогоняется по приемочной выборке с низким порогом отсечения (0,001) и сохраняет все рамки с уверенностями в координатах исходного кадра. Порог, поставленный на этом шаге, потом уже не понизить — это единственный необратимый выбор процедуры.
  • Сопоставление. Жадное, по убыванию уверенности, отдельно для каждого нужного порога IoU. Результат сопоставления сохраняется вместе с размером цели, к которой привязана каждая детекция.
  • Разрезы. Полнота и точность считаются по диапазонам размера с семантикой игнорирования из главы 11 и по каждой страте условий.
  • Рабочая точка. По фоновой части выборки подбирается порог под назначенный бюджет ложных; все метрики полноты пересчитываются на этом пороге.
  • Интервалы. Бутстреп по кадрам, 300 и более ресемплов; для сравнения сборок — парный бутстреп на одном и том же ресемпле.
  • Отчет. Таблица «диапазон × метрика» с интервалами, кривая обнаружения по дальности, частота ложных в час, перечень непроверенных условий. Плюс файлы предсказаний как приложение.
python
from ultralytics import YOLO
import json, os

model = YOLO(WEIGHTS)
with open(OUT, "w") as f:
    for i in range(0, len(files), 16):          # пачками, иначе список грузится целиком
        for r in model.predict(files[i:i + 16], imgsz=IMGSZ, conf=0.001,
                               iou=0.7, max_det=100, stream=True, verbose=False):
            f.write(json.dumps({
                "img": os.path.basename(r.path),
                "hw": [int(r.orig_shape[0]), int(r.orig_shape[1])],
                "b": r.boxes.xyxy.cpu().numpy().round(2).tolist(),
                "c": r.boxes.conf.cpu().numpy().round(5).tolist(),
            }) + "\n")
Шаг 1 процедуры целиком. Дальше работает уже только пересчет — ни модели, ни ускорителя он не требует.
python
def conf_for_fp(dets, budget):
    """Минимальный порог, при котором ложных не больше budget."""
    rows = sorted(dets, key=lambda d: -d.conf)   # dets: conf + признак сопоставления
    fp = 0
    for d in rows:
        if not d.matched:
            fp += 1
            if fp > budget:
                return d.conf + 1e-6
    return 0.0

theta = conf_for_fp(background_dets, budget=FP_BUDGET)
recall_by_range = {rng: recall(target_dets, rng, theta) for rng in RANGES}
Шаг 4: подбор рабочей точки под бюджет ложных. Двенадцать строк, которые заменяют весь спор о том, на каком пороге сравнивать сборки.
ПРИЕМОЧНЫЙ ДЕНЬ09:00распечатывание выборкисверка контрольной суммы при обеих сторонах09:30прогон сборокconf ≥ 0,001, все рамки сохраняются в файл11:00сопоставление и разрезыпо диапазонам размера и по стратам условий13:00рабочая точкапорог под бюджет ложных по фоновой части14:30интервалыбутстреп по кадрам, парный — для сравнений16:00протоколтаблицы, кривая по дальности, приложенияПОСЛЕ ШАГА 2 ВСЕ ОСТАЛЬНОЕ ВОСПРОИЗВОДИТСЯ ИЗ СОХРАНЕННЫХ ФАЙЛОВ ЗА СЕКУНДЫ
Рис. 7. Порядок приемочного дня. Запечатанная выборка распаковывается один раз, дальше все шаги детерминированы и воспроизводимы по сохраненным файлам предсказаний: любой спор о цифрах решается пересчетом, а не повторным прогоном.
глава 29

Двенадцать способов показать красивую цифру

Ни один из них не требует подтасовки — достаточно не уточнять условия

Список ниже — не обвинение подрядчиков. Это перечень мест, где цифра вырастает сама, если условия не зафиксированы. Заказчику он нужен как чек-лист вопросов, подрядчику — как список того, что стоит написать в отчете самому, пока не спросили.

  • Показать mAP@0,5 вместо строгой метрики, не уточняя, какая именно приведена. Разрыв на наших данных — от 0,29 до 0,39 в абсолютных единицах.
  • Взять метрику на валидационной выборке, по которой выбиралась лучшая эпоха, и назвать ее тестовой.
  • Разбить данные на обучение и тест по кадрам, а не по роликам. Завышение — десятки процентных пунктов.
  • Убрать из тестовой выборки кадры, где цель плохо различима, как «спорную разметку».
  • Не указывать разрешение входа. Одни и те же веса на 512 и 960 дают разницу в полноте на мелких целях в полтора раза (глава 15).
  • Показать метрики в исходной точности, а систему поставить с квантованной сборкой на ускорителе: переход в целочисленную арифметику меняет метрики, и на мелких малоконтрастных целях сильнее всего [64, 65, 66].
  • Сравнить свою модель с чужой на общем пороге 0,25, не приводя обе к общему бюджету ложных (глава 14).
  • Привести precision и recall без числа ложных в час: доли выглядят прилично при любом потоке тревог.
  • Считать метрику по кадрам, а обещать по событиям (или наоборот — смотря что выгоднее в конкретном случае).
  • Оценить полноту на выборке, где 70 % целей крупные, и назвать результат характеристикой системы.
  • Показать одно число без интервала на выборке в полсотни целей, где интервал шире 0,17 (глава 18).
  • Продемонстрировать работу на ролике, снятом в тот же день, той же камерой и в ту же погоду, что и обучающие данные.

Каждый пункт закрывается одним предложением в техническом задании. Все двенадцать закрываются требованиями главы 26 и процедурой главы 28. По духу это то же самое, что поведенческое тестирование вместо одной итоговой цифры: система проверяется набором целевых проверок на конкретные способности, а не средним баллом [74]. Полезное свойство этого списка: он одинаково защищает обе стороны — подрядчик, у которого метрики честные, получает возможность это доказать, а не отбиваться от подозрений.

глава 30

Что делать, если система уже сдана по mAP

Порядок действий, когда акт подписан, а пропуски идут

Типичная ситуация: акт подписан по средней метрике, система работает, пропуски есть, договорных оснований для претензии нет. Порядок действий тут последовательный, и начинать надо не с претензии.

  • Собрать факты. Пропущенные события с записями, для каждого — дальность, размер цели в пикселях, время суток, фон. Тридцати случаев достаточно, чтобы увидеть закономерность.
  • Проверить оптику. Посчитать размер цели в пикселях по формуле (10). Если получается меньше восьми пикселей на входе сети, дальше идти по линии модели бесполезно: проблема в оптике или в геометрии установки, и решается она дешевле.
  • Пересчитать метрики в разрезе. Взять существующую тестовую выборку подрядчика и пересчитать по ней полноту в разрезе размеров. Обычно на этом шаге картина становится очевидной обеим сторонам, и разговор переходит из юридической плоскости в инженерную.
  • Померить рабочую точку. Узнать текущий порог и посчитать частоту ложных в час. Часто выясняется, что порог поднят службой эксплуатации ради тишины, и половина пропусков объясняется этим, а не моделью.
  • Сформулировать доработку в проверяемых терминах: диапазон, бюджет ложных, требуемая полнота, срок, приемочная выборка. Это уже требование по главе 26, и его выполнение можно проверить.
  • Зафиксировать в дополнительном соглашении новую процедуру приемки. Дешевле для обеих сторон, чем спор о том, что означала «точность 95 %».

Три из шести шагов не требуют участия подрядчика вовсе и делаются заказчиком за день. Именно это и есть практический смысл всей работы: разрез по размеру, бюджет ложных и перевод пикселей в метры считаются по данным, которые уже есть, и переводят разговор с языка «плохо работает» на язык, в котором у претензии есть число.

Часть VII

Границы, чего здесь нет и что дальше

Работа, которая учит читать чужие метрики, обязана предъявить свои с теми же оговорками. Часть перечисляет все ограничения замера, отделяет измеренное от расчетного, называет условия, в которых выводы могут не выполняться, и фиксирует, что будет опубликовано следующим.

глава 31

Границы этой работы

Один класс, одна выборка, исходная точность вычислений и отдельные кадры вместо видео

Все выводы частей III и IV получены на конкретном замере, и у него есть ограничения. Ниже перечислены все, о которых мы знаем.

один класс и одна предметная область
задача одноклассовая: дрон или не дрон. Эффект усреднения по классам, который в многоклассовых задачах бывает сильнее всех остальных, здесь не измерен вовсе.
одна выборка
2 200 кадров тестовой части одного открытого набора [53]. Распределение размеров, фонов и условий съемки в нем свое; на другом наборе абсолютные значения будут другими. Направление эффектов — расхождение ранжирований, разрыв мягкой и строгой метрик, зависимость от разрешения входа — устойчиво по построению, но проверялось здесь один раз.
чужая разметка
рамки взяты как есть, ошибки разметки не искали и не правили. Глава 8 показывает, насколько это важно для строгой метрики; собственного измерения шума разметки в этом наборе у нас нет, и все оценки потолка даны как расчет для трех уровней шума, а не как факт.
исходная точность вычислений
прогон сделан на ноутбуке в исходной точности. Сборки, которые едут на объект, квантованы в целочисленную арифметику под ускоритель, и квантование меняет метрики [63, 64, 65] — сильнее всего как раз на мелких целях с низким контрастом. Разрыв между этими двумя замерами у нас не измерен.
отдельные кадры вместо видео
выборка состоит из независимых кадров (проверено в главе 19). Поэтому событийные метрики главы 22 посчитаны в предположении независимости, которое на реальном видео не выполняется. Насколько именно — вопрос отдельного замера на размеченных проходах.
дневные условия
ночь, инфракрасный канал, дождь, туман и снег в выборке не выделены и отдельно не измерены. Все числа работы относятся к смеси условий этого набора, а не к худшему случаю.
оптика — расчет
перевод пикселей в дальность (глава 23) — арифметика идеальной модели камеры. Дифракция, аберрации, расфокусировка, дрожание и атмосферная дымка уменьшают реальный контраст цели, и на предельных дальностях фактическое обнаружение будет хуже расчетного.
глава 32

Что будет опубликовано дальше

Три замера с назначенными заранее критериями, включая тот, который может нас опровергнуть

Работа открыта как программа, а не как разовая публикация. Ниже — то, что мы обязуемся выложить сюда же по мере готовности, с указанием заранее, что именно будет считаться опровержением.

замерчто проверяетчто будет считаться опровержением
квантованные сборки на ускорителеразрыв между исходной точностью и целочисленной арифметикой в разрезе по размеру целиесли разрыв на мелких целях не превысит разброса замера, наш тезис о необходимости мерить на целевом железе окажется преувеличением
событийные метрики на размеченном видеонасколько правило N из M реально поднимает вероятность обнаружения прохода по сравнению с независимым приближениемесли событийная полнота совпадет с расчетом по формуле (9), значит корреляцией пропусков во времени можно пренебрегать
повтор разреза на открытом наборе с воздушной съемкой [52]устойчивость эффекта расхождения ранжирований на данных другой природыесли ранжирование по средней точности совпадет с ранжированием по полноте на мелких целях, главный вывод части III не переносится за пределы нашей выборки
измерение шума разметкипотолок строгой метрики на реальной разметке вместо трех модельных уровней шумаесли согласие разметчиков окажется выше 0,95 по IoU на мелких целях, поправка на потолок из главы 8 станет несущественной
Программа замеров с критериями, назначенными до прогона. Критерии написаны заранее намеренно: методика, придуманная после знакомства с числами, всегда объясняет ровно эти числа.

Сюда же попадет и отрицательный результат, если он будет. Раздел R&D устроен так, что закрытые направления с витрины не убираются: работа с цифрами и вердиктом «не подтвердилось» полезнее презентации без цифр. Эта работа никаким исключением не является.

Итог одной страницей

  • Средняя точность усредняет по классам, порогам качества рамки, размерам целей, кадрам и условиям. Каждое усреднение стирает ровно тот разрез, который и был вопросом заказчика.
  • Порог IoU — требование к точности локализации в долях размера цели. На цели в двадцать пикселей строгие пороги недостижимы геометрически, и при шуме разметки в два пикселя идеальный детектор получил бы там 0,51.
  • На нашем замере ранжирование девяти сборок по строгой метрике и по доле найденных мелких целей расходится: лидер по метрике пропускает мелких целей вдвое больше, чем сборка, стоящая по ней пятой, а при жестком бюджете ложных не находит их вовсе.
  • Сравнивать сборки на общем пороге уверенности нельзя: на пороге 0,25 наши девять сборок дают от 87 до 428 ложных срабатываний. Сравнение делается на равном бюджете ложных.
  • Разрешение входа меняет полноту на мелких целях в полтора раза при неизменной средней метрике. По эффективному размеру цели кривые обнаружения совпадают: разрешение — это коэффициент пересчета, а не свойство модели.
  • Метрика без доверительного интервала — мнение. Разница в mAP меньше 0,02 на выборке в две тысячи кадров статистически не существует; проверять надо парным бутстрепом.
  • Точность 0,96 на кадре означает четыре тысячи ложных тревог в час на камеру при покадровой обработке. Рабочая точка выбирается от бюджета тревог, а не от значения по умолчанию.
  • Приемочное требование формулируется в полноте по диапазонам дальности при заданном бюджете ложных, на выборке, собранной и запечатанной заказчиком, и судится по нижней границе доверительного интервала.
приложение А

Глоссарий

Термины, которые в тексте используются без расшифровки.

TP, FP, FN
верное срабатывание, ложное срабатывание, пропуск. В детекции эти три величины определяются не сами по себе, а после процедуры сопоставления рамок: одна и та же картинка при пороге IoU 0,5 дает одно разложение, при 0,75 — другое.
precision
доля верных среди всех срабатываний, TP / (TP + FP). Отвечает на вопрос оператора: как часто меня дергают зря.
recall (полнота)
доля найденных среди всех реальных целей, TP / (TP + FN). Отвечает на вопрос заказчика: какую долю нарушителей система пропустит.
IoU
отношение площади пересечения двух рамок к площади их объединения. Порог IoU превращает непрерывное качество локализации в бинарное «попал или нет», и цена одного пикселя ошибки в нем зависит от размера цели квадратично.
AP
площадь под интерполированной кривой «полнота — точность» для одного класса при одном пороге IoU. Считается по 101 точке в схеме COCO и по всем точкам излома в схеме PASCAL VOC после 2010 года.
mAP
среднее AP по классам. В одноклассовой задаче совпадает с AP, поэтому буква m в отчетах по одному классу означает только то, что усреднять было не по чему.
mAP@0.5
AP при единственном пороге IoU 0,5. Мягкая метрика: рамка, накрывающая цель наполовину, считается верной.
mAP@0.5:0.95
среднее AP по десяти порогам IoU от 0,5 до 0,95 с шагом 0,05. Строгая метрика, но на 80 % измеряет качество рамки, а не факт обнаружения; для мелких целей ее верхняя граница ограничена геометрией, а не моделью.
рабочая точка
порог confidence, при котором система реально работает на объекте. Метрики AP усредняют по всем порогам сразу и поэтому не описывают ни одну конкретную рабочую точку.
бюджет ложных
сколько ложных тревог в час на камеру заказчик согласен терпеть. Единственный корректный способ выбрать порог: сначала назначается бюджет, потом под него подбирается порог, потом на этом пороге меряется полнота.
диапазон размера
разбиение целей по корню из площади рамки в пикселях исходного кадра. В COCO таких диапазонов три (32 и 96 пикселей — границы), и они привязаны к типовому кадру набора; для задач наблюдения нужна собственная сетка, привязанная к дальности.
эффективный размер
размер цели в пикселях входа сети после масштабирования кадра. Цель в 20 пикселей на кадре 1080p при входе 640 превращается в 12 пикселей, а при входе 960 — в 18; половина различий между «моделями» на деле объясняется этим числом.
stride
шаг сетки признаков относительно входа. У типового детектора уровни имеют шаг 8, 16 и 32 пикселя: цель размером меньше шага самого мелкого уровня не имеет своей ячейки и обнаруживается за счет соседних.
бутстреп
оценка разброса метрики повторным взятием выборки с возвращением. Для приемки нужен именно он: без интервала разница в третьем знаке mAP неотличима от совпадения.
эффективный объем выборки
число независимых наблюдений в выборке. Кадры, нарезанные из одного ролика, почти не добавляют информации: две тысячи таких кадров по статистической силе равны десяткам независимых сцен.
утечка теста
любое попадание тестовых данных в обучение — прямое, через дубликаты кадров, через соседние кадры того же ролика или через подбор гиперпараметров по тесту. Дает завышенные метрики, которые не воспроизводятся на объекте.
N из M
правило подтверждения события: тревога выдается, если цель обнаружена не менее чем в N кадрах из M подряд. Переводит покадровую вероятность обнаружения в событийную и одновременно давит одиночные ложные срабатывания.
GSD
размер пикселя в единицах сцены на заданной дальности. Связывает оптику, разрешение матрицы и физический размер цели с числом пикселей, которое увидит сеть, — единственный честный мост между «пикселями» в отчете и «метрами» в техническом задании.
приложение Б

Литература

Только первоисточники, каждый открывается по DOI или на arXiv. Единственное исключение — материалы производителей железа, они помечены прямо в позиции: независимых замеров по этим системам в открытом доступе нет.

  1. [1]Everingham M., Van Gool L., Williams C. K. I., Winn J., Zisserman A. The PASCAL Visual Object Classes (VOC) Challenge. International Journal of Computer Vision, 2010, 88(2), 303–338.
  2. [2]Everingham M., Eslami S. M. A., Van Gool L., Williams C. K. I., Winn J., Zisserman A. The PASCAL Visual Object Classes Challenge: A Retrospective. International Journal of Computer Vision, 2015, 111(1), 98–136.
  3. [3]Lin T.-Y., Maire M., Belongie S., Hays J., Perona P., Ramanan D., Dollár P., Zitnick C. L. Microsoft COCO: Common Objects in Context. ECCV 2014, 740–755.
  4. [4]Russakovsky O., Deng J., Su H. и др. ImageNet Large Scale Visual Recognition Challenge. International Journal of Computer Vision, 2015, 115(3), 211–252.
  5. [5]Salton G., McGill M. J. Introduction to Modern Information Retrieval. McGraw-Hill, 1983 — источник конструкции «средняя точность» (average precision), из которой выросла AP в детекции.
  6. [6]Manning C. D., Raghavan P., Schütze H. Introduction to Information Retrieval. Cambridge University Press, 2008, гл. 8 — интерполяция precision и одиннадцатиточечная схема.
  7. [7]Ultralytics. Документация по валидации и метрикам YOLO (материал разработчика инструмента).
  8. [8]COCO Consortium. Detection Evaluation: определение областей small/medium/large и порогов IoU 0,50:0,05:0,95 (материал организаторов соревнования).
  9. [9]Hoiem D., Chodpathumwan Y., Dai Q. Diagnosing Error in Object Detectors. ECCV 2012, 340–353.
  10. [10]Bolya D., Foley S., Hays J., Hoffman J. TIDE: A General Toolbox for Identifying Object Detection Errors. ECCV 2020, 558–573.
  11. [11]Oksuz K., Cam B. C., Akbas E., Kalkan S. Localization Recall Precision (LRP): A New Performance Metric for Object Detection. ECCV 2018, 521–537.
  12. [12]Oksuz K., Cam B. C., Akbas E., Kalkan S. One Metric to Measure Them All: Localisation Recall Precision (LRP) for Evaluating Visual Detection Tasks. IEEE TPAMI, 2022, 44(12), 9446–9463.
  13. [13]Oksuz K., Cam B. C., Kalkan S., Akbas E. Imbalance Problems in Object Detection: A Review. IEEE TPAMI, 2021, 43(10), 3388–3415.
  14. [14]Padilla R., Passos W. L., Dias T. L. B., Netto S. L., da Silva E. A. B. A Comparative Analysis of Object Detection Metrics with a Companion Open-Source Toolkit. Electronics, 2021, 10(3), 279.
  15. [15]Padilla R., Netto S. L., da Silva E. A. B. A Survey on Performance Metrics for Object-Detection Algorithms. IWSSIP 2020, 237–242.
  16. [16]Rezatofighi H., Tsoi N., Gwak J., Sadeghian A., Reid I., Savarese S. Generalized Intersection over Union: A Metric and a Loss for Bounding Box Regression. CVPR 2019, 658–666.
  17. [17]Zheng Z., Wang P., Liu W., Li J., Ye R., Ren D. Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression. AAAI 2020, 34(7), 12993–13000.
  18. [18]Strathern M. «Improving ratings»: audit in the British University system. European Review, 1997, 5(3), 305–321 — формулировка закона Гудхарта в виде «мера, ставшая целью, перестает быть мерой».
  19. [19]Manheim D., Garrabrant S. Categorizing Variants of Goodhart's Law. arXiv:1803.04585, 2018.
  20. [20]Thomas R. L., Uminsky D. Reliance on metrics is a fundamental challenge for AI. Patterns, 2022, 3(5), 100476.
  21. [21]Efron B. Bootstrap Methods: Another Look at the Jackknife. The Annals of Statistics, 1979, 7(1), 1–26.
  22. [22]Efron B., Tibshirani R. J. An Introduction to the Bootstrap. Chapman & Hall, 1993.
  23. [23]Wilson E. B. Probable Inference, the Law of Succession, and Statistical Inference. Journal of the American Statistical Association, 1927, 22(158), 209–212.
  24. [24]Brown L. D., Cai T. T., DasGupta A. Interval Estimation for a Binomial Proportion. Statistical Science, 2001, 16(2), 101–133.
  25. [25]Clopper C. J., Pearson E. S. The Use of Confidence or Fiducial Limits Illustrated in the Case of the Binomial. Biometrika, 1934, 26(4), 404–413.
  26. [26]Dietterich T. G. Approximate Statistical Tests for Comparing Supervised Classification Learning Algorithms. Neural Computation, 1998, 10(7), 1895–1923.
  27. [27]Demšar J. Statistical Comparisons of Classifiers over Multiple Data Sets. Journal of Machine Learning Research, 2006, 7, 1–30.
  28. [28]Bouthillier X., Delaunay P., Bronzi M. и др. Accounting for Variance in Machine Learning Benchmarks. MLSys 2021.
  29. [29]Recht B., Roelofs R., Schmidt L., Shankar V. Do ImageNet Classifiers Generalize to ImageNet? ICML 2019.
  30. [30]Torralba A., Efros A. A. Unbiased Look at Dataset Bias. CVPR 2011, 1521–1528.
  31. [31]Northcutt C. G., Athalye A., Mueller J. Pervasive Label Errors in Test Sets Destabilize Machine Learning Benchmarks. NeurIPS Datasets and Benchmarks Track, 2021.
  32. [32]Kaufman S., Rosset S., Perlich C., Stitelman O. Leakage in Data Mining: Formulation, Detection, and Avoidance. ACM Transactions on Knowledge Discovery from Data, 2012, 6(4), 1–21.
  33. [33]Gorman K., Bedrick S. We Need to Talk about Standard Splits. ACL 2019, 2786–2791.
  34. [34]Kish L. Survey Sampling. Wiley, 1965 — эффект кластеризации выборки и понятие эффективного объема (design effect).
  35. [35]Davis J., Goadrich M. The Relationship Between Precision-Recall and ROC Curves. ICML 2006, 233–240.
  36. [36]Saito T., Rehmsmeier M. The Precision-Recall Plot Is More Informative than the ROC Plot When Evaluating Binary Classifiers on Imbalanced Datasets. PLoS ONE, 2015, 10(3), e0118432.
  37. [37]Fawcett T. An introduction to ROC analysis. Pattern Recognition Letters, 2006, 27(8), 861–874.
  38. [38]Provost F., Fawcett T. Robust Classification for Imprecise Environments. Machine Learning, 2001, 42(3), 203–231.
  39. [39]Drummond C., Holte R. C. Cost curves: An improved method for visualizing classifier performance. Machine Learning, 2006, 65(1), 95–130.
  40. [40]Guo C., Pleiss G., Sun Y., Weinberger K. Q. On Calibration of Modern Neural Networks. ICML 2017.
  41. [41]Küppers F., Kronenberger J., Shantia A., Haselhoff A. Multivariate Confidence Calibration for Object Detection. CVPR Workshops, 2020.
  42. [42]Egan J. P. Signal Detection Theory and ROC Analysis. Academic Press, 1975 — рабочая точка как выбор между двумя видами ошибок, а не как свойство детектора.
  43. [43]Lin T.-Y., Dollár P., Girshick R., He K., Hariharan B., Belongie S. Feature Pyramid Networks for Object Detection. CVPR 2017, 936–944.
  44. [44]Lin T.-Y., Goyal P., Girshick R., He K., Dollár P. Focal Loss for Dense Object Detection. ICCV 2017, 2999–3007.
  45. [45]Singh B., Davis L. S. An Analysis of Scale Invariance in Object Detection — SNIP. CVPR 2018, 3578–3587.
  46. [46]Wang J., Xu C., Yang W., Yu L. A Normalized Gaussian Wasserstein Distance for Tiny Object Detection. arXiv:2110.13389, 2021.
  47. [47]Yu X., Gong Y., Jiang N., Ye Q., Han Z. Scale Match for Tiny Person Detection. WACV 2020, 1257–1265.
  48. [48]Cheng G., Yuan X., Yao X. и др. Towards Large-Scale Small Object Detection: Survey and Benchmarks. IEEE TPAMI, 2023, 45(11), 13467–13488.
  49. [49]Akyon F. C., Altinuc S. O., Temizel A. Slicing Aided Hyper Inference and Fine-Tuning for Small Object Detection. ICIP 2022, 966–970.
  50. [50]Ozge Unel F., Ozkalayci B. O., Cigla C. The Power of Tiling for Small Object Detection. CVPR Workshops, 2019, 582–591.
  51. [51]Kisantal M., Wojna Z., Murawski J., Naruniec J., Cho K. Augmentation for small object detection. arXiv:1902.07296, 2019.
  52. [52]Zhu P., Wen L., Du D. и др. Detection and Tracking Meet Drones Challenge (VisDrone). IEEE TPAMI, 2022, 44(11), 7380–7399.
  53. [53]Zhao J., Zhang J., Li D., Wang D. Vision-Based Anti-UAV Detection and Tracking. IEEE Transactions on Intelligent Transportation Systems, 2022, 23(12), 25323–25334 — датасет DUT Anti-UAV, на тестовой части которого сделаны замеры этой работы.
  54. [54]Bewley A., Ge Z., Ott L., Ramos F., Upcroft B. Simple Online and Realtime Tracking. ICIP 2016, 3464–3468.
  55. [55]Wojke N., Bewley A., Paulus D. Simple Online and Realtime Tracking with a Deep Association Metric. ICIP 2017, 3645–3649.
  56. [56]Bochinski E., Eiselein V., Sikora T. High-Speed Tracking-by-Detection Without Using Image Information. AVSS 2017.
  57. [57]Bernardin K., Stiefelhagen R. Evaluating Multiple Object Tracking Performance: The CLEAR MOT Metrics. EURASIP Journal on Image and Video Processing, 2008, 246309.
  58. [58]Luiten J., Osep A., Dendorfer P. и др. HOTA: A Higher Order Metric for Evaluating Multi-Object Tracking. International Journal of Computer Vision, 2021, 129(2), 548–578.
  59. [59]Dendorfer P., Osep A., Milan A. и др. MOTChallenge: A Benchmark for Single-Camera Multiple Target Tracking. International Journal of Computer Vision, 2021, 129(4), 845–881.
  60. [60]Johnson J. Analysis of Image Forming Systems. Image Intensifier Symposium, U.S. Army Engineer Research and Development Laboratories, 1958 — критерий Джонсона: число разрешаемых линий на цель для обнаружения, распознавания и идентификации.
  61. [61]Holst G. C. Electro-Optical Imaging System Performance. 5-е изд., SPIE Press, 2008 — расчет дальностей DRI и переход от угловых размеров к пикселям.
  62. [62]Vollmerhausen R. H., Jacobs E. L. The Targeting Task Performance (TTP) Metric: A New Model for Predicting Target Acquisition Performance. NVESD Technical Report, 2004 — модель, заменившая критерий Джонсона в расчетах дальности обнаружения.
  63. [63]Jacob B., Kligys S., Chen B. и др. Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference. CVPR 2018, 2704–2713.
  64. [64]Krishnamoorthi R. Quantizing deep convolutional networks for efficient inference: A whitepaper. arXiv:1806.08342, 2018.
  65. [65]Nagel M., Fournarakis M., Amjad R. A., Bondarenko Y., van Baalen M., Blankevoort T. A White Paper on Neural Network Quantization. arXiv:2106.08295, 2021.
  66. [66]Hailo. Dataflow Compiler и Model Zoo: документация по компиляции и квантованию сетей под Hailo-8/8L (материал производителя).
  67. [67]ГОСТ 34.603-92. Информационная технология. Виды испытаний автоматизированных систем — предварительные испытания, опытная эксплуатация, приемочные испытания и программа-методика испытаний.
  68. [68]ГОСТ Р ИСО/МЭК 25010-2015. Системная и программная инженерия. Требования и оценка качества систем и программного обеспечения (SQuaRE). Модели качества.
  69. [69]ISO/IEC TS 4213:2022. Information technology — Artificial intelligence — Assessment of machine learning classification performance.
  70. [70]Breck E., Cai S., Nielsen E., Salib M., Sculley D. The ML Test Score: A Rubric for ML Production Readiness and Technical Debt Reduction. IEEE Big Data 2017, 1123–1132.
  71. [71]Sculley D., Holt G., Golovin D. и др. Hidden Technical Debt in Machine Learning Systems. NeurIPS 2015, 2503–2511.
  72. [72]Mitchell M., Wu S., Zaldivar A. и др. Model Cards for Model Reporting. FAT* 2019, 220–229.
  73. [73]Gebru T., Morgenstern J., Vecchione B. и др. Datasheets for Datasets. Communications of the ACM, 2021, 64(12), 86–92.
  74. [74]Ribeiro M. T., Wu T., Guestrin C., Singh S. Beyond Accuracy: Behavioral Testing of NLP Models with CheckList. ACL 2020, 4902–4912.
границы

Замер сделан в исходной точности вычислений на ноутбуке; разрыв с квантованными сборками на целевом ускорителе не измерен и назван неизмеренным. Выборка одна, класс один, разметка чужая и не проверялась; ночь, инфракрасный канал и тяжелая погода отдельно не выделены. Кадры выборки независимы (проверено), поэтому событийные метрики посчитаны в приближении независимости, которое на реальном видео не выполняется. Потолки строгой метрики, перевод ложных в тревоги за час и перевод пикселей в дальность через оптику — расчет по формулам с явными допущениями, а не измерение. Абсолютные значения таблиц описывают наши сборки на этой выборке; переносится метод, а не числа.

журнал

Что происходило по направлению

  1. 16.08.2026

    Прогон девяти сборок по отложенной выборке 2 200 кадров с сохранением всех рамок при conf ≥ 0,001. Написан свой пересчет метрик с семантикой игнорирования по диапазонам размера цели и сверен с штатной валидацией инструмента обучения в пределах третьего знака.

  2. 16.08.2026

    Получен главный результат: ранжирование по строгой метрике и по полноте на мелких целях расходится. Добавлено приведение к равному бюджету ложных — на общем пороге 0,25 сборки дают от 87 до 428 ложных, то есть сравниваются калибровки, а не детекторы. Посчитаны потолки строгой метрики при шуме разметки и проверена гипотеза об эффективном размере цели: кривые обнаружения для входов 512, 640 и 960 совпадают.

  3. 16.08.2026

    Бутстреп по кадрам (300 ресемплов) для всех девяти прогонов и парный бутстреп для четырех пар. Выборка проверена на кластеризацию кадров: 1,1 % соседних пар коррелированы, интервалы корректны. Написаны протокол приемочного дня с кодом, шаблон требований для технического задания и чек-лист из двенадцати приемов.

Другие направления

Вся витрина R&D →

Статус этого направления — удачно. Как читать статусы и по каким правилам работает лаборатория — на витрине R&D.

— заявка

Опишите задачу  ответим как инженеры. 

Оставьте имя и Telegram — остальное обсудим. Без брифов на 40 слайдов и звонков по три раза.

Отвечаем за пару часовотвечает инженер, а не отдел продажNDA по запросу

Любой один канал — куда удобнее, туда и ответим

Или сразу написать в Telegram

Без спама и звонков-роботов. Нажимая кнопку, вы соглашаетесь с политикой конфиденциальности и обработкой персональных данных.