Англійська мова для комп'ютерних інженерів
Освоєння словникового запасу для обговорення обмежувальних блоків, IoU, розширення і оцінки моделей у роботі з інженерією комп’ ютерного зору.
Роботи з комп’ютерного зору мають свій власний точний словник для опису виявлення, сегментації та оцінки, і невеликі неточності тут можуть справді заплутати обговорення — сказати «модель пропустила це» замість того, щоб вказати, чи це був хибний негативний результат у виявленні або погана межа маски в сегментації, відправляє колег, які досліджують неправильний етап трубопроводу. Цей посібник містить основні слова англійської мови, якими щодня користуються інженери комп’ ютерного зору.
Ключовий словник
Крайня коробка Прямокутник, зазвичай визначений координатами, який щільно оточує об’ єкт, який цікавить на зображенні, використовується як стандартний формат виводу для моделей виявлення об’ єктів.
- Приклад: « Обмежувальний блок для пішохода занадто сильно зрушено на 10 пікселів праворуч, що знижує нашу оцінку відстані. » *
IoU (перетин через Союз) Метрика, яка вимірює перекриття між передбачуваним обмежуючим блоком (або масою) і дійсним значенням, обчислена як площа перекриття, поділена на площу об’ єднання, використовується для оцінювання точності виявлення.
- Приклад: « Ми використовуємо пороговий рівень IoU 0. 5 для підрахунку виявлення як правильного; будь- що нижче цього вважається промахом. » *
Немаксимальна зупинка (НМС) Крок після обробки, який вилучає дублікати, перетинаються передбачення обмежувального поля для одного і того ж об’ єкта, зберігаючи лише поле з найвищою довірою.
- Приклад: “Без немаксимального придушення, модель виводила п’ять перетинаючихся коробок для однієї машини.” *
** Сегментація (семантична проти екземпляра) ** Семантична сегментація мітки кожного пікселя класом (наприклад, « дорога » або « небо ») без розрізнення окремих об’ єктів; сегментація екземплярів додатково відокремлює різні об’ єкти одного класу один від одного.
- Приклад: « Семантична сегментація позначає всі автомобілі як « автомобіль », але сегментація екземплярів дає нам окрему маску для кожного окремого транспортного засобу. » *
- Збільшення Застосування перетворень (поворот, перевертання, коливання кольору, обрізання) до тренувальних зображень для штучного збільшення різноманітності наборів даних і поліпшення узагальнення моделей.
- Приклад: « Ми додали випадкове збільшення окклюзії, щоб модель навчилася виявляти частково заблоковані об’ єкти, а не тільки повністю видимі ». *
** Фальшиво позитивний / фальшиво негативний ** Хибно позитивний випадок відбувається, коли модель виявляє щось, чого насправді немає; хибно негативний випадок відбувається, коли модель не виявляє щось, що справді присутнє.
- Приклад: « Частота хибно позитивних результатів у класифікації тіней як об’ єктів зросла після того, як ми розслабили поріг довіри. » *
Грунтова правда Перевірені, правильні мітки для набору даних — використовуються як посилання, за якими вимірюється прогнозування моделі.
- Приклад: « Ми виявили помилки в позначенні в цій партії; декілька « знаків зупинки » були насправді неправильно позначені « знаками переходу ». » *
Якорная коробка Набір попередньо визначених посилальних блоків різного розміру і співвідношення сторін, які деякі моделі виявлення використовують як початкові точки для передбачення кінцевих обмежувальних блоків.
- Приклад: « Типові розміри якоря не відповідають нашому випадку використання, оскільки більшість наших цільових об’ єктів набагато менше і ширше, ніж те, для чого вони були налаштовані. » *
Звичайні фрази
** В обзорах коду: **
- «Ця конвеєрна система розширення застосовує одне й те ж випадкове насіння по всій партії, тому ми насправді не отримуємо різноманітні розширені зразки»
- «Ми обчислюємо IoU проти неправильного класу основної істини в цьому скрипту оцінки — це порівнює передбачення з об’єднаним класом «транспорту» замість конкретного підкласу»
- «Ця модель виводить накладні коробки для того ж об’єкта — перевірте, чи NMS дійсно застосовується у час виведення, а не тільки під час тренування»
В стоячих позах:
- «Вчора я перетренувався з більш важким збільшенням окклюзії; сьогодні я перевірю, чи це покращило пам’ять на частково заблокованих тестових випадках»
- «Я бачу пік хибних позитивних на відбивних поверхнях — я думаю, що модель плутає відбиття з реальними об’єктами»
- «Я закінчив переметкувати твердження про твердження для неправильно позначеної партії; точність повинна поліпшитися, як тільки ми перетренуємося проти виправлених позначок»
** В обзорах оценки модели: **
- «Точність виглядає добре на порозі IoU 0,5, але вона різко падає на 0,75 — коробки приблизно правильні, але не щільно локалізовані»
- «Відповіді на малі об’єкти набагато нижчі, ніж на великі — ми повинні перевірити, чи розміри якоря добре покривають цей діапазон»
- Матриця збою показує, що модель постійно змішує ці два візуально схожі класи — нам можуть знадобитися більш відмінні приклади тренування
Фрази, яких слід уникати
**Сказати “модель не встигла” без вказівки типу помилки. ** Замість цього скажіть: « це хибно негативний результат — модель взагалі не виявила об’ єкт » або « об’ єкт було виявлено, але рівень ІО з точністю до початку поля є занадто низьким, щоб вважати його правильним збігом ». Це різні проблеми з різними виправленнями.
**Скажіть “точність погана” для виявлення або сегментації завдань. ** Проста «точність» є метрикою класифікації і рідко є правильною. Використовувати відповідні параметри задачі: « точність і відновлення », « середня точність (mAP) » або « середній ІОЗ », залежно від задачі.
**Скажите “этикетки неправильные”, когда проблема может быть двусмысленной истиной. ** Розрізняти між справді неправильними мітками (« ця рамка знаходиться на абсолютно неправильному об’ єкті ») і неоднозначними межами (« розумні анотатори можуть не погоджуватися з цією межею »). Перший вимагає виправлення міток; другий, можливо, потребує оновлення правил міток.
Краткий справочник
| Term | How to use it |
|---|---|
| bounding box | ”The bounding box is a few pixels off on the left edge.” |
| IoU | ”We require an IoU above 0.5 to count a detection as a match.” |
| NMS | ”Non-maximum suppression removes the duplicate overlapping boxes.” |
| segmentation | ”Instance segmentation separates each individual car’s mask.” |
| augmentation | ”We added occlusion augmentation to improve robustness.” |
| false positive/negative | ”The false positive rate rose after lowering the confidence threshold.” |
Ключеві моменти
- Використовувати точну мову режиму помилки (фальшиво позитивний, фальшиво негативний, збіг з низьким вхідним/ вихідним рівнем) замість нечітких термінів, таких як « пропустив » або « неправильно »
- Розрізняйте семантичну сегментацію від сегментації екземплярів, оскільки вони розв’ язують різні проблеми і вимагають різних метрик оцінки.
- Використовуйте відповідні задачі метрики (точність, відновлення, mAP, середній IoU), а не загальну « точність » при обговоренні виявлення або сегментації.
- Якщо мітки виглядають неправильно, проясніть, чи це справжня помилка мітки, чи неоднозначний випадок краю — виправлення буде різним для кожного з цих випадків.
- Описайте конкретні стратегії розширення (закриття, коливання кольору, обертання), а не кажучи « ми розширили дані », оскільки тип розширення є метою певного розриву узагальнення.
Національний склад населення: Перепис населення та проживання
Будьмо чесними – вивчення нової мови, особливо такої точної, як англійська, в швидко розвивається галузі комп’ютерного зору, є викликом. Це не просто про те, щоб знати визначення таких термінів, як «bounding box» або «IoU»; це про те, щоб розуміти, як ці слова насправді використовуються в розмовах і документації. Ключова відмінність для носіїв мови, які не є рідними, часто полягає в немовлених очікуваннях - тонких способах, якими команди спілкуються про потенційні проблеми, запропоновані рішення і загальний стан проекту.
Одна з областей, де це стає особливо очевидним, це під час перегляду коду. Отримати зворотній зв’ язок не завжди просто; рідко коли це просто « Це потрібно виправити ». Натомість, ви зустрінете такі фрази, як « Чи могли б ми дослідити зменшення дисперсії у конвеєрі розширення? » або « Я помітив деякі невідповідності у тому, як обробляються анотації межових блоків у різних наборах даних. » Ключовим тут є * точність *. Рецензент не просто вказує на помилку; вони вимагають певного напрямку мислення - дослідити кореневу причину, розглянути альтернативні підходи і сформулювати логіку за будь-якими змінами. Аналогічно, у каналах Slack, присвячених розробці моделей, ви можете побачити повідомлення на кшталт: «Давайте обговоримо компроміс між збільшенням розміру якоря для виявлення об’ єктів і його впливом на відновлення». Це запит на * розумну * відповідь, а не просто швидке «так» або «ні»
Інший поширений сценарій виникає під час написання запитів на захоплення. Хороший опис PR не повинен лише вказати « Впроваджено нові методи розширення ». Замість цього, у ньому слід вказати контекст: « Цей PR вводить методи розширення RandomHorizontalFlip і ColorJitter для вирішення проблеми з дисбалансом класів, спостереженої у наборі перевірки. Гіперпараметри були налаштовані за допомогою пошуку в ґратці з IoU як первинною метрикою для оцінки продуктивності. Рекомендується продовжити експериментування для оптимізації цих параметрів. » Зауважте, що використано шаровий підхід — пояснення * чому * було внесено зміну, * як * її було реалізовано, і запропоновано майбутні кроки. Це демонструє розуміння ширших цілей проекту і запрошує до подальшого обговорення.
Врешті-решт, успішне співробітництво залежить від чіткого і точного спілкування. Не бійтеся запитати про пояснення, якщо щось не зрозуміло. Краще визнати, що не розумієш, ніж робити припущення, які можуть призвести до переробки або неправильного тлумачення. Пам’ятайте, англійська мова в цьому контексті - це не просто технічні терміни; це інструмент для побудови спільного розуміння і досягнення колективного успіху.
# Example using OpenCV (Python) - demonstrating IoU calculation
import cv2
import numpy as np
img1 = np.zeros((100, 100), dtype=np.float32)
img1[:] = 1 # A rectangular region in the top-left corner
img2 = np.zeros((100, 100), dtype=np.float32)
img2[20:80, 20:80] = 1 # Overlapping rectangle
iou = cv2.iou(img1, img2)
print(f"Intersection over Union (IoU): {iou}")