Тема оглядова, тож і завдання тут не про навчання моделей — жодну модель ти не навчатимеш. Вони про те, щоб упевнено розрізняти постановки задач, рахувати IoU й чесно оцінювати ціну розмітки, перш ніж братися за роботу.
рівень 1Рівень 1 — База
Побудуй у зошиті власну сцену з трьома предметами: два телефони й одна коробка (коробку зроби ширшим прямокутником під іншим кутом). Створи для неї всі пʼять типів розмітки, як це зроблено в практиці.
Зроблено, якщо:
- надруковано таблицю з трьох рядків: для кожного предмета — площа маски, рамка
(x1, y1, x2, y2)і частка фону всередині рамки у відсотках; - надруковано, скільки чисел містить кожна з пʼяти розміток цієї сцени;
- у сцені є хоча б одна пара предметів, які торкаються, і
cv2.connectedComponentsна семантичній масці повертає менше областей, ніж предметів у сцені.
рівень 2Рівень 2 — Плюс
Візьми поріг IoU і подивись, як від нього залежить оцінка детектора.
Зафіксуй розмічену рамку правого телефона й перебери сто «прогнозів»: рамки,
зсунуті на випадкові величини від −40 до +40 пікселів по кожній осі
(np.random.default_rng(42), щоб результат відтворювався). Для кожного порога
IoU зі списку 0.3, 0.5, 0.7, 0.9 порахуй, скільки прогнозів вважаються влучними.
Зроблено, якщо:
- надруковано таблицю «поріг → скільки влучань зі ста»;
- побудовано графік: по горизонталі поріг, по вертикалі частка влучань;
- у висновку одним абзацом пояснено, чому та сама модель на порозі 0.9 виглядає майже непрацездатною, хоча жодна її рамка не змінилась.
рівень 3Рівень 3 — Виклик
Дві частини: розрахунок і рішення.
Частина А — кошторис. Напиши функцію
annotation_hours(images, objects_per_image, task), яка повертає час розмітки
в годинах для task зі списку "класифікація", "детекція", "сегментація".
Побудуй графік: по горизонталі — кількість зображень від 100 до 20 000
(логарифмічна шкала), по вертикалі — години. Познач горизонтальною лінією бюджет
у 200 годин і знайди, скільки зображень уміщається в цей бюджет для кожної з
трьох постановок.
Частина Б — вибір. Замовник із дошки оголошень просить систему, яка «перевірятиме фото товару перед публікацією». Випиши пʼять різних конкретних питань, які за цим формулюванням можуть ховатись (наприклад: «чи є на фото взагалі телефон», «чи не додано чуже фото з іншого оголошення»), і для кожного назви постановку задачі, тип розмітки й приблизний час розмітки 5 000 зображень за твоєю функцією з частини А.
Зроблено, якщо:
- графік побудовано, і для кожної постановки названо число зображень, яке вміщається в 200 годин;
- у таблиці зі пʼяти рядків для кожного питання стоїть постановка, тип розмітки й час;
- обрано один варіант із пʼяти як «з якого починати» і пояснено вибір саме через співвідношення користі й ціни розмітки, а не через складність моделі.
Підказки
- Рамку предмета не обовʼязково задавати руками: якщо є маска, рамка з неї
дістається трьома рядками —
np.anyпо рядках,np.anyпо стовпцях, потім перший і останнійTrue. - У завданні 2 не пиши IoU заново — візьми
box_iouз практики. Якщо доводиться копіювати код удруге, це знак, що функція має жити окремо. cv2.connectedComponentsповертає пару: кількість міток і карту міток. Фон теж має мітку (нуль), тому предметів завжди на одиницю менше, ніж міток.- У завданні 3 не шукай «правильної» відповіді в частині Б — її немає. Оцінюється саме те, чи звʼязані між собою питання замовника, форма відповіді моделі й кошторис розмітки.