Ela.kpi.ua



НАЦ?ОНАЛЬНИЙ ТЕХН?ЧНИЙ УН?ВЕРСИТЕТ УКРА?НИ?КИ?ВСЬКИЙ ПОЛ?ТЕХН?ЧНИЙ ?НСТИТУТ?мен? ?ГОРЯ С?КОРСЬКОГО??нститут прикладного системного анал?зуКафедра математичних метод?в системного анал?зу?До захисту допущено?В.О.Зав?дувача кафедри__________ О.Л. ТимощукДипломна роботана здобуття ступеня бакалавраз напряму п?дготовки 6.040303 Системний анал?зна тему: ?Система розп?знавання музики за жанрамиметодами штучного ?нтелекту?Виконав: студентка IV курсу, групи КА-54 Андре?ва Над?я Олег?вна __________Кер?вник: професор, д.т.н., Данилов В. Я.__________Консультант з економ?чного розд?лу:доцент, к.е.н., Шевчук О. А.__________Консультант з нормконтролю:доцент, к.т.н., Коваленко А. ?.__________Рецензент:професор, д.т.н., Качинський А. Б.__________Засв?дчую, що у ц?й дипломн?й робот? нема? запозичень з праць ?нших автор?в без в?дпов?дних посилань.Студент _____________Ки?в – 2019 рокуРЕФЕРАТ Дипломна робота: _ с., _ рис., ?????_ табл., _ ?додатки, _ джерел. ???????РОЗП?ЗНАВАННЯ МУЗИКИ, ЦИФРОВА АУД?ОСИГНАЛ?В, ЗГОРТКОВ? НЕЙРОНН? МЕРЕЖ?, МАШИННЕ НАВЧАННЯ, ГЛИБИНН? НЕЙРОНН? МЕРЕЖ?.Об’?кт досл?дження – наб?р даних музичних твор?в р?зних жанр?в.Мета роботи – розробка системи класиф?кац?? ауд?осигнал?в для визначення жанру певного твору.Предмет досл?дження – засоби попередньо? обробки ауд?осигнал?в сигнал?в та методи класиф?кац?? на основ? згорткових нейронних мереж.Система, представлена в дан?й робот?, може бути застосована у музичн?й сфер? та сфер? ?Т. ABSTRACT The theme: ?System of music recognition by the nethods of artificial intelligence?. ???????????Diploma: _ p., _ fig, _ tabl., _ appendixes, _ sources. ???????????MUSIC RECOGNITION, AUDIOSIGNAL PROCESSING, CONVOLUTIONAL NEURAL NETWORKS, MACHINE LEARNING, DEEP NEURAL NETWORKSObject of research - a set of data of musical works of different genres.The purpose of the work is to develop a classification system for audio signals to determine the genre of a particular work.The subject of research is the means of preliminary processing of audio signal signals and classifying methods based on convolutional neural networks.The system presented in this paper can be used in the Music and IT.ПЕРЕЛ?К УМОВНИХ СКОРОЧЕНЬ ? ПОЗНАЧЕНЬ SOM(СКК) ??- Самоорган?зована карта Кагонена GMM(СГМ) - Сум?ш гауссовських моделей HMM(ПММ) - Прихован? марк?вськ? модел? SVM(МОВ) - Метод опорних вектор?в ANN(ШНМ) ?- штучна нейронна мережа MFCC(МЧКК) - мел-частостн? кепстральн? коеф?ц??нтиЗМ?СТ TOC \o "1-2" \h \z \u ВСТУП PAGEREF _Toc11845598 \h 7РОЗД?Л 1 ДОСЛ?ДЖЕННЯ ПРЕДМЕТНО? ОБЛАСТ? PAGEREF _Toc11845600 \h 91.1 Постановка задач? PAGEREF _Toc11845601 \h 91.2 Опис алгоритм?в класиф?кац?? PAGEREF _Toc11845602 \h 13Висновки до розд?лу 1 PAGEREF _Toc11845603 \h 18РОЗД?Л 2 МАТЕМАТИЧН? ОСНОВИ РОБОТИ PAGEREF _Toc11845605 \h 192.1 Застосування нейронних мереж в задачах класиф?кац?? PAGEREF _Toc11845606 \h 192.1.1 Навчання штучно? нейронно? мереж? PAGEREF _Toc11845607 \h 202.2. Згортков? нейронн? мереж? PAGEREF _Toc11845608 \h 272.2.1.Компоненти згортково? нейронно? мереж? PAGEREF _Toc11845609 \h 272.2.2 Функц?я активац?? PAGEREF _Toc11845610 \h 282.2.3 Навчання та висновки згортково? ШНМ PAGEREF _Toc11845611 \h 292.3 Мел-частотн? кепстральн? коеф?ц??нти PAGEREF _Toc11845612 \h 29Висновки до розд?лу 2 PAGEREF _Toc11845613 \h 34РОЗД?Л 3 ПРОГРАМНИЙ ПРОДУКТ PAGEREF _Toc11845615 \h 353.1 Опис основних систем та пакет?в обробки даних PAGEREF _Toc11845616 \h 353.1.1 Mathematica PAGEREF _Toc11845617 \h 353.1.2 Matlab PAGEREF _Toc11845618 \h 373.1.3 Python PAGEREF _Toc11845619 \h 403.2 Об?рунтування вибору? платформи та мови реал?зац?? PAGEREF _Toc11845620 \h 413.3. Анал?з арх?тектури системи та робота програми PAGEREF _Toc11845621 \h 42Висновки до розд?лу 3 PAGEREF _Toc11845622 \h 48РОЗД?Л 4 ФУНКЦ?ОНАЛЬНО-ВАРТ?СНИЙ АНАЛ?З ПРОГРАМНОГО ПРОДУКТУ PAGEREF _Toc11845625 \h 494.1 Постановка задач? проектування PAGEREF _Toc11845627 \h 504.1.1 Об?рунтування функц?й програмного продукту PAGEREF _Toc11845628 \h 514.1.2 Вар?анти реал?зац?? основних функц?й PAGEREF _Toc11845629 \h 514.2 Об?рунтування системи параметр?в програмного продукту PAGEREF _Toc11845630 \h 534.2.2 К?льк?сна оц?нка параметр?в PAGEREF _Toc11845631 \h 544.3 Анал?з р?вня якост? вар?ант?в реал?зац?? функц?й PAGEREF _Toc11845632 \h 604.4 Економ?чний анал?з вар?ант?в розробки ПП PAGEREF _Toc11845633 \h 61Висновки до розд?лу 4 PAGEREF _Toc11845634 \h 68ВИСНОВКИ PAGEREF _Toc11845635 \h 69ПЕРЕЛ?К ПОСИЛАНЬ PAGEREF _Toc11845636 \h 70ДОДАТОК А Л?стинг програмиДОДАТОК Б ?люстративний матер?алВСТУПМузичн? жанри - це високор?внев? описи, створюван? ? використовуван? людьми для категоризац?? музики. Вони виникають в процес? складно? вза?мод?? культур, виконавц?в ? ринкових сил ? використовуються для опису под?бност? м?ж музикантами або композиц?ями, а також для орган?зац?? музичних колекц?й.Слухач? використовують жанри для пошуку музики, а також для отримання приблизного уявлення про те, чи сподоба?ться ?м той чи ?нший тв?р ще до його прослуховування. У музичн?й ?ндустр?? жанри використовуються як ключовий спос?б визначення ц?льового ринку. В даний час к?льк?сть музичних файл?в в цифровому вигляд?, доступних в мереж? ?нтернет, стр?мко зроста?; з'являються р?зн? серв?си, що надають доступ до великого обсягу музики по п?дписц?. Автоматичний анал?з музики може стати одн??ю з послуг, за допомогою яко? власники таких серв?с?в будуть залучати кл??нт?в. Така можлив?сть може стати корисною ? для адм?н?стратор?в мережевих арх?в?в з ?нформац??ю про музику, в тому числ? включа? ? жанр. Зазвичай так? серв?си покладаються на ручну класиф?кац?ю, яка ? пов?льною ? гром?здкою. Метою дано? роботи ? досл?дження задач? автоматично? класиф?кац?? музичних твор?в за жанрами та створення прототипу програмно? системи, що дозволя? виконувати автоматичну класиф?кац?ю з використанням згортково? нейронно? ?мереж?, яка буде описана в розд?л? 3. Для досягнення поставлено? мети потр?бно вир?шити так? завдання:1. Описати постановку задач?, провести огляд вид?в ознак, використовуваних для класиф?кац??, а також огляд р?зних алгоритм?в класиф?кац??.2. Вибрати ? описати зас?б для вилучення значень ознак, а також визначити сам наб?р ознак ? описати алгоритми, як? використовують для добування ознак.3. Описати алгоритм згортково? нейронно? мереж?4. Вибрати наб?р даних, на якому буде зд?йснюватися класиф?кац?я, ? провести обчислювальний експеримент по класиф?кац?? музичних твор?в, п?д?брати вх?дн? параметри алгоритм?в, проанал?зувати отриман? результати.5. Розробити прототип програмно? системи ?для автоматично?класиф?кац?? музичних твор?в за жанрами, описати цю систему,використовуючи засоби мови Python.РОЗД?Л 1ДОСЛ?ДЖЕННЯ ПРЕДМЕТНО? ОБЛАСТ?Постановка задач? При вир?шенн? задач класиф?кац?? потр?бно розд?лити статистичн? дан? по певним класам. ? к?лька способ?в подання даних. Найб?льш поширеним ? спос?б, при якому зразок ? векторною величиною. Компонентами цього вектора ? р?зн? характеристики, як? впливають на прийняття р?шення про те, до якого класу можна в?днести даний зразок. Наприклад, для медичних задач ?в якост? компонент?в цього вектора можуть бути дан? з медично? карти хворого. Таким чином, на п?дстав? певно? ?нформац?? про об’?кт, необх?дно визначити, до якого класу його можна в?днести. Класиф?катор таким чином в?дносить об'?кт до одного з клас?в в?дпов?дно до визначеного розбиття N-м?рного простору, яке назива?ться простором вход?в, а розм?рн?сть цього простору - к?льк?сть компонент вектора.У загальному вигляд? задача класиф?кац?? визнача?ться наступним чином: нехай X - безл?ч опис?в об'?кт?в (приклад?в), Y - к?нцеве безл?ч номер?в (?мен, м?ток) клас?в. ?сну? нев?дома ц?льова залежн?сть - в?дображення y *: X → Y, значенняяко? в?дом? т?льки на об'?ктах к?нцево? навчально? виб?рки Xm = {(x1, y1), ..., (xm, ym)}. Потр?бно побудувати алгоритм a: X → Y, здатний класиф?кувати дов?льний об'?кт x ∈ X. У задач? автоматичний класиф?кац?? музичних твор?в за жанрамикожен приклад явля? собою n-м?рний вектор ознак, де ознака (feature) - цетерм?н, часто використовуваний в теор?? розп?знавання образ?в, в даному контекст?, що означа? порц?ю ?нформац??, яка може бути залучена з ауд?озаписи ? пот?м використана для ?? опису або класиф?кац??. ?нод? ознаки також називають дескрипторами. У дан?й робот? п?д ауд?озаписами будуть розум?тися цифров? ауд?офайли, що м?стять запис музичного твору або його частину. М?тки клас?в - це назви жанр?в.Загальну схему р?шення задач? класиф?кац?? музичних твор?в за жанрами можна умовно розд?лити на п'ять етап?в, як? будуть описан? дал?:визначення набору ознак;вид?лення ознак з ауд?озапис?в;виб?р алгоритму класиф?кац??;виб?р таксоном?? жанр?в - ??рарх?чна множина категор?й, в?дображуваного на музичну колекц?ю;класиф?кац?я обраним алгоритмом.Наявн?сть над?йних перев?рочних даних також ? ключовою вимогою для ефективного навчання класиф?катор?в музичних твор?в за жанрами. Так як м?ж аннотаторами-людьми (що виробляють класиф?кац?ю) може бути досягнуто т?льки обмежена згоду, то це обмеження неминуче зада? верхню межу ефективност? автоматично? класиф?кац?? жанр?в. Окрем? люди можуть не т?льки по-р?зному класиф?кувати окрему ауд?озапис, а й мати уявлення про б?льше або меншому наб?р жанр?в, з яких можна вибирати. Дуже мала к?льк?сть жанр?в ма? ч?тке визначення, а наявна ?нформац?я часто неоднозначна - деяк? жанри значно перекриваються м?ж собою, ? окрем? записи можуть по-р?зному одночасно належати до р?зних жанр?в. М?ж жанрами часто ?снують складн? вза?мини, деяк? жанри ширш?, в той час як ?нш? - вужч?.Досл?дження в област? автоматично? класиф?кац?? жанр?в можуть допомогти в розум?нн? того, як люди створюють музичн? жанри, як? механ?зми вони використовують для класиф?кац?? музики, ? яким чином усв?домлюються в?дм?нност? м?ж жанрами. Механ?зми, що використовуються людьми при класиф?кац?? жанр?в, слабо вивчен?, ? створення автоматичного класиф?катора могло б дати ц?нну ?нформац?ю в ц?й област?.Техн?ки, що використовуються в автоматичн?й класиф?кац?? жанр?в, можуть бути поширен? ? на ?нш? види анал?зу музики на основ? т?льки ?? зм?сту (клас задач музичного ?нформац?йного пошуку), а також ?нших завдань класиф?кац??, таких як вим?р ступеня под?бност?. Так? системи можуть бути використан? для класиф?кац?? музики, наприклад, на основ? стилю виконання, географ?чного походження або ?сторичного пер?оду; для пошуку ново? музики, яка могла б сподобатися користувачев?, на основ? вм?сту його колекц??. Основним завданням анал?зу ауд?о сигнал?в ? отримання ознак, що характеризують сигнал. У б?льшост? роб?т пропону?ться три набору ознак, як? використовуються ?для подання тембру, ритму ? висоти звуку. Наб?р тембральних ознак зб?га?ться з ознаками розп?знавання мови ? звук?в в ц?лому, однак два ?нших набору характеризують аспекти музики. В л?тератур? тембр визнача?ться як характеристика звуку, що дозволя? двом звукам з однаковою висотою ? гучн?стю звучати по-р?зному. Тембральн? ознаки часто називають низькор?вневими, так як зазвичай вони обчислюються на коротких в?др?зках сигналу (в?д 10 до 60 мс). Основною ?де?ю ?, як ? в б?льшост? анал?затор?в мелод?? або гармон??,використання функц??, яка опису? розпод?л висот на коротк?й д?лянц? композиц??; р?зниця поляга? в тому, що так? високор?внев? ознаки як тональн?сть, основна частота, посл?довн?сть акорд?в ? ?н. не використовуються, зам?сть цього на основ? функц?? обчислю?ться наб?р значень таких ознак, як ампл?туди ? розташування основних п?к?в, величини ?нтервал?в м?ж п?ками ? будь-як? ?нш? статистичн? описи розпод?лу функц?? висотного вм?сту. Точного визначення ритму не ?сну?. Багато автор?в розглядають ритм як ?дею певно? регулярност?. У б?льш загальному сенс?, слово ?ритм? може використовуватися для позначення вс?х часових аспект?в музичного твору. ?нту?тивно зрозум?ло, що ритм сл?д враховувати при розр?зненн? жанр?в, так як ритм?чний малюнок часто ? важливою особлив?стю того чи ?ншого жанру. Так? системи можуть бути ор??нтован? на використання в р?зних додатках: визначення темпу, в?дстеження удар?в, визначення метра (метр - малюнок р?вном?рного чергування сильних ? слабких долей) ? т. д. Сучасн? системи визначення ритму все ще мають ряд недол?к?в, тому в системах автоматично? класиф?кац?? за жанрами част?ше використову?ться низькор?вневий п?дх?д. Використовуючи той же п?дх?д, що й для низькор?вневих висотних ознак, можна витягти ознаки за допомогою функц??, яка оц?ню? пер?одичност? в д?апазон? сприйманих темп?в (зазвичай в?д 40 до 200 удар?в в хвилину).Описан? вище ознаки можуть вилучатись з усього ауд?осигналу. Однак у багатьох задачах класиф?кац?? використову?ться невеликий ауд?осегмент, припускаючи, що в?н може м?стити достатню к?льк?сть ?нформац?? для опису всього твору, так як у багатьох музичних жанрах спостер?гаються повтори музично? структури. Кр?м того, при використанн? невелико? частини сигналу можна значно зменшити обчислювальн? витрати. Часто використову?ться один ауд?осегмент на кожен тв?р - зазвичай це 30-секундний в?др?зок, взятий через 30 секунд п?сля початку композиц?? (для того, щоб не розглядати р?зн? вступи, як? можуть в?др?знятися в?д твору в ц?лому). В дан?й робот? ма?мо ?ншу класиф?кац?ю - за часовою школою. Техн?ки вилучення високор?вневих ознак з пол?фон?чних ауд?осигнал?в без обмежень ще не досягли досконалост?. Саме тому б?льш?сть п?дход?в нац?лене на моделювання тембру на основ? комб?нац?й низькор?вневих ознак. Тембр м?стить достатньо ?нформац?? для грубого визначення музичних жанр?в; ?Проводилось досл?дження з учасниками, що не мають або мають невелику п?дготовку. Вони були здатн? виконувати правильну класиф?кац?ю музику (по 10 жанрам) в 53% випадк?в п?сля прослуховування всього лише 250 м?л?секунд, ? в 72% випадк?в п?сля прослуховування 3 секунд запису. Це дозволя? припустити, що для визначення жанр?в не вимага?ться високор?вневого розум?ння музики, так як 250 м?л?секунд ?, в менш?й ступеня, 3 секунд недостатньо для визначення музично? структури. Однак ? б?льш песим?стична точка зору. За допомогою сучасного алгоритму визначення под?бност? тембру було проведено досл?дження на баз? даних з 20000 твор?в в 18 жанрах. Результати показали, що м?ж тембром ? жанрами ?сну? лише невелика кореляц?я, внасл?док чого можна припустити, що схеми класиф?кац??, заснован? т?льки на тембр?, обмежен? за сво?ю природою. Було припущено, що под?бн? схеми класиф?кац?? погано масштабуються як по к?лькост? твор?в, так ? за к?льк?стю жанр?в. Кр?м того, автори припустили, що звуковий сигнал може м?стити недостатньо ?нформац?? для опису жанру музичного твору, ? тому запропонували брати до уваги культурн? особливост?, як? можна добути в мереж? ?нтернет, витягуючи релевантн? ключов? слова, пов'язан? з музичними творами. Справд?, коли хто-небудь намага?ться визначити жанр т?льки на основ? ауд?озаписи, то в?н робить припущення, що жанр ? таким же внутр?шн?м атрибутом твору, як, наприклад, його темп, що знаходиться п?д питанням. 1.2 Опис алгоритм?в класиф?кац???сну? три основн? класи алгоритм?в класиф?кац??:експертн? системи;алгоритми навчання без учителяалгоритми навчання з вчителем.Експертн? системи визначають набори правил в явному вигляд?. Для завдання класиф?кац?? за жанрами це було б аналог?чно перерахуванню набору правил, як? б точно ? однозначно могли описати жанр. За наявними даними, для музичних жанр?в поки не було запропоновано моделей, заснованих на експертних системах. Такий п?дх?д, якщо в?н взагал? можливий, не п?дходить для завдання класиф?кац?? за жанрами через складн?сть як самого завдання, так ? об'?ктивного опису окремих п?джанр?в. Кр?м того, цей п?дх?д передбача? отримання над?йних високор?вневих опис?в з ауд?осигналу, а, як було сказано вище, в?дпов?дн? алгоритми ? недосконалими. Експертн? системи хоча ? м?стять глибок? знання про свою предметну область, але ? затратними в реал?зац??. З ростом числа правил, що створюються вручну, можуть проявлятися непередбачен? поб?чн? ефекти. Останн?м часом все б?льший ?нтерес виклика? п?дх?д на основ? машинного навчання. Хоча деяк? п?дходи прагнуть класиф?кувати музику в задан?й таксоном?? жанр?в, ?нша точка зору поляга? в кластеризац?? даних неконтрольованим способом (без вчителя) таким чином, що класиф?кац?я сама виника? з даних на основ? об'?ктивних заход?в под?бност?. Перевага поляга? в тому, що такий п?дх?д дозволя? уникнути обмежень ф?ксованою таксоном??, що призводять до неоднозначних. Кр?м того, деяк? твори можуть просто не вписуватися в задану таксоном?ю. При навчанн? без учителя ауд?озапис представля?ться набором ознак, а для пор?вняння твор?в м?ж собою використову?ться м?ра схожост?. Найб?льш простим способом вим?рювання в?дстан? м?ж двома векторами ?, наприклад, евкл?дова в?дстань або косинусное в?дстань. Однак так? метрики мають сенс, т?льки якщо вектора ознак не зм?нюються в час?. ?накше два суб'?ктивно схожих твори можуть виявитися в?ддаленими одна в?д одно? за результатами вим?рювань, якщо схож? значення ознак зрушен? в час?. Для побудови стац?онарного уявлення часових ряд?в вектор?в ознак зазвичай буду?ться статистична модель розпод?лу ознак, а в?дстань пот?м використову?ться для безпосереднього пор?вняння моделей. Типовими моделями ? гаусов? модел? ? сум?ш? гауссовских моделей(GMMs). Природним способом оц?нки в?ддаленост? двох ?мов?рн?сних розпод?л?в ? в?дстань Кульбака-Лейблера, або в?дносна ентроп?я, однак для сум?шей гауссовских моделей цей спос?б не п?дходить. Альтернативн? заходи включають семпл?нг (Sampling), EMD-в?дстань (Earth's Mover distance) ? апроксимац?ю асимптотического правдопод?бност? (Asymptotic Likelihood Approximation). На в?дм?ну в?д б?льшост? класичних задач розп?знавання образ?в, класиф?куються дан? можуть являти собою тимчасов? ряди, тому можна використовувати прихован? марковск? модел? (HMM) для опису в?дносин м?ж ознаками з плином часу.Для кластеризац?? можна використовувати так? алгоритми:1. Метод k-середн?х (k-means) ? одним з найпрост?ших ? найб?льш популярних алгоритм?в кластеризац??. В?н дозволя? розбити безл?ч вектор?в на K неперес?чних п?дмножин. Одним з недол?к?в ? необх?дн?сть заздалег?дь знати к?льк?сть кластер?в (K).2. Алгоритм агломеративного ??рарх?чно? кластеризац?? почина? з N кластер?в-одинак?в (де N - число елемент?в в баз? даних), а пот?м форму? кластери посл?довним злиттям.3. Самоорган?зован? карти (SOM) використовуються для кластеризац?? даних ? ?х орган?зац?? в двовим?рному простор? таким чином, що схож? вектори ознак групуються один з одним. Самоорган?зован? карти - це нейронн? мереж? з навчанням без учителя, що в?дображають багатовим?рн? вх?дн? дан? на вих?дн? простору б?льш низько? розм?рност?, збер?гаючи при цьому тополог?чн? в?дносини м?ж елементами вх?дних даних, наск?льки це можливо. Навчання без вчителя добре п?дходить для реал?зац?? систем, що визначають схож?сть музичних твор?в в ц?лому, але не конкретно для завдання класиф?кац?? музичних жанр?в, так як в цьому випадку одержуван? категор?? можуть бути незм?стовними для користувача. Хоча ц? категор?? можуть бути б?льш точними, н?ж жанри, як? визначаються людьми, система, яка використову? св?й власний наб?р жанрових категор?й, буде мати обмежену корисн?сть для користувач?в, що бажають використовувати знайом? ? зрозум?л? для них жанри.Методи навчання з учителем вивчен? б?льш детально ? намагаються в?добразити базу музичних твор?в на задану таксономию жанр?в з використанням алгоритм?в машинного навчання. Система спочатку навча?ться на якихось даних, розм?чених вручну, а пот?м використову?ться для класиф?кац?? нерозм?чену даних. При навчанн? з учителем, на в?дм?ну в?д експертних систем, не потр?бно явно описувати музичн? жанри: класиф?катор сам спробу? автоматично сформувати зв'язок м?ж ознаками навчально? множини ? в?дпов?дними категор?ями. Також висв?тлимо список коротких опис?в алгоритм?в навчання з учителем з прикладами використання в досл?дженнях, що не претенду? на повноту, але м?стить алгоритми, використовуван? саме в контекст? класиф?кац?? музичних твор?в за жанрами:1. Метод k найближчих сус?д?в (kNN) - для заданого вектора ознак з ц?льового безл?ч? (для елемент?в якого необх?дно визначити жанр) вибира?ться k найближчих вектор?в з навчально? множини (в?дпов?дно до яко?сь м?рою в?дстан?), ? ц?льовим вектору привласню?ться м?тка класу з найб?льшим числом входжень з k сус?д?в; 2.Сум?ш? гауссовских моделей (GMMs) - для кожного класу передбача?ться ?снування функц?? щ?льност? ймов?рност?, яка виража?ться у вигляд? сум?ш? набору багатовим?рних нормальних (гауссовских) розпод?л?в. Для оц?нки параметр?в кожного компонента використову?ться ?теративний алгоритм максим?зац?? оч?кування (EM-алгоритм);3. Прихован? марк?вськ? модел? (HMM) - широко використовуються в розп?знаванн? мови через можлив?сть обробки часових ряд?в даних. Прихована марковська модель явля? собою дв?ч? стохастический процес, що склада?ться з двох випадкових процес?в: основного ? прихованого (неспостережуваного);4.Л?н?йний дискрим?нантний анал?з (LDA) - основною ?де?ю ? знаходження л?н?йного перетворення, найкращим чином розд?ля? класи, ? класиф?кац?я в трансформованому простор? на основ? яко?сь метрики, наприклад, в?дстан? Евкл?да;5. Метод опорних вектор?в (SVM) - наб?р схожих алгоритм?в виду ?навчання з учителем ?. Основна ?дея методу опорних вектор?в - переклад вих?дних вектор?в в прост?р б?льш високо? розм?рност? ? пошук розд?ля? гиперплоскости з максимальним зазором в цьому простор?. Дв? паралельн? г?перплощини будуються по обидва боки г?перплощини, що розд?ля? класи. Розд?ляючою ?г?перплоск?стю буде г?перплоскость, що максим?зу? в?дстань м?ж двома паралельними г?перплощинами. Алгоритм працю? в припущенн?, що чим б?льше р?зниця або в?дстань м?ж цими паралельними г?перплощинами, тим менше буде середня помилка класиф?катора;6. Штучна нейронна мережа (ANN) - склада?ться з велико? к?лькост? обробних елемент?в (нейрон?в), здатна вир?шувати певн? завдання. ШНМ ?рунту?ться на сукупност? з'?днаних вузл?в, що називають?штучними нейронами?(аналог?чно до б?олог?чних?нейрон?в?у?головному мозку?тварин). Кожне з'?днання (аналог?чне?синапсов?) м?ж штучними нейронами може передавати сигнал в?д одного до ?ншого. Штучний нейрон, що отриму? сигнал, може обробляти його, й пот?м сигнал?зувати штучним нейронам, при?днаним до нього. В поширених реал?зац?ях ШНМ сигнал на з'?днанн? м?ж штучними нейронами ? д?йсним числом, а вих?д кожного штучного нейрону обчислю?ться нел?н?йною функц??ю суми його вход?в. Штучн? нейрони та з'?днання зазвичай мають?вагу, яка п?длаштову?ться в переб?гу навчання. Вага зб?льшу? або зменшу? силу сигналу на з'?днанн?. Штучн? нейрони можуть мати такий пор?г, що сигнал надсила?ться лише якщо сукупний сигнал перетина? цей пор?г. Штучн? нейрони зазвичай орган?зовано в шари. Р?зн? шари можуть виконувати р?зн? види перетворень сво?х вход?в. Сигнали проходять в?д першого (входового) до останнього (виходового) шару, можливо, п?сля проходження шарами дек?лька раз?в.Первинною метою п?дходу ШНМ було розв'язання задач таким же способом, як це робив би?людський мозок. З часом увага зосередилася на в?дпов?дност? певним розумовим зд?бностям, ведучи до в?дхилень в?д б?олог??. ШНМ використовували в ряд? р?зноман?тних задач, включно з?комп'ютерним баченням,?розп?знаванням мовлення,?машинним перекладом,?соц?ально-мережевим?ф?льтруванням, грою в наст?льн? та в?део?гри, та медичним д?агностуванням.Також для вир?шення задач? автоматично? класиф?кац?? музичних твор?в за жанрами використовуються алгоритми, заснован? на деревах прийняття р?шення. Дерево прийняття р?шень - спос?б подання правил в ??рарх?чн?й, посл?довно? структур?, де кожному об'?кту в?дпов?да? ?диний вузол, да? р?шення. Дерево склада?ться з листя, що вказують на клас, ? вузл?в. Для класиф?кац?? об'?кт?в, що не ув?йшли в навчальну множину, зд?йсню?ться пошук, що почина?ться з кореня, ? трива?, поки не буде виявлений клас, в?дпов?дний об'?кту. Висновки до розд?лу 1В даному розд?л? було проведено анал?з вимог до створювано? системи, розглянуто основн? алгоритми класиф?кац??, проведено ?х анал?з та пор?вняння. Також було розглянуто предметну область задач?.РОЗД?Л 2МАТЕМАТИЧН? ОСНОВИ РОБОТИ2.1 Застосування нейронних мереж в задачах класиф?кац?? Людський мозок не може виконувати швидко велику к?льк?сть математичних операц?й разом. Нав?ть найрост?ш? автоматизован? системи, як калькулятор, ? б?льш ?ефективними, н?ж людина. Проте, на в?дм?ну в?д комп’ютер?в, людина швидко проходить адаптац?ю, розум?ючи ? анал?зуючи зм?ну середовища та нов? умови. Ми можемо вид?лити знайоме обличчя в натовп?, маючи певн? б?олог?чн? знання сказати, що за дерево бачимо перед собою або розум?ти мову свого опонента п?д час д?алогу нав?ть в шумному прим?щенн?. Машинам так? задач? даються важко.Ми вм??мо анал?зувати, мислити, виконувати складн? операц?? завдяки побудов? нашого мозку, а саме - завдяки нейронам. Нейрони виконують транзитивну функц?ю, передаючи один одному х?м?чн? сигнали, використовуючи електричн? ?мпульси. Когн?тивне моделювання та штучний ?нтелект взяли за основу роботу людського мозку та ?м?тують властивост? б?олог?чних нейронних мереж. Штучна нейронна мережа - це система по?днаних м?ж собою ? вза?мод?ючих простих процесор?в (штучних нейрон?в). Ц? нейрони в б?льшост? досить прост?, особливо в пор?внянн? з ПК. Кожна частинка працю? т?льки з сигналами, як? вона отриму? ? як? переда? ?ншим частинам та будучи по?днан? в ?дину мережу, вони здатн? виконувати складн? завдання. Робота нейронно? мереж? ? такою: на входи процесор?в (нейрон?в надходять сигнали, що в результат? обробля? суматор. На цьому етап? враховуються ваги, тобто значим?сть каждого з вход?в. На наступному кроц? ц? сигнали передаються на входи ?нших нейрон?в. Вага кожного з цих зв’язк?в може бути позитивною або негативною. Позитивн? зв’язки - збуджуюч?, негативн? - гальм?вн?. Саме завдяки ним визнача?ться пам’ять та повед?нка нейронно? мереж?. Як можна побачити, принцип дуже схожий на роботу мозку. Проте, шоб штучна нейронна мережа мала змогу виконувати складн? операц?? та завдання, ?? треба навчити. 2.1.1 Навчання штучно? нейронно? мереж?Штучн? нейронн? мереж? не програмуються в звичайному розум?нн? цього слова, вони навчаються. Штучн? нейронн? мереж? (ANN) були натхненн? тим, що насправд? в?дбува?ться у вашому мозку. ? хоча ц? аналог?? досить в?льн?, ШНМ мають дек?лька под?бностей з? сво?м б?олог?чним ?батьком?. Вони складаються з деяко? к?лькост? нейрон?в. Тож давайте поглянемо на один нейрон на рисунку 2.1.Рисунок 2.1- Модель нейронаМи розглянемо трохи модиф?ковану верс?ю найпрост?шо? модел? нейрона, запропоновану Френком Розенблатом у 1957 роц?, який назива?ться ?Перцептрон?.Так що ж таке нейрон? Це математична функц?я. В?н прийма? дек?лька чисел як вх?дн? дан? (безл?ч). Нейрон, який представлено вище, прийма? два числа як вх?дн? дан?. Кожен вх?дний номер ми позначимо як x?, де k означа? ?ндекс вх?дних даних. Для кожного входу x? нейрон признача? ?нше число w?. Вектор, що склада?ться з цих чисел w?, назива?ться вектором ваг. Ц? ваги роблять кожен нейрон ун?кальним. Вони ф?ксуються п?д час тестування, але п?д час навчання це цифри, як? ми збира?мося зм?нити, щоб налаштувати нашу мережу. Це л?н?йна комб?нац?я ваг ? вход?в з деякою нел?н?йною функц??ю над нею. Наведена вище формула - це л?н?йна комб?нац?я. Ми збира?мося брати вх?дн? дан?, помножити ?х на в?дпов?дн? ваги ? п?дсумувати вс? разом. Результатом цього ? число. Остання частина поляга? в тому, щоб на не? застосувати якусь нел?н?йну функц?ю. Найб?льш популярна нел?н?йн?сть, яка використову?ться сьогодн?, насправд? нав?ть прост?ша, н?ж л?н?йна функц?я, що назива?ться Rectified Linear Unit (ReLU). Формула така: ReLU(x) = max (x, 0)Якщо наш номер перевищу? нуль, то ми беремо цей номер таким, яким в?н ?, якщо в?н менше нуля, тод? зам?сть цього будемо брати нуль. Ця нел?н?йна функц?я, застосована на верхньому л?н?йному в нейрон?, назива?ться функц??ю активац??. П?дсумовуючи, нейрон - це функц?я, яка прийма? деяке ф?ксоване число вход?в ? виводить одне число - його активац?ю. Наша остаточна формула для нейрона f(x1,x2) = max (0, w1x1+w2x2)Нейронна мережа також ? математичною функц??ю. В?н визнача?ться зв'язкою нейрон?в, пов'язаних один з одним. ? коли я кажу про зв'язок, я маю на уваз?, що вих?д з одного нейрона використову?ться як вх?д до ?нших нейрон?в, як на рис.2.2. Рисунок 2.2 - Мережа з 5 нейрон?вМережа, визначена вище, ма? 5 нейрон?в. Як можна бачити, ц? нейрони укладаються в 3 повн?стю пов'язаних шару, тобто кожен нейрон з одного шару з'?днаний з кожним нейроном з наступного шару. Ск?льки шар?в у вас ? в мереж?, ск?льки нейрон?в в кожному шар? ? як вони пов'язан? - вс? ц? вар?анти визначають арх?тектуру мереж?. Перший шар, що склада?ться з 2 нейрон?в, назива?ться вх?дним шаром. Нейрон у цьому шар? насправд? не ? нейроном, як я ?х описала ран?ше, в тому сенс?, що вони не виконують н?яких обчислень. Вони т?льки там для позначення входу в мережу. Необх?дн?сть нел?н?йност? виплива? з того, що ми з'?дну?мо нейрони ? сама л?н?йна функц?я поверх л?н?йно? функц?? ? л?н?йною функц??ю. Отже, якщо в кожному нейрон? не застосову?ться нел?н?йна функц?я, нейронна мережа буде л?н?йною функц??ю, отже, не б?льш потужною, н?ж ?диний нейрон. Останн?, що сл?д зазначити, поляга? в тому, що ми, як правило, хочемо, щоб число, ?яке виходить з нейронно? мереж?, було в д?апазон? в?д 0 до 1, так що ми розгляда?мо ?? як ймов?рн?сть.В результат? ми ма?мо якусь функц?ю, яка прийма? деяк? числа ? виводить ?нше число м?ж 0 ? 1. Насправд? не так важливо, яку формула ма? ця функц?я, що важливо, що ми ма?мо складну нел?н?йну функц?ю, параметризовану деякими ваги в тому сенс?, що ми можемо зм?нити цю функц?ю, зм?нюючи ваги. Функц?я втрати - це функц?я, яка говорить нам, наск?льки добре викоку? роботу наша нейронна мережа для певного завдання. ?нту?тивно зрозум?лий спос?б зробити це, взяти кожен приклад навчання, пропустити через мережу, щоб отримати номер, в?дняти його в?д фактичного числа, яке ми хот?ли отримати, ? зр?вняти його (тому що негативн? числа так само погано, як позитивн?).де ???????????y - число, яке ми хочемо отримати в?д мереж?, ??????? ?????????y- число, яке ми насправд? отримали, пропустивши наш приклад через мережу.Коли ми почина?мо роботу ?нашо? нейронно? мереж?, ми ?н?ц?ал?зу?мо наш? ваги випадково. Очевидно, це не дасть вам дуже хороших результат?в. У процес? навчання ми хочемо почати з погано працюючо? ? зак?нчити з мережею з високою точн?стю. З точки зору функц?? втрати, ми хочемо, щоб наша функц?я втрати була значно нижчою в к?нц? навчання. Удосконалення мереж? можливе, оск?льки ми можемо зм?нити ?? функц?ю, регулюючи ваги. Ми хочемо знайти ?ншу функц?ю, яка працю? краще, н?ж перша.Проблема навчання екв?валентна проблем? м?н?м?зац?? функц?? втрат. Нав?що м?н?м?зувати втрати зам?сть максим?зац??? Виявля?ться втрата набагато прост?ше для оптим?зац?? функц??.? багато алгоритм?в, як? оптим?зують функц??. Ц? алгоритми можуть базуватися на град??нт? чи н?, в тому сенс?, що вони використовують не т?льки ?нформац?ю, надану функц??ю, але ? ?? град??нт. ??В метод?, який я буду описувати ми використову?мо пох?дну. Це означа?: наск?льки велика зм?на нашо? функц?? (л?вий член) приблизно дор?вню? пох?дн?й ц??? функц?? в?дносно деяко? зм?нно? x, помножено? на те, наск?льки ми зм?нили цю зм?нну. Це наближення буде точним, коли ми зробимо крок неск?нченно малий, ? це дуже важлива концепц?я пох?дно?. Повертаючись до нашо? просто? функц?? f (x) = x, ми сказали, що наша пох?дна дор?вню? 1, що означа?, що якщо взяти деякий крок епс?лон в позитивному напрямку, то функц?ональн? виходи зм?няться на 1, помножен? на наш крок епсилон. Це д?йсно легко перев?рити, що це правило. Насправд? це нав?ть не наближення. ?Тому що наша пох?дна однакова для кожного значення x. Це не стосу?ться б?льшост? функц?й. Давайте розглянемо трохи б?льш складну функц?ю f (x) = x?.З правил обчислення ми зна?мо, що пох?дна в?д ц??? функц?? ? 2x. Легко перев?рити, що зараз, якщо ми почнемо з деякого значення x ? зробимо деякий крок epsilon, то наск?льки зм?ню?ться наша функц?я не буде точно р?вною формул?, наведен?й вище.Тепер град??нт ? вектором часткових пох?дних, елементи якого м?стять пох?дн? в?дносно деяко? зм?нно?, в?д яко? залежить функц?я. З простими функц?ями, як? ми розгляда?мо зараз, цей вектор м?стить лише один елемент, оск?льки ми використову?мо лише функц?ю, яка прийма? один вх?д. З б?льш складними функц?ями (як наша функц?я втрати), град??нт буде м?стити пох?дн? по кожн?й зм?нно?, яку ми хочемоЯк ми можемо використовувати цю ?нформац?ю, яку нам надають пох?дн?, щоб м?н?м?зувати якусь функц?ю? Повернемося до нашо? функц?? f (x) = x?. Очевидно, що м?н?мум ц??? функц?? знаходиться в точц? x = 0, але як це зна? комп'ютер? Припустимо, ми почина?мо з деякого випадкового значення x ? це значення дор?вню? 2. Пох?дна функц?? в тому, що в x = 2 дор?вню? 4. Що означа?, що ми зробимо крок у позитивному напрямку, наша функц?я буде зм?нюватися пропорц?йно до 4. Так воно ? зб?льшиться. Зам?сть цього ми хочемо м?н?м?зувати нашу функц?ю, тому ми можемо зробити крок у протилежному напрямку, негативний, щоб бути впевненим, що наша функц?я зменшиться, принаймн? трохи. Наск?льки великий крок ми можемо зробити? Наша пох?дна лише гаранту?, що функц?я зменшиться, якщо зробити неск?нченно малий крок. Ми не можемо цього зробити. Як правило, ми хочемо контролювати, наск?льки великий крок ми робите з певним г?пер-параметром. Цей г?пер-параметр назива?ться швидк?стю навчання. Давайте тепер побачимо, що станеться, якщо ми почнемо з точки x = -2. Пох?дна тепер дор?вню? -4, що означа?, що якщо зробити невеликий крок у позитивному напрямку, наша функц?я буде зм?нюватися пропорц?йно до -4, таким чином, вона зменшиться. Це саме те, чого ми хочемо. Коли x> 0, наша пох?дна б?льше нуля ? нам треба йти в негативному напрямку, коли x <0, пох?дна менше нуля, нам треба йти в позитивному напрямку. Ми завжди повинн? зробити крок у напрямку, протилежному пох?дн?й. Застосу?мо ту ж ?дею до град??нта. Град??нт - вектор, який вказу? на певний напрямок у простор?. Це насправд? вказу? на напрямок найшвидшого зб?льшення функц??. Оск?льки ми хочемо м?н?м?зувати нашу функц?ю, ми зробимо крок у протилежному напрямку град??нта. У нейронн?й мереж? ми дума?мо про входи x, а y - як про ф?ксован? числа. Зм?нна, щодо яко? ми збира?мося брати наш? пох?дн?, ? вагою w, оск?льки ц? ц?нност? ми хочемо зм?нити, щоб покращити нашу мережу. Якщо ми обчислимо град??нт функц?? втрат ? зробимо невелик? кроки в протилежному напрямку град??нта, то наша втрата буде поступово зменшуватися, поки вона не сходиться до деяких локальних м?н?мум?в. Цей алгоритм назива?ться спуском град??нта. Правило для оновлення ваг на кожн?й ?терац?? спуску град??нта ? наступним:де ?????lr - швидк?сть навчання. Тут можна контролювати, наск?льки великим кроком ми викону?мо кожну ?терац?ю. Це найважлив?ший г?пер-параметр для налаштування при навчанн? нейронних мереж. Якщо ми вибира?мо надто велике навчання, ми зробимо кроки, як? ? занадто великими, ? "перестрибнуть" м?н?мум. Якщо ?ми обира?мо швидк?сть навчання, яка ? занадто малою, може знадобитися багато часу для зближення з деякими м?сцевими м?н?мумами. Люди розробили деяк? дуже хорош? методи пошуку оптимально? швидкост? навчання. З обчислення в?домо, що пох?дна суми ? сумою пох?дних. Тому для того, щоб обчислити пох?дн? втрат, нам потр?бно пройти через кожен приклад нашого набору даних. Було б дуже неефективно робити кожну ?терац?ю град??нтного спуску, оск?льки кожна ?терац?я алгоритму лише зб?льшу? втрати на деякому кроц?. Для вир?шення ц??? проблеми ?сну? ?нший алгоритм, який назива?ться м?н?-пакетний спуск град??нта. М?н?-пакетний град??нтний спуск - це р?зновид алгоритму град??нтного спуску, який розбива? навчальний наб?р даних на невелик? парт??, як? використовуються для розрахунку помилки модел? ? поновлення коеф?ц??нт?в модел?.Реал?зац?? можуть вибрати п?дсумовування град??нта по м?н?-пакету або взяти середн? значення град??нта, що ще б?льше зменшу? дисперс?ю град??нта.М?н?-град??нтний спуск прагне знайти баланс м?ж над?йн?стю стохастичного град??нтного спуску ? ефективн?стю пакетного град??нтного спуску. Це найб?льш поширена реал?зац?я град??нтного спуску, яка використову?ться в област? глибокого навчання.2.2. Згортков? нейронн? мереж? Згорткова нейронна мережа - це клас штучних нейронних мереж, який використову? згортков? шари для ф?льтрац?? вх?дних даних для отримання корисно? ?нформац??. Операц?я згортки включа? в себе об'?днання вх?дних даних (карта об'?кт?в) з ядром згортки (ф?льтр) для формування перетворено? карти об'?кт?в. Ф?льтри в шарах ?модиф?куються на основ? вивчених параметр?в, щоб витягти найб?льш корисну ?нформац?ю для конкретного завдання. Згортков? мереж? налаштовуються автоматично, щоб знайти кращу функц?ю в залежност? в?д завдання. Коли ми ма?мо однотипн? за формою об’?кти, система буде ?х розп?знавати за кольором, а не за формою, оск?льки вар?ативн?сть кольору в цьому випадку значно вища, н?ж вар?ативн?сть форми.Застосування згорткових нейронних мереж включають р?зн? системи обробки зображень (розп?знавання зображень, класиф?кац?я зображень, в?део-маркування, анал?з тексту) ? мови (розп?знавання мови, обробка природно? мови, класиф?кац?я тексту), а також сучасн? системи штучного ?нтелекту, так? як роботи, в?ртуальн? пом?чники ? автомоб?л? з автоматичним управл?нням [12]2.2.1.Компоненти згортково? нейронно? мереж?Згортков? мереж? складаються з вх?дного шару, вих?дного шару ? одного або дек?лькох прихованих шар?в. Згорткова мереж в?др?зня?ться в?д звичайно? нейронно? мереж? тим, що нейрони в ?? шарах розташован? в трьох вим?рах (ширина, висота ? глибина). Це дозволя? CNN перетворювати вх?дний обсяг в трьох вим?рах у вих?дн? дан?. Прихован? шари являють собою по?днання шар?в згортки, шар?в об'?днання, шар?в нормал?зац?? ? повн?стю пов'язаних шар?в. CNN використовують к?лька шар?в пов?домлень для ф?льтрац?? вх?дних обсяг?в до б?льш високих р?вн?в абстракц??.На сьогодн? CNN використовують початков? модул?, як? використовують 1 × 1 згортков? ядра, щоб ще б?льше зменшити споживання пам'ят?, в той же час забезпечуючи б?льш ефективн? обчислення (а, отже, ? навчання). Це робить CNN придатними для ряду додатк?в машинного навчання.Рисунок 2.2 - модель згортково? нейронно? мереж?2.2.2 Функц?я активац?? Функц?я активац?? в нейронно? мереж? застосову? нел?н?йне перетворення до зважених вх?дних даних. Популярною функц??ю активац?? для CNN ? ReLu або випрямлена л?н?йна функц?я, яка обнуля? негативн? входи. Початков? модул? в CNN дозволяють прискорювати обчислення. Це робиться з використанням згорток 1 × 1 з невеликим розм?ром карти об'?кт?в, наприклад, 192 карти об'?кт?в розм?ром 28 × 28 можна зменшити до 64 карт об'?кт?в 28 × 28 за допомогою 64 згорток 1 × 1. Через зменшеного розм?ру, ц? згортки 1 × 1 можуть супроводжуватися б?льшими “пакунками” розм?ром 3 × 3 ? 5 × 5. На додаток до пакунку 1 × 1, максимальне об'?днання може також використовуватися для зменшення розм?рност?. У вих?дних даних початкового модуля все велик? згортки об'?днуються у велику карту об'?кт?в, яка пот?м пода?ться на наступний р?вень (або початковий модуль).Пулл?нг - це процедура, яка зменшу? вх?дн? дан? по певн?й област? до ?диного значення. Пулл?нг забезпечу? базову ?нвар?антн?сть поворот?в ? переклад?в ? покращу? можлив?сть виявлення об'?кт?в згорткових мереж. Наприклад, особа на зображенн?, яка не знаходиться в центр? зображення, але злегка зм?щена, все ще може бути виявлена ??згортковими ф?льтрами, оск?льки ?нформац?я переноситься в потр?бне м?сце за допомогою операц?? пулу. Чим б?льший розм?р област? об'?днання, тим б?льше ?нформац?? ущ?льню?ться, що призводить до невеликих мереж, як? легше п?дходять до пам'ят? GPU. Однак, якщо область об'?днання об'?кт?в занадто велика, викида?ться занадто багато ?нформац??, а прогнозована продуктивн?сть зменшу?ться.2.3.3 Навчання та висновки згортково? ШНМЯк ? багатошаров? персептрони ? рекурентн? нейронн? мереж?, згортков? нейронн? мереж? також можуть бути п?дготовлен? з використанням метод?в оптим?зац?? на основ? град??нта. Для оптим?зац?? параметр?в нейронно? мереж? можуть бути використан? алгоритми стохастичного, пакетного або м?н?-сер?йного град??нтного спуску. П?сля того, як CNN пройшла навчання, вона може бути використана для висновку для точного прогнозування виход?в для даного входу.2.3 Мел-частотн? кепстральн? коеф?ц??нти Завдяки мел-кепстральнихм коеф?ц??нтам (MFCC), з'явилася можлив?сть в?дкинути несутт?в? для розп?знавання компоненти сигналу, значно знижуючи розм?рн?сть ознак. Мел-частотн? кепстральн? коеф?ц??нти (MFCCs) широко використовуються в автоматичному розп?знаванн? мови та динам?к?в. Вони були введен? Дев?сом ? Мермелштейном у 1980-х роках ? з тих п?р були найсучасн?шими. Звуковий сигнал пост?йно зм?ню?ться, тому для спрощення речей ми припуска?мо, що на коротких часових шкалах звуковий сигнал сильно не зм?ню?ться (коли ми говоримо, що в?н не зм?ню?ться, ми ма?мо на уваз? статистично, тобто статистично стац?онарн?, очевидно, що зразки пост?йно зм?нюються нав?ть коротких часових шкал). Ось чому ми форму?мо сигнал в 20-40мс. Якщо кадр набагато коротший, ми не ма?мо достатньо зразк?в, щоб отримати над?йну спектральну оц?нку, якщо вона довша, сигнал зм?ню?ться занадто сильно по всьому кадру.Наступним кроком ? ??розрахунок спектру потужност? кожного кадру. Це мотиву?ться людською раковиною (органом у вус?), який в?бру? в р?зних м?сцях залежно в?д частоти вх?дних звук?в. Залежно в?д м?сця розташування в раковин?, р?зн? нерви ??нформують мозок про наявн?сть певних частот. Наша оц?нка пер?одограми викону? под?бну роботу для нас, визначаючи, як? частоти присутн? в кадр?.Спектральна оц?нка пер?одограми все ще м?стить багато ?нформац??, яка не потр?бна для автоматичного розп?знавання мовлення (ASR). Зокрема, не можна почути р?зницю м?ж двома близько розташованими частотами. Цей ефект ста? б?льш вираженим при зб?льшенн? частот. З ц??? причини ми беремо згустки пер?одограмних блок?в ? п?дсумову?мо ?х, щоб отримати уявлення про те, ск?льки енерг?? ?сну? в р?зних частотних областях. Це викону?ться нашим ф?льтром Мел: перший ф?льтр дуже вузький ? да? вказ?вку, ск?льки енерг?? ?сну? б?ля 0 Гц. Оск?льки частоти стають вищими, наш? ф?льтри стають ширшими, оск?льки ми ста?мо менш звертати увагу на вар?ац??. Нас ц?кавить лише те, ск?льки енерг?? ? на кожному м?сц?. Шкала Mel дозволя? нам розм?стити наш? ф?льтров? блоки ? зрозум?ти,наск?льки широкими вони будуть. Як т?льки ми ма?мо блоки енерг?? ф?льтр?в, ми ??х логарифму?мо. Це також мотиву?ться людським слухом: ми не чу?мо гучност? в л?н?йному масштаб?. Взагал?, щоб подво?ти обсяг звуку, ми повинн? вкласти в нього 8 раз?в б?льше енерг??. Це означа?, що велик? в?дхилення в енерг?? можуть звучати не так вже й ?накше, якщо звук спочатку дуже голоснийОстанн?м кроком ? ??обчислення DCT енерг?й блок?в. ?сну? 2 основн? причини цього. Оск?льки наш? банки ф?льтр?в перекриваються, енерг?? блоку ф?льтр?в ц?лком корелюють один з одним. DCT декорелю? енерг??, що означа?, що матриц? д?агонально? ковар?ац?? можуть бути використан? для моделювання ознак, наприклад. класиф?катор HMM. Формула перетворення з частотного ряду на шкалу Mel: ??????????????????????????????Кадр сигналу в кадр? 20-40 мс. 25 мс ? стандартним. Це означа?, що довжина кадру для сигналу 16 кГц становить 0,025 * 16000 = 400 зразк?в. Крок кадру зазвичай 10 мс (160 зразк?в), та м?стить деяке перекриття кадр?в. Наступн? кроки застосовуються до кожного окремого кадру, для кожного кадру витягу?ться один наб?р з 12 коеф?ц??нт?в MFCC. П?сля того, як в?н обрамлений, ми ма?мо , де n колива?ться в межах 1-400 (якщо наш? кадри 400 зразк?в) ? колива?ться в межах к?лькост? кадр?в. Коли ми обчислю?мо DFT , то отрима?мо - де i - номер кадру, що в?дпов?да? певн?й област?. Пот?м спектр потужност? кадру .DFT : ,Це назива?ться пер?одограмною оц?нкою потужност? спектра. В?зьмемо абсолютне значення комплексного перетворення Фур'? ? квадратику?мо результат. Як правило, ми викону?мо FFT на 512 пункт?в ? збер?га?мо лише перш? 257 коеф?ц??нт?в. ?Mal-spaced filermank: Це наб?р з 20-40 (26 стандартних) трикутних ф?льтр?в, як? ми застосу?мо до спектрально? оц?нки енерг?? пер?одограми. Наш ф?льтр надходить у вигляд? 26 вектор?в довжиною 257. Кожен вектор в основному нулевий, але не ? нулем для певно? д?лянки спектру. Для обчислення енерг?? блоку ми помножимо кожен блок на потужн?сть, а пот?м дода?мо коеф?ц??нти. Як т?льки це буде зроблено, нам залишилося 26 номер?в, як? вказують на те, ск?льки енерг?? було в кожному блоц?. Приклад на рис. 2.3. ??Рисунок 2.3 - MFCCВ?зьмемо log кожно? з 26 енерг?й. Це залиша? нас з 26 ?“енерг?ями”Пот?м (DCT з енерг?й 26 ф?льтр?в ф?льтр?в, щоб дати 26 коеф?ц??нт?в cepstral. Для ASR збер?гаються лише нижч? 12-13 з 26 коеф?ц??нт?в.Отриман? функц?? (12 номер?в для кожного кадру) називаются мел-частотними кепстральними коеф?ц??нтами Висновки до розд?лу 2 У другому розд?л? було розглянуто основн? засоби обробки ауд?осигнал?в, а саме MFCC. Для виконання етапу класиф?кац?? даних було розглянуто так? засоби класиф?кац??, як нейронн? мереж? (в тому числ? детально було описано принцип роботи згорткових нейронних мереж).Також у розд?л? наведено алгоритм розв’язку задач?, який реал?зову?ться в дан?й робот?. РОЗД?Л 3ПРОГРАМНИЙ ПРОДУКТ3.1 Опис основних систем та пакет?в обробки даних3.1.1 Mathematica Система комп'ютерно? алгебри Wolfram Mathematica була розроблена компан??ю Wolfram Research. Вона м?стить безл?ч функц?й, як для анал?тичних перетворень, так ? для чисельних розрахунк?в. Кр?м того, програма п?дтриму? роботу з граф?кою ? звуком, включаючи побудову двох-? тривим?рних граф?к?в функц?й, малювання дов?льних геометричних ф?гур, ?мпорт ? експорт зображень ? звуку. Кр?м того, Mathematica це ?нтерпретована мова функц?онального програмування. Mathematica п?дтриму? ? процедурне програмування ?з застосуванням стандартних оператор?в управл?ння виконанням програми (цикли ? умовн? переходи), ? об'?ктно-ор??нтований п?дх?д. Mathematica допуска? в?дкладен? обчислення. Також в систему Mathematica можна задавати правила роботи з тими чи ?ншими виразами. Основа Mathematica гнучкий символьний мову, що п?дтриму? безл?ч парадигм програмування, просунут? ?нструменти налагодження, автоматичне проектування ?нтерфейсу ? багато ?ншого. В?н спрощу? весь процес розробки в?д дизайну до впровадження. Mathematica все дан?, програми, формули, граф?ки, документи представля? у вигляд? символьних вираз?в. Wolfram Mathematica це програмне забезпечення, не т?льки для математичних обчислень, це набагато б?льше: в?д моделювання та симуляц??, в?зуал?зац??, документац??, до створення веб-сайт?в. Wolfram Mathematica ма? можлив?сть зд?йснювати виклики функц?й ? приймати виклики з C, .NET, Java ? ?нших мов, генерувати C код, комп?лювати автономн? б?бл?отеки ? виконуван? файли. Комплексний анал?з ситуац??, що склалася показав, що ?сну? в общем-то в?с?м основних причин роблять Wolfram Mathematica вельми неефективним ?нструментом вир?шення завдань Machine Learning ? анал?зу даних великого обсягу (не плутати з Big Data). Причому ц? причини справедлив? ? для верс?? 11.0.0, що вийшла в серпн? 2016 роки (останн?й рел?з на момент написання дано? статт?). Дал?, ми ц? причини наводимо в порядку критичност? для наших проект?в:1. Неефективне управл?ння пам'яттю. Вс? масиви або int 64, або double. Функц?я ByteArray не ряту? ситуац?ю з двох причин. По-перше, вона п?дтриму? т?льки unsigned int 8. По-друге, створення масиву ? доступ до даних йде все одно через його розпакування в int 64.У свою чергу Python, при використанн? масив?в numpy або структур pandas, дозволя? досить гнучко п?длаштовуватися п?д призначен? для користувача типи даних ? тим самим ефективно управляти пам'яттю, банально ?? економити.2. ?Проблеми з експортом / ?мпортом даних. 3. Неефективна орган?зац?я Shared Array при паралельних обчисленнях на комп'ютерах з багатоядерними процесами. Висок? тимчасов? накладн? витрати на синхрон?зац?ю ? значний оверхед по пам'ят?, часто зводять нан?вець позитивний ефект в?д розпаралелювання.4. Слабк?сть функц?оналу. Йде екстенсивне розширення функц?оналу вшир (зб?льшення к?лькост? покриваються предметних областей), але не вглиб (детальне опрацювання напрямк?в). Це призводить до неможливост? вир?шення специф?чних завдань допомогою звичайних метод?в тестування.5. Зайва ?нтеграц?я з серверним функц?оналом. Ряд функц?й, як? активно застосовуються в анал?з? даних, працюють виключно за наявност? п?дключення до сервер?в Wolfram. Яскравий приклад - це с?мейство функц?й Geographic Data. Таким чином ста? неможливий анал?з приватних даних без ?х розкриття трет?й сторон?.6. Висока варт?сть ? закрит?сть р?шень. Побудова системи для паралельно? обробки даних, здатно? зад?яти понад 8-ми ядер ? / або дек?лька хост?в, р?зко (кратно) зб?льшу? варт?сть л?ценз?й на Mathematica. В?дчужуван? standalone-додатки, на основ? технолог?? Wolfram CDF Player Pro, надм?рно важк? (в?дсутня можлив?сть вибору необх?дного функц?оналу) ? вимагають платно? л?ценз??. При цьому явно чита?ться курс на побудову компан??ю SaaS п?сочниц?: Mathematica Online, Wolfram Cloud, ? т.п. 3.1.2 Matlab Matlab - пакет прикладних програм для вир?шення задач техн?чних обчислень ? однойменний мову програмування, що використову?ться в цьому пакет?. ? комерц?йним продуктом. Matlab як мова програмування був розроблений Кл?вом Моулером в к?нц? 1970-х рок?в коли в?н був деканом факультету комп'ютерних наук в Ун?верситет? Нью-Мексико. Метою розробки служила задача дати студентам факультету можлив?сть використання програмних б?бл?отек Linpack ? EISPACK без необх?дност? вивчення Фортрана. Незабаром новий мову поширився серед ?нших ун?верситет?в ? був з великим ?нтересом зустр?нутий вченими, як? працюють в галуз? прикладно? математики. До сих п?р в ?нтернет? можна знайти верс?ю 1982 року, написану на Фортран?, поширювану з в?дкритим вих?дним кодом. ?нженер Джон Л?ттл познайомився з ц??ю мовою п?д час в?зиту Клива Моулера в Стенфордський ун?верситет в 1983 роц?. Зрозум?вши, що нова мова волод?? великим комерц?йним потенц?алом, в?н об'?днався з Кл?вом Моулером ? Ст?вом Бангерт. Сп?льними зусиллями вони переписали Matlab на C ? заснували в 1984 компан?ю The MathWorks ?для подальшого розвитку. ц? переписан? на С б?бл?отеки довгий час були в?дом? п?д ?м'ям JACKPAC. Спочатку Matlab призначався дляпроектування систем управл?ння (основна спец?альн?сть Джона Л?ттла), але швидко завоював популярн?сть у багатьох ?нших наукових ? ?нженерних областях. В?н також широко використовувався ? в осв?т?, зокрема, для викладання л?н?йно? алгебри ? чисельних метод?в.Matlab п?дтриму? так? парадигми: Паралельне програмування. Matlab п?дтриму? паралельне програмування з встановленим Parallel Computing Toolbox. ? оператор parfor, який дозволя? виконувати ?терац?? циклу паралельно в паралельному ?пул?. Функц?я parfeval, яка дозволя? виконати функц?ю, передану як аргумент в parfeval, асинхронно в паралельному пул?. ? можлив?сть пересилання пов?домлень з даними, це забезпечують функц?? так? як labSendReceive - одночасна в?дправка та отримання даних в?д ?нших Воркер, labBroadcast - в?дправка даних вс?м Воркер або отримання даних, що в?дправляються вс?м Воркер. так само ? можливост? синхрон?зац?? labBarrier - блоку? виконання до тих п?р, поки вс? Воркер НЕ досягнуть цього виклику. У Matlab ? й ?нш? можливост? для паралельного програмування.Програмування потоку даних. Matlab п?дтриму? програмування потоку даних c б?бл?отекою SimEvents для ?систем з дискретними станами, що використову? теор?ю черг ? систем масового обслуговування. вона дозволя? створювати ?м?тац?йн? модел? проходження об'?кта через мереж? ? черги, забезпечу? моделювання систем залежать нема? в?д часу, а в?д дискретних стан?в. Дозволя? анал?зувати так? характеристики продуктивност? модел? як ?нтенсивн?сть потоку, втрата пакет?в ? т.п.Розпод?лене програмування. Код практично з ус?ма конструкц?ями для паралельного програмування може бути запущений на кластер?, що склада?ться з дек?лькох ф?зичних машин. метапрограмування. Функц?я eval дозволя? виконувати ?нструкц?? Matalb передан? ?й як параметр як рядки. ??мперативне програмування. В?зуальне програмування. Matlab п?дтриму? в?зуальне програмування за допомогою Simulink. Simulink ?нтегрований в середу Matlab. Simulink - це граф?чне середовище ?м?тац?йного моделювання, що дозволя? за допомогою блок-д?аграм у вигляд? направлених граф?в, будувати динам?чн? модел?, включаючи дискретн?, безперервн? ? г?бридн?, нел?н?йн? ? розривн? системи.Matalb - це ?нтерпретована мова програмування. Так само в?н п?дтриму? генерац?ю коду в C / C ++, використовуючи MATLAB Coder, в Fortran, використовуючи функц?ю fortran, яка перетворю? символьне вираз Matlab в Fortran, в VHDL ? Verilog, використовуючи HDL Coder. Починаючи з верс?? Matalb 2015b використову? JITкомп?ляц?ю всього коду, тод? як механ?зм виконання ран?ше використовував комп?ляц?ю JIT в деяких випадках.Комп?ляц?я JIT генеру? власний код машинного р?вня, який оптим?зований для виконуваного коду Matalb ? для конкретно? апаратно? платформи. Перевага продуктивност? комп?ляц?? JIT найб?льше, коли код Matalb викону?ться к?лька раз?в ? може повторно використовувати скомп?льований код. це в?дбува?ться в таких поширених випадках, як, наприклад, цикл for чи коли виконуються додатков? запуски додатки в одному сеанс? Matlab.Переваги: Мульт?парад?гменнийБагатий функц?оналШвидк? операц?? над векторамиВ останн?х верс?ях хороша продуктивн?сть Генерац?я коду п?д ц?льов? платформи DSP ? FPGAПрисутн?й граф?чне середовище ?м?тац?йногомоделювання - SimulinkНедол?ки:За сво?ю природою ?мперативнийВ?льнийСкладн?сть в написанн? паралельних програмГром?здкий3.1.3 PythonPython - високор?внева мова програмування загального призначення, ор??нтований на п?двищення продуктивност? розробника ? читання коду. Синтаксис ядра Python м?н?мал?стичний. В той же час Стандартна б?бл?отека включа? великий обсяг корисних функц?й. П?дтримуван? парадигми. Паралельне програмування. Python п?дтриму? паралельне програмування на р?вн? поток?в з деякими особливостями за допомогою модуля threading. Python використову? GIL (Global Interpreter Lock) для синхрон?зац?? м?ж потоками, насл?дком цього ? в?дсутн?сть одночасно виконуваних поток?в. GIL ? самим простим способом уникнути конфл?кт?в при одночасному зверненн? р?зних поток?в до одних ? тих же д?льницях пам'ят?. Коли один пот?к захоплю? його, GIL, працюючи за принципом мьютекса, блоку? ?нш?. Python п?дтриму? паралельн?сть на р?вн? процес?в за допомогою модуля multiprocessing, який використову? API аналог?чно як у модуля threading.Розпод?лене програмування. Python п?дтриму? розпод?лене програмування за допомогою б?бл?отек. Це може бути б?бл?отека RPyC для в?ддалених виклик?в процедур, б?бл?отека Celery для виконання завдань на окремих машинах ? об'?днання результат?в ? багато ?нших. метапрограмування. Python пропону? широк? можливост? для метапрограмування. Ось деяк? з них: На основ? метаклассом. У python метакласи створюють класи, а класи вже екземпляри об'?кт?в. Клас в python ? об'?ктом. Це дозволя? g?д час виконання програми визначати нов?класи ? створювати ?х об'?кти. На основ? дектораторов. Декоратор - це функц?я яка створю? обгортку над ?ншою функц?? або класом.Узагальнене програмування. C допомогою декоратора singledispatch з модуля functools можна створювати узагальнен? функц??. Переваги: ?1.Мультипарадигмовий2.Велика к?льк?сть в?льних б?бл?отек3. Безкоштовний4. Компактний синтаксисНедол?ки: 1. Нема? п?дтримки багатопотоковост? на р?вн? процесор?в2. Досить пов?льний3.2 Об?рунтування вибору? платформи та мови реал?зац?? Розглянут? системи та пакети надають широкий спектр можливостей для обробки ?нформац?? та побудови систем для роботи з нею, в тому числ? ?нструменти для ЦОС та побудови системи класиф?кац?? даних. Проте так? системи як Mathematica та Matlab мають обмеження у використанн?, оск?льки у безкоштовн?й академ?чн?й верс?? вони не надають можлив?сть використання ?снуючого функц?оналу повн?стю.. Було обрано мову Python, оск?льки вона знаходиться у в?льному доступ?, а також нада? можлив?сть використання велико? к?лькост? б?бл?отек, в яких реал?зовано функц?? та методи, що використовуються в дан?й робот?.3.3. Анал?з арх?тектури системи та робота програми Початков? дан?: ?GTZAN Genre Collection - арх?в, що м?стить 19000 музичних твор?в 10 р?зних жанр?в таких, як : блюз, класична музика, кантр?, диско, х?п-хоп, джаз, метал, поп, регг? та рок. Програма написана мовою програмування Python, використовуючи б?бл?отеки : Python library, librosa, , numpy, matplotlb. На першому етап? перетворю?мо музичн? дан? в MFCC - д?аграми. На рисунку 3.1, 3.2, 3.3 зображен? мел-кепстральн? коеф?ц??нти для деяких жанр?в.Рисунок 3.1 - MFCC для х?п-хопуРисунок 3.2 - MFCC для дискоРисунок 3.3 - MFCC для класично? музикиСпочатку завантажуються дан? з б?бл?отеки у вигляд? ауд?осигнал?в, оброблюються да перетворюються у мел-д?аграмми. Таким чином форму?ться виб?рка для навчання загортково? нейронно? мереж?. Дан? ?пропускаються? через класиф?катор ? в результат? отриму?мо результат. Арх?тектуру нейронно? мереж? можна побачити на рисунку 3.4 Рисунок 3.4 – Нейронна мережаРезультаты роботи Рисунок 3.5 - Остаточн? показники роботи нейроннно? мереж? Оц?нку результат?в роботи ЗНМ наведено на рисунку 3.6, 3.7, 3.8. Ус? показники ? високими, тому можна вважати, що реал?зац?я мереж? для класиф?кац?? музики за жанрами ? вдалою. Рисунок 3.6 – Точн?стьРисунок 3.7 - ВтратиРисунок 3.8 - Confusion matrix ?Висновки до розд?лу 3В дан?й робот? був представлений прототип програмно? системи ?для автоматично? класиф?кац?? музичних твор?в за жанрами та опис ц??? системи, ?використовуючи засоби мови Python. Результати показали досить високу точн?сть, що ?значно вища за експертну оц?нку та в?рог?дн?сть вгадування. РОЗД?Л 4ФУНКЦ?ОНАЛЬНО-ВАРТ?СНИЙ АНАЛ?З ПРОГРАМНОГО ПРОДУКТУФункц?онально-варт?сний анал?з — це технолог?я, яка дозволя? оц?нити реальну варт?сть продукту або послуги незалежно в?д орган?зац?йно? структури компан??. Як прям?, так ? поб?чн? витрати розпод?ляються по продуктам та послугам у залежност? в?д потр?бних на кожному етап? виробництва обсяг?в ресурс?в. Виконан? на цих етапах д?? у контекст? метода ФВА називаються функц?ями.Мета ФВА поляга? у забезпеченн? правильного розпод?лу ресурс?в, вид?лених на виробництво продукц?? або надання послуг, на прям? та непрям? витрати. У даному випадку – анал?зу функц?й програмного продукту й виявлення ус?х витрат на реал?зац?ю цих функц?й. Такий анал?з дозволя? провести досл?дження продукту заради його найоптимальн?шо? реал?зац??. Зокрема, виключення надлишкових або неефективних функц?й дозволя? зменшити витрати на виробництво. Фактично цей метод працю? за таким алгоритмом:визнача?ться посл?довн?сть функц?й, необх?дних для виробництва продукту. Спочатку – вс? можлив?, пот?м вони розпод?ляються по двом групам: т?, що впливають на варт?сть продукту ? т?, що не впливають. На цьому ж етап? оптим?зу?ться сама посл?довн?сть скороченням крок?в, що не впливають на ц?нн?сть ? в?дпов?дно витрат;для кожно? функц?? визначаються повн? р?чн? витрати й к?льк?сть робочих час?в;для кожно? функц?? на основ? оц?нок попереднього пункту визнача?ться к?льк?сна характеристика джерел витрат;г)п?сля того, як для кожно? функц?? будуть визначен? ?х джерела витрат, проводиться к?нцевий розрахунок витрат на виробництво продукту.4.1Постановка задач? проектуванняУ даному розд?л? ставиться задача оц?нити можливост? розробки програмного продукту для ?дентиф?кац?? жанр?в музики. Програма повинна реал?зовувати зручний користувацький ?нтерфейс, можливост? наглядно? презентац?? даних, що обробились, корегування вх?дних даних. В?дпов?дно цьому варто обирати ? систему показник?в якост? програмного продукту. Техн?чн? вимоги до продукту наступн?:програмний продукт повинен функц?онувати на персональних комп’ютерах ?з стандартним набором компонент;забезпечувати зручн?сть ? простоту вза?мод?? з користувачем;передбачати м?н?мальн? витрати на впровадження програмного продукту;забезпечити високу швидк?сть обчислення результат?в моделювання.4.1.1Об?рунтування функц?й програмного продуктуГоловна функц?я F0 – розробка програмного продукту, який ?дентиф?ку? музику за жанрами. Виходячи з конкретно? мети, можна вид?лити наступн? основн? функц?? ПП:F1 – виб?р мови програмування;F2 – виб?р середи розробки;F3 – ?нтерфейс користувача.Кожна з основних функц?й може мати дек?лька вар?ант?в реал?зац??.Функц?я F1:а) мова програмування Python;б) мова програмування С++.Функц?я F2:а) середа Jupyter Notebook;б) середа Visual Studio 2019.Функц?я F3:а) ?нтерфейс користувача, наданий середою розробки;б) розробка ?нтерфейсу за допомогою засоб?в середи розробки.4.1.2Вар?анти реал?зац?? основних функц?йВар?анти реал?зац?? основних функц?й наведен? у морфолог?чн?й карт? системи (рис. 4.1). На основ? ц??? карти побудовано позитивно-негативну матрицю вар?ант?в основних функц?й (таблиця 4.1). Морфолог?чна карта в?дображу? вс? можлив? комб?нац?? вар?ант?в реал?зац?? функц?й, як? складають повну множину вар?ант?в ПП.На основ? анал?зу позитивно-негативно? матриц? робимо висновок, що при розробц? програмного продукту деяк? вар?анти реал?зац?? функц?й варто в?дкинути, тому, що вони не в?дпов?дають поставленим перед програмним продуктом задачам. Ц? вар?анти в?дзначен? у морфолог?чн?й карт?.Рисунок 4.1Таблиця 4.1Основн? функц??Вар?анти реал?зац??ПеревагиНедол?киF1AМалий об’?м кодуШвидкод?я БШвидкод?яВеликий об’?м кодуF2AЗручний Не п?дходить для великих проект?вБФункц?онал Потребу? багато пам’ят? F3AНе потребу? додаткових модул?вБ?льш складний для користуванняБЗручний у використанн?Необх?дн? додатков? модул?Функц?я F1:Оск?льки розрахунки проводяться з великими об’?мами вх?дних даних, то час написання програмного коду ? дуже необх?дним, тому вар?ант б) ма? бути в?дкинутий.Функц?я F2:Оск?льки написання ПП потребу? багато р?зноман?тного функц?оналу середи розробки, то вар?ант б) можна в?дкинути.Функц?я F3:?нтерфейс користувача не в?д?гра? велику роль у даному програмному продукт?, тому вважа?мо вар?анти а) та б) г?дними розгляду. Таким чином, будемо розглядати так? вар?анти реал?зац?? ПП:F1а – F2а – F3а;F1а – F2а – F3б .Для оц?нювання якост? розглянутих функц?й обрана система параметр?в, описана нижче.4.2 Об?рунтування системи параметр?в програмного продукту4.2.1Опис параметр?вНа п?дстав? даних про основн? функц??, що повинен реал?зувати програмний продукт, вимог до нього, визначаються основн? параметри виробу, що будуть використан? для розрахунку коеф?ц??нта техн?чного р?вня.Для того, щоб охарактеризувати програмний продукт, будемо використовувати наступн? параметри:X1 – швидкод?я мови програмування;X2 – об’?м пам’ят? для збереження даних;X3 – потенц?йний об’?м програмного коду.X1: В?добража? швидкод?ю операц?й залежно в?д обрано? мови програмування. X2: В?добража? об’?м пам’ят? в оперативн?й пам’ят? персонального комп’ютера, необх?дний для збереження та обробки даних п?д час виконання програми.X3:Показу? розм?р програмного коду який необх?дно створити безпосередньо розробнику.4.2.2К?льк?сна оц?нка параметр?вГ?рш?, середн? ? кращ? значення параметр?в вибираються на основ? вимог замовника й умов, що характеризують експлуатац?ю ПП як показано у таблиц? 4.2.Таблиця 4.2НазваПараметраУмовн? позначенняОдиниц? вим?руЗначення параметраг?рш?середн?кращ?Швидкод?я мови програмуванняX1Оп/мс80001000013000Об’?м пам’ят? для збереження данихX2Мб20125Потенц?йний об’?м програмного кодуX3к?льк?сть строк коду1000650200За даними таблиц? 4.2 будуються граф?чн? характеристики параметр?в – (рис. 4.2 – рис. 4.4).Рисунок 4.2Рисунок 4.3 Рисунок 4.4 4.2.3Анал?з експертного оц?нювання параметр?вП?сля детального обговорення й анал?зу кожний експерт оц?ню? ступ?нь важливост? кожного параметру для конкретно поставлено? ц?л? – розробка програмного продукту, який да? найб?льш точн? результати при знаходженн? параметр?в моделей адаптивного прогнозування ? обчислення прогнозних значень. Значим?сть кожного параметра визнача?ться методом попарного пор?вняння. Оц?нку проводить експертна ком?с?я ?з 7 людей. Визначення коеф?ц??нт?в значимост? передбача?:визначення р?вня значимост? параметра шляхом присво?ння р?зних ранг?в;перев?рку придатност? експертних оц?нок для подальшого використання;визначення оц?нки попарного пр?оритету параметр?в;обробку результат?в та визначення коеф?ц??нту значимост?.Результати експертного ранжування наведен? у таблиц? 4.3.Таблиця 4.3Позначення параметраНазва параметраОдиниц? вим?руРанг параметра за оц?нкою експертаСума ранг?в RiВ?дхилення ΔiΔi21234567X1Швидкод?я мови програмуванняОп/мс221221212-24X2Об’?м пам’ят? для збереження данихМб11211219-525X3Потенц?йний об’?м програмного кодуК?льк?сть строк коду333333321749Разом666666642078Для перев?рки степен? достов?рност? експертних оц?нок, визначимо наступн? параметри:а) сума ранг?в кожного з параметр?в ? загальна сума ранг?в:Ri=j=1NrijRij=Nnn+12=42, (4.1)деN – число експерт?в;n – к?льк?сть параметр?в;Rij – ранг.б) середня сума ранг?в:T=1nRij=14; (4.2)в) в?дхилення суми ранг?в кожного параметра в?д середньо? суми ранг?в:?i=Ri-T. (4.3)Сума в?дхилень по вс?м параметрам повинна дор?внювати 0;г) загальна сума квадрат?в в?дхилення:S=i=1N?i2=78, (4.4)де?i2 – в?дхилення;N – число експерт?в.Пораху?мо коеф?ц??нт узгодженост?:W=12SN2n3-n=12?787233-3=0,79>Wk=0,67. (4.5)Ранжування можна вважати достов?рним, тому що знайдений коеф?ц??нт узгодженост? перевищу? нормативний, котрий дор?вню? 0,67.Скориставшись результатами ранжирування, проведемо попарне пор?вняння вс?х параметр?в ? результати занесемо у таблицю 4.4.Таблиця 4.4ПараметриЕкспертиК?нцева оц?нкаЧислове значення1234567X1 ? X2>><>><>>1,5X1 ? X3<<<<<<<<0,5X2 ? X3<<<<<<<<0,5Числове значення, що визнача? ступ?нь переваги i–го параметра над j–тим, aij визнача?ться по формул?:aij=1,5 при Х?>Xj;1.0 при Х?= Хj;0.5 при Х?< Xj. (4.6)З отриманих числових оц?нок переваги складемо матрицю A=||aij||.Для кожного параметра зробимо розрахунок вагомост? Kв? за наступними формулами:Kв?=bii=1nbi,(4.7)деbi=i=1Naij;aij - ступ?нь переваги i–го параметра над j–тим.В?дносн? оц?нки розраховуються дек?лька раз?в доти, поки наступн? значення не будуть незначно в?др?знятися в?д попередн?х (менше 2%). На другому ? наступних кроках в?дносн? оц?нки розраховуються за наступними формулами:Kв?=bi'i=1nbi', (4.8)деbi'=i=1Naijbj.Таблиця 4.5ПараметриxiПараметриxjПерша ?тер.Друга ?тер.Х1Х2Х3biKв?bi1Kв?1Х11,01,50,530,3390,31Х20,51,00,520,2240,14Х31,51,51,040,44160,55Всього:912914.3Анал?з р?вня якост? вар?ант?в реал?зац?? функц?йВизнача?мо р?вень якост? кожного вар?анту виконання основних функц?й окремо.Абсолютн? значення параметр?в Х2(об’?м пам’ят? для збереження даних) таX1(швидкод?я мови програмування)в?дпов?дають техн?чним вимогам умов функц?онування даного ПП.Абсолютне значення параметра Х3(потенц?йний об’?м програмного коду) обрано не найг?ршим (не максимальним), тобто це значення в?дпов?да? або вар?анту а) 300строк коду або вар?анту б) 700 строк коду.Коеф?ц??нт техн?чного р?вня для кожного вар?анта реал?зац?? ПП розрахову?ться так (табл. 4.6):KKj=i=1nKвi,jBi,j, (4.9) деn – к?льк?сть параметр?в;Kвi– коеф?ц??нт вагомост? i–го параметра;Вi – оц?нка i–го параметра в балах.Таблиця 4.6 Основн? функц??Вар?ант реал?зац?? функц??Абсолютне значення параметраБальна оц?нка параметраКоеф?ц??нт вагомост? параметраКоеф?ц??нт р?вня якост?F1(X1)А90002,50,310,775F2(X2)А690,141,26F3(Х3)А30090,554,95Б70040,552,2За даними з таблиц? 4.6 за формулоюKK=KТУF1k+KТУF2k+...+KТУFzk, (4.10)деKТУFik – коеф?ц??нт р?вня якост? i функц??.Визнача?мо р?вень якост? кожного з вар?ант?в:КК1= 0,775+ 1,26+ 4,95= 6,985,КК2= 0,775+ 1,26+ 2,2= 4,235.Як видно з розрахунк?в, кращим ? перший вар?ант, для якого коеф?ц??нт техн?чного р?вня ма? б?льше значення.4.4Економ?чний анал?з вар?ант?в розробки ППДля визначення вартост? використання програмного продукту спочатку проведемо розрахунок трудом?сткост?.Вс? вар?анти включають в себе два окремих завдання:1. Встановлення програмного продукту;2. Використання програмного продукту;Завдання 1 за ступенем новизни в?дноситься до групи А, завдання 2 – до групи Б. За складн?стю алгоритми, як? використовуються в завданн? 1 належать до групи 1; а в завданн? 2 – до групи 3.Для реал?зац?? завдання 1 використову?ться дов?дкова ?нформац?я, а завдання 2 використову? ?нформац?ю у вигляд? даних.Проведемо розрахунок норм часу на розробку та програмування для кожного з завдань.Проведемо розрахунок норм часу на встановлення та використання для кожного з завдань. Загальна трудом?стк?сть обчислю?ться як ТО = ТР? КП? КСК? КМ? КСТ? КСТ.М, (4.11)деТР – трудом?стк?сть розробки програмного продукту;КП – поправочний коеф?ц??нт;КСК – коеф?ц??нт на складн?сть вх?дно? ?нформац??;КМ – коеф?ц??нт р?вня мови програмування;КСТ – коеф?ц??нт використання стандартних модул?в ? прикладних програм; КСТ.М– коеф?ц??нт стандартного математичного забезпеченняДля першого завдання, виходячи ?з норм часу для завдань розрахункового характеру степеню новизни А та групи складност? алгоритму 1, трудом?стк?сть дор?вню?: ТР = 90 людино-дн?в. Поправочний коеф?ц??нт, який врахову? вид нормативно-дов?дково? ?нформац?? для першого завдання: КП = 1,5. Поправочний коеф?ц??нт, який врахову? складн?сть контролю вх?дно? та вих?дно? ?нформац?? для вс?х семи завдань р?вний 1: КСК = 1. Оск?льки при розробц? першого завдання використовуються стандартн? модул?, враху?мо це за допомогою коеф?ц??нта КСТ = 0,8. Тод?, загальна трудом?стк?сть програмування першого завдання дор?вню?:Т1 = 90?1,5?0,8 = 108 людино-дн?в.Проведемо аналог?чн? розрахунки для подальших завдань.Для другого завдання (використову?ться алгоритм третьо? групи складност?, степ?нь новизни Б), тобто ТР =30 людино-дн?в, КП =0,7, КСК = 1, КСТ =0,8:Т2 = 30 ? 0,7 ? 0,8 = 16,8людино-дн?в.Склада?мо трудом?стк?сть в?дпов?дних завдань для кожного з обраних вар?ант?в реал?зац?? програми, щоб отримати ?х трудом?стк?сть:ТI = (108 + 16,8 + 4,8 + 16,8) ? 8 = 1171,2 людино-годин,ТII = (108 + 16,8 + 6,91 + 16,8) ? 8 = 1188,08 людино-годин.Найб?льш високу трудом?стк?сть ма? вар?ант II.В розробц? беруть участь два анал?тика з окладом 9500 грн., один програм?ст з окладом 7000 грн. Визначимо зарплату за годину за формулою:СЧ=МTm?tгрн.,(4.12)деМ – м?сячний оклад прац?вник?в;Tm– к?льк?сть робочих дн?в на тиждень;t – к?льк?сть робочих годин в день.СЧ=9500+9500+70003?21?8=51,5 грн.Тод?, розраху?мо зароб?тну плату за формулоюСЗП=Сч?Тi?КД(4.13)деСЧ– величина погодинно? оплати прац? програм?ста;Тi – трудом?стк?сть в?дпов?дного завдання;КД – норматив, який врахову? додаткову зароб?тну плату.Зарплата розробник?в за вар?антами становить:I.СЗП = 51,5 ? 1171,2 ? 1,2 = 72380,16 грн.;II.СЗП = 51,5 ? 1188,08 ? 1,2 = 73423,34 грн.В?драхування на ?диний соц?альний внесок становить 22%:I.СВ?Д = СЗП? 0,22 = 72380,16*0,22 = 15923,63 грн.;II.СВ?Д = СЗП? 0,22 =73423,344 *0,22 = 16153,13 грн.Тепер визначимо витрати на оплату одн??? машино-години (СМ).Так як одна ЕОМ обслугову? одного анал?тика з окладом 9500 грн., з коеф?ц??нтом зайнятост? 0,41 то для одн??? машини отрима?мо:СГ = 12?M?KЗ = 12 ? 9500 ? 0,41 = 46740 грн.З урахуванням додатково? зароб?тно? плати:СЗП =СГ? (1+ KЗ) = 46740 ? (1 + 0,41) = 65903,4 грн.В?драхування на ?диний соц?альний внесок:СВ?Д= СЗП? 0,22 = 65903,4 * 0,22 = 14498,74 грн.Амортизац?йн? в?драхування розрахову?мо при амортизац?? 25% та вартост? ЕОМ – 22000 грн.СА = КТМ? KА?ЦПР = 1,15 ? 0,25 ? 22000 = 6325 грн.,деКТМ – коеф?ц??нт, який врахову? витрати на транспортування та монтаж приладу у користувача;KА – р?чна норма амортизац??;ЦПР – догов?рна ц?на приладу.Витрати на ремонт та проф?лактику розрахову?мо як:СР = КТМ?ЦПР? КР = 1,15 ? 22000 ? 0,05 = 1265 грн.,деКР – в?дсоток витрат на поточн? ремонти.Ефективний годинний фонд часу ПК за р?к розрахову?мо за формулою:ТЕФ = (ДК – ДВ – ДС – ДР) ? tЗ? КВ (4.14)деДК – календарна к?льк?сть дн?в у роц?;ДВ, ДС – в?дпов?дно к?льк?сть вих?дних та святкових дн?в;ДР – к?льк?сть дн?в планових ремонт?в устаткування; t –к?льк?сть робочих годин в день; КВ– коеф?ц??нт використання приладу у час? протягом зм?ни.ТЕФ = (365 – 104 – 8 – 16) ? 8 ? 0,9 = 1706,4 годин,Витрати на оплату електроенерг?? розрахову?мо за формулою:СЕЛ = ТЕФ? NС? KЗ? ЦЕН, (4.15)деNС – середньо-споживча потужн?сть приладу;KЗ – коеф?ц??нтом зайнятост? приладу;ЦЕН – тариф за 1 КВт-годин електроенерг??.СЕЛ=1706,4 ? 0,156 ? 0,61 ? 2,7515= 446,791 грн.,Накладн? витрати розрахову?мо за формулою:СН = ЦПР?0,67 = 22000?0,67 =14740 грн.Тод?, р?чн? експлуатац?йн? витрати будуть:СЕКС =СЗП+ СВ?Д+ СА + СР+ СЕЛ + СН.(4.15)СЕКС = 65903,4 + 14498,74 + 6325 + 1706,4 + 446,791 + 14740= 103620грн.Соб?варт?сть одн??? машино-години ЕОМ дор?внюватиме:СМ-Г = СЕКС/ ТЕФ = 103620/1706,4 = 60,72 грн/час.Оск?льки в даному випадку вс? роботи, як? пов’язан? з використанням програмного продукту ведуться на ЕОМ, витрати на оплату машинного часу, в залежност? в?д обраного вар?анта реал?зац??, склада?:СМ = СМ-Г ?T. (4.16)?. СМ = 60,72 * 1171,2 = 71115грн.;??. СМ = 60,72 * 1188,08 = 72140грн.Накладн? витрати складають 67% в?д зароб?тно? плати:СН = СЗП? 0,67. (4.17)?. СН = 72380,16 * 0,67 = 48494,7 грн.;??. СН = 73423,34 * 0,67 = 49193,6грн.Отже, варт?сть розробки програмного продукту за вар?антами становить:СПП = СЗП+ СВ?Д+ СМ +СН (4.18)?. СПП = 72380,16 + 15923,63 + 71115 + 48494,7 = 207913,49 грн.;??. СПП = 73423,34 + 16153,13 + 72140 + 49193,6 = 210910 грн.4.5Виб?р кращого вар?анта програмного продукту техн?ко-економ?чного р?вняРозраху?мо коеф?ц??нт техн?ко-економ?чного р?вня за формулою:КТЕРj =ККj?СФj. (4.19)КТЕР1 = 6,985 / 207913,49 = 33,5?10-6;КТЕР2 = 4,235/ 210910 = 20?10-6.Як бачимо, найб?льш ефективним ? перший вар?ант реал?зац?? програми з коеф?ц??нтом техн?ко-економ?чного р?вня КТЕР1=33,5?10-6.Висновки до розд?лу 4В дан?й розрахунково-граф?чн?й робот? проведено повний функц?онально-варт?сний анал?з ПП, який було розроблено в рамках дипломно? роботи. Процес анал?зу можна умовно розд?лити на дв? частини.В перш?й з них проведено досл?дження ПП з техн?чно? точки зору: було визначено основн? функц?? ПП та сформовано множину вар?ант?в ?х реал?зац??; на основ? обчислених значень параметр?в, а також експертних оц?нок ?х важливост? було обчислено коеф?ц??нт техн?чного р?вня, який ? дав змогу визначити оптимальну з техн?чно? точки зору альтернативу реал?зац?? функц?й ПП.Другу частину ФВА присвячено вибору ?з альтернативних вар?ант?в реал?зац?? найб?льш економ?чно об?рунтованого. Пор?вняння запропонованих вар?ант?в реал?зац?? в рамках дано? частини виконувалось за коеф?ц??нтом ефективност?, для обчислення якого були обчислен? так? допом?жн? параметри, як трудом?стк?сть, витрати на зароб?тну плату, накладн? витрати.П?сля виконання функц?онально-варт?сного анал?зу програмного комплексу що розроблю?ться, можна зробити висновок, що з альтернатив, що залишились п?сля першого в?дбору двох вар?ант?в виконання програмного комплексу оптимальним ? перший вар?ант реал?зац?? програмного продукту. У нього виявився найкращий показник техн?ко-економ?чного р?вня якост? КТЕР = 33,5?10-6.Цей вар?ант реал?зац?? програмного продукту ма? так? параметри:мова програмування – Python;середа Jupyter Notebook;?нтерфейс, що наданий середою розробки.Даний вар?ант виконання програмного комплексу да? користувачу зручний ?нтерфейс, потужний функц?онал ? швидкод?ю.ВИСНОВКИУ ход? виконання дано? роботи було проведено анал?з вимог до системи розп?знавання музичних жанр?в. Було зроблено огляд вже ?снуючих систем розп?знавання музики, визначено ?х основний функц?онал. Розглянуто основн? аспекти тембру, частотного анал?зу.Детально розглянуто два найб?льш зас?б обробки сигналу, а саме перетворення мел-кепстральн? частотн? коеф?ц??нти.Було зроблено огляд метод?в класиф?кац?? даних, а саме нейронних мереж (в тому числ? ? згорткових) та методу опорних вектор?в. Виконано пор?вняння ?снуючих систем, що використовують ц? методи, на основ? чого було обрано метод класиф?кац??, який реал?зову?ться в ц?й робот?, а саме згорткова нейронна мережа.Виконано анал?з систем та пакет?в для обробки ауд?осигналу та побудови систем класиф?кац?? даних, ?х функц?оналу та можливостей. Перевагу було в?ддано мов? програмування Python за рахунок того, що вона знаходиться у в?льному доступ?, а також нада? можлив?сть використання готових б?бл?отек машинного навчання.Побудовано д?аграму, яка опису? арх?тектуру реал?зовано? системи в ц?лому. Окремо детально розглянуто арх?тектуру модуля класиф?кац??, а саме згортково? нейронно? мереж?. Описано одержан? результати роботи системи. Наведено покрокове кер?вництво користувача програми.ПЕРЕЛ?К ПОСИЛАНЬ?MFCC [Електроннийресурс] – URL: (датазвернення08.05.2019)An Optimized Filter System For Eliminating 50 Hz Interference from High Resolution ECG [Електроннийресурс] – URL: (датазвернення08.05.2019) Frequency-Domain Digital Filtering Techniques for the Removal Power Line Noise with Application to the Electrocardiogram [Електроннийресурс] – URL: (датазвернення08.05.2019) Filtering Electrocardiographic Signals using an unbiased and normalized adaptive noise reduction system [Електроннийресурс] – URL: (08)00046-5/abstract (датазвернення08.05.2019) Detection of Fetal ECG with IIR Adaptive Filtering and Genetic Algorithm [Електроннийресурс] – URL: (датазвернення08.05.2019)?Constructing Long Short-Term Memory based Deep Recurrent Neural Networks for Large Vocabulary Speech Recognition [Електроннийресурс] – URL: (датазвернення08.05.2019) ?Recurrent neural network - Wikipedia [Електроннийресурс] – URL: en.wiki/Recurrent_neural_network / (датазвернення08.05.2019)LongShort-TermMemory [Електронний ресурс] – URL: (дата звернення 08.05.2019) Deep Learning in Neural Networks: An Overview [Електроннийресурс] – URL: (датазвернення08.05.2019) MultilingualLanguageProcessingFromBytes [Електронний ресурс] – URL: (дата звернення 08.05.2019)Convolutiona lneural network - Wikipedia [Електронний ресурс] – URL: en.wiki/Convolutional_neural_network/ (дата звернення 08.05.2019)Згорткова нейронна мережа - В?к?пед?я [Електронний ресурс] – URL: en.wiki/Згорткова_нейронна_мережа/ (дата звернення 08.05.2019)Adaptive Subgradient Methods for Online Learning and Stochastic Optimization [Електроннийресурс] – URL: (датазвернення08.05.2019)On Baseline Drift Suppressing in ECG Recording [Електроннийресурс] – URL: (датазвернення08.05.2019)Пашин В.П. ?Функционально-стоимостный анализ конструкторско-технологических решений. - К.: РДЭНТП ?Знание? УССР, 1989. - 22с.Паш?н В.П. Оц?нка конкурентоспроможност? електронних пристро?в на стад?? проектування. - К. Економ?чний в?сник НТУУ ?КП?", 2006. - №3. с. 252-255.????Пашин В.П. Управление качеством изделий на основе функционально-стоимостного анализа. - К.: ?Технология и организация производства?, 1989. - №1. с. 17-19. ????Пашiн В. П. Методичнi вказiвки до виконання економiко-органiзацiйного роздiлу дипломних проектiв (робiт) бакалаврiв i спецiалiстiв ?для студентiв Iнституту прикладного системного аналiзу: Навч. посiбник / Пашiн В. П., Романов В. В., ?горова Н. В – К.: НТУУ “КПI”, 2011. – 118 с.ДОДАТОК АЛ?стинг програмиimport warningswarnings.filterwarnings("ignore", category = FutureWarning)import osimport kerasimport h5pyimport librosaimport itertoolsimport numpy as npimport matplotlib.pyplot as pltfrom collections import OrderedDictfrom keras.utils import to_categoricalfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import confusion_matrixfrom keras.models import Sequentialfrom keras.layers import Densefrom keras.layers import Activationfrom keras.layers import Flattenfrom keras.layers import Inputfrom keras.layers import Dropoutfrom keras.models import Modelfrom keras.applications.vgg16 import VGG16from tensorflow.keras.callbacks import EarlyStoppingdef splitsongs(X, y, window = 0.1, overlap = 0.5): # Empty lists to hold our results temp_X = [] temp_y = [] # Get the input song array size xshape = X.shape[0] chunk = int(xshape*window) offset = int(chunk*(1.-overlap)) # Split the song and create new ones on windows spsong = [X[i:i+chunk] for i in range(0, xshape - chunk + offset, offset)] for s in spsong: temp_X.append(s) temp_y.append(y) return np.array(temp_X), np.array(temp_y)def to_melspectrogram(songs, n_fft = 1024, hop_length = 512): # Transformation function melspec = lambda x: librosa.feature.melspectrogram(x, n_fft = n_fft, hop_length = hop_length)[:,:,np.newaxis] # map transformation of input songs to melspectrogram using log-scale tsongs = map(melspec, songs) return np.array(list(tsongs))def read_data(src_dir, genres, song_samples, spec_format, debug = True): # Empty array of dicts with the processed features from all files arr_specs = [] arr_genres = [] # Read files from the folders for x,_ in genres.items(): folder = src_dir + x for root, subdirs, files in os.walk(folder): for file in files: # Read the audio file file_name = folder + "/" + file signal, sr = librosa.load(file_name) if len(signal) < song_samples: print('Error in {}\nNum of samples ( >= {}): {}'.format(file_name, song_samples, len(signal))) signal = signal[:song_samples] # Debug process if debug: print("Reading file: {}".format(file_name)) # Convert to dataset of spectograms/melspectograms signals, y = splitsongs(signal, genres[x]) # Convert to "spec" representation specs = spec_format(signals) # Save files arr_genres.extend(y) arr_specs.extend(specs) return np.array(arr_specs), np.array(arr_genres)gtzan_dir = './gtzan/'song_samples = 660000genres = {'metal': 0, 'disco': 1, 'classical': 2, 'hiphop': 3, 'jazz': 4, 'country': 5, 'pop': 6, 'blues': 7, 'reggae': 8, 'rock': 9}X = np.load('./data/x_gtzan_npy.npy') y = np.load('./data/y_gtzan_npy.npy')# One hot encoding of the labelsy = to_categorical(y)X_train, X_test, y_train, y_test = train_test_split(X_stack, y, test_size=0.3, random_state=42, stratify = y)print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)(13300, 128, 129, 3) (5700, 128, 129, 3) (13300, 10) (5700, 10)# Histogram for train and test values, count = np.unique(np.argmax(y_train, axis=1), return_counts=True)plt.bar(values, count)values, count = np.unique(np.argmax(y_test, axis=1), return_counts=True)plt.bar(values, count)plt.show()# Model Definitioninput_shape = X_train[0].shapenum_genres = 10def cnn_vgg16(input_shape, num_genres, freezed_layers): input_tensor = Input(shape=input_shape) vgg16 = VGG16(include_top=False, weights='imagenet', input_tensor=input_tensor) top = Sequential() top.add(Flatten(input_shape=vgg16.output_shape[1:])) top.add(Dense(256, activation='relu')) top.add(Dropout(0.5)) top.add(Dense(num_genres, activation='softmax')) model = Model(inputs=vgg16.input, outputs=top(vgg16.output)) for layer in model.layers[:freezed_layers]: layer.trainable = False return modelmodel = cnn_vgg16(input_shape, num_genres, 5)print("Creating EarlyStopping Callback ...")early_stopping_callback = EarlyStopping(monitor='val_acc', patience=5)model.summary()pile(loss=keras.losses.categorical_crossentropy, optimizer=keras.optimizers.Adam(), metrics=['accuracy']) hist = model.fit(X_train, y_train, batch_size=128, epochs=1000, verbose=1, validation_data=(X_test, y_test), shuffle=True, callbacks=[early_stopping_callback]) print("Learning stoped on epoch:", early_stopping_callback.stopped_epoch) ................
................

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

Google Online Preview   Download