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

Глосарій

Сто сорок слів, якими говорить компʼютерний зір. Українська назва й англійський оригінал поруч, означення без жодної математики, і номер теми, де слово вводиться по-справжньому.

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

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

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

ДомовленостіЯк ми називаємо спірне

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

АнглійськоюПишемоЧому саме так
convolutionalзгортковий«Конволюційний» — калька без значення. Згортка вже є в українській математиці.
feature mapкарта ознак«Карта» жива в мові: карта висот, карта глибин. «Мапа» тягне англійське звучання.
paddingpaddingІмʼя аргументу в кожній бібліотеці. Український опис — «доповнення країв» — даємо поруч.
strideкрок (stride)«Крок» зрозумілий одразу, тож заголовок український, а оригінал іде в дужках — інакше не впізнаєш у коді.
bounding boxрамка (bounding box)«Обмежувальна рамка» точна, але громіздка. bbox лишаємо для коду й імен полів.
backbonebackbone (кістяк)Параметр у конфігах зветься саме так. «Хребет» буквальний, «кістяк» пояснювальний — але жоден не вживають.
neck / headneck, head (шия, голова)Та сама причина: у конфігах детекторів це назви полів. Українські слова тримаємо як пояснення.
upsamplingзбільшення роздільностіДія проста й називається українською без утрат. Те саме з downsampling — зменшення.
ground truthеталонна розмітка«Наземна істина» безглузда, «істина» надто гучна. У коді лишається gt.
skip connectionскіп-зʼєднання«Пропускне» неоднозначне: пропускає чи пропускається. Прижилось саме скіп.
poolingпулінг«Підвибірка» й «агрегація» пробувались і не прижились у жодному тексті.
instance segmentationinstance segmentation«Сегментація екземплярів» правильна, але в назвах моделей і в розмові звучить англійська. Ставимо обидві.
letterboxletterboxТак зветься спосіб у конфігах детекторів і в коді. «Вписування з полями» описує дію, але цим іменем не користується ніхто.
cross-correlationкореляціяПриросток «крос-» українською нічого не додає. Збіг із кореляцією двох ознак у ML знімаємо окремою статтею, а не подовженням назви.
non-maximum suppressionпритлумлення немаксимумівОдне слово на дві різні операції: по пікселях у Кенні й по рамках у детекції. Опис спільний, скорочення NMS лишаємо детекції.
things / stuffречі / матерія«Матеріал» звучав би природніше, але це слово вже працює в курсі у побутовому значенні («ідеальний матеріал для навчання»). «Матерія» ніде більше не трапляється, тож збігу немає.
promptпідказкаТут це не текст, а геометрія на зображенні: точка або рамка. «Промпт» тягне за собою мовні моделі й плутає.
inliersвнутрішні пари«Інлаєри» — сленг, а «викиди» для outliers уже зайняті статистикою. Тому обидві половини називаємо описово.

ПокажчикАбетка

Літери, у яких щось є

А 7 термінів

Автоенкодер autoencoder

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

Тема 37 · Автоенкодери й VAE

Вузьке місце (bottleneck) — найтонший шар посередині. Те, що в ньому лишилось, і називають латентним представленням зображення.

Адаптивний поріг adaptive threshold

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

Тема 03 · OpenCV: базові операції

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

Атака на належність membership inference

Спроба дізнатися, чи був конкретний приклад у навчальній вибірці, дивлячись лише на відповіді моделі. Найпростіший варіант: модель відповідає на своїх прикладах упевненіше, ніж на нових.

Тема 40 · Межі й етика CV

Памʼять росте разом із якістю. У зошиті теми 40 AUC атаки йде 0.5321 → 0.5968 → 0.7041 на 10, 30 і 60 епохах, а впевненість на своїх прикладах — 0.7622 проти 0.4933 на нових. Тобто це не вада поганої моделі: що краще модель вивчила дані, то більше вона про них розповідає.

Атрозна згортка atrous / dilated convolution

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

Тема 29 · Семантична сегментація: FCN і DeepLab

Звідки назва. Від французького à trous — «з дірками». Трапляється переклад «розріджена згортка»; ми кажемо атрозна, бо саме це слово стоїть у назвах статей, а в коді відповідний аргумент зветься dilation.

Аугментація augmentation

Штучне розширення навчального набору: те саме фото віддзеркалюють, повертають, обрізають, притемнюють — і модель щоразу бачить його трохи іншим, а тому вчиться впізнавати предмет, а не запамʼятовувати картинку.

Тема 10 · Аугментація даних

Аугментація під час прогнозу test-time augmentation, TTA

Прогнати одне зображення кілька разів — у дзеркалі, зі зсувом, у різному масштабі — і усереднити прогнози. Коштує стільки прогонів мережі, скільки варіантів.

Тема 10 · Аугментація даних

Не плутати з аугментованою перевіркою. Перевірочну вибірку не аугментують ніколи — метрика стає випадковою величиною. TTA усереднює прогнози на тому самому зображенні й допомагає лише моделі, навченій із тими самими перетвореннями.

Афінне перетворення affine transform

Правило, яке кожній точці кадру ставить у відповідність нову: два множення й одне додавання на координату, усього шість чисел у таблиці 2 × 3. «Афінне» означає, що прямі лишаються прямими, а паралельні — паралельними. Поворот, масштаб, перенос і нахил — окремі випадки одного цього правила.

Тема 03 · OpenCV: базові операції

Що воно коштує. Усе, що виїхало за полотно, зникає. Поворот на непомітні 5° уже викидає кожен двадцять пʼятий піксель, на 30° — шосту частину кадру, і зникає вона з кутів, разом із розміткою предметів, які там лежали. Полотно, яке вмістить усе, рахується з тих самих синуса й косинуса.

Б 6 термінів

Багатоголова увага multi-head attention

Кілька механізмів уваги, що працюють на одному й тому самому вході паралельно: кожна «голова» вчиться дивитись на свій бік справи, а результати склеюють в один.

Тема 20 · Vision Transformer

Багатоміткова класифікація multi-label classification

Постановка, де одне зображення може отримати кілька міток одразу — «телефон», «зарядка», «є подряпини». Мітки не конкурують: кожна має власне число й власний поріг.

Тема 02 · Карта задач CV

Часта плутанина. У звичайній багатокласовій класифікації класи ділять між собою одиницю, і мітка на фото рівно одна. Тут фото може дістати чотири мітки або жодної.

База стереопари baseline

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

Тема 36 · Глибина, стерео і 3D

Платить вона полем зору. На трьох метрах збільшення бази з 0.02 до 0.40 м зменшує похибку глибини з 0.220 до 0.013 м (у 17 разів), але спільна для обох камер частина сцени падає з 99.0 % до 79.2 %. Те, що бачить лише одне око, глибини не має взагалі.

Батч-нормалізація batch normalization, батчнорм

Шар, що на кожному кроці навчання приводить числа всередині мережі до спільного масштабу. Через це навчання йде швидше й помітно стійкіше до вибору кроку.

Тема 11 · Навчання CNN

Бітова глибина bit depth

Скільки біт відведено на одне число пікселя. Вісім біт дають 256 рівнів яскравості, від 0 до 255, — і саме тому в кожному підручнику зустрічається число 255.

Тема 01 · Зображення очима компʼютера

Бокс-фільтр box filter

Найпростіше розмиття: усі коефіцієнти ядра однакові, тож піксель стає простим середнім по квадрату сусідів. В OpenCV це cv2.blur.

Тема 04 · Згортка вручну

Чому все-таки гаус. Квадрат дає кутовому сусідові ту саму вагу, що й бічному, хоч той на 41 % далі: у кутах бокса лишається близько третини всієї ваги проти одного-трьох відсотків у гауса. Тому яскрава точка розпливається не кружечком, а квадратом. Шум бокс тим самим вікном тлумить трохи краще — платить за це формою.

В 10 термінів

Вага класу class weight

Множник у втраті, який робить помилку на рідкісному класі дорожчою. Найчастіша формула — обернена до частоти.

Тема 40 · Межі й етика CV · тема 29

У ваги є оптимум, і формула 1/частота стоїть за ним. На сегментації тих самих фігур: без ваг mIoU 0.7851, ×2 — 0.9402, 1/частота (×14.9) — 0.8885, ×20 — 0.8787. Механізм вимірний: 93 % хибних пікселів лежать за один піксель від справжнього предмета, тобто зважування роздуває предмет по контуру. Для дрібного предмета контур зʼїдає IoU швидше, ніж повнота його піднімає.

Тому один рецепт дає протилежні відповіді в двох задачах. У класифікації (тема 40) межі немає, і ×6.5 припадає рівно на вершину: рідкісний клас іде з 0.0700 до 0.7000, а загальна точність не страждає. У сегментації (тема 29) та сама ідея зашкодила: 0.4181 проти 0.6151.

Вид і копія view, copy

Зріз масиву img[100:200, 50:150] не копіює жодного байта: він дивиться в ту саму памʼять, просто починає з іншого місця. Це вид. Запис у вид міняє оригінал — мовчки, без жодного попередження. .copy() робить справжню копію, і коштує вона рівно висота × ширина × канали байтів.

Тема 03 · OpenCV: базові операції

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

Вирівнювання нахилу deskew

Поворот знімка так, щоб рядок тексту став горизонтальним. Найдешевша й найкорисніша передобробка перед OCR: нахил на 7° піднімає посимвольну похибку з 0.0101 до 0.1855, а вирівнювання назад повертає рівно 0.0000 — отже інформацію не втрачено, її лише повернули на місце.

Тема 33 · OCR: знайти текст і прочитати

Не плутай — у курсі три різні «вирівнювання». Вирівнювання нахилу (тут) повертає рядок горизонтально. Вирівнювання без уточнення — у CTC: зіставлення шляху з рядком. Вирівнювання пари — у стерео: поворот двох знімків так, щоб відповідник лежав у тому самому рядку (окрема стаття). Спільного між ними лише те, що всі троє щось випрямляють.

Вирівнювання пари rectification

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

Тема 36 · Глибина, стерео і 3D

Це не косметика, а умова роботи. Нахил камери всього на 0.5° валить покриття карти глибини з 99.9 % до 17.1 %, а частку грубих помилок піднімає з 0.8 % до 99.0 %. Після cv2.stereoRectify розбіжність рядків — 4.26·10⁻¹⁵ px.

Відгук на імпульс impulse response

Найкоротший спосіб дізнатись, що насправді робить фільтр: подай на вхід чорне зображення з єдиною білою точкою й подивись на результат. Кореляція покладе в нього ядро, повернуте на 180°, справжня згортка — ядро як є.

Тема 04 · Згортка вручну

Як не зробити протилежного висновку. На око відгук «схожий на ядро» в обох випадках, і люди на цьому регулярно помиляються. Порівнюй програмою: np.allclose із самим ядром і з np.flip(ядро) окремо. Симетричне ядро для такої перевірки не годиться взагалі — у нього обидві відповіді збігаються.

Відстань Гемінга Hamming distance

Скільки бітів відрізняється у двох двійкових рядках однакової довжини. Для дескрипторів 11010 і 10011 це три позиції — отже, відстань 3.

Тема 05 · Класичні ознаки

Чому саме вона для ORB. Дескриптор ORB — це 256 бітів, і порівняння зводиться до XOR (він лишає одиниці там, де біти різні) та підрахунку одиниць через popcount. Чотири машинні слова — чотири пари інструкцій, без жодного множення. Для SIFT довелося б рахувати евклідову відстань між 128 дробовими числами.

Відстань Левенштейна Levenshtein distance

Найменша кількість вставок, вилучень і замін, якими один рядок перетворюється на інший. Основа посимвольної похибки, і та сама міра знадобиться в курсі NLP.

Тема 33 · OCR

Вік треку max_age

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

Тема 34 · Відео: трекінг

Перший крок коштує найбільше. З 0 на 1 підміни падають з 18.62 до 2.88, з 1 на 2 — до 0.75, далі виграшу вже немає. При цьому модель руху поруч не дає нічого: 3.20 проти 4.00 при розкидах, що перетинаються.

Внутрішні пари inliers

Ті зіставлені пари точок, які вклались у знайдене RANSAC-ом геометричне перетворення. Решту він оголошує зайвими й викидає.

Тема 05 · Класичні ознаки

Чому не «інлаєри». Сленг, у прозі курсу йому не місце. Слово «викиди» для протилежного outliers уже зайняте статистикою, тож обидві половини називаємо описово: внутрішні пари й відкинуті. На синтетичній сцені з поворотом 27° після тесту Лоу лишилась 51 пара, з них 49 правильних, — і саме ці 49 RANSAC визнав внутрішніми.

Впевненість confidence score

Число від нуля до одиниці, яке детектор ставить поруч із кожною знайденою рамкою: наскільки він сам вірить, що там справді предмет, а не візерунок на столі.

Тема 02 · Карта задач CV · тема 23

Навіщо воно. Опустиш поріг упевненості — рамок побільшає, повнота зросте, точність упаде. Саме з цього компромісу й будується метрика AP.

Г 9 термінів

Гаусове розмиття Gaussian blur

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

Тема 04 · Згортка вручну

sigma і розмір ядра — різні речі. σ («сигма») задає ширину дзвону, тобто наскільки сильно розмиває; розмір ядра каже лише, де дзвін обривають. Звичайне правило — розмір близько 6σ + 1, округлений до непарного. Ядро 3 × 3 із σ = 5 виродиться в бокс-фільтр, бо всі коефіцієнти вийдуть майже однакові; ядро 31 × 31 із σ = 0.5 складатиметься переважно з нулів і зʼїсть у сто разів більше часу.

Генератор і дискримінатор generator, discriminator

Дві мережі, з яких складається GAN. Генератор малює підробки, дискримінатор вчиться відрізняти їх від справжніх фото, і кожен тисне на іншого доти, доки підробки не стають переконливими.

Тема 38 · GAN

Генерація зображень image generation

Задача, у якій виходом моделі є саме зображення, а не мітка, рамка чи маска: намалювати кадр з опису, домалювати вирізаний шматок, перевести денне фото в нічне. Це єдина з базових постановок, де відповідь не можна перевірити порівнянням із розміткою, — тому й мірки тут окремі, як FID.

Тема 02 · Карта задач CV · блок 8

Гістерезис hysteresis thresholding

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

Тема 04 · Згортка вручну

Звідки слово. З фізики, де воно означає «поведінка залежить від попереднього стану». Тут буквально так: доля слабкого пікселя залежить не від нього самого, а від того, чи дотягнувся до нього ланцюжок від сильного. Саме це й не дає межі розсипатись на пунктир.

Гістограма зображення image histogram

Стовпчикова діаграма: скільки пікселів припадає на кожен рівень яскравості. За її формою одразу видно, знімок темний, пересвічений чи блідий. Вона ж — найпростіша ознака, яку взагалі можна вигадати: двадцять тисяч пікселів стискаються в 256 чисел, а якщо групувати по вісім рівнів у корзину (bin), то й у 32.

Тема 01 · Зображення очима компʼютера · тема 05

Гістограма викидає все просторове. Вона не знає, де саме лежав кожен піксель, — лише скільки їх якого відтінку. Тому гістограма перевернутого згори вниз знімка збігається з гістограмою оригіналу побітово; те саме дають дзеркальне відбиття, циклічний зсув і навіть повне перемішування пікселів. А от притемнення, яке око майже пробачає, зсуває всі стовпчики й ознаку ламає. Ліки — просторова піраміда.

Глобальне усереднення global average pooling, GAP

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

Тема 08 · Пулінг і зменшення розмірності · тема 09

Не плутати з усередненням по часу. Тут згортається простір — висота й ширина; там — час, кадри відео. Дія однакова, вісь різна.

Глобальне усереднення по часу global temporal average pooling

Зведення часової осі до одного числа середнім — те, що стоїть у кінці більшості відеомереж перед класифікатором.

Тема 35 · Дії у відео

Воно здатне стерти все, заради чого будували часовий шар. Одна навчена тривимірна мережа, три різні читачі поверх тих самих ознак: середнє по часу — 0.4000, максимум — 0.9533, розгортка часу — 1.0000. Згортки ті самі; різниця лише в тому, як їх зчитали.

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

Градації сірого grayscale

Одноканальне зображення, у якому кожен піксель — лише яскравість, без жодних відомостей про колір.

Тема 01 · Зображення очима компʼютера

Часта плутанина. Сірий не є середнім трьох каналів: зелений важить утричі більше за синій, бо око чутливіше саме до нього.

Градієнт зображення image gradient

Два числа на кожен піксель: наскільки яскравість змінюється вправо (gx) і наскільки вниз (gy). Разом вони утворюють вектор, у якого є модуль — √(gx² + gy²), тобто сила межі, — і напрямок, arctan(gy ÷ gx), тобто той бік, куди яскравість росте найшвидше. Напрямок завжди перпендикулярний до самої межі.

Тема 04 · Згортка вручну · тема 05

Чому модуль і напрямок — одна стаття. Нарізно вони не мають сенсу: це дві половини одного вектора. І поводяться вони по-різному саме тому, що половини різні. Пригасили лампу вдвічі — модуль поділився на два, а напрямок не змінився ні на градус, бо залежить лише від відношення gy до gx. Звідси правило класичного зору: напрямок градієнта — найдешевша ознака, стійка до освітлення.

Д 9 термінів

Двоетапний детектор two-stage detector

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

Тема 24 · Двоетапні детектори

Двопотокова мережа two-stream

Дві гілки на одному відео: одна дивиться на кадри (вигляд), друга — на оптичний потік (рух). Відповіді складають.

Тема 35 · Дії у відео

Скільки важить кожна гілка — властивість набору, а не схеми. На наборі, збудованому так, щоб вигляд не видавав класу, гілка вигляду дає 0.3433 (випадок), гілка руху — 1.0000. На справжніх наборах буває навпаки, і саме тому таке порівняння варто робити на своїх даних.

Дескриптор descriptor

Короткий вектор, що описує околицю однієї точки — так, щоб те саме місце впізналось на іншому знімку. У SIFT це 128 чисел float32, тобто 512 байтів на точку; в ORB — 256 бітів, тобто 32 байти.

Тема 05 · Класичні ознаки

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

Детектор Кенні Canny edge detector

Класичний алгоритм пошуку контурів, який майже завжди подають одним викликом cv2.Canny(img, 100, 200) — і тому він виглядає чорною скринькою. Насправді всередині чотири окремі кроки: згладити гаусом, порахувати градієнт ядрами Собеля, притлумити немаксимуми, щоб від гребеня лишилась сама вершина, і довести лінії гістерезисом — двома порогами, щоб слабкі краї не розсипались на крапки.

Тема 04 · Згортка вручну

cv2.Canny не робить першого кроку. Вона починає одразу з градієнта, а згладжувати маєш ти сам. Поміряно на квадраті з гаусовим шумом σ = 25: виклик без розмиття дав 11 806 пікселів межі, з розмиттям — 316. Різниця в 37 разів, і всі зайві — це шум, старанно підсилений Собелем. Наслідок для звірки власної реалізації: порівнювати свій Кенні треба з cv2.Canny(smoothed, …), інакше збіг падає з ~94 % до ~31 %.

Детекція обʼєктів object detection

Задача, де модель віддає список: для кожного знайденого предмета — рамка, мітка класу й число впевненості. Відповідає одразу на «що» і на «де».

Тема 02 · Карта задач CV · блок 5 цілком

Диспаритет disparity

Наскільки пікселів та сама точка сцени зсунута між лівим і правим знімком. Глибина береться з нього однією формулою: Z = F·B/d, де F — фокус у пікселях, B — база.

Тема 36 · Глибина, стерео і 3D

Ціна одного пікселя росте як Z². На метрі помилка в піксель коштує 1.96 см, на девʼяти — 1.37 м, на двадцяти — 5.71 м. Тому стерео вимірює близьке точно, а далеке не вимірює взагалі: на 50 м увесь диспаритет дорівнює одному пікселю.

Дифузійна модель diffusion model

Генеративна модель, яку навчили прибирати шум. Починають із чистого шуму й крок за кроком знешумлюють його, доки з нього не проступить зображення.

Тема 39 · Дифузійні моделі

Донавчання fine-tuning

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

Тема 12 · Перенос навчання

Інший вживаний варіант — «тонке налаштування». Ми кажемо донавчання: це саме навчання, тільки коротке й обережне.

Дропаут dropout

Під час навчання випадкову частину нейронів на кожному кроці вимикають. Мережа через це не може покластися на кілька окремих ознак і мусить шукати запасні.

Тема 11 · Навчання CNN

Е 3 терміни

Еквіваріантність щодо зсуву shift equivariance

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

Тема 04 · Згортка вручну · тема 07

Не плутати з інваріантністю. Інваріантність — це «відповідь не змінилась»; еквіваріантність — «відповідь змінилась так само, як вхід». Згортка еквіваріантна; інваріантність до дрібного зсуву дає вже пулінг.

Енкодер-декодер encoder–decoder

Будова з двох половин: перша поступово стискає зображення до компактного опису, друга розгортає з цього опису відповідь потрібного розміру — маску, глибину, нове зображення.

Тема 30 · U-Net

Еталонна розмітка ground truth

Правильна відповідь, з якою порівнюють прогноз моделі: мітки, рамки чи маски, проставлені людиною.

Тема 02 · Карта задач CV

Чому не «наземна істина». Буквальний переклад безглуздий, а «істина» надто гучна для роботи, яку зробив утомлений розмітник о шостій вечора. Кажемо «еталонна розмітка» або просто «розмітка»; у коді лишається gt.

З 9 термінів

Залишковий блок residual block

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

Тема 14 · ResNet і скіп-зʼєднання

Заморожування шарів freezing

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

Тема 12 · Перенос навчання

Звʼязна компонента connected component

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

Тема 31 · Instance segmentation

Чому це лише базова лінія. Спосіб бреше двічі, і в різні боки: два предмети одного класу, що торкаються, зливаються в одну пляму, а один предмет, перекритий посередині, розпадається на дві. На щільних сценах теми 31 кількість плям збіглася з кількістю предметів лише у 65.8 % сцен — і частина збігів випадкова, бо ці дві помилки гасять одна одну.

Згортка convolution

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

Тема 04 · Згортка вручну · далі всюди

cv2.filter2D рахує не згортку. Справжня згортка перевертає ядро на 180° перед роботою; filter2D цього не робить, тобто рахує кореляцію. Звірено з scipy.ndimage: filter2D == correlate істинне, filter2D == convolve хибне, а filter2D(flip(k)) == convolve знову істинне. Для симетричного ядра — розмиття, гауса, лапласіана — різниці немає взагалі; для навченого теж немає, бо мережа однаково знайде потрібний поворот. А для ядра, яке ти написав рукою й у якого коефіцієнти несиметричні, різниця цілком реальна.

Згорткова нейромережа convolutional neural network, CNN

Мережа, головна частина якої складена зі згорткових шарів. З 2012 по 2020 рік — основний інструмент компʼютерного зору, і досі основний там, де мало даних.

Тема 09 · CNN цілком

Не «конволюційна». Калька поширена в машинних перекладах, але українською нічого не означає. У курсі її немає жодного разу.

Згортковий шар convolutional layer

Шар, що застосовує до входу набір ядер і віддає стільки карт ознак, скільки в нього ядер. Ваги ядра ті самі для всього кадру — тому шар маленький, а працює скрізь.

Тема 07 · Згортковий шар

Спільні ваги (weight sharing). Саме з цього одного рішення випливає і мала кількість параметрів, і те, що ознака знаходиться в будь-якому кутку.

Змагальний приклад adversarial example

Зображення, змінене так мало, що людина різниці не бачить, а модель міняє відповідь. Найпростіший спосіб зробити — FGSM: крок у бік зростання втрати, тобто рівно навпаки до навчання.

Тема 40 · Межі й етика CV

Наскільки мало — це число. У зошиті теми 40 точність падає 0.9956 → 0.6578 при обуренні ε = 0.05, тобто 3.3 % усієї фарби кадру (26.3 пікселя яскравості з 784). Випадковий шум тієї самої сили лишає 0.9878 — отже справа не в силі, а в напрямку.

Зменшення і збільшення роздільності downsampling, upsampling

Дві протилежні дії над картою ознак: зробити її дрібнішою (пулінг або згортка з кроком 2) чи, навпаки, більшою (транспонована згортка або проста інтерполяція).

Тема 08 · Пулінг і зменшення розмірності · тема 30 · U-Net

Чому переклали. Тут англійське слово нічого не додає: дія проста й називається українською без утрат. У коді відповідні шари звуться по-різному в кожній бібліотеці, тож єдиного імені аргументу, яке варто було б берегти, немає.

Зсув домену domain shift

Дані, на яких модель працює, відрізняються від тих, на яких її навчали: інша камера, інше освітлення, інший генератор. Числа з перевірної вибірки після цього нічого не обіцяють.

Тема 40 · Межі й етика CV

Найчистіший приклад — детектори дипфейків. Детектор, навчений на одному генераторі, дає на ньому 0.9992, а на іншому — 0.5017, тобто рівно монетку. І несподіванка: при слабшому артефакті перенос, навпаки, зʼявляється (0.8558 і 0.9458) — сильна легка ознака шкодить узагальненню більше, ніж слабка.

І 3 терміни

Індуктивне зміщення inductive bias

Те, що модель «знає» про задачу ще до першого прикладу — не з даних, а зі своєї будови. У згортки таких припущень два: сусідні пікселі повʼязані сильніше за далекі (локальність) і те саме правило годиться в будь-якому місці кадру (еквіваріантність щодо зсуву). Правильне зміщення економить дані; хибне не дає навчитись узагалі.

Тема 06 · Чому повнозвʼязна мережа не годиться · тема 20

Ініціалізація Хе He initialization

Правило, за яким беруть початкові ваги: випадкові числа з відхиленням √(2 / кількість входів). Двійка в чисельнику — поправка саме на ReLU, яка обнуляє половину значень і тим удвічі зменшує дисперсію сигналу. Без неї сигнал згасає або вибухає з кожним шаром.

Тема 11 · Навчання CNN

Інтерполяція interpolation

Спосіб дістати одне число там, де вхідних пікселів кілька або жодного цілого. Зменшуєш кадр увосьмеро — на кожен вихідний піксель припадає 64 вхідні, і треба вирішити, як із них зробити одне число. Повертаєш на 30° — вихідний піксель падає між вхідними, і його доводиться збирати із сусідів.

Три імені варто знати напамʼять. INTER_NEAREST бере один найближчий піксель, тобто з 64 читає 1; INTER_LINEAR усереднює 4 сусідні; INTER_AREA усереднює всі, що потрапили в клітинку. На полі чистого шуму 400 × 400 → 50 × 50 стандартне відхилення результату виходить 73.99, 36.82 і 9.28 — різниця у вісім разів. Правило: зменшуєш — INTER_AREA. Збільшуєш — INTER_LINEAR (швидко) або INTER_CUBIC (гладкіше). INTER_NEAREST — тільки для масок із номерами класів, де середнє між класом 2 і класом 4 дало б клас 3, якого на цьому пікселі немає.

Тема 03 · OpenCV: базові операції

Пастка, яка ловить професіоналів. Замовчування cv2.resize — INTER_LINEAR, і при непарному коефіцієнті зменшення воно вироджується: точка вибірки лягає рівно в центр вхідного пікселя, ваги трьох сусідів обнуляються, і метод читає один піксель замість чотирьох. Поміряно: при коефіцієнті 2 std дорівнює 37.19, при 3 — 73.70, тобто рівно стільки, скільки дає INTER_NEAREST. Усереднення просто не сталося.

К 15 термінів

Калібрування метрики metric calibration

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

Блок 8 · теми 37-40

Правильний критерій — запас, а не порядок. Метрика може впорядкувати набори правильно й усе одно не годитися: у темі 39 слабка версія поставила повний колапс мод лише на один відсоток гірше за робочу модель (1.01×), тоді як придатна дала запас 2.41×.

Що саме довелося викинути. Впевненість класифікатора: «усе біле» дістає 0.9997 проти 0.9913 у справжніх фігур, а на порожньому чорному кадрі — 0.9957 проти 0.9899. Гірше того, три судді різної навченості дають на тих самих зображеннях повного колапсу 0.5611, 0.9191 і 0.9777 — число описує суддю, а не зразки.

Канал channel

Одна площина чисел у зображенні або в карті ознак. Кольорове фото має три канали, а карта ознак усередині мережі — сотні.

Тема 01 · Зображення очима компʼютера · тема 07

Кандидат-область region proposal

Ділянка кадру, яку заздалегідь позначили як «тут може щось бути», щоб класифікатор не перебирав усе зображення підряд.

Тема 24 · Двоетапні детектори

Історія в одному рядку. Спершу кандидатів шукав Selective Search — злиття схожих ділянок без жодного навчання. Faster R-CNN замінив його окремою маленькою мережею, і саме це зробило детекцію швидкою.

Карта ознак feature map

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

Тема 07 · Згортковий шар

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

Ключова точка keypoint

Наперед визначена точка на предметі, у якої є свій номер і свій сенс: суглоб людини, кут документа, кутик ока. Номер тут значущий — точка 3 завжди праве плече.

Тема 02 · Карта задач CV

Не плутай із точками SIFT і ORB. Там те саме англійське слово keypoint означає інше: прикметне місце, знайдене автоматично, у якого немає ані номера, ані сенсу — тільки координати, розмір і дескриптор. Тут точки проставляє людина при розмітці, і номер кожної щось означає.

Коефіцієнт Дайса Dice coefficient

Міра збігу двох масок: подвоєна спільна площа, поділена на суму площ. Міряє те саме, що IoU, але мʼякше карає за похибку — і тому завжди трохи більший.

Тема 02 · Карта задач CV · тема 29

Колапс мод mode collapse

Хвороба GAN: генератор знаходить дві-три картинки, які надійно обманюють дискримінатора, і починає малювати тільки їх, забувши про різноманіття.

Тема 38 · GAN

Кольоровий простір color space

Спосіб задати колір числами: RGB, HSV, градації сірого. Те саме фото в різних просторах виглядає однаково, а числа в ньому геть різні.

Тема 01 · Зображення очима компʼютера · тема 03

Комірка і блок cell, block

Дві сітки, з яких зроблено HOG. Комірка — квадратик 8 × 8 пікселів, у якому будують одну гістограму напрямків: усередині комірки координати втрачаються, між комірками — зберігаються. Блок — квадрат 2 × 2 сусідні комірки, разом 4 × 9 = 36 чисел; він потрібен рівно для того, щоб було по чому нормувати.

Тема 05 · Класичні ознаки

Чому одна стаття. Нарізно вони не існують: комірка без блока не має чим нормуватись, блок без комірок порожній. Блоки до того ж беруть із перекриттям, тож кожна комірка потрапляє в кілька блоків і щоразу нормується по-різному.

Контрастне навчання contrastive learning

Навчання, у якому модель зближує представлення пари, що справді повʼязана (фото і його підпис), і розсуває пари, зібрані навмання.

Тема 22 · CLIP і мультимодальність

Кореляція cross-correlation

Операція над зображенням: ядро ковзає по кадру, у кожному положенні множиться на пікселі під собою, і сума добутків іде у вихід. Тобто рівно те, що більшість людей називає згорткою. Справжня згортка відрізняється однією дією: перед роботою вона перевертає ядро на 180°.

Тема 04 · Згортка вручну

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

Косинусна близькість cosine similarity

Спосіб поміряти, наскільки схожі два вектори ознак: перемнож їх поелементно, додай добутки й поділи на добуток довжин самих векторів. Виходить число від −1 до 1: одиниця — вектори дивляться в один бік, нуль — спільного нічого.

Тема 05 · Класичні ознаки

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

Край edge

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

Тема 01 · Зображення очима компʼютера · тема 04

Крок stride

На скільки пікселів ядро зсувається за один раз. Крок 1 — щільно, піксель за пікселем; крок 2 — через один, і карта ознак на виході виходить удвічі меншою.

Тема 07 · Згортковий шар

Чому в дужках. «Крок» зрозумілий одразу, тому заголовок український. Але в коді аргумент зветься stride, тож оригінал ми ставимо поруч завжди, а не лише при першій згадці.

Кутова точка й детектор Гарріса corner, Harris corner detector

Уяви, що дивишся на знімок крізь маленьке віконце й можеш посунути його на кілька пікселів у будь-який бік. На рівній плямі не зміниться нічого. На межі зміниться все, якщо посунути впоперек, і нічого — якщо вздовж. І тільки в кутку, де сходяться дві межі, вміст віконця міняється в будь-якому напрямку. Гарріс саме це й міряє: дивиться не на найбільшу зміну, а на найменшу.

Тема 05 · Класичні ознаки

Чому одна стаття. Кут як «цікаве місце» означено через найгірший напрямок — тобто через сам критерій Гарріса; розділивши їх, ми поклали б половину доводу в кожну половину. На синтетичній сцені найгірший напрямок дає 12 на плямі, 18 на межі й 5054 на кутку — різниця в чотириста разів. У коді це cv2.cornerHarris і зручніша обгортка cv2.goodFeaturesToTrack.

Л 2 терміни

Латентний простір latent space

Простір коротких описів, у які модель стискає зображення. Близькі точки в ньому означають схожі картинки, і тому по ньому можна ходити й дивитись, як одне зображення плавно перетікає в інше.

Тема 37 · Автоенкодери й VAE · тема 39

Локальність locality

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

Тема 06 · Чому повнозвʼязна мережа не годиться · тема 07

Це припущення, а не закон. Там, де воно хибне — звʼязок двох протилежних кутів кадру, — згортка програє увазі, і саме звідси починається тема 19.

М 6 термінів

Маска mask

Відповідь сегментації: масив розміру зображення, де кожній клітинці поставлено номер класу або позначка «належить предмету / не належить».

Тема 02 · Карта задач CV · блок 6

Маска нерізкості unsharp mask

Спосіб додати різкості через розмиття, і назва спантеличує саме тому. Думка проста: розмиття знищує дрібні деталі, отже, різниця «оригінал мінус розмите» — це і є ті деталі в чистому вигляді. Додай їх назад із множником, і вони стануть виразнішими: різке = оригінал + сила × (оригінал − розмите).

Тема 04 · Згортка вручну

Чим платимо. Різкість підсилює всі дрібні перепади без розбору, а шум матриці — це теж дрібні перепади. Надто велика сила витягує з тіней зернистість, а навколо контрастних меж малює світлу й темну облямівку — ореол. Додавай різкість останньою дією й дивись на результат у масштабі 100 %, а не на зменшеній копії, де ореолів не видно.

Масштабна неоднозначність scale ambiguity

Причина, чому глибину не можна виміряти з одного знімка. Куля радіуса R на глибині Z дає в кадрі радіус F·R/Z — а це число не міняється, якщо збільшити R і Z разом.

Тема 36 · Глибина, стерео і 3D

Це не «важко», а неможливо. Мʼячик 10 см за 2 м, куля 50 см за 10 м і куля 2.5 м за 50 м дають побітово однакові знімки — різниця рівно нуль пікселів при масштабах, що різняться в 25 разів. Стерео їх розводить одразу: диспаритети 25 / 5 / 1 px.

Наслідок для монокулярних мереж. Вони вгадують глибину відносну, а абсолютну взяти нізвідки. У зошиті теми 36 мережа, перенесена у світ, збільшений у 2.5 раза, помиляється на 12.6 м — а після підбору одного множника похибка падає до 1.2 м, і сам множник виходить рівно 1/2.5.

Масштабний простір scale space

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

Тема 05 · Класичні ознаки

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

Межовий режим border mode

Відповідь на питання «що лежить за краєм кадру». Будь-яка операція, що дивиться на окіл пікселя, на краю впирається в порожнечу, а щоб порахувати число, потрібне число. OpenCV дає чотири відповіді; ось верхній рядок масиву 0…8 після рамки в один піксель: BORDER_CONSTANT → 0 0 0 0 0, кладе сталу; BORDER_REPLICATE → 0 0 1 2 2, розмазує крайній піксель; BORDER_REFLECT → 0 0 1 2 2, дзеркалить разом із краєм; BORDER_REFLECT_101 → 4 3 4 5 4, дзеркалить, не повторюючи край.

Тема 03 · OpenCV: базові операції · тема 04

Чому за замовчуванням REFLECT_101. Подвоєний край створює штучну сходинку — два однакові значення поспіль там, де їх у зображенні не було, — і наступний фільтр чесно знайде її як деталь. А BORDER_CONSTANT домішує чорноту, якої в кадрі не було: після гаусового розмиття 9 × 9 світлий кут фото темніє з 199 до 79, по периметру зʼявляється темна рамка, і детектор меж знаходить уздовж краю межу, якої не існує.

Метод Оцу Otsu's method

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

Тема 03 · OpenCV: базові операції

Де він ламається. Оцу шукає один поріг на весь кадр. При рівному освітленні він знаходить 138 і відділяє цифри від паперу майже ідеально — IoU 99.9 %. Додай лампу збоку, і той самий метод дає 24.5 %: він чесно поділив картинку на темну й світлу половини, от тільки ця межа проходить по кадру, а не по цифрах. Ліки — адаптивний поріг.

Н 3 терміни

Навчена ознака проти придуманої learned vs hand-crafted feature

Два підходи до того самого. Раніше інженер сам вирішував, що рахувати на зображенні (гістограми, HOG, SIFT), і писав це руками. Тепер мережа виводить ознаки сама з даних, і саме це виявилось вирішальним.

Тема 05 · Класичні ознаки · блок 2

Чому придумана ознака програла. Кожна з них стійка рівно до того, що її автор вирішив викинути, — і сліпа рівно до того ж. Гістограма переживає поворот (близькість 0.998) і гине від світла (0.363); HOG навпаки — світло 1.000, поворот 0.237. Та сама бібліотека показує це на собі: в OpenCV 5 замість викинутих HOGDescriptor і каскадів Хаара зʼявились ALIKED, DISK і LightGlue — детектори ознак, які не придумані, а навчені.

Нормування по блоках block normalization

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

Тема 05 · Класичні ознаки

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

Нормування ядра kernel normalization

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

Тема 04 · Згортка вручну

Найчастіша помилка. Узяти бокс-фільтр із девʼятьма одиницями й забути поділити на девʼять. Сума стає девʼяткою, середня яскравість стрибає зі 162.6 до 1463, усі числа вилітають за 255 — і після обрізання від фото лишається біла пляма з одним-єдиним унікальним значенням.

О 4 терміни

Одноетапний детектор one-stage detector

Детектор, що видає рамки й класи за один прохід мережі, без окремого етапу пошуку кандидатів. Помітно швидший; історично був трохи менш точним, доки не зʼявився focal loss.

Тема 25 · YOLO · тема 26

Ознака feature

Короткий опис зображення або його шматка — вектор на 32, 128 чи 3780 чисел замість двадцяти тисяч пікселів, — зроблений так, щоб у нього не потрапила дрібниця, а потрапила суть. Перетворення, яке його рахує, звуть виділенням ознак (feature extraction).

Вимог до ознаки три, і вони тягнуть у різні боки. Стійкість: спотворили знімок — вектор майже не змінився. Розрізняльність: два різні предмети дають різні вектори. Компактність: вектор коротший за саме зображення. Найстійкіша ознака у світі — константа, і вона ж найнікчемніша; найрозрізняльніша — саме зображення, і воно ж не стійке ні до чого.

Тема 05 · Класичні ознаки · далі всюди

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

Оптичний потік optical flow

Поле зсувів: куди перемістився кожен піксель або кожна ділянка між двома сусідніми кадрами відео. Показує рух там, де окремий кадр показує лише вигляд.

Тема 34 · Відео: трекінг

Оцінка глибини depth estimation

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

Тема 02 · Карта задач CV · тема 36

П 19 термінів

Патч patch

Квадратний шматочок зображення — скажімо, 16 на 16 пікселів, — який Vision Transformer перетворює на один токен і далі поводиться з ним так само, як мовна модель зі словом.

Тема 20 · Vision Transformer

Передискретизація oversampling

Повторювати приклади рідкісного класу, щоб мережа бачила його частіше. Проста альтернатива вагам класів.

Тема 40 · Межі й етика CV

Передтренована модель pretrained model

Мережа, уже навчена на великому чужому наборі — найчастіше ImageNet, — яку беруть як заготовку замість того, щоб починати з нуля.

Тема 12 · Перенос навчання

Перенос навчання transfer learning

Прийом: узяти мережу, навчену на чужій великій задачі, і пристосувати її до своєї маленької. Часто вистачає навчити один новий шар зверху.

Тема 12 · Перенос навчання

Інший вживаний варіант — «трансферне навчання». Ми беремо «перенос навчання»: воно прозоре — переносимо вивчене з однієї задачі на іншу.

Переповнення overflow

Що стається, коли результат не влазить у тип: у uint8 одразу за 255 знову йде 0, тому 250 + 10 дає 4. На фото це видно як чорні плями рівно на найсвітліших місцях — найяскравіші пікселі перескакують через нуль першими.

Тема 01 · Зображення очима компʼютера

Ліки. Рахувати проміжок у float або int16, а вже потім обрізати через np.clip; або одразу брати cv2.add, яка сама насичує замість того, щоб перекручуватись.

Пересвічення overexposure

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

Тема 01 · Зображення очима компʼютера

Підказка prompt

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

Тема 32 · Panoptic і SAM

Підказка не визначає відповідь однозначно. Точка в колесі може означати колесо, машину або всю вантажівку — і всі три маски чесні. Тому SAM віддає три, а не одну: модель з одним виходом осідає на компромісі, який не збігається з жодною з них. У зошиті теми 32 неоднозначних підказок 58.1 %, і одна маска дає IoU 0.5924 проти 0.8177 у трьох.

Не плутай із підказкою мовній моделі. Там prompt — текст, тут — геометрія на зображенні. Слово одне, вхід різний.

Підміна номера ID switch

Подія, коли той самий предмет у відео дістає інший номер, ніж мав. Головна метрика трекінгу — і головний доказ того, що трек урвався.

Тема 34 · Відео: трекінг

Її народжує дірка в детекціях, а не перетин предметів. На пʼятьох кулях, що перетинаються, підмін 0.50; досить детекторові пропускати 10 % рамок — і їх стає 18.62, у 37 разів більше. Лікує це не розумніше зіставлення, а дозвіл треку прожити кілька кадрів без детекції (вік треку).

Чого вона не бачить. Одна підміна посеред сорока кадрів і одна підміна на самому краю — те саме число, хоча шкода різна. Тому поруч із нею цитують міру, чутливу до того, де трек урвався.

Підпис до зображення image captioning

Задача, де вихід — не мітка й не рамка, а речення природною мовою, що описує фото.

Тема 22 · CLIP і мультимодальність

Піксель pixel

Найдрібніша клітинка зображення: однорідний квадратик одного кольору, для якого збережено числа. Від англійського picture element — «елемент зображення».

Тема 01 · Зображення очима компʼютера

Пляшкове горло bottleneck

Найвужче місце, крізь яке мусить пройти сигнал. Слово вживають у двох сенсах. В автоенкодері це найтонший шар посередині: що в ньому лишилось, те й називають латентним представленням. В архітектурах це блок, який шаром 1 × 1 наперед стискає канали, щоб дорога згортка 3 × 3 працювала з меншим стосом, а потім розтискає назад — так побудовані Inception, ResNet-50 і майже все після них.

Тема 37 · Автоенкодери й VAE · тема 39 · тема 07 · тема 15

Чому не «вузьке місце». Так теж кажуть — і сама лекція теми 37 пише саме так. Але «вузьке місце» у звичайному сенсі «найповільніша ланка» вживається в курсі окремо й частіше (тема 24 будує на ньому цілу розповідь про три архітектури), тож за терміном лишаємо «пляшкове горло», а «вузьке місце» — за буденним значенням.

Воно рідко буває справжнім вузьким місцем. У зошиті теми 37 похибка відновлення падає 0.09612 → 0.02472 при латенті від 1 до 32, але виграш від подвоєння зникає після восьми (35 % → 11 %), а сама похибка спиняється вчетверо вище за шумову підлогу 0.00180. Уперлися в силу декодера, а не в ємність горла — і розширювати латент далі марно.

Повнозвʼязний шар fully connected layer, dense

Шар, у якому кожен вхід зʼєднано з кожним виходом. Для зображення це відразу дві біди: неосяжна кількість ваг і повна втрата того, що сусідні пікселі — сусідні.

Тема 06 · Чому повнозвʼязна мережа не годиться

Позиційне кодування positional encoding

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

Тема 20 · Vision Transformer

Покриття класів mode coverage

Скільки різних видів зразків генеративна модель насправді породжує. Друга половина пари до FID і пряма протилежність колапсу мод.

Теми 37-39

Без нього FID сліпий саме там, де найважливіше. Два незалежні заміри блоку 8 дали те саме: «лише кола» (один клас із шести) і «кола + квадрати» (два) відрізняються за FID на 3 % — 423.14 проти 435.22 в одному зошиті, 483.84 проти 466.80 в іншому, причому в другому порядок навіть зворотний. Скільки саме мод утрачено, FID не бачить; покриття бачить.

Поріг — домовленість, а не константа. Тема 38 рахує клас покритим від 5 % вибірки, тема 37 — від 1 %. На тих самих моделях це дає різні числа (3.00 проти 4.33), тож поріг треба називати щоразу.

Порожній символ blank

Додатковий клас у CTC, яким мережа каже «тут літери немає». Потрібен для двох речей: заповнити колонки, на які літер не вистачило, і розділити дві однакові літери підряд — без нього «455» склеїлось би в «45».

Тема 33 · OCR

Це не пробіл. Пробіл — звичайний символ алфавіту з власним класом. Порожній символ у відповідь ніколи не потрапляє: його викидають на декодуванні разом зі склеюванням повторів.

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

Посимвольна похибка й рядок цілком CER, exact match

CER — відстань Левенштейна, поділена на довжину істини: скільки символів довелося б виправити. Рядок цілком — частка рядків, розпізнаних без жодної помилки.

Тема 33 · OCR

Одна стаття, бо поодинці кожна бреше. При однаковій якості символів вони розходяться з довжиною рядка: імовірність помилки 2 % на символ дає CER ≈ 0.02 незалежно від довжини, а «рядок цілком» падає з 0.9210 на чотирьох символах до 0.6230 на двадцяти пʼятьох. Довший рядок не гірше розпізнано — його просто важче не зіпсувати ніде.

Що з чого цитувати. CER годиться, коли текст потім читає людина й дрібна помилка не смертельна. «Рядок цілком» — коли рядок іде в базу як ключ: там одна неправильна цифра робить запис непридатним.

Притлумлення немаксимумів non-maximum suppression

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

Тема 04 · Згортка вручну

Не плутай із NMS у детекції. Там та сама назва означає прибирання зайвих рамок, тут — зайвих пікселів. І пастка на додачу: рядки зображення ростуть униз, тому кут 45°, порахований через arctan2(gy, gx), вказує вправо-вниз, і сусіди для нього — (r−1, c−1) та (r+1, c+1). Більшість туторіалів пише навпаки; код не падає, просто збіг із cv2.Canny тихо падає з 94 % до 51 %.

Просторова піраміда spatial pyramid

Ліки від головної вади гістограми: замість однієї гістограми на весь кадр беруть сітку клітинок і рахують гістограму в кожній, а потім склеюють їх в один довгий вектор. Тепер він знає не тільки «скільки темного», а й «темне було в лівому нижньому куті».

Тема 05 · Класичні ознаки

Ціна видна з арифметики. Було 16 корзин на знімок — стало 16 на кожну з 64 клітинок сітки 8 × 8, тобто 1024 числа. І зʼявилась нова крихкість: близькість до перевернутого кадру падає з 1.000 приблизно до 0.5, тобто ознака нарешті розрізняє, — але й близькість до зсунутого на шість пікселів сповзає з 1.000 до 0.87. За розрізняльність заплачено стійкістю, і той самий обмін повториться в HOG і в SIFT.

Пулінг pooling

Зменшення карти ознак: беруть квадратик, зазвичай 2 на 2, і лишають від нього одне число — найбільше (max pooling) або середнє (average pooling).

Тема 08 · Пулінг і зменшення розмірності

Чому не переклали. «Підвибірка» й «агрегація» пробувались і не прижились у жодному живому тексті. А в сучасних мережах пулінг поступово витісняє згортка з кроком 2 — про це в самій темі.

Р 12 термінів

Рамка bounding box, bbox

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

Тема 02 · Карта задач CV · тема 23

Канонічно — рамка. «Обмежувальна рамка» точна, але громіздка й у реченні заважає. Скорочення bbox лишаємо для коду й імен полів у форматах розмітки.

Репараметризація reparameterization trick

Спосіб пропустити градієнт крізь випадковість: замість того щоб тягнути z з розподілу, тягнуть ε з N(0, 1) і рахують z = μ + σ·ε. Випадковість лишається у входу, а не в дорозі градієнта.

Тема 37 · Автоенкодери й VAE

⚠️ Пастка з мовчазним нулем. У torch 2.10 torch.normal(mu, sigma) має grad_fn, але похідну по mu дає рівно 0.0: код працює, граф будується, помилок немає, а енкодер не вчиться. Правильно — власна формула або Normal(...).rsample(); sample() градієнта не має взагалі й тим чесніший.

Чому не обхідний шлях. Оцінка через логарифм щільності теж працює, але шумніша: точна похідна 3.0, репараметризація дає 2.9679 ±1.4010, логарифм щільності — 3.0629 ±6.8485. Щоб зрівнятися, другій потрібно приблизно у 24 рази більше зразків.

Рецептивне поле receptive field

Ділянка вхідного зображення, яка взагалі здатна вплинути на одне число в карті ознак. З кожним новим шаром вона росте: перший шар бачить 3 на 3 пікселі, десятий — пів кадру.

Тема 07 · Згортковий шар

Чому латинізм. «Рецептивний» усталений в українській нейрофізіології, звідки термін і прийшов у мережі. Вигадувати заміну немає сенсу.

Речі й матерія things, stuff

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

Тема 02 · Карта задач CV · тема 32

Розгортання flatten

Перетворення карти ознак на один довгий вектор: 32 канали по 7 × 7 стають 1 568 чисел у рядок. Потрібне, щоб віддати карту повнозвʼязному шару, — але саме тут геометрія й зникає: після розгортання сусідство пікселів більше нічим не виражене.

Тема 06 · Чому повнозвʼязна не годиться · тема 09

Ціна. Розмір вектора прямо залежить від сторони входу, тому мережу з розгортанням не можна годувати кадром іншого розміру. Глобальне усереднення цієї вади не має.

Роздільна згортка по глибині depthwise separable convolution

Згортка, розбита надвоє: спершу кожен канал обробляють окремо своїм ядром, потім змішують канали між собою згорткою 1 на 1. Дає майже те саме, коштує в рази менше.

Тема 15 · Inception, MobileNet, EfficientNet

Роздільне ядро separable kernel

Ядро, яке можна не застосовувати цілком: досить пройти зображення двічі одновимірним ядром — спершу по рядках, потім по стовпцях, — і результат буде той самий. Так можна тоді, коли вага клітинки залежить окремо від зсуву по горизонталі й окремо від зсуву по вертикалі: ядро[i, j] = вага(i) × вага(j).

Тема 04 · Згортка вручну

Заради чого. Двовимірне ядро 9 × 9 — це 81 множення на піксель, два одновимірні проходи — 18, тобто в 4.5 раза менше; для 21 × 21 буде 441 проти 42. Гаус, бокс і Собель роздільні, а довільна матриця з девʼятьма випадковими числами — ні: перевіряють це рангом матриці, роздільні саме ті ядра, у яких ранг дорівнює одиниці.

Роздільність resolution

Скільки пікселів завширшки й заввишки має зображення. Фото 640 на 480 — це 307 200 пікселів, і саме з цього числа починається будь-яка оцінка вартості обчислень.

Тема 01 · Зображення очима компʼютера

Не «розширення». Це різні слова, і плутають їх постійно.

Розклад швидкості й розігрів learning rate schedule, warmup

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

Тема 11 · Навчання CNN

Розмітка annotation, labelling

Правильні відповіді, проставлені людиною: мітки, рамки, маски, ключові точки. Найдорожча частина будь-якого проєкту зору — і саме вона зазвичай вирішує, яку постановку задачі ти можеш собі дозволити.

Тема 02 · Карта задач CV · тема 28

Розпізнавання дій action recognition

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

Тема 35 · Дії у відео

Розпізнавання тексту OCR, optical character recognition

Знайти на зображенні текст і прочитати його. Складається з двох задач: детекції ділянок із текстом і перетворення картинки на рядок символів.

Тема 02 · Карта задач CV · тема 33

С 6 термінів

Самоувага self-attention

Механізм, у якому кожен елемент входу сам вирішує, на які інші елементи дивитись. На відміну від згортки, звʼязок не обмежений сусідством: перший патч може дивитись на останній без жодних проміжних шарів.

Тема 19 · Від згортки до уваги · тема 20

Про назву. «Увага до себе» звучить кумедно, тож лишаємо самоувагу — коротку й уже вживану. Англійський запис self-attention ставимо поруч завжди: у коді й статтях трапляється тільки він.

Сегмент segment

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

Тема 32 · Panoptic і SAM

Чому це важить для метрики. Матерії сегмент дістається один і величезний, тож не влучити в нього з IoU понад 0.5 майже неможливо: у зошиті теми 32 RQ фону дорівнює рівно 1.0000. Звідси й осторога — середнє «(PQ речей + PQ матерії)/2» лестить моделі, бо половину оцінки дає категорія, у якій майже неможливо помилитись.

Семантична сегментація semantic segmentation

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

Тема 02 · Карта задач CV · тема 29

Скіп-зʼєднання skip connection

Провід в обхід кількох шарів: вхід додається до виходу або приклеюється до нього збоку. Через нього до перших шарів добирається градієнт, а до декодера — дрібні деталі, які встигли загубитись при стисканні.

Тема 14 · ResNet і скіп-зʼєднання · тема 30 · U-Net

Чому не переклали. «Пропускне зʼєднання» неоднозначне — пропускає воно чи його пропускають? «Обхідне» ближче до суті, але не вживається ніде.

Спільні ваги weight sharing

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

Тема 06 · Чому повнозвʼязна мережа не годиться · тема 07

Стиснення із втратами й без втрат lossy, lossless compression

Дві половини одного вибору. Без втрат (PNG) — із файлу відновлюється точнісінько той масив, який записували. Із втратами (JPEG) — відновлюється схоже, але не те саме, зате файл менший у десятки разів: те саме фото важить 128 388 байтів у PNG і 12 367 у JPEG якості 90, тобто у 18.6 раза менше.

Тема 01 · Зображення очима компʼютера · тема 03

Чому одна стаття й чому це важить. Нарізно ці слова — просто протилежності, сенс має лише вибір між ними. Після JPEG якості 90 інші значення мають 99.9 % пікселів: у середньому кожен зсунувся на 3 рівні, а найгірший — на 84 з 255, і сидить він рівно на контрастній межі. Артефакти стиснення живуть саме на різких краях — на тому, за що чіпляються перші шари згорткової мережі. І кожне перезбереження JPEG додає втрат до вже наявних.

Т 5 термінів

Тест співвідношення Лоу Lowe's ratio test

Правило, яке відсіює вигадані зіставлення точок. У кожної точки на другому знімку завжди знайдеться найближчий сусід — навіть якщо самої точки там немає, бо вона затулена або вийшла за кадр. Тому шукають не одного сусіда, а двох, і пару приймають, тільки якщо перший помітно ближчий за другого: відстань до першого < поріг × відстань до другого. Класичний поріг Лоу — 0.75.

Тема 05 · Класичні ознаки

Логіка тесту. Якщо точка справді впізнана, її дескриптор близький до одного-єдиного кандидата й далекий від решти. Якщо ж два кандидати однаково близькі, точка невиразна — так буває в повторюваних візерунках і в шумі, — і краще її викинути, ніж загадувати. На синтетичній сцені тест підняв частку правильних пар із 72 % до 96 %, а RANSAC після нього — до 100 %.

Транспонована згортка transposed convolution

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

Тема 30 · U-Net

Не «деконволюція». Цю назву зустрінеш часто, але вона неправильна: операція не обертає згортку, а лише повертає розмір.

Трекінг tracking

Стеження за предметами у відео: рамкам присвоюють номери, і номер зберігається з кадру в кадр. Телефон, що був сьомим на першому кадрі, лишається сьомим і на сотому.

Тема 02 · Карта задач CV · тема 34

Трекінг за детекцією tracking-by-detection

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

Тема 34 · Відео: трекінг

Чому вона витіснила однопредметні трекери. Ті вели предмет за виглядом і не вміли ані додавати нових, ані переживати зникнення. До того ж вони й на легкій задачі працюють погано: єдиний трекер, що лишився в OpenCV 5, веде кулю, яка їде по прямій, із середнім IoU 0.3289.

Тривимірна згортка 3D convolution

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

Тема 35 · Дії у відео

У 3 терміни

Увага attention

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

Тема 19 · Від згортки до уваги

Угорський алгоритм Hungarian algorithm, Kuhn 1955

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

Тема 27 · DETR · тема 34

Чим він кращий за жадібний вибір. Жадібний бере найбільшу клітинку таблиці першою й може лишити другу пару ні з чим. Різниця мала й рідкісна, але росте з густотою сцени: на пʼятьох предметах 3.50 підміни проти 4.00, на вісімнадцятьох — 38.50 проти 53.62. Жадібний не виграв на жодному зерні.

Упередженість датасету dataset bias

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

Тема 40 · Межі й етика CV

Ф 1 термін

Форма масиву shape

Трійка чисел «висота, ширина, канали», якою описують зображення в NumPy й далі скрізь. Перше, що варто надрукувати, відкривши незнайоме фото.

Тема 01 · Зображення очима компʼютера

Часта плутанина. Порядок саме такий: спершу рядки, потім стовпці. Ширина йде другою, хоча в побуті кажуть «640 на 480».

Х 1 термін

Хмара точок point cloud

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

Тема 36 · Глибина, стерео і 3D

Чому саме хмара, а не сітка. Точки не знають про сусідів, тож поверхні в них немає: дірки, затінені ділянки й шум лишаються як є. Щоб дістати суцільну поверхню, хмару ще треба зшити в сітку трикутників — це вже окрема задача.

Ш 1 термін

Шум матриці sensor noise

Дрібний випадковий розкид значень пікселя, який додає сама камера, а не сцена: те саме нерухоме фото, зняте двічі поспіль, дасть трохи різні числа. Помітніший у темряві й на високому ISO, бо там слабкий сигнал підсилюють разом із шумом.

Тема 01 · Зображення очима компʼютера

Чому про нього згадують так часто. Шум — перше, що згладжує розмиття, перше, що викидає JPEG, і перше, що приймає за межу невдало налаштований детектор країв.

Я 3 терміни

Ядро kernel, filter

Маленька табличка чисел — 3 на 3, 5 на 5, — яку згортка прикладає до зображення. Розмір майже завжди непарний, щоб у ядра був однозначний центр: саме він накладається на піксель, значення якого ми рахуємо. Числа ядра й є те, що згортковий шар вивчає під час навчання.

Тема 04 · Згортка вручну · тема 07

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

Ядро Собеля Sobel kernel, Sobel operator

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

Тема 04 · Згортка вручну · тема 05

Чому не просто [−1, 0, 1]. Таке ядро дивиться на один рядок, і випадковий шумовий піксель дає фальшивий сплеск. Собель дивиться на три рядки й дає середньому подвійну вагу — це вбудоване згладжування впоперек напрямку. Сума коефіцієнтів нульова, тож на рівній ділянці відгук нульовий, хоч яка там яскравість. А cv2.Sobel із ksize=3 — це буквально filter2D із цим ядром: різниця на всьому зображенні рівно нуль.

Якірна рамка anchor box

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

Тема 24 · Двоетапні детектори · тема 25

Як казати. У коді й статтях — anchor box; українською кажемо «якірна рамка» або просто «якір».

A–Z 53 терміни

AlexNet і VGG 2012, 2014

Дві мережі, з яких почалась сучасна історія. AlexNet виграла ImageNet 2012 і показала, що глибока згорткова мережа на відеокарті бʼє все попереднє. VGG звела будову до простого рецепта: багато однакових шарів 3 на 3 поспіль.

Тема 13 · AlexNet і VGG

Anchor-free без якірних рамок

Родина детекторів, що обходяться без заготовлених рамок: замість цього шукають центр предмета (CenterNet) або з кожного пікселя передбачають чотири відстані до сторін рамки (FCOS).

Тема 26 · Одноетапні: focal loss і anchor-free

Чому англійською. «Безякірний» звучить прийнятно, але в назвах моделей і в кожній статті стоїть anchor-free — саме за цим словом читач шукатиме далі.

AP і mAP average precision, mean average precision

Головні метрики детекції. AP — площа під кривою «точність проти повноти» для одного класу, mAP — середнє AP по всіх класах. Часто усереднюють ще й по кількох порогах IoU.

Тема 02 · Карта задач CV · тема 23

ASPP atrous spatial pyramid pooling

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

Тема 29 · Семантична сегментація · тема 32

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

Backbone тіло мережі

Частина детектора чи сегментатора, що просто перетворює зображення на карти ознак. Зазвичай це готова класифікаційна мережа — ResNet, MobileNet — з відрізаним останнім шаром.

Тема 15 · Inception, MobileNet, EfficientNet · блок 5

Як казати. У курсі живуть обидва слова, і не навперемін, а в різних ролях. Тіло — коли йдеться про пару «тіло / голова»: так тримається весь блок 2 від теми 09 до теми 12, і так само говорять теми 16, 18 і перенос навчання в NLP (84 вживання). Backbone — коли це назва складника архітектури детектора чи сегментатора: теми 21, 24-31 (17 вживань). «Хребет» буквальний, «кістяк» надто загальний: так називають будь-яку спільну частину, не лише цю. Але в конфігах моделей поле зветься backbone, і читач бачитиме щодня саме це слово, тож тримаємо обидва поруч — як і з головою.

CLIP contrastive language–image pretraining

Модель, навчена на парах «фото плюс підпис» так, щоб зображення і його опис опинялись поруч у спільному просторі. Звідси класифікація без жодного навченого прикладу класу (zero-shot): достатньо написати назви класів словами.

Тема 22 · CLIP і мультимодальність

COCO і ImageNet набори даних

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

Тема 13 · AlexNet і VGG · тема 28

CRNN convolutional recurrent neural network

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

Тема 33 · OCR: знайти текст і прочитати

CTC connectionist temporal classification

Втрата, яка дозволяє навчати читання рядка, не вказуючи, де саме на картинці кожна літера. Мережа видає по класу на кожну колонку смужки; CTC підсумовує ймовірності всіх способів прочитати ці колонки як потрібний рядок.

Тема 33 · OCR

Назву не перекладаємо — так само, як beam search у глосарії курсу NLP. Дія, яку вона виконує, зветься вирівнюванням шляху з рядком; не плутай із вирівнюванням нахилу і вирівнюванням пари.

Скільки колонок потрібно. Часто цитують T ≥ 2L+1, але це довжина розширеної послідовності, через усі стани якої шлях проходити не мусить. Справжня умова — T ≥ L + кількість сусідніх однакових символів: для «45009» досить шести колонок, а не одинадцяти.

Її головна пастка — колапс у порожній символ. Вікно робочих кроків навчання вузьке, і по обидва боки від нього відповідь однакова: порожній рядок і CER рівно 1.0000.

DCGAN deep convolutional GAN

Рецепт, який зробив навчання GAN відтворюваним: транспоновані згортки в генераторі, tanh на виході, батчнорм, і Adam із betas=(0.5, 0.999) замість типових.

Тема 38 · GAN

Рецепти не є законами. У зошиті теми 38 канонічна порада «послабити дискримінатора» дала гірше (2.33 класи проти 3.00 у базової, а на одному зерні — повний колапс в одну фігуру), і зворотний бік теж гірше. Допомогло інше — підняти абсолютний крок генератора: 4.67 класи, купи [5, 5, 4] і [3, 3, 3] не перетинаються. «Послабити дискримінатора» і «прискорити генератора» — різні дії, хоч відношення швидкостей рухають в один бік.

DDPM і DDIM denoising diffusion (implicit) models

Дві схеми відбору для однієї навченої дифузійної моделі. DDPM домішує свіжий шум на кожному кроці; DDIM не домішує нічого й тому детермінований — це та сама формула при σ = 0.

Тема 39 · Дифузійні моделі

Одна стаття, бо нарізно вони не пояснюються. DDIM визначений через DDPM, і вибір між ними — це вибір, чи потрібна випадковість у відборі.

Кроки коштують по-різному. У зошиті теми 39 DDIM іде монотонно вниз (218.05 → 181.84 → 175.78 при 5, 20 і 200 кроках) і виходить на полицю з двадцяти. DDPM на тій самій моделі гіршає: 312.53 при пʼятьох кроках проти 430.90 при двохстах — недонавчена мережа накопичує похибку стільки разів, скільки разів їй домішали шум.

DETR detection transformer

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

Тема 27 · DETR

EfficientNet і MobileNet економні архітектури

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

Тема 15 · Inception, MobileNet, EfficientNet

FCN і DeepLab fully convolutional network

Дві лінії семантичної сегментації. FCN першою прибрала з класифікаційної мережі повнозвʼязні шари й почала віддавати карту міток замість одного класу. DeepLab додав атрозні згортки й обробку в кількох масштабах одразу.

Тема 29 · Семантична сегментація: FCN і DeepLab

FGSM fast gradient sign method

Найпростіший спосіб зробити змагальний приклад: один крок у бік знака градієнта втрати. Навчання йде вниз по втраті, ця атака — вгору.

Тема 40 · Межі й етика CV

FID Fréchet inception distance

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

Тема 02 · Карта задач CV · тема 39

Focal loss фокальна втрата

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

Тема 26 · Одноетапні: focal loss і anchor-free

Чому не переклали. Це імʼя конкретної функції з конкретної статті, а не назва класу явищ. У коді воно так і зветься.

GAN generative adversarial network

Пара мереж, що змагаються між собою: одна малює підробки, друга вчиться їх ловити. Українською — «породжувальна змагальна мережа», але в тексті майже завжди GAN.

Тема 38 · GAN

Сюди ж діпфейки (deepfake) — підмінені обличчя у відео. Про наслідки й про те, що з цим робити інженеру, — тема 40.

Grad-CAM gradient-weighted class activation mapping

Спосіб побачити, куди дивилась мережа: підсвічує ділянки зображення, що найбільше вплинули на обраний клас. Дає теплу карту поверх фото — не пояснення, а підказку, де шукати.

Тема 17 · Що бачить мережа

Карта активацій (activation map). Так називають самі значення в карті ознак, коли їх малюють як картинку. Grad-CAM зважує їх за впливом на клас.

Head голова

Остання частина детектора чи сегментатора, що з карт ознак робить власне відповідь: координати рамок, ймовірності класів, маску.

Тема 25 · YOLO · блок 5

Як казати. «Голова» зрозуміла й вживана, але в конфігах поле зветься head. Тримаємо обидва слова поруч, як і з backbone.

HOG histogram of oriented gradients

Найвідоміша придумана ознака в історії зору, зроблена з напрямків градієнта в чотири кроки: різати вікно на комірки 8 × 8; у кожній будувати гістограму з девʼяти корзин по напрямку (0–180°, без знака — бо межа, темна зліва, і та сама межа навпаки це одна межа); голосувати не одиницею, а модулем градієнта, щоб різка межа важила багато, а шумовий тремт майже нічого; і нормувати по блоках. Класичне вікно детектора пішоходів 64 × 128 дає 3780 чисел. Так у 2005 році навчились знаходити пішоходів.

Тема 05 · Класичні ознаки

Пастка середовища. В OpenCV 5 класу cv2.HOGDescriptor більше немає — не «немає файлу з вагами», а немає самого класу; його викинуто разом із каскадами Хаара. Демонстрації з підручників на цій версії не запустяться. Бібліотека не викидає класи з примхи: придуманий детектор пішоходів зник, бо його замінили, а SIFT лишився, бо його не замінили.

HSV hue, saturation, value — відтінок, насиченість, яскравість

Кольоровий простір, у якому «який це колір» відділено від «наскільки він яскравий». Через це виділити помаранчевий предмет одним порогом простіше, ніж трьома в RGB.

Тема 01 · Зображення очима компʼютера · тема 03

Inception GoogLeNet

Архітектура, де в одному блоці паралельно працюють згортки різного розміру — і дрібна, і велика, — а згортки 1 на 1 наперед зменшують кількість каналів, щоб це було по кишені.

Тема 15 · Inception, MobileNet, EfficientNet

Instance segmentation сегментація екземплярів

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

Тема 02 · Карта задач CV · тема 31

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

IoU intersection over union

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

Тема 02 · Карта задач CV · тема 23 · Постановка детекції · тема 29 · Семантична сегментація: FCN і DeepLab

Він же індекс Жаккара. У сегментації те саме число часто називають саме так. І ще: поріг 0.5 не означає «половина рамки збіглась» — для двох рамок однакового розміру це перекриття на дві третини площі.

letterbox вписати й доповнити полями

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

Тема 03 · OpenCV: базові операції

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

Mask R-CNN 2017

Faster R-CNN із додатковою гілкою, що всередині кожної знайденої рамки домальовує маску предмета. Базовий спосіб робити instance segmentation.

Тема 31 · Instance segmentation

MOTA multiple object tracking accuracy

Зведена оцінка трекінгу: з одиниці віднімають суму пропущених предметів, зайвих рамок і підмін номера, поділену на кількість істинних рамок.

Тема 34 · Відео: трекінг

Вона буває відʼємною — і це не помилка. Помилок може бути більше, ніж предметів: детектор, що додає шість зайвих рамок на кадр, дає 1985 зайвих проти 1600 істинних і MOTA = −0.3162.

Вона міряє переважно детектор. У заміряному прикладі підміни становлять лише 8.5 % суми помилок — решта припадає на пропуски й зайві рамки. Тому MOTA не годиться, щоб порівнювати саме зіставлення: цитуй її разом із доданками.

mIoU mean IoU

Середнє IoU по всіх класах — головна метрика семантичної сегментації.

Тема 02 · Карта задач CV · тема 29

Чому не «частка правильних пікселів». Модель, яка назве все зображення фоном, отримає 83 % правильних пікселів і нуль користі. mIoU так обманути не вийде.

Neck шия

Проміжна частина детектора між backbone і head, що змішує карти ознак різних масштабів — щоб і дрібні предмети, і великі бачились однаково добре. Найвідоміша — FPN, піраміда ознак (feature pyramid network).

Тема 25 · YOLO · тема 26

NMS non-maximum suppression, притлумлення немаксимумів

Прибирання дублікатів: із кількох рамок, що сильно перекриваються й описують той самий предмет, лишають одну — найвпевненішу, а решту викидають.

Тема 23 · Постановка детекції

Чому абревіатура й що не плутати. Український переклад існує й читається, але функція в кожній бібліотеці зветься nms, тож заголовок лишаємо англійський. І це не те саме, що притлумлення немаксимумів у Кенні: назва спільна, але там прибирають зайві пікселі впоперек гребеня градієнта, а не зайві рамки.

OpenCV бібліотека

Бібліотека для роботи із зображеннями: прочитати файл, змінити розмір, перевести в інший кольоровий простір, намалювати рамку поверх фото. У курсі — версія 5.

Тема 03 · OpenCV: базові операції

Головна пастка. OpenCV зберігає канали у зворотному порядку — BGR, а не RGB. Це найчастіша причина синіх облич на картинці.

ORB oriented FAST and rotated BRIEF

Швидка двійкова альтернатива SIFT. Замість гістограм ORB робить 256 порівнянь пар пікселів околиці: беруться два наперед визначені пікселі й записується один біт — лівий яскравіший за правий чи ні. Виходить 32 байти uint8 на точку, а порівнюють такі дескриптори відстанню Гемінга.

Тема 05 · Класичні ознаки

Обмін, а не програш. На тій самій сцені ORB знайшов 411 точок проти 69 у SIFT, витратив 32 байти на точку проти 512 і впорався за 2.1 мс проти 35.9. Платить точністю кожної окремої пари — але коли точок ушестеро більше, це часто вигідно. Правило вибору: телефон або кадр відео — ORB; максимальна надійність зіставлення без тиску часу — SIFT.

Padding доповнення країв

Рамка з нулів навколо зображення, щоб згортка не зʼїдала краї й розмір виходу дорівнював розміру входу.

Тема 07 · Згортковий шар

Чому не переклали. Слово стоїть як імʼя аргументу в кожній бібліотеці — padding='same'. Український заголовок означав би, що читач не впізнає його в коді; опис «доповнення країв» даємо поруч.

Panoptic segmentation паноптична сегментація

Обʼєднання семантичної та instance в одну відповідь: кожен піксель отримує і клас, і номер предмета. Жоден піксель не лишається без відповіді й жоден не отримує двох.

Тема 02 · Карта задач CV · тема 32

Дві категорії, які вона мирить. Things — речі, які рахують поштучно (телефони, люди). Stuff — матерія, яку не рахують, а лише вказують, де вона є (небо, трава, стіна). Ознака одна: чи має сенс питання «скільки їх?». Метрика зветься PQ.

Чому дві моделі не зшиваються задарма. Instance-модель віддає список масок і не має поняття «решта», тож між ними лишаються нічиї пікселі, а на перекриттях — спірні. У зошиті теми 32 при двох окремо навчених моделях зіпсовано 54.5 % пікселів, які хоч одна з них назвала предметом. Правило зшивання доводиться вигадувати — і саме цього уникає одна модель.

popcount population count

Машинна інструкція, яка за один такт рахує кількість одиничних бітів у слові. На сучасних процесорах це одна команда, а не цикл по бітах.

Тема 05 · Класичні ознаки

Звідки береться перевага двійкових дескрипторів. Порівняти дві точки ORB — це XOR і popcount на чотирьох 64-бітних словах, тобто вісім цілочислових інструкцій. Порівняти дві точки SIFT — 128 множень і додавань із рухомою комою. На сотнях точок різниця перетворює зіставлення з десятків мілісекунд на одиниці.

PQ panoptic quality

Метрика panoptic-сегментації, що рахується не по пікселях, а по сегментах: PQ = SQ × RQ. RQ — звичайний F1 по сегментах, тобто скільки знайдено; SQ — середній IoU зарахованих пар, тобто наскільки точно.

Тема 32 · Panoptic і SAM

Чому поріг саме IoU > 0.5. Це не традиція, а геометрія: два прогнозовані сегменти не можуть обидва перекрити один істинний більш ніж наполовину, бо тоді б вони перекривали й один одного, а в panoptic-відповіді сегменти не перетинаються. Тому пара, якщо вона є, єдина — і зіставлення не потребує ні жадібного вибору, ні угорського алгоритму.

Цитуй разом із множниками. Дві моделі з однаковим PQ бувають несумісні за користю: одна знайшла половину предметів майже до пікселя (SQ 0.9195, RQ 0.6667), друга знайшла всі, але грубо (SQ 0.6510, RQ 1.0000). Для підрахунку годиться друга, для вимірювання площі — перша. Так само й mIoU сліпа там, де PQ бачить: модель, що зливає два дотичні предмети в одну маску, має mIoU рівно 1.0000 і PQ 0.8808.

R-CNN, Fast R-CNN, Faster R-CNN 2013–2015

Три кроки однієї думки. R-CNN проганяв мережу окремо на кожній кандидат-області. Fast R-CNN — один раз на все фото, а ділянку вирізав уже з карти ознак (RoI pooling, згодом точніший RoI Align). Faster R-CNN навчив мережу пропонувати ділянки самостійно.

Тема 24 · Двоетапні детектори

R(2+1)D розклад тривимірної згортки

Заміна ядра 3×3×3 на два послідовні: спершу просторове 1×3×3, потім часове 3×1×1. Поле те саме, нелінійностей удвічі більше.

Тема 35 · Дії у відео

Виграш не в кількості ваг. Для 64→64 тривимірне ядро має 110 656 ваг; розклад із проміжними 128 каналами — 98 496, тобто дешевше лише на 11 %. У статті проміжний розмір добирають так, щоб ваг вийшло порівну (для 64→64 це 144), і весь виграш беруть із подвоєної кількості нелінійностей.

RANSAC random sample consensus

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

Тема 05 · Класичні ознаки

Чому абревіатура. «Узгодження випадкової вибірки» точне, але так не пишуть ніде, а в коді стоїть прапорець cv2.RANSAC. І число, заради якого його ставлять: після тесту Лоу правильних пар було 96 %, після RANSAC — 100 %, причому обидві відкинуті ним пари справді були хибними.

ResNet residual network, 2015

Мережа зі скіп-зʼєднаннями, після якої глибина в сотню шарів перестала бути проблемою. Досі найчастіший backbone у детекції й сегментації.

Тема 14 · ResNet і скіп-зʼєднання

RGB і BGR red, green, blue

Три канали кольору: червоний, зелений, синій, кожен від 0 до 255. BGR — той самий набір у зворотному порядку, як його зберігає OpenCV.

Тема 01 · Зображення очима компʼютера

SAM segment anything model

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

Тема 32 · Panoptic і SAM

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

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

Важкий енкодер рахується один раз на знімок, а декодер за підказкою — миттєвий. Звідси й інтерактивність: наступна точка на тому самому зображенні майже безкоштовна.

SIFT scale-invariant feature transform

Класичний спосіб знайти на зображенні прикметні місця й описати кожне числами так, щоб те саме місце впізналось на іншому фото. Тримається на трьох ідеях. Масштабний простір знімає залежність від розміру. Власна орієнтація — напрямок найвищого стовпчика гістограми навколо точки — знімає залежність від повороту: повернули знімок на 30°, «північ» точки повернулась на ті самі 30°. А сам дескриптор — сітка 4 × 4 підкомірок по 8 напрямків, разом 128 чисел float32, нормованих на довжину.

Тема 05 · Класичні ознаки

Він упізнає екземпляр, а не клас. Той самий телефон, повернутий на 27° і зменшений, дає 51 узгоджену пару; інший апарат того самого класу — три, тобто випадковість. Для панорами, стабілізації відео й SLAM це саме те, що треба; для питання «чи є на фото телефон» — не годиться взагалі. Саме тому SIFT живий і досі, а HOG із OpenCV викинули.

SORT і DeepSORT simple online realtime tracking

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

Тема 34 · Відео: трекінг

SSD і RetinaNet одноетапні детектори

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

Тема 26 · Одноетапні: focal loss і anchor-free

Stable Diffusion латентна дифузія

Дифузійна модель, що знешумлює не пікселі, а латентний простір автоенкодера — у десятки разів менший. Саме через це вона поміщається у звичайну відеокарту.

Тема 39 · Дифузійні моделі

Swin Transformer shifted window transformer

Трансформер, у якому увага рахується не по всьому зображенню, а всередині вікон, і вікна зсуваються від шару до шару. Так зʼявляється ієрархія масштабів, як у CNN, але без згорток.

Тема 21 · Swin і гібриди

U-Net 2015

Мережа для сегментації у формі літери U: ліва половина стискає зображення, права розгортає маску, а скіп-зʼєднання переносять дрібні деталі з ранніх шарів прямо в пізні, повз усе стиснення.

Тема 30 · U-Net

VAE variational autoencoder, варіаційний автоенкодер

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

Тема 37 · Автоенкодери й VAE

weight decay спад ваг

Штраф за великі ваги, доданий просто в оптимізатор: на кожному кроці кожна вага трохи підтягується до нуля. Найдешевша регуляризація, яка є — один аргумент у конструкторі.

Тема 11 · Навчання CNN

Чому не переклали. «Спад ваг» ніде не вживається, а в коді це імʼя аргументу weight_decay, яке читач бачитиме щодня.

ViT vision transformer

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

Тема 20 · Vision Transformer

YOLO you only look once

Сімейство одноетапних детекторів: одна мережа за один прохід ділить кадр на клітинки й одразу видає рамки з класами. Саме з YOLO детекція стала працювати в реальному часі.

Тема 25 · YOLO

НаостанокЯк цим користуватись

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

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