Ela.kpi.ua



НАЦ?ОНАЛЬНИЙ ТЕХН?ЧНИЙ УН?ВЕРСИТЕТ УКРА?НИ?КИ?ВСЬКИЙ ПОЛ?ТЕХН?ЧНИЙ ?НСТИТУТ?мен? ?ГОРЯ С?КОРСЬКОГО??нститут прикладного системного анал?зуМатематичних метод?в системного анал?зу?На правах рукопису?УДК 004.93?До захисту допущено?Зав?дувач кафедри__________ Тимощук О.Л.?___?_____________20__ р.Маг?стерська дисертац?яна здобуття ступеня маг?страз? спец?альност? 122 “Комп’ютерн? науки”на тему: ?Розп?знавання облич за допомогою мереж глибокого навчання?Виконала: студентка II курсу, групи КА-73мп Дубневич ?рина В?тал??вна __________Кер?вник: професор кафедри ММСА, д.т.н., доцентЗайченко О.Ю.__________Рецензент:заст. декана кафедри АЕС??ТФ, к.т.н.,Кондратюк В.А.__________Засв?дчую, що у ц?й маг?стерськ?й дисертац?? нема? запозичень з праць ?нших автор?в без в?дпов?дних посилань.Студентка _____________Ки?в2018Нац?ональний техн?чний ун?верситет Укра?ни?Ки?вський пол?техн?чний ?нститут ?мен? ?горя С?корського??нститут прикладного системного анал?зуМатематичних метод?в системного анал?зуР?вень вищо? осв?ти – другий (маг?стерський) Спец?альн?сть (спец?ал?зац?я) – 122 “Комп’ютерн? науки” ЗАТВЕРДЖУЮЗав?дувач кафедри__________ Тимощук О.Л.?___?_____________20__ р.ЗАВДАННЯна маг?стерську дисертац?ю студентуДубневич ?рина В?тал??вна1. Тема дисертац?? ?Розп?знавання облич за допомогою мереж глибокого навчання?, науковий кер?вник дисертац?? Зайченко Олена Юр??вна, професор, д.т.н., затверджен? наказом по ун?верситету в?д ?___?_________ 20__ р. №_____2. Терм?н подання студентом дисертац?? 26.11.20183. Об’?кт досл?дження: модел? глибокого навчання для виявлення об’?кт?в в режим? реального часу на моб?льних пристроях 4. Предмет досл?дження: р?шення задач виявлення облич з використанням state-of-the-art моделей глибокого навчання для виявлення об’?кт?в5. Перел?к завдань, як? потр?бно розробити: (1) Зробити огляд state-of-the-art арх?тектур моделей глибокого навчання для виявлення об’?кт?в. (2) Досл?дити вибран? модел? на задач? розп?знавання облич. Сформулювати практичн? рекомендац?? та ?де? для покращення результат?в.6. Ор??нтовний перел?к граф?чного (?люстративного) матер?алу: 24 рис., 29 табл.7. Дата видач? завдання 12.03.2018Календарний план№ з/пНазва етап?в виконання маг?стерсько? дисертац??Терм?н виконання етап?в маг?стерсько? дисертац??Прим?тка1Пошук та досл?дження л?тератури по тем? дипломно? роботи12.03.2018—31.07.20182Пошук та осво?ння програмних ?нструмент?в для навчання та вал?дац?? глибоких нейронних мереж01.08.2018-31.0820183Розробка плану дипломно? роботи02.09.2018-05.09.20184Оформлення першого розд?лу дипломно? роботи06.09.2018-13.09.20185Розробка програмно? системи для реал?зац?? досл?дження14.09.2018-30.09.20186Проведення досл?дження, зб?р та анал?з отриманих результат?в01.10.2018 - 17.10.20187Написання другого розд?лу дипломно? роботи та зв?ту з переддипломно? практики 18.10.2018 - 26.10.20188Захист переддипломно? практики26.10.20189Оформлення ? здача розд?лу по стартап-проекту27.10.2018 - 01.11.201810Оформлення решти дипломно? роботи01.11.2018 - 19.11.201811Отримання реценз?? та проходження нормоконтролю19.11.2018 - 26.11.201812Подання роботи на кафедру26.11.2018 - 27.11.201813П?дготовка допов?д? та слайд?в до не?27.11.2018 - 03.12.201814Передзахист дипломно? роботи03.12.2018 - 08.12.201815Корегування роботи зг?дно до зауважень на передзахист? та оформлення остаточно? верс?? дипломно? роботи08.12.2018 - 15.12.201816Захист дипломно? роботи15.12.2018Студент ?.В., ДубневичНауковий кер?вник дисертац??О.Ю., ЗайченкоРЕФЕРАТМаг?стерська дисертац?я: 118 с., 26 рис., 28 табл., 3 додатки, 26 джерела.Мета роботи - досл?дити сучасн? найкращ? модел? глибокого навчання для виявлення об’?кт?в на задач? виявлення облич.Об’?кт досл?дження - модел? глибокого навчання для виявлення об’?кт?в в режим? реального часу на моб?льних пристроях.Предмет досл?дження - р?шення задач виявлення облич з використанням state-of-the-art моделей глибокого навчання для виявлення об’?кт?в. З ц?ллю проведення досл?дження було розроблено програмну систему, призначену для навчання, тестування та оц?нки state-of-the-art моделей для виявлення об’?кт?в на задач? виявлення облич. В робот? досл?джено наступн? модел?: SSD Mobilenet V1, SSD Mobilenet V2, SSDlite Mobilenet V2. Також був досл?джений ефект таких модиф?кац?й як Pyramid Pooling Network Shared Box Detector та Focal Loss. Обран? модел? досл?джувалися з використанням набору даних Wider Face. Програмна система реал?зована на баз? платформи Tensorflow Object Detection API та хмарного серв?су Google Cloud ML Engine.Результатами роботи ? розроблена програмна система, отриман? в результат? досл?дження детектори облич, показники ефективност? отриманих моделей, ?х пор?вняльна характеристика, рекомендац?? для покращення показник?в ефективност? моделей та напрямки для подальших досл?джень.Наукова новизна поляга? в вид?ленн? ?дей та напрямк?в подальшого досл?дження з метою отримання нових р?шень в галуз? виявлення облич.ШТУЧН? НЕЙРОНН? МЕРЕЖ?, ГЛИБОКЕ НАВЧАННЯ, ВИЯВЛЕННЯ ОБ’?КТ?В, ВИЯВЛЕННЯ ОБЛИЧ, МОБ?ЛЬН? ПРИСТРО?, РЕЖИМ РЕАЛЬНОГО ЧАСУ, TENSORFLOW, TENSORFLOW OBJECT DETECTION API, GOOGLE CLOUD ML ENGINE.ABSTRACTMaster’s thesis: 118 p., 26 pic., 28 tables, 26 sourcesThis work is dedicated to investigation of deep learning object detection models that are going to be used for face face detection on mobile devices in realtime mode.With the aim of the study was developed software system in Python, intended for training, testing and evaluation of state-of-the-art deep learning models in scope of object detection tasks. In this work performed research of the following models: SSD Mobilenet V1, SSD Mobilenet V2, SSDlite Mobilenet V2. Also, the modification effect of Pyramid Pooling Network Shared Box Detector and Focal Loss function. The chosen architectures are investigated using Wider Face data set. The software system was implemented using Tensorflow Object Detection and Google Cloud ML Engine.The result of this work is a software system designed, face detectors obtained during the research, the results include the figures obtained from the models learning and assessment, their comparative characteristics, recommendations for achievement of better performance and directions for further investigation.The scientific novelty of this work is that it highlights ideas and direction for futher investigation with a view to develop new face detection solutions.ARTIFICIAL NEURAL NETWORKS, DEEP LEARNING, OBJECT DETECTION, FACE DETECTION, MOBILE DEVICES, REALTIME, TENSORFLOW, TENSORFLOW OBJECT DETECTION API, GOOGLE CLOUD ML ENGINE.ЗМ?СТ TOC \o "1-3" \h \z \u ПЕРЕЛ?К УМОВНИХ ПОЗНАЧЕНЬ, СИМВОЛ?В, ОДИНИЦЬ, СКОРОЧЕНЬ ? ТЕРМ?Н?В PAGEREF _Toc530846678 \h 8ВСТУП PAGEREF _Toc530846679 \h 10РОЗД?Л 1 Сучасний стан галуз? застосування deep learning в задачах object detection та face detection PAGEREF _Toc530846680 \h 131.1Постановка задач? face detection PAGEREF _Toc530846681 \h 131.2 Основн? типи механ?зм?в object detection. Двоетапн? та Одноетапн? детектори PAGEREF _Toc530846682 \h 161.2.1 Двоетапний механ?зм object detection на приклад? Faster RCNN арх?тектури PAGEREF _Toc530846683 \h 171.2.2 Одноетапний механ?зм object detection PAGEREF _Toc530846684 \h 191.3 Focal Loss як р?шення проблеми дисбалансу клас?в п?д час тренування Одноетапних детектор?в PAGEREF _Toc530846685 \h 211.4 Pyramid Pooling Network як оптим?зац?я SSD арх?тектури PAGEREF _Toc530846686 \h 241.5 Арх?тектура MobileNet як оптим?зац?я deep learning для CPU та моб?льних пристро?в PAGEREF _Toc530846687 \h 271.5.1 Поканальна розд?льна згортка PAGEREF _Toc530846688 \h 271.5.2 Структура MobileNet PAGEREF _Toc530846689 \h 291.5.3 MobileNet V2 PAGEREF _Toc530846690 \h 301.5.4 SSDlite MobileNet V2 PAGEREF _Toc530846691 \h 321.6 ?нш? роботи PAGEREF _Toc530846692 \h 321.7 Метрики оц?нювання object detection моделей PAGEREF _Toc530846693 \h 33Висновки до розд?лу 1 PAGEREF _Toc530846694 \h 37РОЗД?Л 2 Досл?дження моделей глибокого навчання на задач? розп?знавання облич. PAGEREF _Toc530846695 \h 382.1 Загальна структура досл?дження PAGEREF _Toc530846696 \h 382.2 Виб?р арх?тектур моделей глибокого навчання для виявлення об’?кт?в PAGEREF _Toc530846697 \h 392.3 Виб?р тестових даних для навчання та тестування моделей PAGEREF _Toc530846698 \h 402.4 Процедура навчання та оц?нювання роботи досл?джуваних моделей PAGEREF _Toc530846699 \h 422.5 Метрики оц?нювання моделей PAGEREF _Toc530846700 \h 432.6 Результати досл?дження навчання та вал?дац?? модел? PAGEREF _Toc530846701 \h 432.6.1 Граф?ки mAP PAGEREF _Toc530846702 \h 442.6.2 Демонстрац?я роботи моделей PAGEREF _Toc530846703 \h 472.7 Анал?з отриманих результат?в PAGEREF _Toc530846704 \h 51Висновки до розд?лу 2 PAGEREF _Toc530846705 \h 54РОЗД?Л 3 ОПИС ПРОГРАМНОГО ПРОДУКТУ PAGEREF _Toc530846706 \h 553.1 Виб?р апаратно? платформи та сторонн?х програмних продукт?в PAGEREF _Toc530846707 \h 553.2 Загальний опис програмного продукту PAGEREF _Toc530846708 \h 553.3 Опис ?нтерфейсу програми PAGEREF _Toc530846709 \h 56Висновки до розд?лу 3 PAGEREF _Toc530846710 \h 58РОЗД?Л 4 РЕАЛ?ЗАЦ?Я СТАРТАП-ПРОЕКТУ PAGEREF _Toc530846711 \h 604.1 Опис ?де? та технолог?чний аудит стартап-проекту PAGEREF _Toc530846712 \h 604.2 Анал?з ринкових можливостей PAGEREF _Toc530846713 \h 614.3 Розробка ринково? стратег?? проекту PAGEREF _Toc530846714 \h 724.4 Розробка маркетингово? програми PAGEREF _Toc530846715 \h 774.5 Елементиф?нансово? п?дтримки стартапу та анал?з ризик?в PAGEREF _Toc530846716 \h 81Висновок до розд?лу 4 PAGEREF _Toc530846717 \h 85ВИСНОВКИ PAGEREF _Toc530846718 \h 86ПЕРЕЛ?К ПОСИЛАНЬ PAGEREF _Toc530846719 \h 88ДОДАТОК А ?нструкц?? ?нсталяц?? застосунку PAGEREF _Toc530846720 \h 92ДОДАТОК Б ?нструкц?я навчання та вал?дац?? моделей PAGEREF _Toc530846721 \h 95ДОДАТОК В Л?стинг програми PAGEREF _Toc530846722 \h 98ПЕРЕЛ?К УМОВНИХ ПОЗНАЧЕНЬ, СИМВОЛ?В, ОДИНИЦЬ, СКОРОЧЕНЬ ? ТЕРМ?Н?ВШНМ – штучна нейронна мережаЗНМ – згорткова нейронна мережаНМГН – нейронн? мереж? глибокого навчанняCNN – convolutional neural networkDCNN – deep convolutional neural networkМережа глибокого навчання – модель штучно? нейронно? мереж?, що в?дноситься до арх?тектур глибокого навчання, зокрема в дан?й статт? ввс? досл?джуван? арх?тектури являються глибокими згортковими мережамиBounding box – обрамляюча рамка, прямокутна область на вх?дному зображенн?, що обрамля? об’?кт шуканого класу ? опису?ться чотирма параметрами.Object detection – виявлення облич.Object detector – детектор об’?кт?в, програмно апаратна система для р?шення задач виявлення об’?кт?в.Aspect ratios – ор??нтац?я обрамляючо? рамки, в?дношення ?? висоти та ширини.Default anchor boxes (default anchors) – ф?ксований наб?р обрамляючих рамок (bouding boxes) р?зних розм?р?в та сп?вв?дношень висоти та ширини (aspect ratios).Single-stage detector – одноетапний детектор.Two-stage detector (або cascade detector) – двоетапний детектор. Feature – признак, або значення активац?? одного штучного нейрону в шар? штучно? нейронно? мереж?.Feature map – мапа признак?в, сукупн?сть вс?х активац?й на виход? слою згортково? нейронно? мереж?, де просторове знаходження активац?? на мап? в?дпов?да? наявност? даного признаку у в?дпов?дних координатах на зображенн?.Feature extractor – згорткова нейронна мережа, або частина згортковоъ нейронноъ мереж?, що використову?ться для отримання мап признак?в, на баз? яких буде проводитися класиф?кац?я об’?кт?в та регрес?я bounding boxes.Предиктор – частина згортково? нейронноъ мереж?, що безпосередньо викону? класиф?кац?ю та регрес?ю bounding boxes на баз? мап признак?в отриманих за допомогою feature extractor.ВСТУППоява нових арх?тектур граф?чних процесор?в зробили ?х обчислювальну потужн?сть близькою до суперкомп’ютер?в, а поява згорткових нейронних мереж усунули головний недол?к штучних нейронних мереж – велик? затрати обчислювальних ресурс?в для навчання та застосування повнозв’язних моделей з великою к?льк?стю шар?в штучних нейрон?в. Ц? зм?ни вивело нейронн? мереж? на перше м?сце серед метод?в машинного навчання та створило ц?лий напрямок п?д назвою Deep Learning (глибинне навчання). Глибинне навчання поляга? в навчанн? та застосування? глибоких нейронних мереж, як? ран?ше були не доступн? через велику к?льк?сть шар?в, що вимагали багато часу на ?х навчання. Глибок? мереж? показали великий в?дрив у результатах на деяких задачах машинного навчання. Зокрема нов?тн? арх?тектури згорткових нейронних мереж перевершили людськ? можливост? у класиф?кац?? зображень на баз? ImageNet.Поява Deep Learning стала як?сно новим етапом в сфер? штучного ?нтелекту ? для розп?знавання людських обличь зокрема. На сьогодн?шн?й день розробка програмних систем по розп?знаванню обличь явля?ться актуальною оск?льки застосову?ться у таких сферах як соц?альн? мереж?, паспортний контроль, боротьба з? злочинн?стю, системи безпеки, робототехн?ка, маркетинг тощо.Незважаючи на прорив у можливост? застосовувати дуже глибок? нейронн? мереж?, ?х використання на пристроях з обмеженими обислювальними ресурсами все ще зазна? труднощ?в. Тому ?ншим проривом в галуз? Deep Learning можна вважати розробку таких арх?тектур ШНМ як XCeption та MobileNet. Це дало можлив?ть отримувати в?дносно хорошу як?сть розп?знавання зображень на моб?льних пристроях та вбудованих системах. Подальш? досл?дження в цьому напрямку ? актуальними, оск?льки моб?льн? пристро? в?д?грають велику роль в житт? людей, а вбудован? системи ? головним елементом в галуз? ??нтернету речей? (IoT), що активно розвива?ться та нада? людству нов? можливост?.Саме тому ? актуальним проведення досл?дження таких арх?тектур на ?снуючих оф?ц?йних бенчмарках по розп?знаванню облич, що ? ? головною задачею дано? роботи. Задач? роботи:Зробити огляд state-of-the-art арх?тектур моделей глибокого навчання, що показали найкращ? або одн? з кращих результат?в виявлення об’?кт?в на набор? COCO, та при цьому мають високу швидк?сть розп?знавання на CPU. Досл?дити вибран? модел? на задачах розп?знавання облич з використанням набор?в зображень оф?ц?йних популярних бенчмарок. Проанал?зувати отриман? результати, визначити та описати основн? переваги, недол?ки та особливост? досл?джуваних моделей в контекст? ?х застосування в задачах виявлення облич.Зг?дно до головних задач дано? роботи для проведення досл?дження ? доречним розробити програмний продукт, що в?дпов?да? наступним вимогам:Ма? змогу навчати обран? модел? глибоких нейронних мереж на наборах даних популярних оф?ц?йних бенчмарок по виявленню облич.Надавати користувачу-досл?днику можлив?сть мати контроль над ус?ма г?пер-параметрами модел? та налаштуваннями алгоритму ?? навчанняНадавати користувачу-досл?днику можлив?сть задавати р?зн? параметри для процедури навчання досл?джувано? модел?.Надавати користувачу-досл?днику можлив?сть отримувати необх?дн? граф?ки та показники (Loss function, mAP, AR тощо)Можлив?сть демонстрац?? роботи програми на окремих прикладах.РОЗД?Л 1 Сучасний стан галуз? застосування deep learning в задачах object detection та face detectionВ даному розд?л? проводиться огляд state-of-the-art метод?в object detection та face detection зокрема. З ус?х метод?в розглядатимуться лише т?, що використовують deep learning модел?, оск?льки вони ? об’?ктом досл?дження в дан?й робот?, а також тому що вони вже як к?лька рок?в затверджують сво? дом?нування в галуз? object detection та комп’ютерного зору взагал?.Через велику к?льк?сть матер?алу та напрацювань в дан?й робот? будуть розглядатися лише п?дходи object detection та оптим?зац?? глибоких мереж. Оч?ку?ться, що читач уже ознайомлений з базовими принципами побудови deep learning моделей, принципи та структуру основних шар?в глибоких згорткових мереж, таких як: згортковий шар, pooling, ReLU, batch normalization, softmax, тощо.Постановка задач? face detectionВ галуз? комп’ютерного зору зазвичай вид?ляють наступн?, найб?льш поширен? типи задач:Класиф?кац?я об’?кта - визначення класу, до якого належить об’?кт на вх?дному зображенн?, ?з ф?ксовано? множини клас?в, задано? в контекст? конкретно? задач?. Дана задача ? класичною задачею класиф?кац?? образ?в галуз? machine learning ? фактично в?дпов?да? на запитання “Що за об’?кт зображений на вх?дному зображенн??”.Локал?зац?я об’?кта - знаходження на вх?дному зображенн? прямокутно? (р?дше ел?пс) област?, що обрамля? об’?кт. Фактично задача покликана знайти в?дпов?дь на запитання “Де знаходиться об’?кт?”. Дана задача ? класичною задачею регрес??, де на виход? ми ма?мо отримати 4 числа, що повн?стю визначають прямокутно область на зображенн? (дал? обрамляючий прямокутник або bounding box). Зазвичай це координати центру, довжина та висота прямокутника.Виявлення об’?кт?в (object detection) - це задача локал?зац?? на вх?дному зображенн? ус?х об’?кт?в ?з задано? ф?ксовано? множини клас?в. Оск?льки в ц?й задач? шукаються об’?кти лише з ф?ксовано? множини класу, то зазвичай виявлення об’?кт?в в?дбува?ться одночасно з ?х класиф?кац??ю.Сегментац?я об’?кт?в (instance segmentation) - схожа ?з задачею object detection, але в?др?зня?ться тим, що зам?сть пошуку прямокутних областей покликана шукати справжн? контури об’?кта, тобто лише ту область на зображенн?, яку займа? цей об’?кт.На рис.1.1 наведена демонстрац?я перечислених задач [1].?Рисунок 1.1 - Демонстрац?я задач класиф?кац??, локал?зац??, виявлення та сегментац??.Розп?знавання облич ? п?дгалуззю розп?знавання зображень, тому для нього характерн? вс? т? сам? види задач, але з певними особливостями. Зазвичай вид?ляють так? найпопулярн?ш? види задач розп?знавання облич:?дентиф?кац?я - це типова задача класиф?кац??, де множиною клас?в виступають конкретн? особи, чи? обличчя представлен? на зображеннях тренувально? виб?рки.Вериф?кац?я в?д задач? ?дентиф?кац?? в?др?зня?ться тим, що ц?ллю ? п?дтвердження, чи належать два окрем? зображення облич одн?й ? т?й сам?й особ?. ? к?лька п?дход?в до вир?шення ц??? задач, та найб?льш популярним ? застосування звичайно? класиф?кац??.Виявлення облич (Face detection) - знаходження на зображенн? ус?х облич на зображенн? у вигляд? обрамляючих прямокутник?в.На рис.1.2 наведена демонстрац?я перечислених задач розп?знавання облич [4].?Рисунок 1.2. - Демонстрац?я задач виявлення, вериф?кац?? та ?дентиф?кац?? облич.Характерною особлив?стю задач ?дентиф?кац?? та вериф?кац?? облич ? велика к?льк?сть клас?в, оск?льки один клас означа? окрему особу. Це в свою чергу вимага? додаткових потужностей та вм?стимост? обрано? модел? штучно? нейронно? мереж? та спец?ально ор??нтованих на це метод?в ?? навчання. Наприклад усп?шними прикладами таких метод?в ? застосування angular margin та additive cosine margine зам?сть звичайного слою softmax [2] [3]. Вони допомагають досягти сильно? дискрим?нац?йност? признак?в (у простор? вих?дних признак?в нейронно? мереж? вих?дн? вектори одного класу мають мати малу в?дстань м?ж собою ? велику в?дстань в?д вектор?в ?нших клас?в).Щодо задач? face detection, то тут навпаки, ? лише один клас об’?кт?в, як? потр?бно знаходити на зображеннях. Це означа?, що задача вимага? в?д модел? нейронно? мереж? меншу ?мн?сть н?ж для багатокласово? задач?. Тому ? сенс досл?дити ?снуюч? object detection модел?, оск?льки оч?ку?ться, що модел? з меншою к?льк?стю параметр?в можуть показати не г?ршу ефективн?сть виявлення облич, в пор?внянн? з б?льш глибокими моделями. ?ншою важливою особлив?стю face detection ? можлив?сть зам?на пошуку прямокутних областей на зображенн? пошуком ел?пс?в, оск?льки така форма б?льше п?дходить до форми облич ? також визнача?ться чотирма числовими параметрами.1.2 Основн? типи механ?зм?в object detection. Двоетапн? та одноетапн? детекториПарадигма використання ковзаючого в?кна, в як?й класиф?катор застосову?ться на густ?й с?тц? вх?дного зображення, була дом?нуючою довг? роки. Проте з розкв?том deep learning двоетапн? детектори швидко заявили про сво? дом?нування в галуз? object detection. Тому на сьогодн?шн?й день вид?ляють дв? основн? парадигми побудови детектор?в об’?кт?в: двоетапна та одноетапна [5].1.2.1 Двоетапний механ?зм object detection на приклад? Faster RCNN арх?тектуриСучасн? state-of-the-art модел? базуються на 2-етапному, кандидатно-ор??нтованому механ?зм?. Як це було популяризовано R-CNN фреймворком [6] перший етап генеру? невелику (р?дку) множину в?д?браних кандидат?в локац?й об’?кт?в, а на другому етап? класиф?ку? ?х та коректу? дан? знаходження об’?кта. Найб?льш популярною 2-етапною арх?тектурою на сьогодн?шн?й день ? Faster RCNN [7] та ?? модиф?кац??. На рис.1.3 зображено в загальному вигляд? структуру та принцип роботи Fast RCNN арх?тектури.Внизу рисунку зображна глибока згорткова нейронна мережа, що генеру? мапи признак?в (feature maps), на баз? яких спец?альна мережа Region Proposal Network реал?зу? перший етап розп?знавання генеруючи множину кандидат?в локац?й. На цьому етап? не в?дбува?ться н?яко? класиф?кац??, роль RPN анал?зувати кожне м?сце на вх?дних мапах признак?в ?дентиф?куючи чи ? в ньому об’?кт чи н?, та генеруючи приблизний bounding box об’?кта. Для розп?знавання об’?кт?в р?зних пропорц?й довжини та ширини використову?ться ф?ксований наб?р рамок р?зних розм?р?в та пропорц?й - default anchor boxes. У кожн?й просторов?й “кл?тинц?” мап признак?в RPN визнача? для кожно? ?з цих рамок ймов?рн?сть того, що саме вона найб?льш схожа з реальним bounding box об’?кта, якщо такий там ?. Принцип роботи RPN зображено на рис.1.4.?ншими словами RPN вказу? “куди дивитися” на другому етап? розп?знавання. На другому етап? класиф?катор у вигляд? повнозв’язно? мереж? (FC Layers) анал?зу? лише т? област? на мап? признак?в, що належать кандидатам; класиф?ку? ?х та коректу? ?х bounding boxes. Нав?дм?ну в?д згортково? мереж? FC шари можуть приймати вх?дний масив лише ф?ксованого розм?ру. Тому кожен з кандидат?в опрацьову?ться RoI Pooling шаром, що пропорц?йно стиска? мапи признак?в кожного з них по довжин? та ширин? для отримання необх?дних розм?р?в.Рисунок 1.3. - Загальний вигляд структури та принципу роботи архутектури Faster RCNN?Рисунок 1.4. - Принцип роботи RPN1.2.2 Одноетапний механ?зм object detectionНе дивлячись на усп?х 2-етапних детектор?в, вони все ще мають ряд недол?к?в, зокрема це складн?сть структури та пов’язана з нею складн?сть процедури навчання, втрата швидкост? розп?знавання. ? природним бажання отримати вс? необх?дн? результати за один прох?д глибоко? згортково? мереж? без будь-яких додаткових етап?в та затрат. Саме за таким принципом працю? парадигма одноетапних детектор?в, що робить ?х швидшими та прост?шими за ?х 2-етапних ?конкурент?в?.Одноетапн? детектори являють собою одну згорткову нейронну мережу яка навчена отримувати на виход? густу с?тку кандидат?в локац?й об’?кт?в (под?бним способом як це робить RPN) з ?х одночасною класиф?кац??ю та корекц??ю bounding boxes.Найб?льш популярною арх?тектурою, на як?й базуються state-of-the-art модел? 1-етапних детектор?в явля?ться Single Shot Multibox Detector або SSD [8]. На рис.1.5 зображено його принцип роботи [9] [10].Рисунок 1.5. - Принцип роботи Multibox SSD арх?тектуриП?сля проходження через згорткову мережу отримання признак?в (feature extractor) ми отриму?мо шар признак?в розм?ром m×n (к?льк?сть локац?й) з p каналами, такими як 8×8 ? 4×4 на рисунку вище. Пот?м до цього m×n×p шару признак?в застосову?ться 3×3 згортка.Для кожно? локац?? ми ма?мо k стандарних рамок (default anchors) р?зних розм?р?в (scales) та ор??нтац?й (aspect ratios), як? беруться як приближення обрамляючо? рамки об’?кта. Концепц?я така: можливо вертикальний прямокутник б?льше п?дходить, наприклад, до людини а горизонтальний до автомоб?ля.Для кожного bounding box ми п?драхову?мо class scores (ймов?рност? приналежност? до кожного з клас?в) та 4 зм?щення по в?дношенню ориг?нально? форми його стандартно? рамки.Тож ми ма?мо (c+4)kmn вих?дних значень (с - к?льк?сть можливих клас?в).Рисунок 1.6. - Структура арх?тектури SSD у пор?внянн? з? структурою арх?тектури YOLO.?ншою важливою особлив?сть SSD арх?тектури ? те, що с?тку вих?дних результат?в цей детектор генеру? використовуючи не лише мапи признак?в з останнього згорткового шару, а й к?лькох б?льш ранн?х шар?в. Це допомага? розп?знати об’?кти р?зних масштаб?в, оск?льки признаки на б?льш ранн?х шарах мають б?льшу детал?зац?ю, що потр?бна для розп?знавання др?бних об’?кт?в. На рис.1.6 зображено структуру мереж? SSD в пор?внянн? з моделлю YOLO (внизу), що отриму? результат лише на баз? останнього згорткового слою за використанням FC шар?в.1.3 Focal Loss як р?шення проблеми дисбалансу клас?в п?д час тренування Одноетапних детектор?вОдноетапн? детектори були розроблен? з ц?ллю досягнення кращо? швидкост? виявлення об’?кт?в, проте ?х точн?сть в?дста? в?д 2-етапних метод?в. SSD арх?тектура ма? на 10-20% нижчий AP в той час як YOLO фокусу?ться на ще б?льш гостр?шому компром?с? швидкост? та точност? (див. рис.1.7).Рисунок 1.7. - Пор?вняння точност? та швидкост? найпопулярн?ших детектор?в.Зг?дно до одн??? з останн?х роб?т [11] в галуз? object detection, головною причиною його в?дставання ? сильний класовий дисбаланс м?ж об’?ктами (передн?м планом) та фоном (задн?м планом) серед отриманих кандидат?в локац?й об’?кт?в, оск?льки це вплива? на значення функц?? втрат.Для 2-етапних детектор?в под?бна проблема вир?шу?ться на першому етап? шляхом зменшенням числа кандидат?в локац?й об’?кт?в до невелико? к?лькост? (приблизно 1-2 тисяч?) в?дф?льтровуючи б?льш?сть фонових зразк?в. На другому класиф?куючому етап?, виб?рков? евристики, так? як дотримання ф?ксованого сп?вв?дношення зразк?в переднього та заднього плану (1:3) або онлайн добування важких зразк?в (OHEM) [12], застосовуються для отримання керованого балансу м?ж зразками переднього та заднього плану.На противагу, Одноетапний детектор змушений обробляти значно б?льший наб?р кандидат?в локац?й об’?кт?в з?браних регулярною с?ткою з усього зображення. На практиц? це число нал?чу? близько 100 тисяч локац?й, що густо покривають вс? просторов? позиц??, вс? масштаби та ракурсн? сп?вв?дношення (aspect ratios).Не зважаючи на те, що под?бн? евристики також можуть бути застосован? до Одноетапних детектор?в вони не дають бажаного ефекту, оск?льки в тренувальн?й процедур? все ще дом?нують легко-класиф?ковн? фонов? зразки. Ця неефективн?сть ? класичною проблемою object detection, що в основному намагаються послабитися за рахунок таких техн?к як bootstrapping [13, 14] та hard negative mining [12]. В якост? вир?шення дано? проблеми було запропоновано нову функц?ю втрат п?д назвою фокальна функц?я втрат (focal loss) [11]. ?? головна ?дея поляга? у зменшенн? значення функц?? втрат для легко-класиф?ковних зразк?в (як? становлять б?льш?сть ? належать до класу “заднього плану”) ? зб?льшити значення втрат для для важко-класиф?ковних зразк?в. Таким чином, п?д час навчання модел? нейронно? мереж?, складн? зразки об’?кт?в матимуть б?льший вплив на корегування ?? вагових коеф?ц??нт?в ? не “потонуть” у велик?й к?лькост? зразк?в заднього плану, що ? так легко класиф?куються.Дана ?дея реал?зу?ться за рахунок додавання до звичайно? cross entropy функц?? (1.2) двох множник?в. Перший, 1-ptγ, зменшу? значення функц?? втрат для зразк?в, що легко класиф?куються. Другий, α∈[0,1], зменшу? функц?ю втрат для зразка пропорц?йно до частки його класу серед ус??? множини зразк?в. В результат? отриму?мо наступну формулу для фокально? функц?? втрат (1.1):FLpt=-αt1-ptγlog(pt)(1.1)?CE(pt)=-log(pt)(1.2)де pt - спрогнозоване мережею значення ймов?рност? приналежност? вх?дного зразка до його ?стинного класу. В даному випадку ? лог?чним те, що воно використову?ться в якост? степеню складност? класиф?кац?? вх?дного зразка, оск?льки його мале значення говорить про те, що нейронн?й мереж? важко класиф?кувати даний екземпляр правильно.Значення γ≥0 зада?ться вручну ? показу? ступ?нь подавлення легко-класиф?ковних зразк?в. На рис.1.8 зображено граф?ки фокально? функц?? втрат в залежност? в?д значення цього параметру.?Рисунок 1.8. - Граф?ки фокально? функц?? втрат для р?зних значень параметра γ.На зображенн? можна побачити, що конф?гурац?я γ>0 зменшу? в?дносну функц?ю втрат для добре-класиф?кованих зразк?в (pt>.5), фокусуючись на важких та неправильно класиф?кованих екземплярах. Експерименти на набор? даних COCO показали найкращ? результати для конф?гурац?? γ=2 [11].Значення параметру αt також зада?ться вручну. Оск?льки цей коеф?ц??нт покликаний виправити к?льк?сний дисбаланс м?ж екземплярами р?зних клас?в, то ? доц?льним взяти в якост? значення ?нвертовану частоту класу. Проте в?н також може п?дбиратися як г?перпараметр на крос-вал?дац??. В ориг?нальн?й статт? найкращ? результати були отриман? для αt=0.25 (в?дпов?дно це значення 0.75 для екземпляр?в переднього плану) [11].1.4 Pyramid Pooling Network як оптим?зац?я SSD арх?тектуриВ дан?й робот? робиться акцент на face detection в контекст? використання моб?льних пристро?в та CPU в режим? реального часу. SSD арх?тектура п?дходить для таких задач, проте пошуки б?льш оптимальних р?шень в цьому напрямку все ще актуальн?. В якост? такого р?шення виступа? модиф?кац?я SSD арх?тектури п?д назвою Pyramid Pooling Network. Дана арх?тектура вимага? менших обчислювальних потужностей не показуючи сутт?вого програшу в якост? в пор?внянн? з SSD Multibox детектором [15] [16].Б?льш?сть SSD детектор?в ма? к?лька мап признак?в, що представляють р?зн? масштаби, кожен з яких ма? св?й власний предиктор оц?нок клас?в та bounding boxes. На практиц?, особливо коли дан? сильно нер?вном?рно розпод?лен? по масштабам, цей дизайн ? проблематичним. Уяв?мо наб?р даних з багатьма об’?ктами великого розм?ру ? к?лькома др?бними об’?ктами. Предиктори для малих масштаб?в, грубо кажучи, будуть змарнован?, оск?льки вони р?дко зустр?чають будь-який позитивний зразок (об’?кт) ? тренуються в основному на негативних (“задн?й план”). Цей дисбаланс також призводить до недокал?брац?? оц?нок серед масштаб?в нав?ть для одного ? того ж класу. ?ншою проблемою цього дизайну ? те, що кожен предиктор бачить об’?кти лише свого масштабу. Така розд?льн?сть розбива? ? без того малий наб?р даних у ще менш?. Якщо ми припуска?мо, що поява об’?кта ? ?нвар?антною до його масштабу, це було б б?льш ефективним, якби вс? предиктори бачили ус? об’?кти.Арх?тектура пропону? просту модиф?кац?ю до звичайного SSD: використовувати один предиктор на вс? масштаби. Щоб дозволити предиктору працювати в тому ж самому простор? признак?в ми зам?ню?мо шари згортки м?ж мапами признак?в шарами max pooling. Описана модиф?кац?я зображена на рис.1.9.Рисунок 1.9. - Пор?вняння арх?тектури SSD (зл?ва) з арх?тектурою PPN.?В результат? PPN арх?тектура не лише вир?шу? проблему незбалансованост? навантаження на розд?льн? предиктори, але й реал?зу? сильну оптим?зац?ю модел?: зм?на к?лькох предиктор?в на один та зам?на згорток м?ж мапами признак?в р?зних масштаб?в на max pooling шари, як? майже не вимагають обчислювальних затрат. Та чи ? безпечною така р?зка оптим?зац?я в контекст? збереження точност? модел?, оск?льки ?мн?сть модел? зменшу?ться, а користь окремих предиктор?в заключалася в ?х спец?ал?зац?? на р?зних масштабах?Ориг?нальна робота говорить, що дана оптим?зац?я не ? такою критичною для точност? оск?льки об’?кти в основному ? ?нвар?антними до масштабу. Практичн? результати п?дтверджують дану риторику ? показують, що PPN ма? незначний програш в точност? в пор?внянн? з SSD, проте ма? значний прир?ст в швидкост? та економ?? ресурс?в [15].1.5 Арх?тектура MobileNet як оптим?зац?я deep learning для CPU та моб?льних пристро?вMobileNet [18] ? передовою арх?тектурою згорткових нейронних мереж для реал?зац?? ефективного розп?знавання на моб?льних пристроях та вбудованих системах. Ця арх?тектура використову? поканальну розд?льну згортку (depthwise separable convolution), що дозволя? будувати легк? глибок? нейронн? мереж?.1.5.1 Поканальна розд?льна згорткаПоканальна розд?льна згортка була вперше популяризована арх?тектурою Xception [17]. Вона дозволила сутт?во зменшити число параметр?в згортково? нейронно? мереж?.Припустимо, що ми ма?мо згортковий шар з C2 ф?льтрами розм?ру 3х3, на вх?д якому пода?ться тензор розм?рн?стю M * M * C1, де M - це ширина ? висота тензора, а C1 - к?льк?сть канал?в. Такий шар згорта? одночасно вс? канали вх?дного сигналу C2 р?зними згортками. На виход? такого шару отриму?мо тензор розм?рн?стю (M?2)?(M?2)?C2 [5].Поканальна розд?льна згортка зам?ню? описану операц?ю наступними двома кроками:Згорта? вх?дний тензор 1х1 згорткою, отримуючи тензор M * M * C2. Ця операц?я назива?ться pointwise convolution.Згорта? окремо кожен канал окремою 3х3 згорткою (при цьому розм?рн?сть не зм?ниться, так як згортаються вс? канали разом, як в звичайному згортковому шар?). Ця операц?я назива?ться depthwise convolution.Описана процедура зображена на рис.1.10.?Рисунок 1.10. - Принцип роботи поканально? розд?льно? згортки?Наступний приклад поясню? чому це робить мережу компактн?шою [18]. Нехай ми згорта?мо зображення з 16 каналами згортковим шаром з 32 32 ф?льтрами. Сумарно цей згортковий шар буде мати 16?32?3?3=4608 вагових коеф?ц??нт?в, так як у нас буде 16 * 32 згорток 3х3.В аналог?чному depthwise separable convolution блоц? буде 16 * 32 * 1 * 1 = 512 вагових коеф?ц??нт?в у pointwise convolution ? 32 * 3 * 3 = 288 ваг?в у depthwise convolution. В сум? отрима?мо 800 параметр?в, що набагато менше, н?ж у звичайного згорткового шару.Звичайний згортковий шар одночасно обробля? як просторову ?нформац?ю (кореляц?ю сус?дн?х точок всередин? одного каналу), так ? м?жканального ?нформац?ю, так як згортка застосову?ться до вс?х канал?в в?дразу. Depthwise separable convolution базу?ться на припущенн?, що ц? два види ?нформац?? можна обробляти посл?довно без втрати якост? роботи мереж?, ? розклада? звичайну згортку на pointwise convolution (яка обробля? т?льки м?жканального кореляц?ю) ? spatial convolution (яка обробля? т?льки просторову кореляц?ю в рамках окремого каналу) [5].1.5.2 Структура MobileNetНа рис.1.11 зл?ва зображено блок звичайно? згортково? мереж?, а праворуч - базовий блок MobileNet.?Рисунок 1.11. - Блок звичайно? згортково? мереж? (зл?ва) та базовий блок MobileNet.?Згорткова частина MobileNet склада?ться з одного звичайного згорткового шару 3х3 на початку ? тринадцяти блок?в, зображених справа на малюнку 1.11 праворуч, з поступово зростаючою к?льк?стю ф?льтр?в ? зниженням просторово? розм?рн?стю тензора.Особлив?стю дано? арх?тектури ? в?дсутн?сть max pooling-шар?в. Зам?сть них для зниження просторово? розм?рност? використову?ться згортка з параметром stride р?вним 2.Двома г?перпараметрами арх?тектури MobileNet ? α (множник ширини) ? ρ (множник глибини або множник дозволу). Множник ширини в?дпов?да? за к?льк?сть канал?в в кожному шар?. Наприклад, α = 1 да? нам арх?тектуру, описану в статт? [18], а α = 0.25 - арх?тектуру з? зменшеним в чотири рази числом канал?в на виход? кожного блоку.Множник дозволу в?дпов?да? за просторов? розм?ри вх?дних тензор?в. Наприклад, ρ = 0.5 означа?, що висота ? ширина feature map, яка пода?ться на вх?д кожного шару буде зменшена вдв?ч?.Обидва параметра дозволяють вар?ювати розм?ри мереж?: зменшуючи α ? ρ, ми знижу?мо точн?сть розп?знавання, але в той же час зб?льшу?мо швидк?сть роботи ? зменшу?мо споживану пам'ять.1.5.3 MobileNet V2Основний буд?вельний блок ц??? мереж? в ц?лому схожий на попередн? покол?ння, але ма? ряд ключових особливостей [19].Як ? в MobileNet V1, тут ? згортков? блоки з кроком 1 (на рисунку л?воруч) ? з кроком 2 (на рисунку праворуч). Блоки з кроком 2 призначен? для зниження просторово? розм?рност? тензора ?, на в?дм?ну в?д блоку з кроком 1, не мають residual connections.?Рисунок 1.12. - Блоки MobileNet V2?Блок MobileNet, який автори називають розширюючим згортковим блоком (в ориг?нал? expansion convolution block або bottleneck convolution block with expansion layer), склада?ться з трьох шар?в: pointwise convolution, depthwise convolution та 1×1 згортка.Pointwise convolution з великою к?льк?стю канал?в, званий expansion layer. На вход? цей шар прийма? тензор розм?рност? Df × Df × Cin, а на виход? вида? тензор Df × Df × (t × Cin), де t - новий г?перпараметр, що назива?ться р?внем розширення (в ориг?нал? expansion factor). Автори рекомендують ставити цьому г?перпараметру значення в?д 5 до 10, де менш? значення краще працюють для б?льш маленьких мереж, а велик? - для б?льших (у сам?й статт? у вс?х експериментах прийма?ться t = 6). Цей шар створю? в?дображення вх?дного тензора в простор? велико? розм?рност?. Автори називають таке в?дображення ?ц?льовим р?зноман?ттям? (в ориг?нал? ?manifold of interest?)Пот?м йде depthwise convolution з ReLU6-активац??ю. Цей шар разом з попередн?м по сут? утворю? буд?вельний блок MobileNetV1. На вход? цей шар прийма? тензор розм?рност? Df × Df × (t × Cin), а на виход? вида? тензор (Df / s) × (Df / s) × (t × Cin), де s - крок згортки (stride), адже depthwise convolution не зм?ню? число канал?в.В к?нц? йде 1×1-згортка з л?н?йною функц??ю активац??, що знижу? число канал?в. Автори статт? висувають г?потезу, що ?ц?льове р?зноман?ття? високо? розм?рност?, отримане п?сля попередн?х крок?в, можна ?укласти? в п?дпрост?р меншо? розм?рност? без втрати корисно? ?нформац??, що, власне ? робиться на цьому кроц? (як можна побачити по експериментальним результатам, ця г?потеза повн?стю справджу?ться).На вход? такий шар прийма? тензор розм?рност? (Df / s) × (Df / s) × (t × Cin), а на виход? вида? тензор (Df / s) × (Df / s) × Cout, де Cout - к?льк?сть канал?в на виход? блоку.Фактично, саме трет?й шар в цьому блоц?, що назива?ться bottleneck layer, ? ? основною в?дм?нн?стю другого покол?ння MobileNet в?д першого. На рис.1.13 зображено принцип роботи bottleneck layer.Рисунок 1.13. - Схема роботи bottleneck layer MobileNet V2?1.5.4 SSDlite MobileNet V2В ориг?нальн?й робот?, що популяризувала арх?тектуру MobileNet V2 [19], запропонована також модиф?кац?я SSD детектора п?д назвою SSDlite. Модель SSD MobileNet V2 ? Multibox SSD детектором що використову? MobileNet V2 у якост? видобувача признак?в. Проте частина мереж? що реал?зують SSD п?дх?д все ще використову? стандартну згортку. SSDlite модиф?кац?я зам?ню? ц? згортков? шари в SSD шарах на depthwise separable convolution.1.6 ?нш? роботиСеред роб?т в галуз? object detection та face detection в режим? реального часу на CPU ? ряд актуальних роб?т, як? по р?зним причинам не були включен? до даного досл?дження. Деяк? з цих роб?т з’явилися в момент активно? фази дано? роботи, для ?нших не вистачало артефакт?в для ?х швидко? ?нтеграц?? в програмну систему, що була розроблена для навчання та вал?дац?? моделей в досл?дженн?. Також одн??ю ?з причин був брак часових та ф?нансових ресурс?в. Не зважаючи на це б?льш?сть ?з цих роб?т ? модиф?кац?ями моделей обраних для даного досл?дження ? ?х упущення не ма? сутт?вого впливу на актуальн?сть роботи.Серед модиф?кац?й MobileNet арх?тектури сл?д також вид?лити ShuffleNet [20], що пропону? нов? операц?? 1х1 group convolution та channel shuffle. Серед object detection моделей окремо? уваги заслугову? арх?тектура Feature Pyramid Network, що використову? признаки б?льшого масштабу з верхн?х шар?в для виявлення об’?кт?в меншого масштабу. В той час як PPN ? модиф?кац??ю SSD в напрямку швидкост? та компактност?, то FPN ? ?? модиф?кац??ю в напрямку точност?, що, в?дпов?дно, негативно вплива? на швидк?сть. Модел? для досл?дження в основному обиралися зг?дно до рейтинг?в на GitHub стор?нц? Tensorflow Detection Model Zoo [15], ? оск?льки акцент був зроблений на швидкост?, для оптим?зац?? ресурс?в FPN арх?тектура була виключена з досл?дження як пов?льна.Зг?дно до рейтинг?в на WIDERFACE та FDDB бенчмарках сл?д в?дм?тити так? модел? виявлення облич як FaceBoxes [21] та PyramidBox [22], що базу?ться на FPN п?дход?. PyramidBox ма? незначне в?дставання по точност? в?д л?дер?в цих бенчмарок, проте ма? кращу швидк?сть, що важливо в контекст? дано? роботи.1.7 Метрики оц?нювання object detection моделейОсновними метриками моделей object detection ? Mean Average Precesion (mAP@k) та Average Recall (AR@k).Дан? метрики т?сно пов’язан? з показником Intersection over Union обрамляючих рамок, отриманих на виход? моделей виявлення об’?кт?в. Цей показник показу? сп?вв?дношення м?ж площею перекривання м?ж отриманим bounding box та ?стинним bounding box об’?кта до площ? ?х об’?днання. В?дпов?дно вс? кандидати, чи? значення IoU менше заданого порогового значення в?дкидаються, вс? ?нш? в?дс?юються процедурою non-maximum suppression для того, щоб залишити для кожного об’?кта лише один bounding box який ма? найб?льший IoU. На рис.1.14 зображено формулу, та в?зуал?зац?ю значень IoU. Рисунок 1.14. - В?зуал?зац?я показника IoU.Показник mAP отриму?ться на баз? precision-recall криво? (PR curve) ? показу? точн?сть виявлення об’?кт?в. PR-крива отриму?ться шляхом сортування ус?х отриманих передбачень об’?кт?в на зображеннях за ?х рейтингом (прогнозованою ймов?н?стю, що це об’?кт певного класу, враховуючи клас фону). Пот?м для кожного ?з передбачень п?драховуються значення precision та recall за наступними формулами (1.3) та (1.4) в?дпов?дно:(1.3)(1.4)де TP (True Positive або правильн? в?д?бран?) – к?льк?сть передбачень об’?кт?в, як? повернула модель ? як? сп?впадають з ?стинними локац?ями об’?кт?в та ?х класами; FP (False Positive або неправильн? в?д?бран?) – к?льк?сть передбачень об’?кт?в шуканого класу, як? насправд? ними не являються (клас заднього плану або в?дносяться до нев?рного класу), FN – (правильн? про?гнорован?) – передбачення модел?, що були неправильно класиф?кован? (як задн?й план або ?нший клас), в той час як насправд? це були об’?кти шуканого класу. Тобто Precision говорить наск?льки акуратно ? точно модель виявля? об’?кти, а Recall - наск?льки ретельно ? як мало вона пропуска? шукан? об’?кти.Дал? по отриманим даним буду?ться PR-крива, де аргументом ? значення recall. На рис.1.15 зображено приклад PR-криво?:Рисунок 1.15. - Приклад PR криво?.Попередньо значення PR-криво? злажуються таким чином, що для кожного значення precision наступне значення менше або р?вне йому.Значення AP п?драхову?ться як площа п?д PR-кривою, так як це описано формулою (1.5):(1.5)де k – порядковий номер в в?дсортованому списку передбачень модел?, n – к?льк?сть передбачень, P(k) – значення precision для цього номеру rel(k) – ?ндикатор, що дор?вню? одиниц?, якщо дане передбачення правдиве ? нуль, якщо н?.Значення mAP (mean AP) ? усередненим AP по ус?м класам, у випадку face detection ма?мо одни клас, тому mAP = AP.Показник AP@k (average precision at k) ? значенням AP, що було отримане на вал?дац?йному чи тестовому набор? даних використовуючи k як порогове значення IoU для прийняття передбачень як правдивих. Наприклад AP@50 в?добража? точн?сть модел?, якщо порогове значення IoU 50%.Показник AR@k ма? дещо ?ншу природу ? показу? як мало об’?кт?в дана модель пропуска?. Для цього в?дбираються вс? ?стинн? локац?? об’?кт?в. Дал? для кожного з них в?дбира?ться одне найкраще передбачення, що ма? максималне IoU з ?стинною рамкою об’?кта. Дал? знаходять к?льк?сть ус?х ?стинних значень, для яких було знайдено хоча б одне правдиве передбачення з IoU б?льшим заданого порогу. В к?нц? значення AR отримують як выдношення отриманоъ суми до к?лькост? ус?х ?стинних значень об’?кт?в у виб?рц?. Значення п?драхову?ться за формулою (1.4) [24]:(1.6)де n – к?льк?сть ус?х ?стинних об’?кт?в у виб?рц?, IoU(gti) – IoU област? ?-го ?стинного об’?кта з найкращим його передбаченням.Висновки до розд?лу 1В даному розд?л? приведено результати огляд у сучасного стану галуз? object detection та face detection з використанням мереж глибокого навчання. В?дпов?дно до об’?кту досл?дження акцент був зроблений на швидк?сн? арх?тектури для розп?знавання в режим? реального часу на CPU та моб?льних пристроях. Були розглянут? базов? принципи та основн? п?дходи object detection з використанням глибоких нейронних мереж та вид?лен? state-of-the-art модел? та найнов?ш? техн?ки в дан?й галуз?.Зокрема були вид?лен? так? арх?тектури згорткових нейронних мереж як MobileNet V1, MobileNet V2 та ShuffleNet, як? на сьогодн?шн?й день ? найкращим вибором для розп?знавання зображень для пристро?в з невеликими обчислювальними ресурсами.З пом?ж передових real-time object detection арх?тектур, буди вид?лен? Multibox SSD та Pyramid Pooling Network. Також окремо? уваги заслуговують модел? Feature Pyramid Network, PyramidBox та FacesBox, як? не включен? до даного досл?дження.В результат? анал?зу галуз? були в?д?бран? наступн? модел? для досл?дження в робот?: SSD MobileNet V1, SSD MobileNet V2, SSDlite MobileNet V2, Pyramid Pooling Network. ? доц?льним ?х досл?дження для отримання нових знань та знаходження простору для вдосконалення точност? та швидкост? виявлення облич.РОЗД?Л 2 Досл?дження моделей глибокого навчання на задач? розп?знавання облич.2.1 Загальна структура досл?дженняДане досл?дження поляга? в тому, щоб досл?дити state-of-the-art модел? глибокого навчання з виявлення об’?кт?в на задач? виявлення облич, проанал?зувати отриман? результати, визначити переваги, недол?ки та особливост? кожно? з моделей; знайти особливост? впливу р?зних п?дход?в, модиф?кац?й та параметр?в навчання на показники ефективност? моделей. Загальний план склада?ться з насупних пункт?в:в?д?брати state-of-the-art модел? глибокого навчання для виявлення об’?кт?в в режим? реального часу на моб?льних пристроях;вибрати одну з популярних бенчмарок по виявленню облич для тренування та тестування вибраних моделей глибокого навчання;провести навчання та вал?дац?ю кожно? з вибраних моделей, з?брати результати та показники;провести анал?з отриманих результат?в, зробити по ним висновки та висунути можлив? рекомендац?? по навчанню та експлуатац?? даних моделей для розп?знавання облич, подальш? напрямки досл?джень.В дан?й робот? досл?дження проходить на задач? виявлення облич. Тобто модел? навчаються з ц?ллю знаходити обмежуюч? рамки облич на вх?дному зображенн? у вигляду 4-ох значень: х та у координати центру, висота та довжина рамки.Ц?льовими результатами досл?дження ?:модел? мереж глибокого навчання, що навчен? розп?знавати обличчя людей ?з вибраного набору даних;граф?ки показник?в точност? в ход? навчання;показники точност? розп?знавання зображень кожною досл?джуваною моделлю на вал?дац?йному набор? даних, зокрема mAP, AR та ?х значення для IOU порог?в та розм?р?в облич.2.2 Виб?р арх?тектур моделей глибокого навчання для виявлення об’?кт?вГоловним джерелом, зг?дно до якого був зроблений в?дб?р моделей була GitHub стор?нка ?Tensorflow detection model zoo?[20]. Модел? в?дбиралися по принципу - найефективн?ш? серед тих, що здатн? працювати на моб?льних пристроях в режим? реального часу. Оск?льки розм?р моделей критичний для моб?льних пристро?в вибиралися т? модел?, що використовували мережу Mobilenet в якост? feature extractor.В результат? були вибран? наступн? модел?: ssd_mobilenet_v1, ssd_mobilenet_v1_ppn, ssd_mobilenet_v2, ssdlite_mobilenet_v2. На таблиц? 2.1 приведен? результати ?х тестування на бенчмарц? COCO та середн?м часом виявлення об’?кт?в використовуючи CPU.?Таблиця 2.1 - Модел? глибокого навчання для виявлення об’?кт?в, що були вибран? для досл?дження з ?х результатами тестування на набор? даних COCO та швидк?стю виявлення об’?кт?вModel nameSpeed (ms)COCO mAPOutputs HYPERLINK "" \h ssd_mobilenet_v12918Boxesssd_mobilenet_v1_ppn_coco2620Boxesssd_resnet_50_fpn_coco 7635BoxesПродовження таблиц? 2.1Model nameSpeed (ms)COCO mAPOutputsssd_mobilenet_v2_coco3122Boxesssdlite_mobilenet_v2_coco2722Boxes2.3 Виб?р тестових даних для навчання та тестування моделейНа сьогодн?шн?й день в ?снуючих роботах по Face Detection найчаст?ше використовуються наступн? набори данихWider Face;FDDB (Face Detection Database);AFW (Annotated Faces in the Wild);YoutubeFaces;Виб?р бенчмарок опирався на наступн? критер??:наб?р даних ма? бути максимально великим;наб?р даних ма? бути максимально повним ? р?зноман?тним: р?зн? масштаби, розм?ри, позиц??, осв?тлення тощо;наб?р даних ма? бути техн?чно доступним, допустимий розм?р, л?ценз?я, документац?я, тощо.Наведеним критер?ям найб?льше в?дпов?дали вс? приведен? набори даних. Проте був вибраний наб?р даних Wider Face оск?льки в?н ма? найб?льшу к?льк?сть зображень. На рисунку 2.1 наведен? приклади зображень ?з набору даних Wider Face, на рисунку 2.2 наведен? приклади зображень з набору даних FDDB.Рисунок 2.1 - Приклади зображень з набору даних Wider Face.Рисунок 2.2 - Приклади зображень ?з набору даних FDDBНаб?р даних Wider Face склада?ться з 32203 зображень, як? м?стять 393703 облич. Наб?р розбитий на тренувальну, вал?дац?йну та тестову виб?рку в пропорц?? 40%/10%/50%.2.4 Процедура навчання та оц?нювання роботи досл?джуваних моделейЗагальний план навчання та тестування моделей вигляда? наступним чином:п?дготовка навчальних даних - конвертац?я ?х в TFRecord ?формат;п?дготовка конф?гурац?? навчання модел?;навчання модел? на навчальн?й виб?рц?;оц?нка роботи модел? на вал?дац?йн?й виб?рц?;зб?р та анал?з результат?в навчання та вал?дац?? модел?;демонстрац?я роботи на конкретних зображеннях.Для навчання моделей використову?ться тренувальна виб?рка Wider Face, що м?стить 12880 зображень. Для вал?дац?? викону?ться вал?дац?йна виб?рка, що м?стить 3326 зображень.Для конф?гурац?? навчання модел? за основному були взят? параметри, що запропонован? по замовчуванн? в ориг?нальному ресурс? Tensorflow Object Detection API. При цьому конф?гурац?? деяких мереж були п?д?гнан? п?д сп?льну схему для б?льш чесного пор?вняння ?х результат?в:модель навча?ться шляхом файн-тюнингу ус?х ?? шар?в;для навчання модел? використовуються наступн? параметри;метод оптим?зац?? – RMSProp;початкове значення кроку оптим?зац?? – 0.004;функц?я спаду кроку оптим?зац?? – 0.95i/2, де i – номер ?терац??;розм?р навчального батчу – 24 вх?дних зображення;к?льк?сть ?терац?й – 200000;momentum=0.9;decay=0.9;epsilon=0.001.2.5 Метрики оц?нювання моделейДля вал?дац?? моделей використову?ться протокол COCO – наб?р метрик що використову?тться для п?драхунку рейтингу модел? на бенчмарц? COCO. Основними метриками даного набору ? Mean Average Precesion (mAP@k) та Average Recall (AR@k).mAP в рамках даного протоколу п?драхову?ться як усереднене значення mAP@k отриманого на для д?апазону порогових значень IoU: в?д 0.5 до 0.95 з кроком 0.05. Також дана метрика ма? наступну анотац?ю mAP@[.5:.05:.95]. Для п?драхунку даного показника з кожного зображення в?дбира?ться не б?льше н?ж 100 передбачень з кожного зображення (у випадку якщо ?х б?льше н?ж 100).AR@k в?дпов?дно отриму?ться п?драхунком значення average recall в?дбираючи топ-k передбачень з кожного зображення. Дане значення усередню?ться на тому ж д?апазон? порогових значень IoU.Загалом повний наб?р метрик, що збира?ться в рамках вал?дац?? модел? нал?чу? наступн? показники: mAP – усереднене значення, mAP@.50, mAP@.75, mAP окремо для трьох груп об’?кт?в р?зних розм?р?в (велик?, середн? та др?бн?), AR@1, AR@60, AR@100 та AR@100 для трьох груп об’?кт?в р?зних розм?р?в.2.6 Результати досл?дження навчання та вал?дац?? модел? П?д час навчання в?дбулися непередбачен? збо?. По ц?й причин? так? модел? як SSD Mobilenet V1 PPN, SSD Mobilenet V2, SSDlite Mobilenet V2 пройшли менше н?ж 200000 ?терац?й, але достатньо, щоб можна було використати результати для досл?дження.2.6.1 Граф?ки mAPНа рис. 2.4-2.8 приведен? граф?ки mAP в?д номуру ?терац?? для кожно? з модел?. На даних граф?ках значення mAP отримане на вал?дац?йн?й виб?рц?, а також значення для об’?кт?в р?зних груп розм?р?в.Рисунок 2.4 - Граф?ки зм?ни значення mAP в ход? навчання модел? SSD Mobilenet V1Рисунок 2.5 - Граф?ки зм?ни значення mAP в ход? навчання модел? SSD Mobilenet V1 з використанням Focal LossРисунок 2.6 - Граф?ки зм?ни значення mAP в ход? навчання модел? SSD Mobilenet V1 з використанням Pyramid Pooling Shared DetectorРисунок 2.7 - Граф?ки зм?ни значення mAP в ход? навчання модел? SSD Mobilenet V2 Рисунок 2.8 - Граф?ки зм?ни значення mAP в ход? навчання SSD Mobilenet V22.6.2 Демонстрац?я роботи моделейНа рис. 2.9-2.11 зображена демонстрац?я роботи моделей на конкретних прикладах ?з вал?дац?йного набору. Л?воруч результати роботи досл?джуваних моделей, праворуч – ?стинн? значення. Рис. 2.9 ? прикладом зображення з обличчями середн?х та малих розм?р?в. Рис. 2.10 та 2.11 ? прикладами зобрачень ?з др?бними обличчями. На рис. 2.10 головною особлив?стю ? те що вс? обличчя знаходяться в проф?ль, що може бути додатковою перешкодою для розп?знавання.Рис. 2.11 ма? досить р?зн? приклади облич. Характерною особлив?стю ? наявн?сть окуляр та посторонн?х предмет?в б?ля облич, що може бути додатковою перешкодою для розп?знавання.На б?льшост? з малюнк?в дом?нують модел? SSD MobileNet V1 + Focal Loss та SSD MobileNet V2, проте об’?ктивне пор?вняння приведене в п.2.6.SSD MobileNet V1 + Focal LossSSD MobileNet V1 + PPN Shared DetectorSSD MobileNet V2SSDlite MobileNet V2Рисунок 2.9 - Демонстрац?я роботи досл?джуваних моделей. Праворуч ?стинн? значення.SSD MobileNet V1 + Focal LossSSD MobileNet V1 + PPN Shared DetectorSSD MobileNet V2SSDlite MobileNet V2Рисунок 2.10 - Демонстрац?я роботи досл?джуваних моделей. Праворуч ?стинн? значення.SSD MobileNet V1 + Focal LossSSD MobileNet V1 + PPN Shared DetectorSSD MobileNet V2SSDlite MobileNet V2Рисунок 2.11 - Демонстрац?я роботи досл?джуваних моделей. Праворуч ?стинн? значення2.7 Анал?з отриманих результат?вВ таблиц? 2.2 приведено пор?вняння часу затраченого на тренування моделей та к?льк?сть реально пройдених ?терац?й навчанняТаблиця. 2.2 - Час затрачений на навчання досл?дзжуваних моделей.Назва модел?Час навчанняК?льк?сть ?терац?й навчання (batch size 24)Метод покращення точност?ssd_mobilenet_v14h 35min200000hard negatives miningssd_mobilenet_v13h 20m200000focal lossssd_mobilenet_v1+ppn3h 13m195300focal lossssd_mobilenet_v25h 5m198500hard negatives miningssdlite_mobilenet_v25h 5m197200hard negatives miningМи бачимо ?з таблиц? 2.2, що найменше часу п?шло на навчання моделей ?з фокальною функц??ю втрат, а саме ssd_mobilenet_v1(focal loss) та ssd_mobilenet_v1+ppn. Що поясню?ться тим, що генерац?я hard negative приклад?в для навчання, що використову?ться в решт? моделей, вимага? додаткових обчислювальних ресурс?в, в той час як використання focal loss ? ?безкоштовним?.Нижче в таблиц? 2.3 приведено пор?вняльну таблицю mAP значень для досл?джених моделей, що були отриман? на вал?дац?йн?й виб?рц?.Таблиця 2.3 - Пор?вняння mAP р?зних моделей на зображеннях р?зних масштаб?в.Назва модел?MEAN AVERAGE PRECISIONmAPlargemediumsmall50IOU75IOUssd_mobilenet_v134.7158.2630.0810.0471.1229.42ssd_mobilenet_v1 focal loss38.6759.4634.9912.1576.4134.86ssd_mobilenet_v1ppn35.1761.9428.327.25269.3230.99ssd_mobilenet_v237.658.9533.5111.3576.0229.12ssdlite_mobilenet_v237.4160.4133.28.0175.1232.6В таблиц? 2.4 приведено пор?вняльну таблицю AR (Average Recall) значень для досл?джених моделей, що були отриман? на вал?дац?йн?й виб?рц?.Таблиця 2.4 - Пор?вняння показник?в AR р?зних моделей на зображеннях р?зних масштаб?в.Назва модел?AR@1AR@10AR@100largemediumsmallssd_mobilenet_v114.0137.3544.6265.7041.7118.80ssd_mobilenet_v1 focal loss14.6639.6947.6066.8045.7627.33ssd_mobilenet_v1ppn14.2737.4846.8568.9243.6621.22ssd_mobilenet_v214.1739.1346.665.9343.5426.57ssdlite_mobilenet_v214.5639.4646.6967.9943.4023.73Зг?дно до таблиць 2.3-2.4 можна побачити, що використання фокально? функкц?? втрат показало свою явну перевагу над використанням hard negative mining. Вона дала значний прир?ст в точност? для зображень ус?х масштаб?в. Таким чином найкращий результат дала модель SSD Mobilenet V1, яка використовувала Focal loss, перевершивши нав?ть б?льш досконал? SSD Mobilenet V2 та SSDlite Mobilenet V2, що використовували hard negative mining. Таким самим чином найменш точна модель Pyramid Pooling Netword з використанням Focal Loss об?гнала по показникам точност? SSD MobileNet V1, що використовувала hard negative mining. Також важливим моментом ? те, що найб?льш оптим?зована модель PPN показала найкращ? результати для великих об’?кт?в. Це частково п?дтверджу? г?потезу, що max pooling може бути альтернативою для отримання мапи признак?в б?льшого масштабу з м?н?мальними затратами, але сл?д врахувати, що дане покращення точност? також пов’язане з використанням мап признак?в з б?льш ранн?х шар?в.Якщо пор?внювати результати моделей SSD Mobilenet V2 та SSDlite Mobilenet V2 то можемо побачити так? особливост?:вони мають приблизно однакову точн?сть;SSD Mobilenet V2 краще розп?зна? маленьк? обличчя;SSD Mobilenet V2 ма? г?ршу як?сть обмежувальних рамок (про це говорить те, що при пороговому значенн? IOU 50% ?ма? кращу точн?сть, а при б?льш строгому значенн? 75% - навпаки).2.8 Подальш? напрямки досл?дженняВ даному розд?л? на баз? результат?в 1-го та 2-го розд?л?в вид?ляються подальш? напрямки досл?дження з метою отримання кращо? точност? та швидкост? виявлення облич на моб?льних пристроях.Ун?версальним п?дходом для п?двищення точност? ? р?шенням розбалансованост? навчально? виб?рки ? використання фокально? функц?? втрат, як це було п?дтверджено результатами досл?дження. Недол?к?в даного п?дходу в робот? не було виявлено, тому для п?двищення точност? моделей нейронних мереж рекоменду?ться ?нвестувати в б?льш слабк? м?сця досл?джених арх?тектур.Сл?д вид?лити недол?ки та переваги розглянутих п?дход?в. Базова арх?тектура SSD ма? наступн? недол?ки:кожен ?з предиктор?в навча?ться незалежно використовуючи мапу признак?в одного масштабу, тому розбалансован?сть об’?кт?в р?зного масштабу в навчальн?й виб?рц? призведе до того, що одн? з предиктор?в отримають дуже малу корекц?ю вагових параметр?в [16];густина с?тки кандидат?в локац?й на предикторах меншого масштабу р?дша н?ж на предикторах б?льшого масштабу, що в?дбива?ться у менш?й точност? для малих об’?кт?в [21];кожен пердиктор використову? мапу признак?в одного масштабу, проте мапи признак?в ?з б?льш ранн?х ? б?льш п?зн?х шар?в нейронно? мереж? можуть м?стити корисну ?нформац?ю, яка не використову?ться цим предиктором.В якост? р?шення проблеми (а) та (в), як це було вже згадано, було запропоновано використання сп?льного предиктора в арх?тектур? PPN. Проте як показало досл?дження даний п?дх?д працю? восновному для великих об’?кт?в ? розбалансован?сть може так само спричинити перетягування вагових коеф?ц??нт?в сп?льного предиктора в сторону найб?льш повторюваних тип?в об’?кт?в Р?шення проблеми (б) ? зб?льшення густини с?тки рамок кандидат?в об’?кт?в були запропонован? в роботах FaceBoxes (anchor densification strategy) [21] та S3FD [25], що пот?м було використано в б?льш п?зн?й робот? PyramidBox [22].Я приклад р?шення проблеми (в) ? використання п?дходу Feature Pytamid Network [26]. Проте дана модель ма? також ряд недол?к?в:робить модель пом?тно б?льшою та пов?льн?шою; мапи признак?в ?з дуже п?зн?х шар?в можуть бути несум?сними з мапами признак?в дуже ранн?х ? вносити шум, який знижу? точн?сть передбачень [25];дана арх?тектура комб?ну? мапи признак?в лише з сигналами б?льш п?зн?х шар?в для отримання семантично? ?нформац?? про контекст, проте б?льш ранн? шари не використову?ться.Як приклад р?шення ус?х перечислених проблем ? арх?тектура PyramidBox. Даний п?дх?д використову? FPN лише для мап признак?в ранн?х шар?в, як? являються проблематичними ? невикористовуються для предиктор?в б?льшого масштабу, що ? без того мають непогану точн?чть (що п?дтвердилося досл?дженнями в дан?й робот?). Також дана арх?тектура використову? для передбачення об’?кт?в р?зних масштаб?в сигнали як з б?льш ранн?х так ? з п?зн?х шар?в нейронно? мереж?, не використовуючи надто ?далек?? мапи признак?в.Опираючись на проведений анал?з для подальшого досл?дження за базову модель ? сенс взяти PyramidBox. Не дивлячись на те, що дана модель ма? р?шення до б?льшост? з розглянутих проблем арх?тектур SSD, PPN та FPN, вона все ще залиша?ться гром?здкою. Тому ? сенс ?? досл?дження шляхом по-компонентного анал?зу та модиф?кац?й з ц?ллю зменшення розм?ру дано? модел? та отримання б?льшо? швидкост? з м?н?мальними втратами точност?.Також важливим напрямком досл?дження ? знаходження оптимального комб?нування шар?в б?льш п?зн?х та ранн?х шар?в для передбачення об’?кт?в одного масштабу. Головна ?дея, що лежить в комб?нування признак?в р?зних шар?в ? те, що вони можуть м?стити ?нформац?ю про признаки, що в?дносяться до того самого масштабу що ? шуканий об’?кт. Наприклад б?льш ранн? шари вловлюють детал?, що менш? за обличчя: н?с, оч? тощо. В той час п?зн? шари вловлюють об’?кти, що ? б?льшими за обличчя ? представляють контекст, наприклад тулуб або плеч?. Разом дан? признаки мають дати б?льшу точн?сть розп?знавання, проте якщо використовувати мапи признак?в, масштаб яких дуже в?др?зня?ться, вони можуть бути не сум?сн? ? вносити лише шум на вх?д предиктора, а також марнуватимуть обчислювальн? ресурси. ? доц?льним досл?дження ц??? г?потези та пошук б?льш оптимального комб?нування мап признак?в р?зних масштаб?в.Висновки до розд?лу 2В даному розд?л? описано досл?дження моделей мереж глибокого навчання на задач? розп?знавання облич, що було проведене в дан?й робот?. Розд?л м?стить опис наступних аспект?в досл?дження:структура досл?дження, опис процес?в, вх?дних параметр?в та оч?куваних результат?в;результати досл?дження, а саме результати навчання, вал?дац?? та демонстрац?? роботи досл?джуваних мереж глибокого навчання;анал?з отриманих результат?в.Як результат анал?зу отриманих результат?в досл?дження можна винести наступн? висновки та рекомендац??:фокальна функц?я втрат да? значний прир?ст точност? для зображень ус?х масштаб?в з акцентом на нестандартн? екземпляри, при цьому не вимага? додаткових обчислювальних ресурс?в;використання PPN арх?тектури ? хорошим вар?антом, якщо не потр?бно виявляти обличчя маленького масштабу;вс? модел? добре розп?знають зображення великого масштабу, тому сл?д ?нвестувати зусилля для покращення точност? виявлення облич середнього та малого масштаб?в;модель SSD Mobilenet V2 б?льш точна н?ж SSDlite Mobilenet V2;модел? SSD Mobilenet V2 пов?льн?ша проте краще розп?зна? маленьк? зображення н?ж SSDlite Mobilenet V2;SSD Mobilenet V2 ма? г?ршу точн?сть обмежувальних рамок н?ж SSDlite Mobilenet V2.Також дан? результати були розглянут? в контест? з результатами огляду сучасних архутектур ?з роздулу 1 ? вид?лен? ?де? та напрямки для досл?джень з метою покращення точност? досл?джуваних моделей виявлення облич. Зокрема таким напрямком ? знаходження оптимального комб?нування сус?дн?х мап признак?в б?льшого та меншого масштаб?в для п?двищення точност? виявлення об’?кт?в без значних затрат обчислювальних ресурс?в.РОЗД?Л 3 ОПИС ПРОГРАМНОГО ПРОДУКТУ3.1 Виб?р апаратно? платформи та сторонн?х програмних продукт?вОск?льки навчання нейронних мереж вимага? велико? к?лькост? обчислень, для прискорення ц??? процедури був використаний хмарний серв?с Google Cloud ML Engine, де використовуючи паралельно к?лька GPU модел? NVIDIA Tesla K80 в?дбувалося навчання моделей нейронних мереж.Для розробки програмного продукту була вибрана мова Python (?нтерпретатор Python 3.5), bash скрипти та фреймворк для створення моделей машинного навчання Tensorflow Object Detection API. Вс? необх?дн? б?бл?отеки необх?дн? для використання Tensorflow Object Detection API та Google Cloud ML Engine були встановлен? використовуючи Virtual Environment на робоч?й станц?? з операц?йною системою OSX High Sierra. Оск?льки командний ?нтерфейс написаний з використанням bash скрипт?в, то програма сум?сна т?льки з Unix-под?бними операц?йними системами.3.2 Загальний опис програмного продуктуПрограмний продукт ма? назву ?Face detection working dir? ? представля? собою програмну платформу для навчання, вал?дац?? та демонстрац?? роботи нейронних мереж глибокого навчання на задачах розп?знавання зображення.Програмний продукт бува розроблений на баз? Tensorflow Object Detection API фреймворку [23]. Лог?ка навчання ? вал?дац?? моделей, ?х ?нтеграц?? з Google ML Engine вже реал?зована в Tensorflow Object Detection API, проте ?снуюч? ?нструкц?? використання даного фреймворку довол? складн?, а також обмежене коло бенчмарок з якими в?н сум?сний. Тому основною задачею програмного продукту полягала в наступн?й функц?ональност?:реал?зац?я спрощеного ?нтерфейсу для п?дготування даних, навчання та вал?дац?? моделей;?нтеграц?я з вибраним набором даних для розп?знавання обличь – WIDERFACE;п?дготування набору pipeline-конф?гурац?й для навчання та вал?дац?? обраних моделей;написання ?нструкц?? для використання даного продукту.3.3 Опис ?нтерфейсу програмиПрограма ? набором з bash ? python скрипт?в, pipeline-конф?гурац?й та робочих директор?й:widerface_init_data.sh – скрипт, що завантажу? з ?нтернету навчальний та вал?дац?йний наб?р даних WIDERFACE та конверту? його в файли формату TFRecord, який розроблений спец?ально для фреймворку Tensorflow. Даний скрипт виклика? модуль download_widerface.py для скачування набору даних ? create_widerface_tf_record.py модуль для конвертац?? зображень в формат TFRecord. Зображення тимчасово завантажуються в директор?ю downloads, п?сля чого зконвертован? дан? збер?гаються в директор?ю data.train.sh – скрипт, що запуска? навчання моделей на серв?с? Google Cloud ML Engine. Команда запуску тренування ма? наступний вигляд:train.sh <gpu|tpu> \<назва модел?> \<дата верс?? модел?> \ [назва конф?гурац?йного файлу в папц? config]Перший параметр визнача? тип пристрою, на якому буде виконуватися обчислення. TPU це пристр?й пристосований спец?ально оптим?зований для виконання machine learning завдань. Другий та трет?й параметр ? в?дпов?дно назвою та датою верс?? модел?, що доступна для скачування з арх?ву Tensorflow Detection Model Zoo. Нижче приведена схема URL адрес по як?й збер?гаються модел?:{MODELNAME}_{MODELDATE}.tar.gzМодел? завантажуються локально в директор?ю checkpoints. Четвертий параметр ? назвою конф?гурац?йного файлу в якому задан? г?пер-параметри модел?, процедур навчання та вал?дац??. Цей параметр ? необов’язковим ? за замовчуванням буде використовуватися файл, чи? ?м’я сп?впада? з назвою модел?.Налаштування видид?лення ресурс?в Google Cloud ML Engine для навчання модел? знаходиться в config/cloud.yml. В робот? використовувалися стандартн? налаштування: на одне завдання вид?лялося 9 граф?чних процесор?в та 3 сервери параметр?в.eval.sh – скрипт для тестування натреновано? модел? на вказаному набор? даних та отримання точност? розп?знавання на вказаному набор? даних. Цей скрипт прийма? т? сам? параметри що й скрипт train.sh. У випадку навчання модел? з використанням GPU вал?дац?я модел? проходить паралельно з навчанням, ? тому запуск даного скрипта ма? м?сце лише коли необх?дно отрмати додатков? показники або у випадку, коли навчання модел? в?дбувалося з використанням TPU.Також важливою частиною програми ? наб?р pipeline-конф?гурац?й до кожно? з досл?джуваних моделей, що знаходяться в директор?? config. В них задаються г?пер-параметри моделей, вх?дн? дан?, алгоритм оптим?зац?? та його параметри, параметри вал?дац?? тощо.?нструкц?я ?нсталяц?? застосунку наведена в додатку А. Вс? перечисленн? скрипти та приклади ?х виклик?в наведено в додатку Б. Л?стинг програми наведений в додатку В.Висновки до розд?лу 3В даному розд?л? описано програмний продукт, що використовувався для зд?йснення досл?джень в дан?й робот?. Розроблена програма ? платформою для швидкого навчання моделей face detection на баз? фреймворку Tensorflow Object Detection API та хмарного серв?су Google Cloud ML Engine.Програмний продукт в?дпов?да? поставленим техн?чним та функц?ональним вимогам ? нада? користувачу можлив?сть навчати, оц?нювати та тестувати модел? мереж глибокого навчання на задачах розп?знавання зображень та облич зокрема.Нижче приведений список бажаних удосконалень даного програмного продукту з ц?ллю б?льшо? автоматизац?? досл?джень в напрямку face detection:Використання Google Coud ML Engine ? в?дносно дорогим, тому в першу чергу ? сенс пошуку програм безоплатного використання ресурс?в Google Cloud для студент?в та досл?дник?в.На даний момент програма п?дтриму? лише наб?р даних WIDERFACE. Для б?льш ширшого та як?сного досл?дження сл?д також додати можлив?сть задання ?нших набор?в даних та ?нтегрувати застосунок з такими наборами як: FDDB, YTF, AFW.Побудова граф?к?в PR та ROI кривих.П?дготовка оточення та ?нсталяц?я застосунку все ще ? складною та затратною процедурою. ? сенс винесення вс??? лог?ки в окремий серв?с, доступ до якого викону?ться через тонкий кл??нт.Демонстрац?я роботи детектор?в на заданому в?део або фото контент?.Автоматизац?я розгортання та використання моделей у вигляд? серв?су.Автоматизац?я розгоргання та використання моделей на моб?льних застосунках.РОЗД?Л 4 РЕАЛ?ЗАЦ?Я СТАРТАП-ПРОЕКТУ4.1 Опис ?де? та технолог?чний аудит стартап-проектуСтартап проект, що базу?ться на дан?й робот? ма? назву ?Система серв?с?в розп?знавання облич?. Тема дипломно? роботи в?добража? лише один аспект програмно? системи, що ляга? в основу стартап-проекту. Даний розд?л опису? економ?чну обгрунтован?сть ?мплементац?? цього проекту. В табл. 4.1 приведено опис ?де? стартап-проектуТаблиця 4.1 – Опис ?де? стартап-проектуЗм?ст ?де?Напрямки застосуванняВигоди для користувача?дея поляга? створенн? системи серв?с?в розп?знавання обличь для р?зного роду споживач?в1. Розп?знавання облич на фото та в?део контент?, що збер?га?ться на пристроях або приватних сховищах користувач?вКористувач може керувати сво?м фото та в?део контентом в залежност? в?д наявност? в ньому певних ос?б, а також знаходити зображення певних ос?б серед контенту не докладаючи зусиль.2. Предоставлення серв?с?в розп?знавання облич через Web APIКористувач може використовувати цей ?нтерфейс для реал?зац?? б?льш складного програмного забезпечення, що потребу? розп?знавання обличПроведено анал?з технолог?чно? зд?йсненност? проекту. Для реал?зац?? основних частин проекту були п?д?бран? в?дпов?дн? технолог??. Результати анал?зу наведено в таблиц? 4.2.Таблиця 4.2 – Технолог?чна зд?йсненн?сть ?де? проекту№п/п?деяпроектуТехнолог?? ??реал?зац??Наявн?стьтехнолог?йДоступн?стьтехнолог?й1.Система розп?знавання облич для ПК та моб?льних пристро?вGoodle Cloud ML EngineНаявнаПлатна, недоступнаTensorflowНаявнаБезкоштовна,доступнаTensorflow Object Detection APIНаявнаБезкоштовна,доступнаОбрана технолог?я реал?зац?? ?де? проекту: для створення системи розп?знавання облич на моб?льних пристроях використовуються наступн? технолог??: Google Cloud ML Engine, Tensorflow library, Tensorflow Object Detection API4.2 Анал?з ринкових можливостейПеред реал?зац??ю проекта необх?дно спланувати напрямки його розвитку вразовуючи стан ринкового середовища, потреби споживач?в та пропозиц?? конкурент?в. Для цього необх?дно визначити ринков? можливост?, що можуть бути використан? п?д час ринкового вровадження проекту, а також ринков? загрози, що можуть бути бути перешкодами реал?зац?? проекту.В таблиц? 4.3 наведено результати попередньо? характеристики ринку стартап-проекту.Таблиця 4.3 – Попередня характеристика потенц?йного ринку стартап-проекту№ п/пПоказники стану ринку (найменування)Характеристика1К?льк?сть головних гравц?в, од42Загальний обсяг продаж, грн/ум.од2500000 грн./ум.од3Динам?ка ринку (як?сна оц?нка)Зроста?4Наявн?сть обмежень для входу (вказати характеробмежень)Нема?5Специф?чн? вимоги до стандартизац?? тасертиф?кац??Нема?6Середня норма рентабельност? в галуз? (або поринку), %R = (2500000 * 100) /(700000 * 12) = 30%Рентабельн?сть — поняття, що характеризу? економ?чну ефективн?сть виробництва, за яко? за рахунок грошово? виручки в?д реал?зац?? продукц?? (роб?т, послуг) повн?стю в?дшкодову? витрати на ?? виробництво й одержу?ться прибуток як го. Значення середньо? рентабельност? визначено за формулою:R=PI×n×100(4.1)де Р - прибуток за час експлуатац?? проекту; I - повна сума ?нвестиц?йних витрат; n - час експлуатац?? проекту. ?нвестувати грошов? засоби доц?льно тод?, коли в?д цього можна отримати б?льший прибуток, н?ж в?д ?х збер?гання у банку. Пор?внюючи середньор?чну рентабельн?сть ?нвестиц?й з? ставкою банк?вського в?дсотка,можнад?йтивисновку,щовиг?дн?ше [28].На таблиц? 4.4 наведена характеристика потенц?йних кл??нт?в стартап-проекту.Наступним кроком ? анал?з фактор?в загроз, що ма? допомогти передбачити перешкоди на шляху реал?зац?? та впровадження проекту. Фактори загроз наведен? в таблиц? 4.5.В таблиц? 4.6 ариведений анал?з фактор?в можливостей проекту.Таблиця 4.4 – Характеристика потенц?йних кл??нт?в стартап-проекту№ п/пПотреба, що форму? ринокЦ?льова аудитор?я (ц?льов? сегменти ринку)В?дм?нност? у повед?нц? р?зних потенц?йних ц?льових групкл??нт?вВимоги споживач?в до товару1.Потреба в автоматичному находженн? та розп?знаванн? облич на фото та в?део контент?, що дозволя? автоматично шукати або групувати його за наявними в ньому людьми та емоц?ями, зв?льняючи користувач?в в?д рутинно? ручно? роботи.Перес?чн? користувач?, що збер?гають фото та в?део контент в цифровому вигляд?.Ц?льова група збер?га? фото та в?део у себе на моб?льних пристроях, ПК або хмарних сховищах.Пристро? можуть мати р?зну обчислювальну потужн?сть.Користувач? можуть збер?гати р?зн? об’?ми фото та в?део контентуР?шення ма? дозволяти розп?знавати обличчя на ?х фото та в?део контент?, задовольняючи наступн? умови:швидк?сть реального часу;п?дтримуватися як моб?льними пристроями так ? ПКпрацювати в режим? off line; розп?знавати емоц?? на обличчях;Автоматичний пошук та групування контентк по наявност? на ньому людей та емоц?й;?нтеграц?я з хманими сховищами2.Автоматичне знаходження на в?део людей, емоц?й та в?дпов?дних ?м момент?в часу на стр?чц?. Користувач?, що займаються монтажем в?деоролик?вРекламаСторонн? серв?си для пошуку в?деоВ?део може бути р?зних розм?р?в та якост?;Серв?с ма? генерувати метадан? для заданих в?део, що збер?гають ?нформац?ю про наявних на ньому людей та в?дпов?дних ?х момент?в часу на стр?чц?.Серв?с ма? зд?йснювати анал?з прийнятною швидк?стю що не перевищу? тривал?сть самого в?део.Серв?с ма? опрацьовувати в?део р?зних розм?р?в та якост?Продовження таблиц? 4.4№ п/пПотреба, що форму? ринокЦ?льова аудитор?я (ц?льов? сегменти ринку)В?дм?нност? у повед?нц? р?зних потенц?йних ц?льових групкл??нт?вВимоги споживач?в до товару3.Автоматичне знаходження облич з камери або на в?део в режим? реального часуЖурнал?стика та серв?си дуржавного управл?ння та м?сцевого самоврядуваннОхоронаСторонн? серв?си для розп?знавання облич в реальному час?Пристро? можуть мати р?зну обчислювальну пот?жн?стьКамери на пристроях можуть мати р?зну як?сть в?деозаписуПристро? можуть не бути п’?днаними до ?нтернетуПрограмне забезпечення ма? мати змогу розп?знавати обличчя в реальному час?:На р?зних типах пристро?в (вбудованих пристроях та моб?льних пристроях)Можлив?сть анал?зувати потокове в?део транслюванняПрацювати в режим? off-lineМати програмне та Web API для ?нтеграц?? з ?ншим програмним забезпеченнямТаблиця 4.5 – Фактори загроз№п/пФакторЗм?ст загрозиМожлива реакц?я компан??1.Конкуренц?яТак? велик? компан?? як Facebook (Moments by Facebook), Microsoft Face API, Kairos, Trueface.ai, Face++, CyberExtruder, Amazon RekignitionГлибокий анал?з слабких м?сць в фнкц?ональност? конкурент?в, або т??? н?ш? на ринку яка слабко покрива?ться ними.Вид?лення додаткових ?нвестиц?й в удосконалення метод?в розп?знавання обличПошук нових сценар??в застосування розп?знавання облич або ?нших об’?кт?в. ?нтеграц?? з ?ншими програмними системами, що да? нов? блага для користувач?вПродовження таблиц? 4.5№п/пФакторЗм?ст загрозиМожлива реакц?я компан??2.Брак ф?нансування та мала ц?льова аудитор?я на ранн?х етапах розвитку проектуНа ринку безл?ч конкурент?в, що мають велику ЦА та р?вень ф?нансування, що дозволить ?м б?льше ресурс?в для розвиткуВикористання croudsourcingАктивний пошук ? залучення ?нвестор?в та партнер?в (особливо серед компан?й розробник?в систем управл?ння фото та в?део контентом)Отриманя дохд?в через рекламуТаблиця 4.6 – Фактори можливостейФактор Зм?ст можливост?Можлива реакц?я компан??Використання змарних послуг для хостингуМожлив?сть швидко забезпечити доступн?сть та масштабован?сть серв?су не залежно в?д м?сця знаходження користувач?вВикористання хмарного хостингу Google Cloud фбо Amazon та використання Google Cloud ML Engine для реал?зац?? розп?знавання обличМожлив?сть ?нтеграц?? з ?снуючими хмарними сховищами для фото та в?део контнту, та соц?альними мережами за допомогою OAuth 2.0Користувач? все част?ше збер?гають сво? фото та в?део в хмарних сховищах, таких як iCloud, OneDrive, Google Drive тощо. ?нтеграц?я з цими серв?сами, а також соц?альними мережами (Facebook, Instagram) додасть зручност? та доступност? ц?льов?й систем?, а також розширить коло користувач?вВид?лення ресурс?в на ?нтеграц?ю з ус?ма популярними хмарними сховищами для збер?гання фото та в?део контентуНаступним кроком ? ступеневий анал?з конкуренц?? на ринку. Результати анал?зу приведен? в таблиц? 4.7.Таблиця 4.7 – Ступеневий анал?з конкуренц?? на ринку.Особливост? конкурентного середовищаВ чому проявля?ться дана характеристикаВплив на д?яльн?сть п?дпри?мства (можлив?д?? компан??, щоб бути конкурентоспроможною)1. Вказати тип конкуренц??- досконала?сну? 4 ф?рми- конкурентки на ринкуВрахувати ц?ни конкурентних компан?й, реклама (вказати на конкретн? переваги передконкурентами)Пошук слабких стор?н конкурент?в, та альтернативно? н?ш? на ринкуПошук шлях?в покращення якост? продукту2. За р?внем конкурентно? боротьби- м?жнароднийКомпан?? предстваляють р?зн? кра?ни (переважно США)Використання хмарних послуг для доступност? програмного забезпечення в р?зних куточках св?ту3. За галузевою ознакою- внутр?шньогалузеваКонкуренти мають ПЗ, яке використову?ться лише всередин? дано? галуз?Розширення функц?оналу для вир?шення нових задач комп’ютерного зору4. Конкуренц?я за видами товар?в:- товарно-видоваВиди товар?в ? однаковими, а саме –програмне забезпечення для розп?знавання обличРозробити продукт з урахуванням недол?к?в конкурент?в5. За характеромконкурентних переваг- нец?нова- ц?новаКористувачу важлива точн?сть ? швидк?сть розп?знавання облич, так само як ? низька ц?на ц? послугиСл?д зосередити зусилля на розробку власного програмного забезпечення що реал?зову? розп?знавання облич з викоистанням безплатних б?бл?отек ? платформ6. За ?нтенсивн?стю- не марочнаБренди в?дсутн?-П?сля анал?зу конкуренц?? проводиться б?льш детальний анал?з умов конкуренц?? в галуз?. М. Портер вир?зня? п‘ять основних фактор?в, що впливають на приваблив?сть вибору ринку з огляду на характер конкуренц??.Рисунок 4.1 – Складов? модел? 5 сил М. ПортераСильн? позиц?? компан?? за кожним з фактор?в означають ?? можливост? забезпечити необх?дн? темпи обороту кап?талу та ?? здатн?сть впливати на ?нших агент?в ринку, диктуюч? ?м власн? умови сп?впрац?.Рисунок 4.2 – Модель 5 сил М. Портера для анал?зу конкуренц?? в галуз?.Характеристики фактор?в модел? в?др?зняються для р?зних галузей та зм?нюються ?з часом. Сила кожного фактору ? функц??ю в?д структури галуз? та ?? техн?ко-економ?чних характеристик.На основ? анал?зу складових модел? 5 сил М. Портера розробля?ться перел?к фактор?в конкурентоспроможност? для певного ринку зображенн?й на таблиц? 4.8Таблиця 4.8 – Анал?з конкуренц?? в галуз? за М. ПортеромСкладов ? анал?зуПрям? конкуренти вгалуз?Потенц?йн? конкурентиПостачальн икиКл??нтиТовари- зам?нникиCyberExtruder,Microsoft Face API,Kairos?снуюч? системи б?льш розрекламован? ? уже використову-ються ?ншими content management серв?сами Хмарн? послуги для хостингу та масштабування.Хмарна послуга Google Cloud ML Engine.?нтегац?я з хмарними сховищами через OAuth 2.0Кл??нти диктують сво? вимоги до продукту опираючись на законодавство що захища? ?х персональн? дан?.-Висновки:?сну? 3конкурентина ринку.Найб?льшсхожим завиконанням? конкурент1, так як йогор?шеннятакожпредставленеу вигляд?серв?с?в розп?знавання облич для р?зних тип?в користувач?в.Шанси виходу на ринок мал?.потенц?йних конкурент?в нема?, лише прям?.Постачальник може п?дняти ц?ну на сво? послуги ? цим самим зб?льшити соб?варт?сть послугВажливимдлякористу-вача ?швидк?стьроботи ПЗ.-За результатами анал?зу таблиц? робиться висновок щодо принципово? можливост? роботи на ринку з огляду на конкурентну ситуац?ю. Також робиться висновок щодо характеристик (сильних стор?н), як? повинен мати проект, щоб бути конкурентоспроможним на ринку. Другий висновок врахову?ться при формулюванн? перел?ку фактор?в конкурентоспроможност?.На основ? анал?зу конкуренц??, а також ?з урахуванням характеристик ?де? проекту (табл. 4.2), вимог споживач?в до товару (табл. 4.5) та фактор?в маркетингового середовища (табл. 4.6-4.7) визнача?ться та об?рунтову?ться перел?к фактор?в конкурентоспроможност?. Враховуючи отриманн? результати анал?з оформлю?ться за табл. 4.9.Таблиця 4.9 – Об?рунтування фактор?в конкурентоспроможност?№ п/пФактор конкурентоспроможност?Об?рунтування (наведення чинник?в, що роблять фактор для пор?вняння конкурентних проект?в значущим)1РесурснийБ?льш? компан?? мають б?льше людських ресурс?в для розширення, удосконалення та поширення свого продукту2Ц?новийЧим менша ц?на послуги тим б?льший попит а отже ? вага на ринку.Використання хмарних послуг для реал?зац?? сво?х послуг вплива? на соб?варт?сть продукту. Б?льш? компан??, що мають власну ?нфраструктуру не мають дано? проблеми3?нтегрован?сть з ?снуючими хмарними серв?сами збер?гання в?део та фото контентуЯкщо система не ?нтегрована з ?снуючими системами вона наклада? обмеження на свого користувача, а отже матиме менший попит4Наявн?сть доступу з моб?льних пристро?вМоб?льн? пристро? грають ключову роль в житт? людей. Наявн?сть доступу з моб?льних пристро?в зб?льшить попитЗа визначеними факторами конкурентоспроможност? проводиться анал?з сильних та слабких стор?н стартап-проекту. Ф?нальним етапом ринкового анал?зу можливостей впровадження проекту ? складання SWOT-анал?зу (матриц? анал?зу сильних (Strength) та слабких (Weak) стор?н, загроз (Troubles) та можливостей (Opportunities) на основ? вид?лених ринкових загроз та можливостей, та сильних ? слабких стор?н.На таблиц? 4.10 описано пор?вняльний анал?з сильних та слабких стор?н проекту.Таблиця 4.10 – Пор?вняльний анал?з сильних та слабких стор?н проекту№ п/пФактор конкурентоспроможност?Бали 1-20Рейтинг товар?в-конкурент?в у пор?внянн? з … (назва п?дпри?мства)–3–2–10+1+2+31Нада?ться у вигляд? SaaS служби8122Наявний анал?з фото контенту101,23Наявний анал?з в?део контенту12124Наявн?сть Web API151,25Доступн?сть на моб?льних пристроях1521Перел?к ринкових загроз та ринкових можливостей склада?ться на основ? анал?зу фактор?в загроз та фактор?в можливостей маркетингового середовища. Ринков? загрози та ринков? можливост? ? насл?дками (прогнозованими результатами) впливу фактор?в, ?, на в?дм?ну в?д них, ще не ? реал?зованими на ринку та мають певну ймов?рн?сть зд?йснення. Наприклад: зниження доход?в потенц?йних споживач?в – фактор загрози, на основ? якого можна зробити прогноз щодо посилення значущост? ц?нового фактору при вибор? товару та в?дпов?дно, – ц?ново? конкуренц?? (а це вже – ринкова загроза). SWOT-анал?з стартап-проекту представленний у таблиц? 4.11Таблиця 4.11 – SWOT-анал?з стартап-проектуСильн? сторони: Широке коло споживач?в (моб?льн? пристро?, камери, системи управл?ння фото та в?део контентом, ?нш? сторонн? серв?си що використовують продукт як серв?с для розп?знавання облич)Використання передових метод?в та технолог?й для розп?знавання обличСлабк? сторони: Слабкий р?вень ф?нансування та мала ц?льова аудитор?я на ранн?х етапах.Наявн?сть на ринку сильних конкурент?в що уже мають велику ц?льову аудитор?ю.Можливост?: Використання хмарних послуг для хостингу. Використання обчислювальних потужностей Google Cloud ML Engine для тренування та виконання моделей розп?знавання обличЗагрози: конкуренц?я, зм?на потреб користувач?в, недостатн? ф?нансування та низький попитНа основ? SWOT-анал?зу розробляються альтернативи ринково? повед?нки (перел?к заход?в) для виведення стартап-проекту на ринок та ор??нтовний оптимальний час ?х ринково? реал?зац?? з огляду на потенц?йн? проекти конкурент?в, що можуть бути виведен? на ринок. Визначен? альтернативи анал?зуються з точки зору строк?в та ймов?рност? отримання ресурс?в. Альтернативи ринкового впровадження стартап-проекту представленн? у таблиц? 4.12Таблиця 4.12 – Альтернативи ринкового впровадження стартап-проекту№ п/пАльтернатива (ор??нтовний комплекс заход?в)ринково? повед?нкиЙмов?рн?сть отримання ресурс?вСтроки реал?зац??1.З використанням Google Cloud ML Engine75%7 м?сяц?в2.Розробка власно? ?нфраструктури для тренування та виконнання моделей розп?знавання облич25%15 м?сяц?вЗ означених альтернатив обира?ться та, для яко?: а) отримання ресурс?в ? б?льш простим та ймов?рним; б) строки реал?зац?? – б?льш стислими. Тому обира?мо альтернативу 1.4.3 Розробка ринково? стратег?? проектуРозроблення ринково? стратег?? першим кроком передбача? визначення стратег?? охоплення ринку: опис ц?льових груп потенц?йних споживач?в що в?добража?ться у таблиц? 4.13.Таблиця 4.13 – Виб?р ц?льових груп потенц?йних споживач?в№ п/ пОпис проф?лю ц?льово? групипотенц?йни х кл??нт?вГотовн?сть споживач?в сприйняти продуктОр??нтовни й попит в межах ц?льово?групи (сегменту)?нтенсивн?ст ь конкуренц?? в сегмент?Простота входу у сегмент1. Користувач?, що збер?гають фото та в?део контент на сво?х пристроях або хмарних сховищахКористувач? спроможн? користуватися даним продуктом ? потребують його для зменшення ручно? роботи п?д час управл?нням сво?м контентомКористувач? потребують програмне забезпечення для управл?ння сво?м в?део та фото контентомНаявн? 4 основних ? к?лька другорядних конкурент?вПор?г входження важкий через конкуренц?ю, брак ф?нансування та ц?льово? аудитор??2Компан?? що представляють системи управл?ння в?део та фото контентом, а також серв?с?в, що використовують розп?знавання облич для свого функц?оналуКористувач? готов? споживати продукт оск?льки в?н доступний як SaaS ? вир?шу? задач? розп?знавання облич за пом?рну оплатуРозп?знавання облич широко використову?ться особливо в системах управл?ння в?део контентомНаявн? 4 основних ? к?лька другорядних конкурент?вПор?г входження важкий через конкуренц?ю, брак ф?нансування та ц?льово? аудитор??За результатами анал?зу потенц?йних груп споживач?в (сегмент?в) автори ?де? обирають ц?льов? групи, для яких вони пропонуватимуть св?й товар, та визначають стратег?ю охоплення ринку.Для роботи в обраних сегментах ринку необх?дно сформувати базову стратег?ю розвитку. За М. Портером, ?снують три базов? стратег?? розвитку, що в?др?зняються за ступенем охоплення ц?льового ринку та типом конкурентно? переваги, що ма? бути реал?зована на ринку (за витратами або визначними якостями товару).Стратег?я л?дерства по витратах передбача?, що компан?я за рахунок чинник?в внутр?шнього ?/або зовн?шнього середовища може забезпечити б?льшу, н?ж у конкурент?в маржу м?ж соб?варт?стю товару ? середньоринковою ц?ною (або ж ц?ною головного конкурента).Стратег?я диференц?ац?? передбача? надання товару важливих з точки зору споживача в?дм?тних властивостей, як? роблять товар в?дм?нним в?д товар?в конкурент?в. Така в?дм?нн?сть може базуватися на об‘?ктивних або суб‘?ктивних, в?дчутних ? нев?дчутних властивостях товару (у ширшому розум?нн? – комплекс? маркетингу), бути реальною або уявною. ?нструментом реал?зац?? стратег?? диференц?ац?? ? ринкове позиц?онування.Стратег?я спец?ал?зац?? передбача? концентрац?ю на потребах одного ц?льового сегменту, без прагнення охопити увесь ринок. Мета тут поляга? в задоволенн? потреб вибраного ц?льового сегменту краще, н?ж конкуренти. Така стратег?я може спиратися як на диференц?ац?ю, так ? на л?дерство по витратах, або ? на те, ? на ?нше, але т?льки у рамках ц?льового сегменту. Проте низька ринкова доля у раз? невдало? реал?зац?? стратег?? може ?стотно п?д?рвати конкурентоспроможн?сть компан??.В таблиц? 4.14 приведен? детал? базово? стратег?? розвитку.Таблиця 4.14 – Визначення базово? стратег?? розвитку№ п/ пОбрана альтернатива розвитку проектуСтратег?я охоплення ринкуКлючов? конкурентоспромо жн? позиц?? в?дпов?дно до обрано?альтернативиБазова стратег?я розвитку*1.Створенняпрограми звикористаннямGoogle Cloud ML EngineРинковепоз?ц?юванняТочн?сть розп?знавання облич,пришвидшенняроботи, ?нтеграц?я з хмарними сховищами та соц?альними мережами, доступн?сть на моб?льних пристрояхДиференц?ац??Наступним кроком ? виб?р стратег?? конкурентно? повед?нки.Стратег?я л?дера. Залежно в?д м?ри сформованост? товарного(галузевого) ринку, характеру конкурентно? боротьби компан??-л?дери обирають одну з трьох стратег?й: розширення первинного попиту, оборонну або наступальну стратег?ю або ж застосувати демаркетинг або диверсиф?кац?ю.Стратег?я розширення первинного попиту доц?льна у раз?, якщо ф?рм?- л?деров? недоц?льно розм?нюватися на боротьбу з невеликими конкурентами, вона може отримати велику економ?чну в?ддачу в?д розширення первинного р?вня попиту. В цьому випадку компан?я займа?ться реал?зац??ю заход?в по формуванню попиту(навчанню споживач?в користуванню товаром, формування регулярного попиту, зб?льшення разового споживання), також пропаганду нових напрям?в застосувань ?снуючих товар?в, виявлень нових груш споживач?в.У м?ру зростання ринку, його становлення позиц?? компан??-новатора починають атакувати конкуренти-?м?татори. В цьому випадку, компан?я може вибрати оборонну стратег?ю, метою яко? ? захист власно? ринково? дол?.Наступальна стратег?я припуска? зб?льшення сво?? частки ринку. При цьому пересл?дувана мета поляга? в подальшому п?двищенн? прибутковост? роботи компан?? на ринку за рахунок максимального використання ефекту масштабу.Якщо ф?рма потрапля? п?д д?ю антимонопольного законодавства, вона може удатися до стратег?? демаркетинга, що припуска? скорочення сво?? частки ринку, зниження р?вня попиту на деяких сегментах за рахунок п?двищення ц?ни. При цьому ставиться завдання недопущення на ц? сегменти конкурент?в, а компенсац?я втрат прибутку через зменшення обсяг?в виробництва компенсу?ться встановленням надвисоких ц?н.Стратег?я виклику л?дера. Стратег?ю виклику л?деров? найчаст?ше вибирають компан??, як? ? другими, трет?ми на ринку, але бажають стати л?дером ринку. Теоретично, ц? компан?? можуть прийняти два стратег?чн? р?шення: атакувати л?дера у боротьб? за частку ринку або ж йти за л?дером.Р?шення атакувати л?дера ? досить ризикованим. Для його реал?зац?? потр?бн? значн? ф?нансов? витрати, know – how, краще сп?вв?дношення ?ц?на- як?сть?, переваги в систем? розпод?лу ? просування ? т. д. У раз? не реал?зац?? ц??? стратег??, компан?я може бути в?дкинута на аутсайдерськ? позиц?? на досить довгий час. Залежно в?д цього компан?я може вибрати одну з альтернативних стратег?й: фронтально? або флангово? атаки.Стратег?я насл?дування л?деру. Компан??, що приймають сл?дування за л?дером – це п?дпри?мства з невеликою часткою ринку, як? вибирають адаптивну л?н?ю повед?нки на ринку, усв?домлюють сво? м?сце на н?м ? йдуть у фарватер? ф?рм-л?дер?в. Головна перевага тако? стратег?? – економ?я ф?нансових ресурс?в, пов‘язаних з необх?дн?стю розширення товарного(галузевого) ринку, пост?йними ?нновац?ями, витратами на утримання дом?нуючого положення.Стратег?я заняття конкурентно? н?ш?. При прийнятт? стратег?? зайняття конкурентно? н?ш? (?нш? назви – стратег?я фах?вця або н?шера) компан?я в якост? ц?льового ринку вибира? один або дек?лька ринкових сегмент?в. Головна особлив?сть – малий розм?р сегмент?в/сегменту. Ця конкурентна стратег?я явля?ться пох?дною в?д тако? базово? стратег?? компан??, як концентрац?я. Головне завдання для компан?й, що вибирають стратег?ю н?шера або фах?вця, – це пост?йна турбота про п?дтримку ? розвиток сво?? конкурентно? переваги, формування лояльност? ? прихильност? споживач?в, п?дтримка вх?дних бар‘?р?в. Визначення базово? стратег?? конкурентно? повед?нки представленно у таблиц? 4.15Таблиця 4.15 – Визначення базово? стратег?? конкурентно? повед?нки№ п/пЧи ? проект?першопрох?дцем? на ринку?Чи буде компан?я шукати нових споживач?в, або забирати ?снуючих уконкурент?в?Чи буде компан?я коп?ювати основн? характеристики товару конкурента, ?як??Стратег?я конкурентно? повед?нки*1.Н?ТакБуде, а саме:Створення SaaS серв?с?в розп?знавання облич(конкуренти 1, 2), групування контенту за наявн?стю в ньому певних ос?б(конкурент 3)Зайняттяконкурентно?н?ш?На основ? вимог споживач?в з обраних сегмент?в до постачальника (стартап-компан??) та до продукту, а також в залежност? в?д обрано? базово? стратег?? розвитку та стратег?? конкурентно? повед?нки розробля?ться стратег?я позиц?онування, що поляга? уформуванн? ринково? позиц?? (комплексу асоц?ац?й), за яким споживач? мають ?дентиф?кувати торг?вельну марку/проект.Визначення оптимально? стратег?? позиц?онування представленно у таблиц? 4.16.Таблиця 4.16 – Визначення стратег?? позиц?онування№ п/ пВимоги до товару ц?льово? аудитор??Базова стратег? я розвиткуКлючов? конкурентоспроможн? позиц?? власного стартап- проектуВиб?р асоц?ац?й, як? мають сформувати комплексну позиц?ювласного проекту (три ключових)1.Точн?сть розп?знавання облич, швидк?сть розп?знавання,?нтеграц?я з хмарними сховищами, доступн?сть на моб?льних пристрояхДифе- ренц?ац??Використання передових метод?в та технолог?й розп?знавання облич. Використання Google Cloud ML Engine для тренування та виконання моделей розп?знавання обличШвидк?сть, точн?сть, доступн?сть з р?зних хмарних сховищ4.4 Розробка маркетингово? програмиПершим кроком ? формування маркетингово? концепц?? товару, який отрима? споживач. Для цього у табл. 4.17 потр?бно п?дсумувати результати попереднього анал?зу конкурентоспроможност? товару.Надал? розробля?ться трир?внева маркетингова модель товару: уточню?ться ?дея продукту та/або послуги, його ф?зичн? складов?, особливост? процесу його надання (табл. 19).1-й р?вень. При формуванн? задуму товару вир?шу?ться питання щодо того, засобом вир?шення яко? потреби ? / або проблеми буде даний товар, яка його основна вигода. Дане питання безпосередньо пов'язаний з формуванням техн?чного завдання в процес? розробки конструкторсько? документац?? на вир?б.Таблиця 4.17 – Визначення ключових переваг концепц?? потенц?йного товару№ п/пПотребаВигода, яку пропону?товарКлючов? переваги перед конкурентами (?снуюч? або так?, що потр?бностворити1.Висока швидк?сть розп?знавання обличПЗ працю? у розпод?лен?й систем? Google Cloud ML Engine, що значно пришвидшу?обробку даних.Використання швидк?сних моделей розп?знавання обличПереваги у швидкост? обробки контенту2.Висока точн?сть розп?знаванняВикористання передових арх?тектур моделей розп?знавання облич, та використання обчислювальних потужностей Google Cloud ML EngineПереваги в точност? розп?знавання облич2-й р?вень. Цей р?вень явля? р?шення того, як буде реал?зований товар в реальному/ включа? в себе як?сть, властивост?, дизайн, упаковку, ц?ну.3-й р?вень. Товар з п?дкр?пленням (супроводом) - додатков? послуги та переваги для споживача, що створюються на основ? товару за задумом ? товару в реальному виконанн? (гарант?? якост?, доставка, умови оплати та ?н). [30] [31]П?сля формування маркетингово? модел? товару сл?д особливо в?дм?тити – чим саме проект буде захищено в?д коп?ювання. Захист може бути орган?зовано за рахунок захисту ?де? товару (захист ?нтелектуально? власност?), або ноу-хау, чи комплексне по?днання властивостей ? характеристик, закладене на другому та третьому р?внях товару. Опис р?вн?в модел? товару представленний у таблиц? 4.18Таблиця 4.18 – Опис трьох р?вн?в модел? товаруР?вн? товаруСутн?сть та складов??. Товар за задумомОб‘?кт да? користувачам автоматичне керуваня сво?м в?део та фото контентом в залежност? в?д наявност? в ньому облич певних ос?б. Також нада? розп?знавання облич як серв?с для ?нших компан?й??. Товар у реальному виконанн?Властивост?/характеристикиМ/НмВр/Тх /Тл/Е/ОрВисока точн?сть розп?знаванняВисока швидк?сть роботи?нтеграц?я з популярними хмарними сховищами даних--Як?сть: зг?дно до стандарту ?SO 4444 буде проведено тестуванняМаркування в?дсутн?.Моя компан?я. ?Recognition D????. Товар ?зп?дкр?плю- нням1-м?сячна пробна безкоштовна верс?я та безкоштовневстановленняПост?йна п?дтримка для користувач?вЗа рахунок чого потенц?йний товар буде захищено в?д коп?ювання: ноу-хау.Наступним кроком ? визначення ц?нових меж, якими необх?дно керуватись при встановленн? ц?ни на потенц?йний товар (остаточне визначення ц?ни в?дбува?ться п?д час ф?нансово-економ?чного анал?зу проекту), яке передбача? анал?з ц?ни на товари-аналоги або товари субститути, а також анал?з р?вня доход?в ц?льово? групи споживач?в (табл. 4.19). Анал?з проводиться експертним методом. Ц?на наведена в колонках 2, 3 та 5 в?дпов?да? ц?н? за обробку 1 гигабайту в?део контенту.Таблиця 4.19 – Визначення меж встановлення ц?ни№ п/пР?вень ц?нна товари- зам?нникиР?вень ц?нна товари- аналогиР?вень доход?вц?льово? групи споживач?вВерхня та нижня меж?встановлення ц?ни на товар/послугу1.5.51030000008Наступним кроком ? визначення оптимально? системи збуту, в межах якого прийма?ться р?шення (табл. 4.20).Таблиця 4.20 – Формування системи збуту№ п/пСпециф?ка закуп?вельно? повед?нки ц?льовихкл??нт?вФункц?? збуту, як? ма? виконувати постачальниктоваруГлибина каналу збутуОптимальна система збуту1.Базовий функц?онал ПЗ для ПК ? моб?льних пристро?х безоплатноПоширення продукту0(напряму), 1(через одногопосередника)Власна та через посередник?в2Отримання розширеного функц?оналу для ПК та моб?льних пристро?в через п?дписку з? щом?сячною оплатоюПродажа0(напряму), 1(через одногопосередника)Власна та через посередник?в3Для компан?й та серв?с?в що використовуюю продукт у вигляду SaaS оплата йде за об’?м контенту, що був обробленийПродажа0(напряму), 1(через одногопосередника)Власна та через посередник?вОстанньою складово? маркетингово? програми ? розроблення концепц?? маркетингових комун?кац?й, що спира?ться на попередньо обрану основу для позиц?онування, визначену специф?ку повед?нки кл??нт?в (табл. 4.21).Таблиця 4.21 – Концепц?я маркетингових комун?кац?й№ п/ пСпециф?ка повед?нки ц?льових кл??нт?вКанали комун?кац?й, якими користуютьс я ц?льов? кл??нтиКлючов? позиц??, обран? для позиц?онуванн яЗавдання рекламного пов?домленн яКонцепц?я рекламног о звернення1.Куп?вля ПЗчерез?нтернет,робота з ПЗнакомп‘ютерах з р?знимиОС, робота з ПЗ на р?зних типах пристро?в?нтернетШвидкод?я,Показатипереваги ПЗ,у тому числ?? перед ко-нкурентамиКреативна реклама, що показу? як? можливост? нада? ПЗ простотавикористання,Точн?сть розп?знавання облич4.5 Елементиф?нансово?п?дтримкистартапутаанал?з ризик?вУ таблиц? 4.22 наведено структуру ?нвестиц?йних витрат на реал?зац?ю стартап-проекту.У таблиц? 4.23 наведено список основних ф?нансово економ?чних показник?в проекту.Таблиця 4.22 – Сукупн? ?нвестиц?йн? витрати на реал?зац?ю стартап-проекту№ з/пСтаття итратСукупн? витрати,тис. грн.1.Початков? витрати4421.1.Проведення пошукових та прикладних досл?джень1001.2.Розробка проектних матер?ал?в ? ТЕО10Продовження таблиц? 4.22№ з/пСтаття итратСукупн? витрати,тис. грн.1.3.Проектування101.4.Придбання обладнання та устаткування та пристро?в101.5.Придбання нематер?альних актив?в601.6.Утримання обладнання та прим?щень121.7.Попередн? маркетингов? досл?дження501.8.Створення мереж? збуту501.9.Просування та реклами601.10Юридичн? послуги302.Матер?альн? ресурси02.1.матер?али02.3.комплектуюч?03.3.сировина03.Оплату прац? команди стартапу400Разом:842Таблиця 4.23 – Визначення основних ф?нансово-економ?чних показник?в проекту№ з/пСтаття витратСукупн? витрати, тис. грн.1.Обсяг виробництва продукц?? в натуральнихпоказниках12.Соб?варт?сть одиниц? продукц??, тис. грн.7050003.Соб?варт?сть виробництва продукц??, тис. грн. (3 = 1 ? 2)7050004.Обсяг реал?зац?? продукц?? в натуральних показниках1005.Ц?на реал?зац?? продукц?? без ПДВ, тис. грн.200006.Виручка в?д реал?зац?? продукц?? без ПДВ, тис. грн. (6 = 4 ? 5)2000000Продовження таблиц? 4.23№ з/пСтаття витратСукупн? витрати, тис. грн.7.Податок на додану варт?сть (ПДВ), тис. грн.2000008.Валовий прибуток (8 = 6 – 3)12950009.Податок на прибуток25900010.Чистий прибуток (10 = 8 – 9)1036000Рентабельн?сть продаж?в (або маржа прибутку) показу?, ск?льки прибутку приносить кожна гривня з обсягу реал?зац?? (табл. 4.24). Маржу прибутку, як правило, визначають окремо за кожним видом д?яльност? або за кожною групою реал?зовано? продукц?? за формулою (4.2):s=ПВ×100%(4.2)Пер?од окупност? проекту в?добража? час, який потр?бен для того, щоб сума надходжень в?д реал?зац?? проекту в?дшкодувала суму витрат на його впровадження. Пер?од окупност? звичайно вим?рю?ться в роках або м?сяцях та може бути розрахований за формулою:PBP=IACI(4.3)де PBP – пер?од окупност? ?нвестиц?й, роки; I – сума ?нвестиц?йних витрат, тис. грн.; ACI – щор?чн? надходження (р?чний чистий прибуток), тис. грн.PBP ? 0.42 (роки)Рентабельн?сть довгострокових ?нвестиц?й – коеф?ц??нт повернення ?нвестиц?й, показник рентабельност? вкладень, що у в?дсотковому сп?вв?дношенн? демонстру? прибутков?сть (у раз?, коли його значення б?льше 100%) або збитков?сть (у раз?, коли його значення менше 100%) ?нвестиц?й в проект. Якщо розрахований показник менший 100%, то ?нвестиц?йн? вкладення не окупуються. Показник може бути розрахований за формулою (4.4):ROI= Д-С?×100(4.4)де Д – дох?д (виручка в?д реал?зац?? продукц??), тис. грн.; С – повна соб?варт?сть, тис. грн.; I – сума ?нвестиц?йних витрат, тис. грн. ROI? 51.9%Таблиця 4.24 – Програма запоб?гання та реагування на ризики проектуРизики проектуЗаходи запоб?ганняризик?вЗаходи реагування привиникненн? ризик?вВтрата члена командиВикористовувати гнучкий процес пост?йного перегляду пр?оритет?в. Використання автоматизац?? ьа уникання зав’язаност? на конкретних прац?вникахВчасна зм?на пр?оритету завдань та плану роб?тЗб?льшення соб?вартост? через зм?ну л?ценц?? Google Cloud ML EngineМожлива м?грац?я на под?бну службу ?ншого поставникаДодаткове ф?нансування для продовження л?ценц?? або м?грац?я на ?нший серв?сЗм?на серв?су для навчання та виконання моделей розп?знавання обличПотр?бний анал?з насл?дк?в м?грац??, п?дб?р найкращого р?шення, забезпечення безпереб?йно? м?грац??Техн?чн? зм?ни подукту для адаптац?? йог до ново? обчислювально? ?нфраструктури Висновок до розд?лу 4Проведен? досл?дження показують ?снування можливост? ринково? комерц?ал?зац?? проекту, оск?льки ?снують потенц?йн? сегменти користувач?в. Проте ?сну? висока конкуренц?я на ринку, що потребу? активного анал?зу конкурент?в та пошуку удосконалення ?снуючого функц?оналу, та пошуку його альтернативного застосування.Для усп?шного виконання проекту необх?дно реал?зувати програму ?з використанням засоб?в Goodle Cloud ML Engine та Tewnsorflow Object Detection API. В рамках даного досл?дження були розрахован? основн? ф?нансово-економ?чн? показники проекту, а також проведений менеджмент потенц?йних ризик?в. Зг?дно з отриманими результатами економ?чного та рикового анал?зу подальша ?мплементац?я ? доц?льною.ВИСНОВКИУ процес? виконання роботи були виконан? ус? поставлен? задач?:Зроблено огляд state-of-the-art арх?тектур моделей глибокого навчання, що показали найкращ? або одн? з кращих результат?в виявлення об’?кт?в на набор? COCO, та при цьому мають високу швидк?сть розп?знавання на CPU та моб?льних пристроях. Досл?джено вибран? модел? на задачах розп?знавання облич з використанням набор?в зображень оф?ц?йних популярних бенчмарок; проанал?зовано отриман? результати, визначено та описано основн? переваги, недол?ки та особливост? досл?джуваних моделей в контекст? ?х застосування в задачах виявлення облич.Реал?зовано програмну систему, що м?стить необх?дний функц?онал, що дозволя? користувачу тренувати та використовувати модел? виявлення облич з м?н?мальними зусиллями ? затратами часу.В робот? було досл?джено сучасн? арх?тектури мереж глибокого навчання на задачах розп?знавання облич. Зокрема було застосовано ? досл?джено модел? SSD Mobilenet V1, SSD Mobilenet V2, SSDlite Mobilenet V2, а також ефекти таких модиф?кац?й як Pyramid Pooling Network та функц?? втрат Focal Loss.Результати показали, що використання Focal Loss дало найб?льший прир?ст точност? ? ? б?льш ефективним засобом н?ж hard negarive mining. Найкращий результат точност? без використання Focal Loss був отриманий для модел? SSD MobileNet V2.Дану роботу можна використати як наб?р практичних рекомендац?й для р?шення задач виявлення облич, як платформу для подальших досл?джень за даною темою.Були вид?лен? наступн? напрямки досл?дження в контекст? теми дано? роботи:по-компонентний анал?з арх?тектури PyramiBox з метою ?? оптим?зац?? без сутт?во? втрати точност?;пошук оптимального комб?нування мап признак?в предиктора з сус?дн?ми мапами признак?в б?льшого та меншого масштаб?в; досл?дження на б?льш?й к?лькост? бенчмарок, зокрема: FDDB, YTF, AFW;досл?дження б?льшого числа арх?тектур, що показали хорош? результати на згаданих бенчмарках ? мають хорошу швидк?сть; розвиток програмно? системи для б?льшо? автоматизац?? досл?джень.ПЕРЕЛ?К ПОСИЛАНЬArtificial intelligence. Object localization and detection / L. Araujo dos Santos // gitbooks. – [Електронний ресурс]. – Режим доступу: (дата звернення 28.10.2018).SphereFace: Deep Hypersphere Embedding for Face Recognition / Weiyang Liu, Yandong Wen, Zhiding Yu et al // arXiv:1704.08063 – [Електронний ресурс]. – Режим доступу: (дата звернення 28.10.2018).ArcFace: Additive Angular Margin Loss for Deep Face Recognition / Jiankang Deng, Jia Guo, Stefanos Zafeiriou // arXiv:1801.07698 – [Електронний ресурс]. – Режим доступу: (дата звернення 28.10.2018).Project Oxford for Node. // github – [Електронний ресурс]. – Режим доступу: (дата звернення 28.10.2018).Xception: компактная глубокая нейронная сеть // habrahabr. – [Електронний ресурс]. – Режим доступу: (дата звернення 28.10.2018).Rich feature hierarchies for accurate object detection and semantic segmentation / R. Girshick, J. Donahue, T. Darrell, J. Malik // arXiv:1311.2524 - [Електронний ресурс]. – Режим доступу: (дата звернення 28.04.2018)Faster R-CNN: Towards real-time object detection with region proposal networks / S. Ren, K. He, R. Girshick, J. Sun // arXiv:1506.01497 - [Електронний ресурс]. – Режим доступу: (дата звернення 28.04.2018)SSD: Single shot multibox detector / W. Liu, D. Anguelov, C. Szegedy et al // arXiv:1512.02325. - [Електронний ресурс]. – Режим доступу: (дата звернення 28.04.2018)You only look once: Unified, real-time object detection / J. Redmon, S. Divvala, R. Girshick, A. Farhadi // arXiv:1506.02640. - [Електронний ресурс]. – Режим доступу: (дата звернення 28.04.2018) YOLO9000: Better, faster, stronger / J. Redmon, A. Farhadi // arXiv: 1612.08242v1. - [Електронний ресурс]. – Режим доступу: (дата звернення 28.04.2018) Focal Loss for Dense Object Detection / T. Lin, P. Goyal, R. Girshick et al // arXiv:1708.02002. – [Електронний ресурс]. – Режим доступу: (дата звернення 28.04.2018) Training region-based object detectors with online hard example mining / A. Shrivastava, A. Gupta, and R. Girshick et al // arXiv:1604.03540v1. - [Електронний ресурс]. – Режим доступу: (дата звернення 28.04.2018) Human face detection in visual scenes. Technical Report CMU-CS-95-158R / H. Rowley, S. Baluja, T. Kanade et al // Carnegie Mellon University. – [Електронний ресурс]. – Режим доступу: (дата звернення 28.04.2018) Learning and Example Selection for Object and Pattern Detection / K.-K. Sung, T. Poggio // . – [Електронний ресурс]. – Режим доступу: (дата звернення 28.04.2018) Tensorflow detection model zoo / J. Huang, V. Rathod, R. Votel et al // GitHub. – [Електронний ресурс]. – Режим доступу: (дата звернення 28.04.2018) Pooling Pyramid Network for Object Detection / P. Jin, V. Rathod, X Zhu // arXiv:1807.03284. – [Електронний ресурс]. – Режим доступу: (дата звернення 28.04.2018) Xception: Deep Learning with Depthwise Separable Convolutions / F. Chollet // arXiv:1610.02357v2. – [Електронний ресурс]. – Режим доступу: (дата звернення 28.04.2018) Mobilenets: Efficient Convolutional Neural Networks for Mobile Vision Applications / A. G. Howard, M. Zhu, D. Kalenichenko et al // arXiv:1704.04861. – [Електронний ресурс]. – Режим доступу: (дата звернення 28.07.2018). MobileNetV2: Inverted Residuals and Linear Bottlenecks / M. Sandler, A. Howard, A. Zhmoginov et al // arXiv:1801.04381v3, 2018. – [Електронний ресурс]. – Режим доступу: (дата звернення 28.07.2018) ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices / X. Zhang, X. Zhou, M. Lin, J. Sun // arXiv:1707.01083v2. – [Електронний ресурс]. – Режим доступу: (дата звернення 28.07.2018). FaceBoxes: A CPU Real-time Face Detector with High Accuracy / S. Zhang, X. Zhu, Z. Lei et al // arXiv:1708.05234v3. – [Електронний ресурс]. – Режим доступу: (дата звернення 28.07.2018). PyramidBox: A Context-assisted Single Shot Face Detector / X. Tang, D. K. Du, Z. He, J. Liu // arXiv:1803.07737v2. – [Електронний ресурс]. – Режим доступу: (дата звернення 28.07.2018). Tensorflow Object Detection API / J. Huang, V. Rathod, R. Votel et al // GitHub. – [Електронний ресурс]. – Режим доступу: (дата звернення 28.07.2018). What makes for effective detection proposals? / J. Hosang, R. Benenson, P. Dollár, B. Schiele // arXiv:1502.05082v3. – [Електронний ресурс]. – Режим доступу: (дата звернення 28.07.2018). S3FD: Single Shot Scale-invariant Face Detector / S. Zhang, X. Zhu, Z. Lei et al // arXiv:1708.05237v3. - [Електронний ресурс]. – Режим доступу: (дата звернення 28.07.2018).Feature Pyramid Networks for Object Detection / T. Lin, P. Dollár, R. Girshick et al // arXiv:1612.03144v2. - [Електронний ресурс]. – Режим доступу: (дата звернення 28.07.2018).ДОДАТОК А ?нструкц?? ?нсталяц?? застосункуДана ?нструкц?я призначена для встановлення застосунку, що використовувався для досл?дження моделей глибокого навчання на задач? виявлення облич. Для використання необх?дна наявн?сть Google аккаунту. Також необх?дно врахувати, що запуску навчання моделей на Google Cloud ML ? платним ? вимага? в?д користувача створення плат?жного акаунту та вказати спос?б оплати в мереж? ?нтернет.Дана ?нструкц?я протестована лише на операц?йн? систем? OSX High Sierra. Також для дано? ?нструкц?? необх?дне наступне програмне забезпечення:Python 3.6.5VirtualenvGit client?нструкц?яДля запуску навчання на Google Cloud ML необх?дно встановити Google Cloud SDK та створити google cloud проект. ?нструкц?я установки доступна для за посиланням: . Важливо! Якщо ви збира?теся використовувати TPU для навчання моделей, майте на уваз?, що вони доступн? для використовування лише для us-central1 рег?ону. В?дпов?дно ваш бакет фбо його коп?я ма? бути розташованим в цьому рег?он?.В результат? кроку 1 ви ма?те мати ваш GCP проект з прив’язаним до нього плат?жним акаунтом, бакет для збер?гання даних та рег?он хмарного дата-центру, де будуть вид?лен? обчислювальн? ресурси. Назви вс?х цих трьох артефакт?в мають бути збережен? в наступних зм?нних середовища за допомогою наступних команд:export PROJECT=<Назва вашого Google Cloud Platform проекту>export gs_bucket=<Назва вашого бакету для даних>export gcp_region=<Назва Google Cloud рег?ону де будуть вид?лен? обчислювальн? ресурси, наприклад europe-west1>В?дкрийте сес?ю терм?налу, зайд?ть у вашу робочу директор?ю та завантажте застосунок з GitHub та збереж?ть шлях до застосунку в зм?нну:git clone Face-detection-working-dirДля використання Tensorflow Object Detection API завантажте Tensorflow репозитор?й за допомогою команди:git submodule update --initРепозитор?й буде завантажено в директор?ю models. Для завершення установки Tensorflow Object Detection API перейд?ть в папку репозитор?я:cd modelsта виконайте ?нструкц?ю доступну за наступним посиланням:Середовище готове до роботи. При наступному в?дкритт? терм?налу необх?дно задати той самий наб?р зм?нних середовища. Для перманентного встановлення зм?нних внес?ть його до файлу вашого bash проф?лю. Наступна команда в?дкри? ваш bash проф?ль в редактор? nano:nano ~/.bash_profileУ в?дкритому редактор? внес?ть команди що задають зм?нн? середовища, як це зображено на наступному скр?н-шот?:ДОДАТОК Б ?нструкц?я навчання та вал?дац?? моделейВ командному рядку терм?нала встанов?ть зм?нн? середовища описан? в Додатку А, якщо так? не були встановлен? п?д час встановлення застосунку, або не були записан? в ~/.bash_profile (пункт 6 ?нструкц?й в Додатку А):export PROJECT=<Назва вашого Google Cloud Platform проекту>export gs_bucket=<Назва вашого бакету для даних>export gcp_region=<Назва Google Cloud рег?ону де будуть вид?лен? обчислювальн? ресурси, наприклад europe-west1>Перейд?ть до коренево? папки застосунку (Face-detection-working-dir)Завантажте та сконвертуйте WIDERFACE датасет в TFRecord формат використовуючи команду:widerface_init_data.shВибер?ть модель для навчання та запуст?ть команду навчання задавши метод обчислення (gpu або tpu), назву ? дату претреновано? модел? з набору Tensorflow detection model zoo, назву конф?гурац?йного файлу, що буде використовуватися:train.sh <gpu|tpu> \<назва модел?> ?\<дата верс?? модел?> \ [назва конф?гурац?йного файлу в папц? .\config]Наприклад для модел? ssd_mobilenet_v1 верс?? 2018_01_28 та конф?гурац??ю, що вказу? використовувати функц?ю втрат focal loss вигляда? наступним чином:train.sh gpu \ssd_mobilenet_v1_coco \2018_01_28 |ssd_mobilenet_v1_focal_loss_cocoЗавдання буде в?дправлено на Google Cloud ML Engine. Прогрес завдання можна в?дсл?дковувати в консол? Google Cloud Platform, по граф?кам активност? та журналам.Важливо! Дан? конф?гурац???(pipeline config files), що м?стяться в папц? config мають недол?к. П?сля зак?нчення тренування завдання продовжу? виконуватись, пер?одично вал?дуючи модель. Тому необх?дно в?дсл?дковувати прогрес завдання по його журналам.Якщо в журналах з’явилося пов?домлення для останньо? ?терац?? навчання?(номер ?терац?? в?добража?ться в пов?домленн?). Завдання потр?бно зупинити.П?сля зак?нчення тренування модел? ?? можна скоп?ювати локально в папку trained_models використовуючи наступну команду:gsutil cp -r \$gs_bucket/model_dir/<назва конф?гурац??>_<дата верс?? модел?> \ trained_models/Для перегляду результат?в вал?дац?? та приклад?в роботи модел? запуст?ть tensorboard за допомогою наступно? команди:tensorboard \--logdir=trained_models/<назва конф?гурац??>_<дата верс?? модел?>Нижче приведений повний л?стинг команд для тренування моделей що був використаний в даному досл?дженн?:# 1. Setup env variablesexport basedir=$PWDexport research=$PWD/models/researchexport PROJECT=diplomawork-166315export gcp_region=europe-west1export gs_bucket=gs://dubnevych-workspacegcloud auth application-default login# 1. Download and convert Wider Face dataset to TF formatwiderface_init_data.sh# 2. Run training with evaluation and copy download results (ONE BY ONE)train.sh gpu ssd_mobilenet_v1_coco 2018_01_28gsutil cp -r $gs_bucket/model_dir/ssd_mobilenet_v1_coco_2018_01_28 trained_models/train.sh gpu ssd_mobilenet_v1_coco 2018_01_28 ssd_mobilenet_v1_focal_loss_cocogsutil cp -r $gs_bucket/model_dir/ssd_mobilenet_v1_focal_loss_coco_2018_01_28 trained_models/train.sh gpu ssd_mobilenet_v1_ppn_shared_box_predictor_300x300_coco14_sync 2018_07_03gsutil cp -r $gs_bucket/model_dir/ssd_mobilenet_v1_ppn_shared_box_predictor_300x300_coco14_sync_2018_07_03 trained_models/train.sh gpu ssd_mobilenet_v2_coco 2018_03_29gsutil cp -r $gs_bucket/model_dir/ssd_mobilenet_v2_coco_2018_03_29 trained_models/train.sh gpu ssdlite_mobilenet_v2_coco 2018_05_09gsutil cp -r $gs_bucket/model_dir/ssdlite_mobilenet_v2_coco_2018_05_09 trained_models/# 3. Cleanup GCP bucketgsutil rm -r $gs_bucket/*.*# 4. Collecting data in tensorboard (ONE BY ONE)# To see result open localhost:6006 in your browsertensorboard --logdir=trained_models/ssd_mobilenet_v1_focal_loss_coco_2018_01_28tensorboard --logdir=trained_models/ssd_mobilenet_v1_ppn_shared_box_predictor_300x300_coco14_sync_2018_07_03tensorboard --logdir=trained_models/ssdlite_mobilenet_v2_coco_2018_05_09tensorboard --logdir=trained_models/ssd_mobilenet_v2_coco_2018_03_29ДОДАТОК В Л?стинг програмиДоступний на GitHub: Скрипт widerface_init_data.sh:#!/usr/bin/env bashpython3.exe download_widerface.pypython scripts/create_widerface_tf_record.py \ --input_dir=downloads \ --output_dir=datagsutil cp $basedir/data/wider_train.tfrecord $gs_bucket/data/gsutil cp $basedir/data/wider_val.tfrecord $gs_bucket/data/gsutil cp $basedir/data/label_map.pbtxt $gs_bucket/data/rm -r downloads/WIDER_trainrm -r downloads/WIDER_valСкрипт download_widerface.py:#!/usr/bin/env python3import requestsimport osimport shutil"""The script has been taken from and modifiedThanks a lot, qdraw!TODO: When I have a time I will make a PayPal account and make a donation.Script to downloadWider Face Training ImagesWider Face Validation Imagesfrom Google Drive using Python3.6 is included in repo"""# credits: download_file_from_google_drive(id, destination): ??def get_confirm_token(response): ??????for key, value in response.cookies.items(): ??????????if key.startswith('download_warning'): ??????????????return value ??????return None ??def save_response_content(response, destination): ??????CHUNK_SIZE = 32768 ??????with open(destination, "wb") as f: ??????????for chunk in response.iter_content(CHUNK_SIZE): ??????????????if chunk: # filter out keep-alive new chunks ??????????????????f.write(chunk) ??URL = "" ??session = requests.Session() ??response = session.get(URL, params = { 'id' : id }, stream = True) ??token = get_confirm_token(response) ??if token: ??????params = { 'id' : id, 'confirm' : token } ??????response = session.get(URL, params = params, stream = True) ??save_response_content(response, destination)# The scriptcurr_path = os.getcwd()models_path = os.path.join(curr_path,"downloads")# make dir => wider_data in foldertry: ??os.makedirs(models_path)except Exception as e: ??passif os.path.exists(os.path.join(models_path,"train.zip")) == False: ??print("downloading.. train.zip -- 1.47GB") ??download_file_from_google_drive("0B6eKvaijfFUDQUUwd21EckhUbWs", os.path.join(models_path,"train.zip"))if os.path.exists(os.path.join(models_path,"val.zip")) == False: ??print("downloading.. val.zip -- 362.8MB") ??download_file_from_google_drive("0B6eKvaijfFUDd3dIRmpvSk8tLUk", os.path.join(models_path,"val.zip"))print("files downloaded")# unzip the filesimport zipfileif os.path.exists(os.path.join(models_path,"WIDER_train")) == False: ??with zipfile.ZipFile(os.path.join(models_path,"train.zip"),"r") as zip_ref: ??????zip_ref.extractall(models_path)if os.path.exists(os.path.join(models_path,"WIDER_val")) == False: ??with zipfile.ZipFile(os.path.join(models_path,"val.zip"),"r") as zip_ref: ??????zip_ref.extractall(models_path)print("files unziped")os.chdir(models_path)print("done")Скрипт create_widerface_tf_record.py:r"""Convert raw WIDERFACE dataset to TFRecord for object_detection.Example usage: ??python create_widerface_tf_record.py \ ??????--input_dir=/home/user/wider_face \ ??????--output_dir=/home/user/wider_face.record"""from __future__ import absolute_importfrom __future__ import divisionfrom __future__ import print_functionimport hashlibimport osimport cv2import loggingimport tensorflow as tffrom object_detection.utils import dataset_utillogger = logging.getLogger()flags = tf.app.flags# tf.flags.DEFINE_boolean('merge_datasets', False,# ????????????????????????'Whether to merge train, validation and test '# ????????????????????????'datasets into single one. default: False')tf.flags.DEFINE_boolean('resize', False, ??????????????????????'Whether to resize input images default: False')tf.flags.DEFINE_integer('resize_height', 300, ??????????????????????'Height of resized images. default: 300')tf.flags.DEFINE_integer('resize_width', 300, ??????????????????????'Width of resized images. default: 300')tf.flags.DEFINE_string('input_dir', '', ?????????????????????'Directory with downloaded Wider Face datasets.')tf.flags.DEFINE_string('output_dir', '/tmp/', 'Output data directory.')tf.flags.DEFINE_string('log_file', '.\\conversion_log.txt', ?????????????????????'Path to log file. default: .\\conversion_log.txt')FLAGS = flags.FLAGSdef create_tf_test_example(filename, images_path): height = None ?# Image height width = None ?# Image width encoded_image_data = None ?# Encoded image bytes image_format = b'jpeg' ?# b'jpeg' or b'png' if not filename: ??raise IOError() filepath = os.path.join(images_path, filename) image_raw = cv2.imread(filepath) height, width, channel = image_raw.shape if FLAGS.resize: ??image_resize = cv2.resize(image_raw, (FLAGS.resize_width, FLAGS.resize_height)) ??path_pre = os.path.split(filename)[0] ??path = os.path.join(resize_image_dir, path_pre) ??if not os.path.exists(path): ????os.mkdir(path) ??output_img = os.path.join(resize_image_dir, filename) ??cv2.imwrite(output_img, image_resize) ??with open(output_img, 'rb') as ff: ????encoded_image_data = ff.read() else: ??with open(filepath, 'rb') as ff: ????encoded_image_data = ff.read() encoded_image_data = open(filepath, "rb").read() key = hashlib.sha256(encoded_image_data).hexdigest() tf_example = tf.train.Example(features=tf.train.Features(feature={ ??'image/height': dataset_util.int64_feature(int(height)), ??'image/width': dataset_util.int64_feature(int(width)), ??'image/filename': dataset_util.bytes_feature(filename.encode('utf-8')), ??'image/source_id': dataset_util.bytes_feature(filename.encode('utf-8')), ??'image/key/sha256': dataset_util.bytes_feature(key.encode('utf8')), ??'image/encoded': dataset_util.bytes_feature(encoded_image_data), ??'image/format': dataset_util.bytes_feature('jpeg'.encode('utf8')), })) return tf_exampledef create_tf_example(filename, images_dir, f): """ """ xmins = [] ?# List of normalized left x coordinates in bounding box (1 per box) xmaxs = [] ?# List of normalized right x coordinates in bounding box (1 per box) ymins = [] ?# List of normalized top y coordinates in bounding box (1 per box) ymaxs = [] ?# List of normalized bottom y coordinates in bounding box (1 per box) classes_text = [] ?# List of string class name of bounding box (1 per box) classes = [] ?# List of integer class id of bounding box (1 per box) poses = [] truncated = [] difficulties = [] # filename = f.readline().rstrip() #tf.(filename) filepath = os.path.join(images_dir, filename) #(filepath) image_raw = cv2.imread(filepath) height, width, channel = image_raw.shape #("height is %d, width is %d, channel is %d" % (height, width, channel)) if FLAGS.resize: ??image_resize = cv2.resize(image_raw, (FLAGS.resize_width, FLAGS.resize_height)) ??path_pre = os.path.split(filename)[0] ??path = os.path.join(resize_image_dir, path_pre) ??if not os.path.exists(path): ????os.mkdir(path) ??output_img = os.path.join(resize_image_dir, filename) ??cv2.imwrite(output_img, image_resize) ??with open(output_img, 'rb') as ff: ????encoded_image_data = ff.read() else: ??with open(filepath, 'rb') as ff: ????encoded_image_data = ff.read() key = hashlib.sha256(encoded_image_data).hexdigest() face_num = int(f.readline().rstrip()) valid_face_num = 0 for i in range(face_num): ??annot = f.readline().rstrip().split() ??# WIDER FACE DATASET CONTAINS SOME ANNOTATIONS WHAT EXCEEDS THE IMAGE BOUNDARY ??if float(annot[2]) > 25.0: ????if float(annot[3]) > 30.0: ??????xmins.append(max(0.005, (float(annot[0]) / width))) ??????ymins.append(max(0.005, (float(annot[1]) / height))) ??????xmaxs.append(min(0.995, ((float(annot[0]) + float(annot[2])) / width))) ??????ymaxs.append(min(0.995, ((float(annot[1]) + float(annot[3])) / height))) ??????classes_text.append('face'.encode('utf8')) ??????classes.append(1) ??????poses.append("front".encode('utf8')) ??????truncated.append(int(0)) ??????#(xmins[-1], ymins[-1], xmaxs[-1], ymaxs[-1], classes_text[-1], classes[-1]) ??????valid_face_num += 1 #tf.("Face Number is %d" % face_num) #tf.("Valid face number is %d" % valid_face_num) tf_example = tf.train.Example(features=tf.train.Features(feature={ ??'image/height': dataset_util.int64_feature(int(height)), ??'image/width': dataset_util.int64_feature(int(width)), ??'image/filename': dataset_util.bytes_feature(filename.encode('utf8')), ??'image/source_id': dataset_util.bytes_feature(filename.encode('utf8')), ??'image/key/sha256': dataset_util.bytes_feature(key.encode('utf8')), ??'image/encoded': dataset_util.bytes_feature(encoded_image_data), ??'image/format': dataset_util.bytes_feature('jpeg'.encode('utf8')), ??'image/object/bbox/xmin': dataset_util.float_list_feature(xmins), ??'image/object/bbox/xmax': dataset_util.float_list_feature(xmaxs), ??'image/object/bbox/ymin': dataset_util.float_list_feature(ymins), ??'image/object/bbox/ymax': dataset_util.float_list_feature(ymaxs), ??'image/object/class/text': dataset_util.bytes_list_feature(classes_text), ??'image/object/class/label': dataset_util.int64_list_feature(classes), ??'image/object/difficult': dataset_util.int64_list_feature(int(0)), ??'image/object/truncated': dataset_util.int64_list_feature(truncated), ??'image/object/view': dataset_util.bytes_list_feature(poses), })) return valid_face_num, tf_exampledef create_widerface_tf_record(annotations_file, ?????????????????????????????images_path, ?????????????????????????????output_path, ?????????????????????????????nobbox=False): ('Processing %s dataset', images_path) ('Annotation file is %s', annotations_file) writer = tf.python io.TFRecordWriter(output_path) with open(annotations_file) as f: ??valid_image_num = 0 ??invalid_image_num = 0 ??# each picture start with filename, use for loop to get filename, other arg use readline fun to read ??processed_num = 0 ??while True: ????next_line = f.readline() ????if not next_line: ??????break ????filename = next_line.strip() ????if nobbox: ??????tf_example = create_tf_test_example(filename, images_path) ????else: ??????valid_face_number, tf_example = create_tf_example(filename, images_path, f) ??????if valid_face_number != 0: ????????valid_image_num += 1 ??????else: ????????invalid_image_num += 1 ????????("%s image has no bboxes!"%filename) ????writer.write(tf_example.SerializeToString()) ????processed_num += 1 ????if processed_num % 1000 == 0: ??????('%d images processed'%processed_num) writer.close() ('Output file %s created. Total images processed %d' ?????????????%(output_path, processed_num)) ("Valid image number is %d"%valid_image_num) ("Invalid image number is %d"%invalid_image_num)def init_logger(): logFormatter = logging.Formatter("%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s] ?%(message)s") fileHandler = logging.FileHandler(FLAGS.log_file) fileHandler.setFormatter(logFormatter) logger.addHandler(fileHandler) consoleHandler = logging.StreamHandler() consoleHandler.setFormatter(logFormatter) logger.addHandler(consoleHandler) logger.setLevel()def main(_): assert FLAGS.input_dir, '`input_dir` missing.' assert FLAGS.output_dir, '`output_dir` missing.' print("input dir = {}".format(os.path.abspath(FLAGS.input_dir))) print("output dir = {}".format(os.path.abspath(FLAGS.output_dir))) print("log file = {}".format(os.path.abspath(FLAGS.log_file))) init_logger() if FLAGS.resize: ??global resize_image_dir ??resize_image_dir = os.path.join(FLAGS.output_dir, 'resized_images') if not tf.gfile.IsDirectory(FLAGS.output_dir): ??tf.gfile.MakeDirs(FLAGS.output_dir) test_image_dir = os.path.join(FLAGS.input_dir, 'WIDER_test/Images') val_image_dir = os.path.join(FLAGS.input_dir, 'WIDER_val/Images') train_image_dir = os.path.join(FLAGS.input_dir, 'WIDER_train/Images') train_annotations_file = os.path.join(FLAGS.input_dir, 'wider_face_split/wider_face_train_bbx_gt.txt') val_annotations_file = os.path.join(FLAGS.input_dir, 'wider_face_split/wider_face_val_bbx_gt.txt') test_annotations_file = os.path.join(FLAGS.input_dir, 'wider_face_split/wider_face_test_filelist.txt') train_output_path = os.path.join(FLAGS.output_dir, 'wider_train.tfrecord') val_output_path = os.path.join(FLAGS.output_dir, 'wider_val.tfrecord') test_output_path = os.path.join(FLAGS.output_dir, 'wider_test.tfrecord') create_widerface_tf_record( ??train_annotations_file, ??train_image_dir, ??train_output_path) create_widerface_tf_record( ??val_annotations_file, ??val_image_dir, ??val_output_path) create_widerface_tf_record( ??test_annotations_file, ??test_image_dir, ??test_output_path, ??nobbox=True) if FLAGS.resize: ??os.rmdir(resize_image_dir) ('Conversion is finished!')if __name__ == '__main__': tf.app.run()Скрипт train.sh#!/usr/bin/env bash# Setup main variablesexport basedir=$PWDexport research=$basedir/models/research# Read input parametersMODE=$1MODELNAME=$2MODELDATE=$3PIPELINE_CONFIG=$4if [ -z "$PIPELINE_CONFIG" ]; then ??export PIPELINE_CONFIG=${MODELNAME}fiCHECKPOINT_NAME=${MODELNAME}_${MODELDATE}CHECKPOINT_DIR=$gs_bucket/checkpoints/${CHECKPOINT_NAME}MODEL_DIR=$gs_bucket/model_dir/${PIPELINE_CONFIG}_${MODELDATE}YAML_CONFIG=$basedir/config/cloud.ymlecho PIPELINE_CONFIG: ${PIPELINE_CONFIG}echo CHECKPOINT_DIR: ${CHECKPOINT_DIR}echo MODEL_DIR: ${MODEL_DIR}# 1. Transfer pretreined model to Google Storagegsutil -q stat ${CHECKPOINT_DIR}/model.ckpt.indexreturn_value=$?cd $basedirif [ $return_value != 0 ]; then ??if [ ! -d checkpoints/${CHECKPOINT_NAME} ]; then ??????echo Downloading pretrained model ??????wget ${CHECKPOINT_NAME}.tar.gz -P checkpoints/ ??????tar -xvf checkpoints/${CHECKPOINT_NAME}.tar.gz -C checkpoints/ ??????rm checkpoints/${CHECKPOINT_NAME}.tar.gz ??fi ??gsutil cp checkpoints/${CHECKPOINT_NAME}/model.ckpt.* ${CHECKPOINT_DIR}/ ??echo Pretrained model has been transfered to Google Storage. ??#rm -r $basedir/checkpoints/${CHECKPOINT_NAME}fi# 2. Update config with checkpoint name and copy to Google Storagecp config/${PIPELINE_CONFIG}.config config/${PIPELINE_CONFIG}.bcp.config#echo sed -i "s|fine_tune_checkpoint:.+?\n|fine_tune_checkpoint: "${CHECKPOINT_DIR}\model.ckpt"\n|g" \perl -p -i -e "s|fine_tune_checkpoint:.+?\n|fine_tune_checkpoint: \"${CHECKPOINT_DIR}/model.ckpt\"\n|g" config/${PIPELINE_CONFIG}.configperl -p -i -e "s|GS_BUCKET|${gs_bucket}|g" config/${PIPELINE_CONFIG}.configperl -p -i -e "s|MODELDATE|${MODELDATE}|g" config/${PIPELINE_CONFIG}.configgsutil cp config/${PIPELINE_CONFIG}.config $gs_bucket/config/# 3. Run jobPIPELINE_CONFIG_PATH=$gs_bucket/config/${PIPELINE_CONFIG}.configcd $researchif [ "$MODE" == "gpu" ]; then ??echo Starting training job train_${PIPELINE_CONFIG}_${MODELDATE}_gpu_`date +%m_%d_%Y_%H_%M_%S` ??gcloud ml-engine jobs submit training train_${PIPELINE_CONFIG}_${MODELDATE}_gpu_`date +%m_%d_%Y_%H_%M_%S` \ ??????--runtime-version 1.9 \ ??????--job-dir=$MODEL_DIR \ ??????--packages dist/object_detection-0.1.tar.gz,slim/dist/slim-0.1.tar.gz,/tmp/pycocotools/pycocotools-2.0.tar.gz \ ??????--module-name object_detection.model_main \ ??????--region $gcp_region \ ??????--config $YAML_CONFIG \ ??????-- \ ??????--model_dir=$MODEL_DIR \ ??????--pipeline_config_path=$PIPELINE_CONFIG_PATHelif [ "$MODE" == "tpu" ]; then ??echo Starting training job train_${PIPELINE_CONFIG}_${MODELDATE}_tpu_`date +%m_%d_%Y_%H_%M_%S` ??gcloud ml-engine jobs submit training train_${PIPELINE_CONFIG}_${MODELDATE}_tpu_`date +%m_%d_%Y_%H_%M_%S` \ ??--job-dir=$MODEL_DIR \ ??--packages dist/object_detection-0.1.tar.gz,slim/dist/slim-0.1.tar.gz,/tmp/pycocotools/pycocotools-2.0.tar.gz \ ??--module-name object_detection.model_tpu_main \ ??--runtime-version 1.9 \ ??--scale-tier BASIC_TPU \ ??--region $gcp_region \ ??-- \ ??--tpu_zone $gcp_region \ ??--model_dir=$MODEL_DIR \ ??--pipeline_config_path=$PIPELINE_CONFIG_PATHelse ??echo $MODE is unnown mode!ficd $basedirСкрип eval.sh#!/usr/bin/env bash# Setup main variablesexport basedir=$PWDexport research=$basedir/models/research# Read input parametersMODELNAME=$1MODELDATE=$2PIPELINE_CONFIG=$3if [ -z "$PIPELINE_CONFIG" ]; then ??export PIPELINE_CONFIG=${MODELNAME}fiMODEL_DIR=$gs_bucket/model_dir/${PIPELINE_CONFIG}_${MODELDATE}echo Model evaluationecho PIPELINE_CONFIG: ${PIPELINE_CONFIG}echo MODEL_DIR: ${MODEL_DIR}cd $researchPIPELINE_CONFIG_PATH=$gs_bucket/config/${PIPELINE_CONFIG}.configecho starting evaluation job eval_${PIPELINE_CONFIG}_${MODELDATE}_`date +%m_%d_%Y_%H_%M_%S`gcloud ml-engine jobs submit training eval_${PIPELINE_CONFIG}_${MODELDATE}_`date +%m_%d_%Y_%H_%M_%S` \ ??--runtime-version 1.9 \ ??--job-dir=$MODEL_DIR \ ??--packages dist/object_detection-0.1.tar.gz,slim/dist/slim-0.1.tar.gz,/tmp/pycocotools/pycocotools-2.0.tar.gz \ ??--module-name object_detection.model_main \ ??--region $gcp_region \ ??--scale-tier BASIC_GPU \ ??-- \ ??--model_dir=$MODEL_DIR \ ??--pipeline_config_path=$PIPELINE_CONFIG_PATH \ ??--checkpoint_dir=$MODEL_DIRcd $basedirКонф?гурац?я config/ssd_mobilenet_v1_coco.config# SSD with Mobilenet v1 configuration for MSCOCO Dataset.# Users should configure the fine_tune_checkpoint field in the train config as# well as the label_map_path and input_path fields in the train_input_reader and# eval_input_reader. Search for "PATH_TO_BE_CONFIGURED" to find the fields that# should be configured.model { ssd { ??num_classes: 1 ??box_coder { ????faster_rcnn_box_coder { ??????y_scale: 10.0 ??????x_scale: 10.0 ??????height_scale: 5.0 ??????width_scale: 5.0 ????} ??} ??matcher { ????argmax_matcher { ??????matched_threshold: 0.5 ??????unmatched_threshold: 0.5 ??????ignore_thresholds: false ??????negatives_lower_than_unmatched: true ??????force_match_for_each_row: true ????} ??} ??similarity_calculator { ????iou_similarity { ????} ??} ??anchor_generator { ????ssd_anchor_generator { ??????num_layers: 6 ??????min_scale: 0.2 ??????max_scale: 0.95 ??????aspect_ratios: 1.0 ??????aspect_ratios: 2.0 ??????aspect_ratios: 0.5 ??????aspect_ratios: 3.0 ??????aspect_ratios: 0.3333 ????} ??} ??image_resizer { ????fixed_shape_resizer { ??????height: 300 ??????width: 300 ????} ??} ??box_predictor { ????convolutional_box_predictor { ??????min_depth: 0 ??????max_depth: 0 ??????num_layers_before_predictor: 0 ??????use_dropout: false ??????dropout_keep_probability: 0.8 ??????kernel_size: 1 ??????box_code_size: 4 ??????apply_sigmoid_to_scores: false ??????conv_hyperparams { ????????activation: RELU_6, ????????regularizer { ??????????l2_regularizer { ????????????weight: 0.00004 ??????????} ????????} ????????initializer { ??????????truncated_normal_initializer { ????????????stddev: 0.03 ????????????mean: 0.0 ??????????} ????????} ????????batch_norm { ??????????train: true, ??????????scale: true, ??????????center: true, ??????????decay: 0.9997, ??????????epsilon: 0.001, ????????} ??????} ????} ??} ??feature_extractor { ????type: 'ssd_mobilenet_v1' ????min_depth: 16 ????depth_multiplier: 1.0 ????conv_hyperparams { ??????activation: RELU_6, ??????regularizer { ????????l2_regularizer { ??????????weight: 0.00004 ????????} ??????} ??????initializer { ????????truncated_normal_initializer { ??????????stddev: 0.03 ??????????mean: 0.0 ????????} ??????} ??????batch_norm { ????????train: true, ????????scale: true, ????????center: true, ????????decay: 0.9997, ????????epsilon: 0.001, ??????} ????} ??} ??loss { ????classification_loss { ??????weighted_sigmoid { ??????} ????} ????localization_loss { ??????weighted_smooth_l1 { ??????} ????} ????hard_example_miner { ??????num_hard_examples: 3000 ??????iou_threshold: 0.99 ??????loss_type: CLASSIFICATION ??????max_negatives_per_positive: 3 ??????min_negatives_per_image: 0 ????} ????classification_weight: 1.0 ????localization_weight: 1.0 ??} ??normalize_loss_by_num_matches: true ??post_processing { ????batch_non_max_suppression { ??????score_threshold: 1e-8 ??????iou_threshold: 0.6 ??????max_detections_per_class: 100 ??????max_total_detections: 100 ????} ????score_converter: SIGMOID ??} }}train_config: { batch_size: 24 optimizer { ??rms_prop_optimizer: { ????learning_rate: { ??????exponential_decay_learning_rate { ????????initial_learning_rate: 0.004 ????????decay_steps: 800720 ????????decay_factor: 0.95 ??????} ????} ????momentum_optimizer_value: 0.9 ????decay: 0.9 ????epsilon: 1.0 ??} } fine_tune_checkpoint: "GS_BUCKET/checkpoints/ssd_mobilenet_v1_coco_MODEL_DATE/model.ckpt" from_detection_checkpoint: true # Note: The below line limits the training process to 200K steps, which we # empirically found to be sufficient enough to train the pets dataset. This # effectively bypasses the learning rate schedule (the learning rate will # never decay). Remove the below line to train indefinitely. num_steps: 200000 data_augmentation_options { ??random_horizontal_flip { ??} } data_augmentation_options { ??ssd_random_crop { ??} }}train_input_reader: { tf_record_input_reader { ??input_path: "GS_BUCKET/data/wider_train.tfrecord" } label_map_path: "GS_BUCKET/data/label_map.pbtxt"}eval_config: { num_examples: 3226 # Note: The below line limits the evaluation process to 10 evaluations. # Remove the below line to evaluate indefinitely. max_evals: 10 num_visualizations: 10}eval_input_reader: { tf_record_input_reader { ??input_path: "GS_BUCKET/data/wider_val.tfrecord" } label_map_path: "GS_BUCKET/data/label_map.pbtxt" shuffle: false num_readers: 1}Конф?гурац?я config/ssd_mobilenet_v1_focal_loss_coco.config? модиф?кац??ю ssd_mobilenet_v1_coco.config. В?др?зня?ться лише налаштуванням функц?? втрат:loss { classification_loss { ??weighted_sigmoid_focal { ????alpha: 0.75 ????gamma: 2.0 ??} } localization_loss { ??weighted_smooth_l1 { ??} } classification_weight: 1.0 localization_weight: 1.0}Конф?гурац?я ssd_mobilenet_v1_ppn_shared_box_predictor_300x300_coco14_sync.config# SSD with Mobilenet v1 PPN feature extractor.# Trained on COCO, initialized from Imagenet classification checkpoint# Achieves 19.7 mAP on COCO14 minival dataset.# This config is TPU compatible.model { ssd { ??inplace_batchnorm_update: true ??freeze_batchnorm: false ??num_classes: 1 ??box_coder { ????faster_rcnn_box_coder { ??????y_scale: 10.0 ??????x_scale: 10.0 ??????height_scale: 5.0 ??????width_scale: 5.0 ????} ??} ??matcher { ????argmax_matcher { ??????matched_threshold: 0.5 ??????unmatched_threshold: 0.5 ??????ignore_thresholds: false ??????negatives_lower_than_unmatched: true ??????force_match_for_each_row: true ??????use_matmul_gather: true ????} ??} ??similarity_calculator { ????iou_similarity { ????} ??} ??encode_background_as_zeros: true ??anchor_generator { ????ssd_anchor_generator { ??????num_layers: 6 ??????min_scale: 0.15 ??????max_scale: 0.95 ??????aspect_ratios: 1.0 ??????aspect_ratios: 2.0 ??????aspect_ratios: 0.5 ??????aspect_ratios: 3.0 ??????aspect_ratios: 0.3333 ??????reduce_boxes_in_lowest_layer: false ????} ??} ??image_resizer { ????fixed_shape_resizer { ??????height: 300 ??????width: 300 ????} ??} ??box_predictor { ????weight_shared_convolutional_box_predictor { ??????depth: 512 ??????class_prediction_bias_init: -4.6 ??????conv_hyperparams { ????????activation: RELU_6, ????????regularizer { ??????????l2_regularizer { ????????????weight: 0.00004 ??????????} ????????} ????????initializer { ??????????random_normal_initializer { ????????????stddev: 0.01 ????????????mean: 0.0 ??????????} ????????} ????????batch_norm { ??????????scale: true ??????????center: true ??????????train: true ??????????decay: 0.97 ??????????epsilon: 0.001 ????????} ??????} ??????num_layers_before_predictor: 1 ??????kernel_size: 1 ??????share_prediction_tower: true ????} ??} ??feature_extractor { ????type: 'ssd_mobilenet_v1_ppn' ????conv_hyperparams { ??????activation: RELU_6, ??????regularizer { ????????l2_regularizer { ??????????weight: 0.00004 ????????} ??????} ??????initializer { ????????random_normal_initializer { ??????????stddev: 0.01 ??????????mean: 0.0 ????????} ??????} ??????batch_norm { ????????scale: true ????????center: true ????????decay: 0.97 ????????epsilon: 0.001 ??????} ????} ????override_base_feature_extractor_hyperparams: true ??} ??loss { ????classification_loss { ??????weighted_sigmoid_focal { ????????alpha: 0.75 ????????gamma: 2.0 ??????} ????} ????localization_loss { ??????weighted_smooth_l1 { ??????} ????} ????classification_weight: 1.0 ????localization_weight: 1.5 ??} ??normalize_loss_by_num_matches: true ??normalize_loc_loss_by_codesize: true ??post_processing { ????batch_non_max_suppression { ??????score_threshold: 1e-8 ??????iou_threshold: 0.6 ??????max_detections_per_class: 100 ??????max_total_detections: 100 ????} ????score_converter: SIGMOID ??} }}train_config: { batch_size: 24 optimizer { ??rms_prop_optimizer: { ????learning_rate: { ??????exponential_decay_learning_rate { ????????initial_learning_rate: 0.004 ????????decay_steps: 800720 ????????decay_factor: 0.95 ??????} ????} ????momentum_optimizer_value: 0.9 ????decay: 0.9 ????epsilon: 1.0 ??} } fine_tune_checkpoint: "GS_BUCKET/checkpoints/ssd_mobilenet_v1_ppn_shared_box_predictor_300x300_coco14_sync_MODELDATE/model.ckpt" from_detection_checkpoint: true # Note: The below line limits the training process to 200K steps, which we # empirically found to be sufficient enough to train the pets dataset. This # effectively bypasses the learning rate schedule (the learning rate will # never decay). Remove the below line to train indefinitely. num_steps: 200000 data_augmentation_options { ??random_horizontal_flip { ??} } data_augmentation_options { ??ssd_random_crop { ??} } max_number_of_boxes: 50 unpad_groundtruth_tensors: false}train_input_reader: { tf_record_input_reader { ??input_path: "GS_BUCKET/data/wider_train.tfrecord" } label_map_path: "GS_BUCKET/data/label_map.pbtxt"}eval_config: { num_examples: 3226 # Note: The below line limits the evaluation process to 10 evaluations. # Remove the below line to evaluate indefinitely. max_evals: 10 num_visualizations: 10}eval_input_reader: { tf_record_input_reader { ??input_path: "GS_BUCKET/data/wider_val.tfrecord" } label_map_path: "GS_BUCKET/data/label_map.pbtxt" shuffle: false num_readers: 1}Конф?гурац?я face-detection/config/ssd_mobilenet_v2_coco.config# SSD with Mobilenet v2 configuration for MSCOCO Dataset.# Users should configure the fine_tune_checkpoint field in the train config as# well as the label_map_path and input_path fields in the train_input_reader and# eval_input_reader. Search for "PATH_TO_BE_CONFIGURED" to find the fields that# should be configured.model { ssd { ??num_classes: 1 ??box_coder { ????faster_rcnn_box_coder { ??????y_scale: 10.0 ??????x_scale: 10.0 ??????height_scale: 5.0 ??????width_scale: 5.0 ????} ??} ??matcher { ????argmax_matcher { ??????matched_threshold: 0.5 ??????unmatched_threshold: 0.5 ??????ignore_thresholds: false ??????negatives_lower_than_unmatched: true ??????force_match_for_each_row: true ????} ??} ??similarity_calculator { ????iou_similarity { ????} ??} ??anchor_generator { ????ssd_anchor_generator { ??????num_layers: 6 ??????min_scale: 0.2 ??????max_scale: 0.95 ??????aspect_ratios: 1.0 ??????aspect_ratios: 2.0 ??????aspect_ratios: 0.5 ??????aspect_ratios: 3.0 ??????aspect_ratios: 0.3333 ????} ??} ??image_resizer { ????fixed_shape_resizer { ??????height: 300 ??????width: 300 ????} ??} ??box_predictor { ????convolutional_box_predictor { ??????min_depth: 0 ??????max_depth: 0 ??????num_layers_before_predictor: 0 ??????use_dropout: false ??????dropout_keep_probability: 0.8 ??????kernel_size: 1 ??????box_code_size: 4 ??????apply_sigmoid_to_scores: false ??????conv_hyperparams { ????????activation: RELU_6, ????????regularizer { ??????????l2_regularizer { ????????????weight: 0.00004 ??????????} ????????} ????????initializer { ??????????truncated_normal_initializer { ????????????stddev: 0.03 ????????????mean: 0.0 ??????????} ????????} ????????batch_norm { ??????????train: true, ??????????scale: true, ??????????center: true, ??????????decay: 0.9997, ??????????epsilon: 0.001, ????????} ??????} ????} ??} ??feature_extractor { ????type: 'ssd_mobilenet_v2' ????min_depth: 16 ????depth_multiplier: 1.0 ????conv_hyperparams { ??????activation: RELU_6, ??????regularizer { ????????l2_regularizer { ??????????weight: 0.00004 ????????} ??????} ??????initializer { ????????truncated_normal_initializer { ??????????stddev: 0.03 ??????????mean: 0.0 ????????} ??????} ??????batch_norm { ????????train: true, ????????scale: true, ????????center: true, ????????decay: 0.9997, ????????epsilon: 0.001, ??????} ????} ??} ??loss { ????classification_loss { ??????weighted_sigmoid { ??????} ????} ????localization_loss { ??????weighted_smooth_l1 { ??????} ????} ????hard_example_miner { ??????num_hard_examples: 3000 ??????iou_threshold: 0.99 ??????loss_type: CLASSIFICATION ??????max_negatives_per_positive: 3 ??????min_negatives_per_image: 3 ????} ????classification_weight: 1.0 ????localization_weight: 1.0 ??} ??normalize_loss_by_num_matches: true ??post_processing { ????batch_non_max_suppression { ??????score_threshold: 1e-8 ??????iou_threshold: 0.6 ??????max_detections_per_class: 100 ??????max_total_detections: 100 ????} ????score_converter: SIGMOID ??} }}train_config: { batch_size: 24 optimizer { ??rms_prop_optimizer: { ????learning_rate: { ??????exponential_decay_learning_rate { ????????initial_learning_rate: 0.004 ????????decay_steps: 800720 ????????decay_factor: 0.95 ??????} ????} ????momentum_optimizer_value: 0.9 ????decay: 0.9 ????epsilon: 1.0 ??} } fine_tune_checkpoint: "GS_BUCKET/checkpoints/ssd_mobilenet_v2_coco_MODELDATE/model.ckpt" from_detection_checkpoint: true # Note: The below line limits the training process to 200K steps, which we # empirically found to be sufficient enough to train the pets dataset. This # effectively bypasses the learning rate schedule (the learning rate will # never decay). Remove the below line to train indefinitely. num_steps: 200000 data_augmentation_options { ??random_horizontal_flip { ??} } data_augmentation_options { ??ssd_random_crop { ??} }}train_input_reader: { tf_record_input_reader { ??input_path: "GS_BUCKET/data/wider_train.tfrecord" } label_map_path: "GS_BUCKET/data/label_map.pbtxt"}eval_config: { num_examples: 3226 # Note: The below line limits the evaluation process to 10 evaluations. # Remove the below line to evaluate indefinitely. max_evals: 10 num_visualizations: 10}eval_input_reader: { tf_record_input_reader { ??input_path: "GS_BUCKET/data/wider_val.tfrecord" } label_map_path: "GS_BUCKET/data/label_map.pbtxt" shuffle: false num_readers: 1}Конф?гурац?я face-detection/config/ssdlite_mobilenet_v2_coco.config# SSDLite with Mobilenet v2 configuration for MSCOCO Dataset.# Users should configure the fine_tune_checkpoint field in the train config as# well as the label_map_path and input_path fields in the train_input_reader and# eval_input_reader. Search for "PATH_TO_BE_CONFIGURED" to find the fields that# should be configured.model { ssd { ??num_classes: 1 ??box_coder { ????faster_rcnn_box_coder { ??????y_scale: 10.0 ??????x_scale: 10.0 ??????height_scale: 5.0 ??????width_scale: 5.0 ????} ??} ??matcher { ????argmax_matcher { ??????matched_threshold: 0.5 ??????unmatched_threshold: 0.5 ??????ignore_thresholds: false ??????negatives_lower_than_unmatched: true ??????force_match_for_each_row: true ????} ??} ??similarity_calculator { ????iou_similarity { ????} ??} ??anchor_generator { ????ssd_anchor_generator { ??????num_layers: 6 ??????min_scale: 0.2 ??????max_scale: 0.95 ??????aspect_ratios: 1.0 ??????aspect_ratios: 2.0 ??????aspect_ratios: 0.5 ??????aspect_ratios: 3.0 ??????aspect_ratios: 0.3333 ????} ??} ??image_resizer { ????fixed_shape_resizer { ??????height: 300 ??????width: 300 ????} ??} ??box_predictor { ????convolutional_box_predictor { ??????min_depth: 0 ??????max_depth: 0 ??????num_layers_before_predictor: 0 ??????use_dropout: false ??????dropout_keep_probability: 0.8 ??????kernel_size: 3 ??????use_depthwise: true ??????box_code_size: 4 ??????apply_sigmoid_to_scores: false ??????conv_hyperparams { ????????activation: RELU_6, ????????regularizer { ??????????l2_regularizer { ????????????weight: 0.00004 ??????????} ????????} ????????initializer { ??????????truncated_normal_initializer { ????????????stddev: 0.03 ????????????mean: 0.0 ??????????} ????????} ????????batch_norm { ??????????train: true, ??????????scale: true, ??????????center: true, ??????????decay: 0.9997, ??????????epsilon: 0.001, ????????} ??????} ????} ??} ??feature_extractor { ????type: 'ssd_mobilenet_v2' ????min_depth: 16 ????depth_multiplier: 1.0 ????use_depthwise: true ????conv_hyperparams { ??????activation: RELU_6, ??????regularizer { ????????l2_regularizer { ??????????weight: 0.00004 ????????} ??????} ??????initializer { ????????truncated_normal_initializer { ??????????stddev: 0.03 ??????????mean: 0.0 ????????} ??????} ??????batch_norm { ????????train: true, ????????scale: true, ????????center: true, ????????decay: 0.9997, ????????epsilon: 0.001, ??????} ????} ??} ??loss { ????classification_loss { ??????weighted_sigmoid { ??????} ????} ????localization_loss { ??????weighted_smooth_l1 { ??????} ????} ????hard_example_miner { ??????num_hard_examples: 3000 ??????iou_threshold: 0.99 ??????loss_type: CLASSIFICATION ??????max_negatives_per_positive: 3 ??????min_negatives_per_image: 3 ????} ????classification_weight: 1.0 ????localization_weight: 1.0 ??} ??normalize_loss_by_num_matches: true ??post_processing { ????batch_non_max_suppression { ??????score_threshold: 1e-8 ??????iou_threshold: 0.6 ??????max_detections_per_class: 100 ??????max_total_detections: 100 ????} ????score_converter: SIGMOID ??} }}train_config: { batch_size: 24 optimizer { ??rms_prop_optimizer: { ????learning_rate: { ??????exponential_decay_learning_rate { ????????initial_learning_rate: 0.004 ????????decay_steps: 800720 ????????decay_factor: 0.95 ??????} ????} ????momentum_optimizer_value: 0.9 ????decay: 0.9 ????epsilon: 1.0 ??} } fine_tune_checkpoint: "GS_BUCKET/checkpoints/ssdlite_mobilenet_v2_coco_MODELDATE/model.ckpt" from_detection_checkpoint: true # Note: The below line limits the training process to 200K steps, which we # empirically found to be sufficient enough to train the pets dataset. This # effectively bypasses the learning rate schedule (the learning rate will # never decay). Remove the below line to train indefinitely. num_steps: 200000 data_augmentation_options { ??random_horizontal_flip { ??} } data_augmentation_options { ??ssd_random_crop { ??} }}train_input_reader: { tf_record_input_reader { ??input_path: "GS_BUCKET/data/wider_train.tfrecord" } label_map_path: "GS_BUCKET/data/label_map.pbtxt"}eval_config: { num_examples: 3226 # Note: The below line limits the evaluation process to 10 evaluations. # Remove the below line to evaluate indefinitely. max_evals: 10 num_visualizations: 10}eval_input_reader: { tf_record_input_reader { ??input_path: "GS_BUCKET/data/wider_val.tfrecord" } label_map_path: "GS_BUCKET/data/label_map.pbtxt" shuffle: false num_readers: 1} ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download