Ela.kpi.ua



Нац?ональний техн?чний ун?верситет Укра?ни?Ки?вський пол?техн?чний ?нститут ?мен? ?горя с?корського?________________факультет б?омедично? ?нженер??_______________(повна назва ?нституту/факультету)________________кафедра б?омедично? к?бернетики________________(повна назва кафедри)?До захисту допущено?Зав?дувач кафедри БМК__________ ?.А. Настенко(п?дпис) (?н?ц?али, пр?звище)“___”_____________2019 р.Дипломна роботана здобуття ступеня бакалавраЗ напряму п?дготовки 6.050101 ?Комп’ютерн? науки?з? спец?альност? (код ? назва)на тему:Системи практичного застосування б?бл?отеки TensorFlow для розп?знавання зображень рукописного тексту, для створення електронного арх?ву ?стор?й хвороб пац??нтаВиконав: студент IV курсу, групи БС-52(шифр групи)ГЕЙКО АНДР?Й СЕРГ?ЙОВИЧ(пр?звище, ?м’я, по батьков?)(п?дпис)Кер?вникасистент каф. БМК, Гаупт О.Ф.(посада, науковий ступ?нь, вчене звання, пр?звище та ?н?ц?али)(п?дпис)Консультант з розд?л?в ДР (назва розд?лу) ( посада, вчене звання, науковий ступ?нь, пр?звище, ?н?ц?али)(п?дпис)Консультант з охорони прац?доц. каф. ОППЦБ, к.т.н. Демчук Г.В.(назва розд?лу)( посада, вчене звання, науковий ступ?нь, пр?звище, ?н?ц?али)(п?дпис)Рецензентст. викладач каф. БМ?, Зубков С.В. (посада, науковий ступ?нь, вчене звання, науковий ступ?нь, пр?звище та ?н?ц?али)(п?дпис)Засв?дчую, що у ц?й дипломн?й робот? нема? запозичень з праць ?нших автор?в без в?дпов?дних посилань.Студент _____________(п?дпис)Ки?в – 2019 рокуНац?ональний техн?чний ун?верситет Укра?ни?Ки?вський пол?техн?чний ?нститут ?мен? ?горя С?корського??нститут (факультет)Б?омедично? ?нженер??(повна назва)КафедраБ?омедично? к?бернетики(повна назва)Р?вень вищо? осв?ти – перший (бакалаврський)Напрям п?дготовки (програма профес?йного спрямування) - 6.050101 ?Комп’ютерн? науки? (?нформац?йн? технолог?? в б?олог?? та медицин?)(код ? назва)ЗАТВЕРДЖУЮЗав?дувач кафедри БМК__________ ?.А. Настенко(п?дпис) (?н?ц?али, пр?звище)?___?_____________2019 р.ЗАВДАННЯна дипломну роботу студентуГЕЙКУ АНДР?Ю СЕРГ?ЙОВИЧУ(пр?звище, ?м’я, по батьков?)1. Тема роботиСистеми практичного застосування б?бл?отеки TensorFlow для розп?знавання зображень рукописного тексту, для створення електронного арх?ву ?стор?й хвороб пац??нтакер?вник роботиГаупт Олександр Федорович(пр?звище, ?м’я, по батьков?, науковий ступ?нь, вчене звання)затверджен? наказом по ун?верситету в?д ?27? травня 2019 р. № 1404-С2. Терм?н подання студентом роботи12 червня 2019 року3. Вих?дн? дан? до роботиФайл друкованого тексту4. Зм?ст роботивступ, теоретичн? в?домост?, матер?али ? методи досл?дження, проектування програмного забезпечення,реал?зац?я програмного забезпечення, охорона прац?,економ?ка, загальн? висновки, список використаних джерел5. Перел?к ?люстративного матер?алу (?з зазначенням плакат?в, презентац?й тощо)23 рисунки6. Консультанти розд?л?в роботиРозд?лПр?звище, ?н?ц?али та посада консультантаП?дпис, датазавдання видавзавданняприйнявДипломно? роботиОхорони прац?Демчук Г.В., доц., к.т.н.7. Дата видач? завдання 20 травня 2019 р.Календарний план№ з/пНазва етап?в виконання дипломно? роботиТерм?н виконання етап?в роботиПрим?тка1Отримати завдання на ДР20 травня 2019р.2Анал?з в?тчизняних та заруб?жних л?тературних джерел 22 травня 2019р.3Розробка теоретично? частини ДР23 травня 2019р.4Анал?з отриманих результат?в по ДР24 травня 2019р.5Проектування програмного забезпечення з урахуванням вимог замовника25 травня 2019р.6Створення прототипу програмного забезпечення26 травня 2019р.7Розробка та тестування програмного забезпечення27 травня 2019р.8Оформлення практично? частини дипломно? роботи28 травня 2019р.9Розд?л ДР з ?Безпеки житт?д?яльност? та охорони здоров’я?29 травня 2019 р.10Проходження нормоконтролю по оформленню ДР29 травня 2019р - 7 червня 2019р11Предзахист ДР та допуск до захисту ДР7-11 червня 2019р12Подання ДР рецензенту. Отримання реценз??.11-12 червня 2019р13Подання в електронному вигляд? ДР та анотац?? до не? на сайт кафедри.11-12 червня 2019р14Подання пакету документ?в по ДР до захисту в ЕК 12-15 червня 2019р.15Захист ДР в ЕК18-22 червня 2019рСтудентА.С. Гейко(п?дпис)(?н?ц?али, пр?звище)Кер?вник роботиО.Ф. Гаупт(п?дпис)(?н?ц?али, пр?звище)АНОТАЦ?ЯСтруктура та обсяг роботи: пояснювальна записка склада?ться ?з вступу, шести розд?л?в, висновк?в та списку використано? л?тератури ?з 50 джерел. Загальний обсяг дипломно? роботи склада?: 80 стор?нок, ?люстрац?й – 23, таблиць – 12. Метою дипломно? роботи була розробка системи практичного застосування б?бл?отеки TensorFlow для розп?знавання зображень рукописного тексту, для створення електронногоарх?ву ?стор?й хвороб пац??нта.. Дипломна робота виконана на замовлення ф?рми ТОВ ?Alcora Group?, результати впроваджен? в роботу (акт впровадження в?д ?11? травня 2019р.)Ключов? слова: зображення, нейронн? мереж?, комп’ютерний з?р, тензор,сегментац?я.ABSTRACTStructure and scope of work: An explanatory note consists of an introduction, six sections, conclusion and list of used literature of 50 sources. The total volume of thesis is 80 pages, 23 illustrations, 12 tables.The purpose of the thesis was to develop the system Practical application systems of the TensorFlow library for the recognition of handwritten text images, for creating an electronic archive of patient histories.The thesis is executed according to the order of the company "Alcora Group" Ltd., the results are implemented in the work (implementation act from "11" in May 2019).Key words: mages, neural networks, computer vision, tensor,segmentation.ЗМ?СТ TOC \o "1-3" \h \z \u ВСТУП8СПИСОК УМОВНИХ СКОРОЧЕНЬ ТА ПОЗНАЧЕНЬ9РОЗД?Л 1. ТЕОРЕТИЧН? В?ДОМОСТ?101.1. Огляд б?бл?отеки TensorFlow101.2. Методи навчання нейронних мереж151.3. Загальна ?нформац?я про арх?вац?ю даних251.4. Комп’ютерне бачення26Висновки до розд?лу 131РОЗД?Л 2. МАТЕР?АЛИ ? МЕТОДИ ДОСЛ?ДЖЕННЯ322.1. Системи розп?знавання рукописного тексту за допомогою TF322.2. Огляд модел?322.3. Операц??332.4. Дан?34Висновки до розд?лу 237РОЗД?Л 3. ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ383.1. Розробка функц?онально? модел?38Висновки до розд?лу 342РОЗД?Л 4. РЕАЛ?ЗАЦ?Я ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ434.1. Процес попередньо? обробки зображення434.2. Створення набор?в даних для тренування444.3. Розп?знавання тексту у рядках464.4. Оц?нка впевненост? розп?знаного тексту464.5. Метод сегментац?? зображень тексту ? принцип роботи504.6. Функц??, що використовуються TF для зображень52Висновки до розд?лу 462РОЗД?Л 5. ОХОРОНА ПРАЦ?63Вступ635.1. Загальна характеристика умов прац? в арх?в?635.2. Оц?нка потенц?йних небезпек ? шк?дливих виробничих фактор?в65Висновки до розд?лу 570РОЗД?Л 6. ЕКОНОМ?ЧНА ЧАСТИНА716.1. Економ?чний анал?з вар?ант?в розробки програмного продукту716.2. Розрахунок зароб?тно? плати розробника72Висновки до розд?лу 675ЗАГАЛЬН? ВИСНОВКИ76СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ77ДОДАТОК АВСТУПНаш св?т дуже швидко розвива?ться ? з кожним роком все б?льше ?нформац?йн? технолог?? вкор?нюються у наше життя. Сучасн? технолог?? все б?льше охоплюють область медицини, тому потр?бно мати ?нформац?ю у електронному вид?, яка знаходиться у медичних картках кожного пац??нта. Актуальн?сть роботи: так як ?нформац?я про хвороби з дитячого в?ку записувались без використання ?нформац?йних технолог?й, ми зараз ма?мо велику к?льк?сть медкарток, що заповнялися рукописним текстом. Отже, завдання поляга? в тому щоб оцифрувати рукописн? матер?али та створити електронний арх?в, який м?стить ?нформац?ю про хвороби пац??нта. Метою роботи ? створення програмного забезпечення для оцифрування рукописних матер?ал?в.Задач?, як? необх?дно вир?шити у дан?й робот?:1. Провести анал?з в?тчизняних та заруб?жних л?тературних джерел з поставлено? проблематики.2. Об?рунтувати оптимальн?сть використання б?бл?отеки TensorFlow.3. Написання ?нтерфейс?в для створення електронного арх?ву та баз даних медичних даних пац??нт?в.4. Проектування та реал?зац?я програмного забезпечення для розп?знаваня рукописного тексту за допомогою б?бл?отеки TF.Дипломна робота побудована за класичним типом та викладена на 81 стор?нках машинописного тексту. Склада?ться з вступу, 6 розд?л?в, висновк?в, списку використаних джерел, який м?стить 50 найменувань. У робот? представлено 23 рисунки ? 12 таблиць.СПИСОК УМОВНИХ СКОРОЧЕНЬ ТА ПОЗНАЧЕНЬTF – TensorFlowНМ – Нейронна мережаGAN – Мережа генетичного алгоритмуРНМ – Рекурентна нейронна мережаЗНМ – Згорткова нейронна мережаРРТ – Розп?знавання рукописного текстуДКЧП – Довга короткочасна пам’ятьCTC (ТКЗ) – Connectionist Time Classical (Тимчасова класиф?кац?я зв’язку)РОЗД?Л 1ТЕОРЕТИЧН? В?ДОМОСТ?1.1. Огляд б?бл?отеки TensorFlow.1.1.1. Загальна характеристика TensorFlow.TensorFlow ? одн??ю з широко використовуваних open-source б?бл?отекою для впровадження машинного навчання та ?нших алгоритм?в, що передбачають велику к?льк?сть математичних операц?й. Tensorflow була розроблена компан??ю Google, ? вона ? одн??ю з найпопулярн?ших б?бл?отек для машинного навчання на GitHub. Google використову? Tensorflow для впровадження машинного навчання майже у вс?х додатках. Наприклад, якщо ви використову?те фотограф?? Google або голосовий пошук Google, то ви використову?те модел? Tensorflow, вони працюють на великих кластерах апаратного забезпечення Google ? ? потужними у сприйнятт?.Основний компонент TensorFlow - це обчислювальний граф ? тензори (Рисунок 1.1.), як? проходять м?ж ус?ма вузлами через ребра. Коротко представимо кожну з них.Рисунок 1.1. Приклад тензора.Математично Тензор ? N-м?рним вектором, що означа?, що Тензор може бути використаний для представлення N-м?рних набор?в даних. Наведена вище цифра ? складною для розум?ння. Ми розглянемо його спрощену верс?юРисунок 1.2. Тензори з м?н?мальними розм?рами.Наведений вище рисунок 1.2. показу? деяк? спрощен? тензори з м?н?мальними розм?рами. Оск?льки розм?ри продовжують зростати, представлення даних ста? все б?льш складним. Наприклад, якщо взяти тензор у вигляд? (3x3), то можна просто назвати його матрицею з 3 рядк?в ? стовпц?в. Якщо вибрати ?нший тензор форми (1000x3x3), можна називати його як вектор або наб?р з 1000 3x3 матриць. Тут ми назива?мо (1000x3x3) як форму або розм?р результуючого тензора. Тензори можуть бути пост?йними або зм?нними.Обчислювальн? графи. Пот?к посила?ться на обчислювальний граф або просто граф, граф н?коли не може бути цикл?чним, кожен вузол у граф?ку представля? операц?ю, як додавання, в?дн?мання ? т.д. ? кожна операц?я призводить до формування нового тензора.На рисунку 1.3 показаний простий обчислювальний граф.Рисунок 1.3. Простий обчислювальний граф Вираз для наведеного вище граф?ка: e = (a + b) x (b + 1)Початков? вершини завжди ? тензорами. Означа?, що операц?я н?коли не може в?дбуватися на початку графа ?, таким чином, ми можемо зробити висновок, що кожна операц?я в граф? повинна прийняти тензор ? створити новий тензор. Таким же чином, тензор A не може бути присутн?м у вигляд? нелистового вузла, що означа?, що вони завжди повинн? подаватися як вх?д до операц?? / вузла.Обчислювальний граф завжди явля? собою складну операц?ю в ??рарх?чному порядку. Вищезгаданий вираз може бути орган?зовано ??рарх?чним шляхом, представляючи a + b як c ? b + 1 як d. Тому ми можемо написати як: e = (c) x (d) де c = a + b ? d = b + 1.Обертання графа в зворотному порядку призводить до формування суб-вираз?в, як? об'?днуються для формування остаточного виразу.Коли ми пересува?мося в прямому напрямку, вершина, з якою ми стика?мося, завжди ста? залежн?стю для наступно? вершини, наприклад, c не може бути отримана без a та b, так само як e не може бути отримана без вир?шення c та d.Операц?? у вузлах одного ? того ж р?вня незалежн? один в?д одного. Це одне з важливих властивостей обчислювального графа, коли ми буду?мо граф?к так, як показано на рисунку 1.3., природно, що вузли на одному р?вн?, наприклад c ? d, не залежать один в?д одного, значить, нема? необх?дност? знати c перед оц?нкою d. Тому вони можуть виконуватися паралельно.Паралел?зм у обчислювальних графах:Остання властив?сть, згадана вище, звичайно ? одн??ю з найважлив?ших властивостей, вона ч?тко говорить, що вузли на одному р?вн? ? незалежними, означа?, що нема? потреби сид?ти до к?нця, поки c не оц?ню?ться, ви можете паралельно обчислити d, поки c все ще оц?ню?ться . Tensorflow в значн?й м?р? експлуату? цю властив?сть.Розпод?лене виконання: Tensorflow дозволя? користувачам користуватися паралельними обчислювальними пристроями для швидшого виконання операц?й. Вузли або операц?? обчислювально? системи автоматично розраховуються для паралельних обчислень. Все це в?дбува?ться всередин?, наприклад, на рисунку 1.3., операц?я c може бути запланована на CPU, а операц?я d може бути запланована на GPU. 1.1.2. Обм?н даними м?ж потоками.Tensorflow розпод?ля? вс? сво? операц?? на р?зних пристроях, якими керуються потоками. Б?льш поширеним ? те, що дан? у вигляд? тензор?в обм?нюються м?ж потоками, наприклад у граф? e = (c) * (d), як т?льки c розраховано, бажано передати його дал? на обробку e, тому Tensor потоки в?д вузла до вузла у напрямку вгору. Цей рух викону?ться, як показано на рисунку 1.4.Рисунок 1.4. Tensor потоки в?д вузла до вузла.Тут Tensors форма пристрою A була передана на пристр?й B. Це виклика? деяк? затримки продуктивност? в розпод?лен?й систем?. Затримки залежать в?д важливо? властивост?, яка ? розм?ром Тензора. Пристр?й B знаходиться в ?деальному режим?, поки в?н не отриму? вх?дних сигнал?в з пристрою A.1.1.3. Необх?дн?сть зменшення ваги г?лки. Очевидно, що в обчислювальних графах тензори прот?кають м?ж вузлами. Важливо зменшити затримки, спричинен? потоком, перш н?ж в?н досягне вузла, де в?н може бути оброблений. Одна така ?дея зменшення розм?ру поляга? в компрес?? зменшення ваги.Тип даних тензор?в ма? в?д?гравати важливу роль. В операц?ях Machine Learning, наприклад, якщо ми використову?мо float32 як тип даних в Tensor, то кожне значення представлено використовуючи 32-б?тове число з плаваючою точкою, тому кожне значення займа? розм?р 32 б?т, те ж саме в?дноситься ? до 64-б?тового. Припустимо, в баз? Tensorform (1000 440 440,3), к?льк?сть значень, як? можуть м?ститися в тензор? буде 1000 * 440 * 440 * 3, якщо тип даних 32 б?т, то це 32 раз?в цього великого числа, в?н займа? значний прост?р в пам'ят? ? тим самим накладають затримки для потоку. Методи стиснення можна використовувати для зменшення розм?ру.Стиснення з втратами стосу?ться стиснення розм?ру даних ? не зважа? на саме значення даних, тобто це може призвести спотворення або неточност? даних п?д час стиснення. Але все ж, якщо ми ма?мо 32-б?тове число з плаваючою точкою, на зразок 1.01010e-12, ? менша важлив?сть, яку можна надати найменш значущим цифрам. Зм?на або видалення цих значень не призведе до значних розб?жностей у нашому розрахунку. Таким чином, Tensorflow автоматично перетворю? 32-б?тов? числа з плаваючою точкою в 16-б?тове представлення, ?гноруючи вс? незначн? дан?, що зменшу? розм?р майже вдв?ч?, якщо це 64-б?тове число, його стиснення до 16 б?т призведе до зменшення розм?ру майже 75%. Таким чином, прост?р, зайнятий тензорами, можна звести до м?н?муму.П?сля того, як Тензор досягне вузл?в, 16-б?тове представлення може бути повернуто до початково? форми т?льки додаванням 0s. Таким чином, 32 або 64-розрядне представлення поверта?ться п?сля того, як в?н досяга? вузла для обробки.1.2. Методи навчання нейронних мереж1.2.1. Нейронн? мереж?Нейронн? мереж? (штучна нейронна мережа) - це система сполучених ? вза?мод?ючих м?ж собою простих процесор?в (штучних нейрон?в). Так? процесори зазвичай досить прост? (особливо в пор?внянн? з процесорами, використовуваними в персональних комп'ютерах). Кожен процесор под?бно? мереж? ма? справу т?льки з сигналами, як? в?н пер?одично отриму?, ? сигналами, як? в?н пер?одично посила? ?ншим процесорам. ?, тим не менше, будучи з'?днаними в досить масивну мережу з керованою вза?мод??ю, ц? процесори разом здатн? виконувати досить складн? завдання, оск?льки нейронн? мереж? навчаються в процес? роботи.Штучна нейронна мережа зазвичай навча?ться з учителем. Це означа? наявн?сть критер??в та даних для навчання (датасета), який м?стить приклади з ?стинними значеннями: тегами, класами, показниками. Наприклад, якщо ви хочете створити НМ для розп?знавання собаки в?д птаха , датасет буде складатись з? списку фотограф?й собак та птах?в. Чим б?льше ознак ? точн?ше п?д?брана вага критер?ю, тим точн?ше в?дпов?дь. НМ автоматизувала цей процес.Штучна нейронна мережа склада?ться з трьох компонент?в:Вх?дний шар;Прихований (обчислювальний) шар;Вих?дний шар.Рисунок 1.5. Схема нейронно? мереж?.Навчання? НМ в?дбува?ться в два етапи:Помилки з? прямим поширенням;Помилки з? зворотн?м поширенням.П?д час прямого поширення помилки робиться прогноз в?дпов?д?. При зворотному поширенн? помилка м?ж фактичною в?дпов?ддю ? передбаченою м?н?м?зу?ться.Пряме поширення помилкиРисунок 1.6. Схема прямого поширення помилки.Задаються початков? ваги випадковим чином:w1w2w3Помножимо вх?дн? дан? на ваги для формування прихованого шару:h1 = (x1 * w1) + (x2 * w1)h2 = (x1 * w2) + (x2 * w2)h3 = (x1 * w3) + (x2 * w3)Вих?дн? дан? з прихованого шару переда?ться через нел?н?йну функц?ю (функц?ю активац??), для отримання виходу мереж?: y1= fn (h1, h2, h3)Зворотне поширенняРисунок 1.7. Схема зворотного поширення помилки.Сумарна помилка (total_error) обчислю?ться як р?зниця м?ж оч?куваним значенням ?y? (з навчального набору) ? отриманим значенням ?y_? (порахован? на етап? помилки з прямим поширенням), що проходять через функц?ю втрат (cost function).? Приватна пох?дна помилки обчислю?ться по кожн?й ваз? (ц? приватн? диференц?али в?дображають внесок кожно? ваги в загальну помилку (total_loss)).? Пот?м ц? диференц?али множаться на число, зване швидк?сть навчання або learning rate (η).Отриманий результат пот?м в?дн?ма?ться з в?дпов?дно? ваги.У результат? вийдуть так? оновлен? ваги:? w1 = w1 - (η * ? (err) / ? (w1))? w2 = w2 - (η * ? (err) / ? (w2))? w3 = w3 - (η * ? (err) / ? (w3))Те, що ми припуска?мо та ?н?ц?ал?зу?мо ваги випадковим чином, ? вони будуть давати точн? в?дпов?д?, звучить не ц?лком обгрунтовано, проте, працю? добре.Зм?щення - це вага, що додана до прихованого шару. Вона випадковим чином ?н?ц?ал?зована ? оновлю?ться так само, як прихований шар. Роль прихованого шару поляга? в тому, щоб визначити форму базово? функц?? в даних, в той час як роль зм?щення — явля?ться зрушити знайдену функц?ю в сторону так, щоб вона частково зб?глася з вих?дною функц??ю.1.2.1.1. Згорткова нейронна мережа.Згортков? нейронн? мереж? дуже схож? з звичайними нейронними мережами. Вони складаються з нейрон?в, як? мають певн? ваги ? упередження. Кожен нейрон отриму? деяк? входи, викону? точковий продукт ? необов'язково виплива? з нел?н?йност?. Вся мережа дос? виража? ?дину диференц?йовану функц?ю оц?нки: в?д необроблених п?ксел?в зображення з одного к?нця до класових бал?в на ?ншому. В рамках глибокого навчання з'явилося безл?ч арх?тектур ? метод?в, як? можуть дозволити численн? випадки використання, головними з яких ? ЗНМ. Приклад модель зорово? системи як групи нейрон?в, розроблен? спец?ально для розп?знавання р?зних форм. Кожна група нейрон?в спрацьову? при вигляд? об'?кта ? сп?лку?ться один з одним з метою розвитку ц?л?сного розум?ння сприйманого об'?кта.Рисунок 1.8. Р?зн? групи нейрон?в в мозку вчаться розп?знавати р?зн? групи характеристик з урахуванням вх?дного сигналу.Систему можна пояснити як ??рарх?чн? кластери нейрон?в, як? виявляють характеристики низького р?вня вх?дного стимулу ? зв'язуються м?ж собою в ц?й ??рарх??, щоб розробити високий р?вень виявлення об'?кт?в.Уявимо про таку ??рарх?ю:Перший кластер як структура, що розп?зна? особливост? низького р?вня (тобто контур обличчя);Другий кластер як структура, що розп?зна? кольори та форми (кол?р шк?ри або л?н?? щелепи);Трет?й, як структура, що розп?зна? детал? (вуха, н?с ? оч?);Остаточний кластер розп?зна? весь об'?кт ц?л?сно (обличчя ? особа прикр?плен? до обличчя).Прост?ше кажучи, з огляду на об'?кт, система ма? р?зн? групи нейрон?в, як? сприймають зображення по р?зних аспектах об'?кта ? сп?лкуються один з одним для формування велико? картини.1.2.1.2. Рекурентна нейронна мережа.Рекурентними називають так? нейронн? мереж?, з’?днання м?ж нейронами яких, утворюють ор??нтовний цикл. Мають так? характеристики:У кожного з’?днання ? своя вага, вона явля?ться пр?оритетом.Вузли под?ляються на два типи, вузли введення та прихован? вузли.?нформац?я у рекурентн?й нейронн?й мереж? переда?ться не т?льки по прям?й, шар за шаром, але ? м?ж самими нейронами.Важливою в?дм?нною особлив?стю рекурентно? нейронно? мереж? ? наявн?сть так звано? ?област? уваги?, коли машин? можна задати певн? фрагменти даних, що потребують посилено? обробки.Навчання типово? нейронно? мереж? передбача? наступн? кроки:Вводимо приклад з набору даних.Мережа в?зьме приклад ? застосу? до нього складн? обчислення, використовуючи випадково ?н?ц?ал?зован? зм?нн? (так зван? ваги ? упередження).Буде створено прогнозований результат.Пор?вняння результату з оч?куваним значенням дасть нам помилку.Поширюючи помилку назад по тому ж шляху, будемо коригувати зм?нн?.Кроки 1-5 повторюються, поки ми не будемо впевнен?, що наш? зм?нн? добре визначен?.Передбачення зд?йсню?ться шляхом застосування цих зм?нних до нового невидимого входу.Для прикладу перейдемо до найпрост?шо? модел?, використовуючи завдання прогнозування наступного слова в посл?довност? на основ? попередн?х.По-перше, треба навчити мережу за допомогою великого набору даних. З ц??ю метою ми можемо вибрати будь-який великий текст (?В?йна ? мир? Льва Толстого – як приклад). Коли пройшли тренування, ми можемо ввести речення ?Наполеон був ?мператором…? ? оч?кувати розумного прогнозування на основ? знань з книги.Ми вводимо один приклад за один раз ? виробля?мо один результат, обидва з яких ? ?диними словами. Р?зниця з прямою мережею поляга? в тому, що ми також повинн? бути про?нформован? про попередн? входи перед оц?нюванням результату. Таким чином, ви можете переглядати РНМ як багаторазов? нейронн? мереж?, передаючи ?нформац?ю в?д одного до ?ншого.Рисунок 1.9. Рекурентна нейронна мережа.1.2.2. Методи навчання нейронних мереж.Розглянемо так? методи навчання НМ:Навчання з вчителем;Навчання без вчителя;Навчання з частковим залученням вчителя.1.2.2.1. Навчання з вчителемНавчання з учителем (supervised learning) передбача? наявн?сть повного набору розм?чених даних для тренування модел? на вс?х етапах ?? побудови. Наявн?сть повн?стю розм?ченого датасета означа?, що кожному прикладу в навчальному набор? ? в?дпов?дь, яку алгоритм ? повинен отримати. Таким чином, розм?чений датасет з фотограф?й кв?т?в навчить нейронну мережу, де зображен? троянди, ромашки або нарциси. Коли НМ отрима? нове фото, вона пор?вня? його з прикладами з навчально? датасета, щоб передбачити в?дпов?дь.В основному навчання з учителем застосову?ться для вир?шення двох тип?в задач: класиф?кац?? ? регрес??. У задачах класиф?кац?? алгоритм пророку? дискретн? значення, що в?дпов?дають номерам клас?в, до яких належать об'?кти. У навчальному датасет? з фотограф?ями тварин кожне зображення буде мати в?дпов?дну м?тку - ?к?шка?, ?коала? або ?черепаха?. Як?сть алгоритму оц?ню?ться тим, наск?льки точно в?н може правильно класиф?кувати нов? фото з коалами ? черепахами.А ось завдання регрес?? пов'язан? з безперервними даними. Один ?з приклад?в, л?н?йна регрес?я, обчислю? оч?куване значення зм?нно? y, враховуючи конкретн? значення x. Б?льш утил?тарн? завдання машинного навчання використовують велику к?льк?сть зм?нних. Як приклад, нейронна мережа, пророку? ц?ну квартири в Ки?в? на основ? ?? площ?, м?сця розташування ? доступност? громадського транспорту. Алгоритм викону? роботу експерта, який розрахову? ц?ну квартири виходячи з тих же даних.Таким чином, навчання з учителем найб?льше п?дходить для задач, коли ? значний наб?р достов?рних даних для навчання алгоритму. Але так бува? далеко не завжди.1.2.2.2. Навчання без вчителя.?деально розм?чен? ? чист? дан? д?стати нелегко. Тому ?нод? перед алгоритмом сто?ть завдання знайти заздалег?дь не в?дом? в?дпов?д?. Ось де потр?бно навчання без учителя.У навчанн? без учителя (unsupervised learning) у модел? ? наб?р даних, ? нема? явних вказ?вок, що з ним робити. НМ намага?ться самост?йно знайти корелляц?? в даних, витягуючи корисн? ознаки ? анал?зуючи ?х.Залежно в?д завдання модель систематизу? дан? по-р?зному.Кластеризац?я. Нав?ть без спец?альних знань експерта-орн?толога можна подивитися на колекц?ю фотограф?й ? розд?лити ?х на групи за видами птах?в, спираючись на кол?р пера, розм?р або форму дзьоба. Саме в цьому поляга? кластеризац?я - найб?льш поширене завдання для навчання без учителя. Алгоритм п?дбира? схож? дан?, знаходячи сп?льн? ознаки, ? групу? ?х разом.Виявлення аномал?й. Банки можуть виявити шахрайськ? операц??, виявляючи незвичайн? д?? в куп?вельному поводженн? кл??нт?в. Наприклад, п?дозр?ло, якщо одна кредитна карта використову?ться в Кал?форн?? ? Дан?? в один ? той же день. Схожим чином, навчання без вчителя використовують для знаходження викид?в в даних.Асоц?ац??. Якщо вибрати в онлайн-магазин? гирю, штангу, то сайт порекоменду? вам додати г?мнастичний коврик ? спортивне харчування до замовлення. Це приклад асоц?ац?й: деяк? характеристики об'?кта корелюють з ?ншими ознаками. Розглядаючи пару ключових ознак об'?кта, модель може передбачити ?нш?, з якими ?сну? зв'язок.Автоенкодери. Автоенкодери приймають вх?дн? дан?, кодують ?х, а пот?м намагаються в?дтворити початков? дан? з отриманого коду. Не так багато реальних ситуац?й, коли використовують простий автоенкодер. Але варто додати шари ? можливост? розширяться: використовуючи зашумлен? ? вих?дн? верс?? зображень для навчання, автоенкодери можуть видаляти шум з в?деоданих, зображень або медичних скан?в, щоб п?двищити як?сть даних.У навчанн? без учителя складно обчислити точн?сть алгоритму, тому що в?дсутн? ?правильн? в?дпов?д?? або м?тки. Але розм?чен? дан? часто ненад?йн? або ?х занадто дорого отримати. У таких випадках, надаючи модел? свободу д?й для пошуку залежностей, можна отримати хорош? результати.1.2.2.3. Навчання з частковим залученням вчителяНавчання з частковим залученням вчителя (semi-supervised learning) характеризу?ться сво?ю назвою: навчальний датасет м?стить як розм?чен?, так ? нерозм?чен? дан?. Цей метод особливо корисний, коли важко отримати з даних важлив? ознаки або розм?тити вс? об'?кти. Цей метод машинного навчання поширений для анал?зу медичних зображень, таких як сканування комп'ютерно? томограф?? або МРТ. Досв?дчений рентгенолог може розм?тити невелике п?дмножину скан?в, на яких виявлен? пухлини ? захворювання. Але вручну розм?чати вс? скани - занадто трудом?стка ? дорога задача. Проте нейронна мережа може отримати ?нформац?ю з невелико? частки розм?чених даних ? пол?пшити точн?сть прогноз?в в пор?внянн? з моделлю, яка навча?ться виключно на нерозм?чену даних.Популярний метод навчання, для якого потр?бно невеликий наб?р розм?чених даних, поляга? в використанн? GAN. Цей метод склада?ться з двох нейронних мереж, де кожна намага?ться перехитрити ?ншу. Одна з мереж, генератор, намага?ться створити нов? об'?кти даних, як? ?м?тують навчальну виб?рку. ?нша мережа, дискрим?натор, оц?ню?, чи ? ц? згенерован? дан? реальними або п?дробленими. Мереж? вза?мод?ють ? цикл?чно удосконалюються, оск?льки дискрим?натор намага?ться краще в?докремлювати п?дробки в?д ориг?нал?в, а генератор намага?ться створювати переконлив? п?дробки.1.3. Загальна ?нформац?я про арх?вац?ю даних1.3.1. Загальн? в?домост?Арх?вац?я – процес стиснення даних. Стиснення даних — це процедура перекодування даних, яка проводиться з метою зменшення ?х об'?му, розм?ру, обсягу. Стиснення бува? двох тип?в:без втрат (п?сля в?дновлення дан? не спотворюються) з втратами (в?дновлення даних проходить з незначними спотвореннями). Стиснення без втрат використову?ться при обробц? та збереженн? комп'ютерних програм ? даних. Стиснення з втратами зазвичай застосову?ться для зменшення об'?му звуково?, фото, та в?део?нформац??. На практиц? стиснення з втратами для такого роду ?нформац?? ? б?льш д??вим. Стиснення базу?ться на видален? надлишку ?нформац??, яка м?ститься у вих?дних даних. Прикладом надлишку ? повторення в текст? фрагмент?в (наприклад, сл?в природно? або машинно? мови). Под?бний надлишок зазвичай усува?ться зам?ною повторюваних посл?довностей б?льш коротким значенням (кодом). ?нший вид надлишку пов'язаний з тим, що деяк? значення в даних зустр?чаються част?ше ?нших. А в?д так можна зам?нити дан?, що часто зустр?чаються б?льш короткими кодами, а т?, що р?дше зустр?чаються - б?льш довгими (ймов?рн?сне стиснення). Стиснення даних, як? не мають властивост? надлишку (наприклад випадковий сигнал чи шум), неможливе, зазвичай неможливо стиснути ? зашифровану ?нформац?ю. Арх?в — файл, що м?стить у соб? один або дек?лька файл?в та метадан?. Файли можуть бути як стиснен? (без втрат), так ? мати початковий розм?р та структуру, але першочергове завдання арх?ву тримати у соб? саме стиснут? файли. Метадан? можуть м?стити ?нформац?ю про початковий розм?р файл?в, ?нформац?ю про формат файл?в, структуру директор?й, коментар? до файл?в, ?нформац?ю для в?дновлення арх?ву. Арх?ви файл?в створюються за допомогою спец?ал?зованих програм — арх?ватор?в, як? можуть бути як окремими програмами, так ? частиною ?нших програм.1.4. Комп’ютерне бачення.Комп'ютерне бачення - це область досл?дження, ор??нтована на проблему допомоги комп'ютерам бачити. На абстрактному р?вн? завдання комп'ютерного зору поляга? в тому, щоб використовувати дан? спостережуваних зображень, щоб зробити висновок про св?т.Це мультидисципл?нарна сфера, яку можна назвати п?дполем штучного ?нтелекту та машинного навчання, що може включати використання спец?ал?зованих метод?в ? використання загальних алгоритм?в навчання.Рисунок 1.10. Вза?мозв’язок штучного ?нтелекту та комп'ютерного бачення.Одна проблема у комп’ютерному баченн? може бути легко розглянута за допомогою ручного статистичного методу, тод? як ?нша може вимагати великого ? складного методу узагальнених алгоритм?в машинного навчання.Розум?ння зм?сту цифрових зображень може включати вилучення опису з зображення, яке може бути об'?ктом, текстовим описом, тривим?рною моделлю тощо.Метою комп'ютерного зору ? отримання корисно? ?нформац?? з зображень. Це виявилося надзвичайно складним завданням. Протягом останн?х чотирьох десятил?ть вона зайняла тисяч? розумних ? творчих ум?в, ?, незважаючи на це, ми ще далек? в?д можливост? побудувати ?машину бачення загального призначення?. Комп'ютерне бачення зда?ться легким, можливо, тому, що воно так легко для людини.Спочатку вважалося, що це проста проблема, яка може бути вир?шена студентом. П?сля десятил?ть досл?джень, ?комп'ютерне бачення? залиша?ться невир?шеною задачою, принаймн? з точки зору задоволення можливостей людського зору.Одн??ю з причин ? те, що ми не розум??мо, як працю? людський з?р. Вивчення б?олог?чного зору вимага? розум?ння орган?в сприйняття, таких як оч?, а також ?нтерпретац?я сприйняття всередин? мозку. Було досягнуто значного прогресу, як у плануванн? процесу, так ? в план? виявлення хитрощ?в ? скорочень, як? використовуються системою, хоча, як ? будь-яке досл?дження, яке стосу?ться мозку, ? ще довгий шлях.Науковц? витратили десятил?ття, намагаючись зрозум?ти, як працю? система зору, ?, хоча вони можуть розробити оптичн? ?люз??, щоб зрозум?ти деяк? з ?? принцип?в, повне вир?шення ц??? головоломки залиша?ться невловимим.Ще одн??ю причиною, чому це така складна проблема, ? складн?сть, властива в?зуальному св?ту.Даний об'?кт може бути видно з будь-яко? ор??нтац??, в будь-яких умовах осв?тлення, з будь-яким типом оклюз?? з ?нших об'?кт?в, ? так дал?. Справжня система зору повинна бути здатна ?бачити? в будь-якому безмежн?й к?лькост? сцен ? дос? видобувати щось значуще.Комп'ютери добре працюють для жорстко обмежених проблем, не в?дкриваючи необмежених проблем, таких як в?зуальне сприйняття.1.4.1. Комп'ютерне бачення та обробка зображень.Комп'ютерне бачення в?др?зня?ться в?д обробки зображень.Обробка зображень - це процес створення нового зображення з ?снуючого зображення, що, як правило, спрощу? або п?двищу? вм?ст певним чином. Це тип цифрово? обробки сигнал?в ? не пов'язаний з розум?нням зм?сту зображення. Дана система комп'ютерного зору може вимагати, щоб обробка зображення застосовувалася до вх?дних даних, наприклад, попередня обробка зображень. Приклади обробки зображень включають:Нормал?зац?я фотометричних властивостей зображення, наприклад яскравост? або кольору.Обр?зання меж зображення, наприклад, центрування об'?кта на фотограф??.Видалення цифрового шуму з зображення, наприклад цифрових артефакт?в з низьким р?внем осв?тлення.1.4.2. Переваги комп'ютерного бачення.?сну? п'ять основних переваг комп'ютерного зору:Спрощу? та прискорю? процес: в?н дозволя? проводити досл?дження кл??нтам в загальному житт? та для промислових потреб. Кр?м того, вона нада? ?м доступ до сво?х ресурс?в. Це можливо завдяки ?снуванню Computer Vision та обробки на швидких комп'ютерах.Над?йн?сть: комп'ютери та камери не мають людського та упередженного фактор?в, втоми, що явля?ться значною перевагою. Ефективн?сть зазвичай однакова, вона не залежить в?д зовн?шн?х фактор?в, таких як хвороба або сентиментальний статус.Точн?сть: точн?сть комп'ютерно? в?зуал?зац?? та комп'ютерного бачення забезпечать б?льшу точн?сть отримання результат?в, що поставленно перед системою.Широкий спектр застосувань: ми можемо бачити одну й ту саму комп'ютерну систему в дек?лькох р?зних галузях ? заходах. Наприклад: на заводах: спостереження за складськими прим?щеннями та доставкою товар?в, а також у медичну галузь: скановання зображень, серед ?нших численних вар?ант?в.Зниження витрат: у процес? комп'ютерного уявлення скорочуються витрати часу та ймов?рн?сть помилок. Це знижу? витрати на найм та п?дготовку спец?ал?ст?в в дан?й област? для виконання роб?т, як? будуть виконувати комп'ютери, як сотн? прац?вник?в.1.4.2. Недол?ки комп'ютерного бачення.Незважаючи на вс? переваги комп'ютерного зору ? можливост? машинного навчання, ми повинн? розглянути деяк? недол?ки комп'ютерного зору:Необх?дн?сть фах?вц?в: ?сну? величезна необх?дн?сть фах?вця, що ма? в?дношення до галуз? машинного навчання та штучного ?нтелекту. Потр?бен профес?онал, який зна?, як ц? пристро? працюють ? користуються вс?ма перевагами Computer Vision. Кр?м того, людина може в?дремонтувати ?х, коли це необх?дно. Порушення: виключення людського фактора може бути хорошим в деяких випадках. Але коли апарат або пристр?й виходять з ладу, в?н не оголошу? та не передбача? цю проблему. Тод? як людина може заздалег?дь сказати, коли людина не прийде.Невдала обробка зображення: коли пристр?й виходить з ладу через в?рус або ?нш? проблеми програмного забезпечення, дуже ймов?рно, що комп'ютерне бачення та обробка зображень не вдасться. Але якщо ми не вир?шимо проблему, функц?? пристрою можуть зникнути. Наприклад: може призупинити випуск продукц?? у з? склад?в.Висновки до розд?лу 1.У даному розд?л? було розглянуто матер?ал про б?бл?отеку TensorFlow та об?рунтувано виб?р саме ц??? б?бл?отеки. Також були розглянут? види НМ та методи навчання нейронних мереж, а саме:Навчання з вчителем;Навчання без вчителя;Навчання з частковим залученням;В результат? було визначено, що для поставлено? задач? п?дходить навчання з вчителем. Було розглянуто переваги та недол?ки комп’ютерного бачення.РОЗД?Л 2МАТЕР?АЛИ ? МЕТОДИ ДОСЛ?ДЖЕННЯ2.1. Система розп?знавання рукописного тексту за допомогою TF.Системи розп?знавання рукописних тексту в автономному режим? (HTR) транскрибують текст, що м?ститься в сканованих зображеннях, в цифровий текст, приклад наведений на рисунку 2.1.Рисунок 2.1. Транскрипц?я слова в цифровий текст.2.2. Огляд модел?.Ми використову?мо НМ для нашого завдання. Вона склада?ться з згорткових НМ (ЗНМ) шар?в, рекурентних НМ (РНМ) шар?в ? остаточного шару Connectionist Time Classical (CTC). На рисунку 2.2. показаний огляд нашо? системи РРТ.Рисунок 2.2. Огляд операц?й НМ ? пот?к даних через НМ.Ми також можемо розглядати НМ б?льш формально як функц?ю (Рисунок 2.3.), яка в?добража? зображення (або матрицю) M розм?ру W × H до посл?довност? символ?в (c1, c2,…) з довжиною м?ж 0 ? L. Текст розп?зна?ться на р?вн? символ?в, тому слова або тексти, що не м?стяться в навчальних даних, також можуть бути розп?знан? (якщо окрем? символи правильно класиф?куються).Рисунок 2.3. НМ написана як математична функц?я, яка в?добража? зображення M до посл?довност? символ?в (c1, c2,…).2.3. Операц??.Згорткова нейронна мережа використову?ться для вилучення посл?довност? ознак. Вх?дне зображення пода?ться в шари ЗНМ. Ц? шари навчаються витягувати в?дпов?дн? функц?? з зображення. Кожен шар склада?ться з трьох операц?й. По-перше, операц?я згортки, яка застосову? ядро ф?льтра розм?ром 5 × 5 у перших двох шарах ? 3 × 3 в останн?х трьох шарах на вх?д. Пот?м застосову?ться нел?н?йна передавальна функц?я. Нарешт?, шар об'?днання об'?дну? област? зображень ? виводить зменшену верс?ю вводу. У той час як висота зображення зменшу?ться на 2 в кожному шар?, додаються карти (канали) об'?кт?в, так що карта виходу (або посл?довн?сть) ма? розм?р 32 × 256.Рекурентна нейронна мережа використову?ться для поширення ?нформац?? через посл?довн?сть. Вона виводить символьн? бали для кожного елемента посл?довност?, який просто представля?ться матрицею. Посл?довн?сть ознак м?стить 256 функц?й за крок часу, РНМ поширю? в?дпов?дну ?нформац?ю через цю посл?довн?сть. Застосову?ться популярна довгострокова короткострокова пам'ять (ДКЧП), оск?льки вона здатна поширювати ?нформац?ю на велик? в?дстан? ? забезпечу? б?льш над?йну тренувальну характеристику, н?ж ван?льна РНМ. Вих?дна посл?довн?сть РНМ в?добража?ться в матрицю розм?ром 32 × 80. Тимчасова класиф?кац?я зв’язку: п?д час навчання НМ, ТКЗ отриму? вих?дну матрицю РНМ ? текстову ?нформац?ю про ?стину, ? обчислю? значення втрат. При висновку ТКЗ да?ться т?льки матриця ? вона розшифрову? ?? в к?нцевий текст. Обидва текстов? ?стини ? розп?знаний текст можуть мати не б?льше 32 символ?в. На рисунку 4 показано як вза?мод?ють ТКЗ, РНМ, ЗНМ.Рисунок 2.4. Огляд НМ для розп?знавання рукописного тексту.2.4. Дан?.Вх?дн? дан?: зображення с?рого кольору розм?ром 128 × 32. Зазвичай, зображення з набору даних не мають точно такого розм?ру, тому ми зм?ню?мо його розм?р (без спотворень), поки в?н не ма? ширину 128 або висоту 32. Пот?м ми коп?ю?мо зображення в (б?ле) ц?льове зображення розм?р 128 × 32. Цей процес показаний на рисунку 5. Нарешт?, ми нормал?зу?мо значення с?рого зображення, що спрощу? завдання для НМ. Зб?льшення даних можна легко ?нтегрувати, скоп?ювавши зображення на випадков? позиц??, зам?сть вир?внювання його л?воруч або випадкового зм?ни розм?ру зображення. Зображення з набору даних з дов?льним розм?ром масштабу?ться, щоб в?дпов?дати ц?льовому зображенню розм?ром 128 × 32, порожню частину ц?льового зображення заповню?ться б?лим кольором.Рисунок 2.5. Зображення з набору даних з дов?льним розм?ром.На рисунку 2.6. показаний вих?д шар?в ЗНМ, який ? посл?довн?стю довжиною 32. Кожен запис м?стить 256 ознак. Звичайно, ц? особливост? додатково обробляються шарами РНМ, однак деяк? функц?? вже демонструють високу кореляц?ю з деякими властивостями високого р?вня вх?дного зображення: ? особливост?, як? мають високу кореляц?ю з символами (наприклад: "e"), або з повторюваними символами (наприклад: "tt"), або з властивостями символ?в, такими як петл? (як? м?стяться в рукописному "l" або "e").Рисунок 2.6. Обчислення шарами ЗНМ 256 властивостей за крок часу. .Рисунок 2.7. Вх?дне зображення.Рисунок 2.8. Граф?к 32-? ознаки, який ма? високу кореляц?ю з виникненням символу ?e? на зображенн?.На рисунку 2.9. показана в?зуал?зац?я вих?дно? матриц? РНМ для зображення, що м?стить текст ?little?. Матриця, показана на верхньому граф?ку, м?стить бали для символ?в, включаючи порожню етикетку ТКЗ як ?? останн?й (80-ий) запис. ?нш? записи матриц?, зверху вниз, в?дпов?дають таким символам: “!” # & ’() * +, -. / 0123456789:;? ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”. Можна бачити, що б?льшу частину часу символи передбачаються точно в тому м?сц?, де вони з'являються на зображенн? (наприклад, положення ?i? на зображенн? ? на граф?ку). Лише останн?й символ “e” не вир?вняно. Але це нормально, тому що операц?я ТКЗ не ма? сегментац?? ? не дба? про абсолютн? позиц??. З найнижчого граф?ка, що показу? бали для символ?в "l", "i", "t", "e" ? порожня етикетка ТКЗ, текст легко розшифрову?ться: ми просто прийма?мо найб?льш в?рог?дний символ з кожного разу, це утворю? так званий кращий шлях, пот?м ми викида?мо повторюван? символи ?, нарешт?, вс? пропуски: “l --- ii - tt - l-… -e” → “l --- i - tt- -l- ... -e ?→? little ?.51777901069340а)а)51777901802765б)б)52063653136265в)в)Рисунок 2.9. а) вих?дна матриця шар?в РНМ; б)вх?дне зображення;в) ймов?рност? для символ?в "l", "i", "t", "e" ? порожньо? м?тки ТКЗ.Висновки до розд?лу 2.У даному розд?л? було описано принцип роботи системи розп?знавання рукописного тексту за допомогою TensorFlow. Була розглянута модель та операц??, що дозволяють проводити транскрипц?ю рукописного тексту в друкований.РОЗД?Л 3ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ3.1. Розробка функц?онально? модел?.Програмне забезпечення для розп?знавання рукописного тексту потребу? ч?ткого проектування та техн?чного завдання для уникнення проблем при реал?зац??. В першу чергу необх?дно розробити функц?ональну модель програми, яка буде в?дображати загальну структуру процес?в системи та модел? в?дображення ус?х етап?в роботи прогнамного забезпечення. Також необх?дно реал?зувати тимчасовий буфер збереження та база даних оброблювально? ?нформац??, на основ? чого будуть використовуватися дан? для системи та програмного забезпечення. Техн?чне завдання дозволить б?льш точно надати представлення проблеми та принципу вир?шення даного завдання, що поставлено перед командою розробник?в та арх?тектор?в.3.1.1. Контекстна д?аграма.Використовуючи зас?б для моделювання б?знес-процес?в AllFusion Process Modeler r7 [37], було побудовано наступну контекстну д?аграму, що в?добража? ус? складов?, що роботи з розп?знаванням рукописного тексту та засоб?в, що будуть використан? для вир?шення поставлено? задач? (рис. 3.1):Рисунок 3.1. Контекстна д?аграма.На н?й зл?ва в?дображено вх?д, тобто дан? як? йдуть на вх?д програмного забезпечення. Зверху в?дображен? методи виконання, тобто як? алгоритми використовуються в програмному забезпеченн?. Знизу умови, тобто за рахунок чого буде працювати програмне забезпечення. Справа – вих?д, тобто результат який вида? програмне забезпечення.3.1.2. Д?аграма декомпозиц?? першого р?вняДана д?аграма (рис. 3.2) в?добража? п?дпроцеси ПЗ.Рисунок 3.2. Д?аграма декомпозиц?? першого р?вня.Рисунок 3.3. Блок схема алгоритму.Висновки до розд?лу 3У даному розд?л? змодельовано процеси для системи розп?знавання рукописного тексту та його транскрипц?? у друкований вигляд. Було розроблено контекстну д?аграму, д?аграму декомпозиц?? першого р?вня та блок схему алгоритму роботи програмного забезпечення. РОЗД?Л 4РЕАЛ?ЗАЦ?Я ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ4.1. Процес попередньо? обробки зображення. Ми попередньо обробля?мо вх?дне зображення таким чином: по-перше, обр?за?мо його; зб?льшу?мо контраст; потовщу?мо л?н??. Застосовуючи морфолог?чну операц?ю, модель зможе розп?знати правильний текст.Кадрування можна зробити за допомогою алгоритму сегментац?? сл?в, под?бного алгоритму, запропонованому R. Manmatha ? N. Srimal. Зб?льшення контрасту ? застосування морфолог?чно? операц?? досяга?ться наступною функц??ю, що реал?зована мовою програмування Python.picture = cv2.imread('1234.png', cv2.IMREAD_GRAYSCALE)pxmin = np.min(picture)pxmax = np.max(picture)picContrast = (picture - pxmin) / (pxmax - pxmin) * 255kernel = np.ones((3, 3), np.uint8)picMorph = cv2.erode(picContrast, kernel, iterations = 1)cv2.picwrite('res1234.png', picMorph) 4.2. Створення набор?в даних для тренування.?снують ситуац??, для яких попередня обробка не п?дходить:Нов? зразки даних включають символи, як? не м?стяться в набор? даних (наприклад, а, б, в, г, д …), як? не можуть бути розп?знан? попередньо п?дготовленою моделлю. Фон м?стить шум, який не може бути видалений попередньою обробкою (наприклад, папером поперечного перер?зу)У цих випадках тренування модел? на нових даних ма? сенс. Для роботи потр?бн? пари текстових зображень, як? ви повинн? конвертувати в формат, сум?сний з IAM. Наступний код показу?, як це зробити.def __init__(self, wordList):self.wordList = wordListself.idx = 0def hasNext(self):"are there still samples to process?"return self.idx < len(self.wordList)def getNext(self):"TODO: return a sample from your data as a tuple containing the text and the image"pict = np.ones((32, 128), np.uint8)*255slovo = self.wordList[self.idx]self.idx += 1cv2.putText(pict, slovo, (2,20), cv2.FONT_HERSHEY_SIMPLEX, 0.4, (0), 1, cv2.LINE_AA)return (slovo, pict)def createIAMCompatibleDataset(dataProvider):"Ц? дан? використовуються для навчання системи розп?знавання зображень"rx = open('slovo.txt', 'w+')if not os.path.exists('sub'):os.makedirs('sub')if not os.path.exists('sub/sub-sub'):os.makedirs('sub/sub-sub')ctrl = 0while dataProvider.hasNext():sample = dataProvider.getNext()cv2.imwrite('sub/sub-sub/sub-sub-%d.png'%ctr, sample[1])line = 'sub-sub-%d'%ctr + ' X X X X X X X ' + sample[0] + '\n'rx.write(line)ctr += 1if __name__ == '__main__':words = ['?нколи', 'слова', 'для', 'тому', 'ми', 'створити',зображення_тексту']dataProvider = DataProvider(words)createIAMCompatibleDataset(dataProvider)4.3. Розп?знавання тексту у рядках.Модель здатна вводити зображення розм?ром 128 × 32 ? здатна виводити не б?льше 32 символ?в. Отже, можна розп?знати одне або два слова. Проте, неможливо виявити б?льш довг? пропозиц?? через малий розм?р вх?дних ? вих?дних даних. Знову ж таки, ?сну? два способи вир?шити цю проблему.4.3.1. Попередньо оброблен? зображення.Якщо слова рядка легко сегментувати (велик? розриви м?ж словами, невелик? пром?жки м?ж символами слова), то можна використовувати метод сегментац?? сл?в.4.3.2. Попередньо оброблен? зображення.Розширити модель, щоб в?дпов?дати повним текстовим рядкам?снують ситуац??, в яких сегментац?я сл?в складна:Знаки пунктуац?? записуються поруч ?з словом ? тому важко сегментувати.Стиль написання курс?в також важко сегментувати.Можна розширити модель так, щоб вх?д м?г вм?стити б?льш? зображення, а вив?д м?г вм?стити довш? символьн? рядки. 4.4. Оц?нка впевненост? розп?знаного тексту.Найпрост?ший спос?б отримати ймов?рн?сть розп?знаного тексту - це використання функц?? втрати CTC. Функц?я втрат прийма? матрицю символ?в-ймов?рностей ? текст як вх?дн? дан?, ? виводить значення втрати L. Значення втрати L ? негативною логарифм?чною ймов?рн?стю побачити даний текст, тобто L = -log (P). Якщо ми пода?мо символи-ймов?рност? ? розп?знаний текст у функц?ю втрат, а пот?м скасу?мо журнал ? м?нус, отриму?мо ймов?рн?сть P розп?знаного тексту: P = exp (-L).Наступний код показу?, як обчислити ймов?рн?сть розп?знаного тексту.import numpy as npimport tensorflow as tfbatchSize = 1numClasses = 3numTimesteps = 2def createGraph():"створення графа в?дображення"tinputs = tf.placeholder(tf.float32, [numTimesteps, batchSize, numClasses])tseqLen = tf.placeholder(tf.int32, [None])tgroundtruth = tf.SparseTensor(tf.placeholder(tf.int64, shape=[None, 2]) , tf.placeholder(tf.int32, [None]), tf.placeholder(tf.int64, [2]))tloss = tf.nn.ctc_loss(tgroundtruth, tinputs, tseqLen)tbest = tf.nn.ctc_greedy_decoder(tinputs, tseqLen, merge_repeated=True)return (tinputs, tseqLen, tgroundtruth, tloss, tbest)def getData():seqLen = [numTimesteps]inputs = np.log(np.asarray([ [[0.6, 0.1, 0.3]], [[0.3, 0.1, 0.6]] ], np.float32))return (inputs, seqLen) def toLabelString(decoderOutput):"map sparse tensor from decoder to label string"decoded = decoderOutput[0][0]idxDict = {b:[] for b in range(batchSize)}encodedLabels = [[] for i in range(batchSize)]for (idxVal, idx2d) in enumerate(decoded.indices):value = decoded.values[idxVal]batch = idx2d[0]encodedLabels[batch].append(value)return encodedLabels[0]def main():(tinputs, tseqLen, tgroundtruth, tloss, tbest) = createGraph()sess = tf.Session()sess.run(tf.global_variables_initializer())(inputs, seqLen) = getData()retBest = sess.run(tbest, {tinputs:inputs, tseqLen:seqLen } )print('Best path decoding:', toLabelString(retBest))retLoss = sess.run(tloss, {tinputs:inputs, tseqLen:seqLen, tgroundtruth: (retBest[0][0].indices, retBest[0][0].values, retBest[0][0].dense_shape) })print('Loss:', retLoss[0])print('Probability:', np.exp(-retLoss[0]))if __name__ == '__main__':main()Узагальнено модель розп?знавання тексту вигляда? так: Зображення повинн? бути схожими на IAM;Текстов? рядки потр?бно розд?лити на окрем? слова;Якщо це не покращить результати, можна навчити модель з нуля.Користування функц??ю втрат для обчислення оц?нки впевненост? розп?знаного тексту.4.5 Метод сегментац?? зображень тексту ? принцип роботи.Для класиф?кац?? на р?вн? зображення рукописного тексту було перев?рено, що опрацювання тексту втрача?ться через велику розм?рн?сть вих?дних даних масиву даних (словника) ? труднощ? точногоо розп?знавання зображень сл?в. Було вир?шено, що на р?вн? методу класиф?кац?? може бути б?льш перспективним п?дходом, оск?льки досить повна база даних (словника) в?дносно краща, н?ж аналог?чний словник символ?в (символи А-Яа-я0-9 ? лише 73 окремими символами), що значно обмежу? принцип опрацювання та розп?знавання тексту. Кр?м того, розп?знання для кирилиц? зображення ? б?льш простим завданням, н?ж розп?знавання слова в зображен? через обмежений д?апазон символ?в. Проте першо? та основною задачею, з яким з?ткнулися ? було поставлено на перше м?сце.Для того, щоб перев?рити цей п?дх?д, було проведено сегментац?я слова зображень у зображеннях з компонентними символами. Другою головною проблемою буде визначення розрив?в сл?в у зображення ? вир?внювання посл?довно-розп?знаних символ?в м?ж цими пром?жками в слова. Для реал?зац?? цього завдання було застосовано драйвер CNN / LSTM на баз? нейронно? мереж? Tesseract 4.0. Ця модель налаштована як розп?знаваня тексту, спочатку розроблена компан??ю HP (на сьогодн?шн?й день продукт компан?? Micro Focus), а тепер ?нтегру?ться з програмними р?шеннями компан?? Google та GmbH DeepL, яка може розп?знати б?льше 100 мов з коробки. Для латинських мов, включаючи англ?йську та кирилицю, з моделю Tesseract пройдено навчання близько 400000 рядк?в тексту та 4500 шрифт?в. Налаштування параметр?в попередньо взято? модел? на IAM-набор? даних рукописного вводу. П?сля чого було п?д?брано модель та сегментувано ориг?нальн? вх?дн? зображення слова в ?хн? г?потетичн? образи компонент?в (символ?в), передаючи у вих?дн? зображення сегментованих символ?в в класиф?кац?ю на р?вн? символ?в.Для того щоб пол?пшити результати безпосередньо? класиф?кац?? одного слова, для сегментац?? символами, а пот?м реконструкц?? слова, класиф?куючи кожне з них як ?ндив?дуальний елементр. Спочатку завантажу?ться LSTM Tesseract з моделлю згортки, попередньо п?дготовлену на основ? вищезгаданого набору даних кирилицею, а пот?м допрацювали верстку в набор? даних. Було перетворено вх?дн? дан? для включення в них не т?льки вх?дного зображення, а й обмеження по ?нформац?? для кожного з символ?в компонента. (Тобто м?тки символ?в та областей розм?щення тексту- найкраще наближення верхнього крайнього л?вого, нижнього крайнього л?вого ? верхнього краю крайн? прав? ? крайн? нижн? л?в? позиц?? кожного символу), що отриманн? з XML-даних.Тессеракт м?стив скрипти для автоматично? генерац?? набору даних з урахуванням в?дпов?дно? ?нформац??. Створення словник символ?в, що склада?ться з великих ? малих л?тер ? однозначних цифр. Остання модель зак?нчилася на тому, що використовуючи ту ж процедуру оптим?зац??, ADAM, але у ?ншу формат? представлення ?нформац??, в?дпов?дно для вир?шення проблеми, звано? ТКП втрат. Коротко, ТКП (тимчасова класиф?кац?я п?дключень) - це метод / функц?я втрати, розроблена Graves et. al. Для навчання повторюваних нейронних мереж для маркування вих?дних посл?довностей (М?тки для символ?в в нашому випадку) з несегментованих вх?дних даних (зображення вх?дного слова також в нашому випадку), а також використову?ться для таких завдань, як маркування даних мовного сигналу за допомогою кнопок транскрипц?? на р?вн? слова, RNNs з втратою. ТКП методи виявилися б?льш ефективними, н?ж традиц?йн? п?дходи, так? як УВП (умовн? випадков? поля) та автоматизованого процесу навчання.Приблизно, ТКП може сегментувати ? маркувати неструктурован? вх?дн? дан? шляхом оц?нки результат?в роботи мереж? як "розпод?лу ймов?рностей за вс?ма можливими посл?довностям м?ток, обумовленим заданими вх?дними посл?довн?стями", створеними з урахуванням сегментац?? вх?дно? посл?довност? заданого певного м?н?мального сегмента. Розм?р ? початкове навчання вузл?в мереж?, що описано ран?ше, п?сля доопрацювання та доопрацювання модел? сегментац??4.6. Функц??, що використовуються TF для зображень.Функц?я завантаження зображень р?зних формат?в в TFimport osimg_dir = '/tmp/nst'if not os.path.exists(img_dir): os.makedirs(img_dir)!wget--quiet-P/tmp/nst/ Функц?я конф?гурац?? та завантаження TF на ?нш? сервери.import matplotlib.pyplot as pltimport matplotlib as mplmpl.rcParams['figure.figsize'] = (10,10)mpl.rcParams['axes.grid'] = Falseimport numpy as npfrom PIL import Imageimport timeimport functoolsimport tensorflow as tfimport tensorflow.contrib.eager as tfefrom tensorflow.python.keras.preprocessing import image as kp_imagefrom tensorflow.python.keras import models from tensorflow.python.keras import lossesfrom tensorflow.python.keras import layersfrom tensorflow.python.keras import backend as KФункц?я в?дображення процесу завантаження зображення.def load_img(path_to_img): max_dim = 512 img = Image.open(path_to_img) long = max(img.size) scale = max_dim/long img = img.resize((round(img.size[0]*scale), round(img.size[1]*scale)), Image.ANTIALIAS) img = kp_image.img_to_array(img) # We need to broadcast the image array such that it has a batch dimension img = np.expand_dims(img, axis=0) return imgdef imshow(img, title=None): # Remove the batch dimension out = np.squeeze(img, axis=0) # Normalize for display out = out.astype('uint8') plt.imshow(out) if title is not None: plt.title(title) plt.imshow(out)Функц?я п?дготовки обробки зображення.def deprocess_img(processed_img): x = processed_img.copy() if len(x.shape) == 4: x = np.squeeze(x, 0) assert len(x.shape) == 3, ("Input to deprocess image must be an image of " "dimension [1, height, width, channel] or [height, width, channel]") if len(x.shape) != 3: raise ValueError("Invalid input to deprocessing image") # perform the inverse of the preprocessiing step x[:, :, 0] += 103.939 x[:, :, 1] += 116.779 x[:, :, 2] += 123.68 x = x[:, :, ::-1] x = np.clip(x, 0, 255).astype('uint8') return xФункц?я п?дготовки модел? обробки зображення з розп?знаванням поп?ксельно.def get_model(): """ Creates our model with access to intermediate layers. This function will load the VGG19 model and access the intermediate layers. These layers will then be used to create a new model that will take input image and return the outputs from these intermediate layers from the VGG model. Returns: returns a keras model that takes image inputs and outputs the style and content intermediate layers. """ # Load our model. We load pretrained VGG, trained on imagenet data vgg = tf.keras.applications.vgg19.VGG19(include_top=False, weights='imagenet') vgg.trainable = False # Get output layers corresponding to style and content layers style_outputs = [vgg.get_layer(name).output for name in style_layers] content_outputs = [vgg.get_layer(name).output for name in content_layers] model_outputs = style_outputs + content_outputs # Build model return models.Model(vgg.input, model_outputs)Функц?я застосування комп’ютерного зору в б?бл?отец? TFdef compute_loss(model, loss_weights, init_image, gram_style_features, content_features): """This function will compute the loss total loss. Arguments: model: The model that will give us access to the intermediate layers loss_weights: The weights of each contribution of each loss function. (style weight, content weight, and total variation weight) init_image: Our initial base image. This image is what we are updating with our optimization process. We apply the gradients wrt the loss we are calculating to this image. gram_style_features: Precomputed gram matrices corresponding to the defined style layers of interest. content_features: Precomputed outputs from defined content layers of interest. Returns: returns the total loss, style loss, content loss, and total variational loss """ style_weight, content_weight = loss_weights # Feed our init image through our model. This will give us the content and # style representations at our desired layers. Since we're using eager # our model is callable just like any other function! model_outputs = model(init_image) style_output_features = model_outputs[:num_style_layers] content_output_features = model_outputs[num_style_layers:] style_score = 0 content_score = 0 # Accumulate style losses from all layers # Here, we equally weight each contribution of each loss layer weight_per_style_layer = 1.0 / float(num_style_layers) for target_style, comb_style in zip(gram_style_features, style_output_features): style_score += weight_per_style_layer * get_style_loss(comb_style[0], target_style) # Accumulate content losses from all layers weight_per_content_layer = 1.0 / float(num_content_layers) for target_content, comb_content in zip(content_features, content_output_features): content_score += weight_per_content_layer* get_content_loss(comb_content[0], target_content) style_score *= style_weight content_score *= content_weight # Get total loss loss = style_score + content_score return loss, style_score, content_scoreФункц?я вибору найкращого град??нта зображення з можлив?стю покращення самого зображення.import IPython.displaydef run_style_transfer(content_path, style_path, num_iterations=1000, content_weight=1e3, style_weight=1e-2): # We don't need to (or want to) train any layers of our model, so we set their # trainable to false. model = get_model() for layer in model.layers: layer.trainable = False # Get the style and content feature representations (from our specified intermediate layers) style_features, content_features = get_feature_representations(model, content_path, style_path) gram_style_features = [gram_matrix(style_feature) for style_feature in style_features] # Set initial image init_image = load_and_process_img(content_path) init_image = tfe.Variable(init_image, dtype=tf.float32) # Create our optimizer opt = tf.train.AdamOptimizer(learning_rate=5, beta1=0.99, epsilon=1e-1) # For displaying intermediate images iter_count = 1 # Store our best result best_loss, best_img = float('inf'), None # Create a nice config loss_weights = (style_weight, content_weight) cfg = { 'model': model, 'loss_weights': loss_weights, 'init_image': init_image, 'gram_style_features': gram_style_features, 'content_features': content_features } # For displaying num_rows = 2 num_cols = 5 display_interval = num_iterations/(num_rows*num_cols) start_time = time.time() global_start = time.time() norm_means = np.array([103.939, 116.779, 123.68]) min_vals = -norm_means max_vals = 255 - norm_means imgs = [] for i in range(num_iterations): grads, all_loss = compute_grads(cfg) loss, style_score, content_score = all_loss opt.apply_gradients([(grads, init_image)]) clipped = tf.clip_by_value(init_image, min_vals, max_vals) init_image.assign(clipped) end_time = time.time() if loss < best_loss: # Update best loss and best image from total loss. best_loss = loss best_img = deprocess_img(init_image.numpy()) if i % display_interval== 0: start_time = time.time() # Use the .numpy() method to get the concrete numpy array plot_img = init_image.numpy() plot_img = deprocess_img(plot_img) imgs.append(plot_img) IPython.display.clear_output(wait=True) IPython.display.display_png(Image.fromarray(plot_img)) print('Iteration: {}'.format(i)) print('Total loss: {:.4e}, ' 'style loss: {:.4e}, ' 'content loss: {:.4e}, ' 'time: {:.4f}s'.format(loss, style_score, content_score, time.time() - start_time)) print('Total time: {:.4f}s'.format(time.time() - global_start)) IPython.display.clear_output(wait=True) plt.figure(figsize=(14,4)) for i,img in enumerate(imgs): plt.subplot(num_rows,num_cols,i+1) plt.imshow(img) plt.xticks([]) plt.yticks([]) return best_img, best_lossВисновоки до розд?лу 4.По-перше, для того, щоб мати б?льш переконливу ? над?йну п?дготовку, потр?бно використовувати додатков? методи попередньо? обробки, так? як розбиття. Також потр?бно розд?лити кожен п?ксель на в?дпов?дний йому стандартне в?дхилення для нормал?зац?? даних.Пот?м, враховуючи тимчасов? ? бюджетн? обмеження, було обмежено 20 прикладами навчання по кожному даному слову, з тим щоб перев?рити ефективн?сть оц?нки ? перегляд модел?.?ншим способом удосконалення модел? сегментац?? зм?сту потр?бно вийти за рамки пошук?в швидкого р?шення. Розглянуто б?льш вичерпний, але все ж ефективний алгоритм декодування. Наприклад, пошук р?вня тексту. Ми можемо використовувати символи /слова на основ? символ?в мовно? модел? для додавання бал?в за недол?ки та перевоги до кожно? з сукупн?стю ?ндив?дуальних ймов?рностей нейронно? мереж?, що представляють собою ймов?рн?сть посл?довност? символ?в / сл?в.Якщо у мовн?й модел? зазначено, можливо, найб?льш ймов?рне слово-кандидат у в?дпов?дност? з нейронним шаром ? методом пучкового пошукудуже малоймов?рно, враховуючи контекст, на в?дм?ну в?д деяких ?нших можливих кандидат?в слова, то наша модель може себе в?дпов?дним чином скоригувати.У даному роздылы було використано функц?ю нейронно? мереж? в TensorFlow по метод? навчання за допомогою вчителя для отримання б?льш ч?тких результат?в та з метою витратити менший пер?од часу на отримання прийнятного результату.РОЗД?Л 5ОХОРОНА ПРАЦ?ВступЗавдання дипломного проекту ма? наступну тему: ?Системи практичного застосування б?бл?отеки TensorFlow для розп?знавання зображень рукописного тексту для створення електронного арх?ву ?стор?й хвороб пац??нта?. На даному етап? роботи розглядаються основн? положення охорони прац? та безпеки при робот? в арх?в?. В даному диплом? будуть розглянут? норми електробезпеки та пожежно? безпеки для прим?щення. При порушенн? норм охорони прац? можуть статися нещасн? випадки, як? приведуть до загроз житт?д?яльност?.5.1. Загальна характеристика умов прац? в арх?в?.Параметри прим?щення наведен? в таблицях 5.1Таблиця 5.1Параметри прим?щення№НайменуванняОсновн? характеристикиК?ль-к?стьПозиц?я на малюнку1Параметри прим?щення-розм?ри 5×6×2,5 м, V = 75 м3,S = 30 м2--2Прац?вникиПрац?вники арх?ву2-3Двер? Steelguard tech 161-розм?ри 1250 × 2040 мм;-матер?ал сталь;194Штучне осв?тленняСв?тильник св?тлод?одна панель ЕВРОСВЕТ, потужн?сть 36 Вт3105Природн? осв?тленняВ?кно 1400мм×1100мм металопластикове, Salamander476ОпаленняРад?атор Energy 500×1000мм, сталь26Продовження таблиц? 5.1№НайменуванняОсновн? характеристикиК?ль-к?стьПозиц?я на малюнку7Персональний комп’ютер Qbox I3277-енергоспоживання: 95 Вт;-розм?р дисплею: 18,5";-споживана потужн?сть: 30,5 Вт;-розм?ри мон?тору 449×183×361 мм228сканер Canon CanoScan LIDE 220-розм?ри 216×297×116 мм;-матер?ал пластик;-напруга 220В, 50 Гц;139Стелаж для медичних карток-розм?ри 2800х420х2000 мм-матер?ал: ЛДСП;-матер?ал каркаса: метал;4810Ст?л оф?сний KARENDO-розм?ри: 1150 х 530 х 800 мм;-матер?ал: ЛДСП;1111Кр?сло оф?сне Salander-розм?ри: 400 х 374 х 850 мм;-матер?ал каркаса: метал;-оббивка: екошк?ра.3412Вогнегасник порошковий, ОПУ-10-розм?ри 420 × 150 × 150 мм;-об’?м 10л.15Прим?щення каб?нету арх?ву зображене на рисунку 5.1.Рисунок 5.1. План схема каб?нету арх?ву.Таблиця 5.2 Пор?вняння фактичних та нормативних характеристикПараметриНормативне значенняФактичн? значенняКорисна площа на 1 прац?вника, (м2) 4,58Корисний об’?м на 1 прац?вника, (м3) 1520В?дстань м?ж паралельно розташованими стелажами(мм)1000800Висота стелажу(мм)18002000Ширина стелажу(мм)6000420Довжина стелажу(мм)32002800 Стелаж? закр?плюються до стел?5.2. Oц?нка пoтенц?йних небезпек ? шк?дливих вирoбничих фактoр?в.В каб?нет? арх?ву присутн? небезпечн? ? шк?длив? вирoбнич? фактoри, щo при дотриманн? правил безпеки не несуть велико? небезпеки. Для цього у цьому пункт? розглядаються захoди щодо пoкращення (нoрмал?зац??) умoв прац?. Таблиця 5.3Основн? небезпечн? та шк?длив? фактори№ п/пФактори1Ф?зичн?: Електричний струм, Пожежа2Б?олог?чн?– в?дсутн?3Х?м?чн?4Психоф?зиолог?чн? – в?дсутн?5Соц?альн? - в?дсутн?5.2.1 Електричн? факториУ прим?щенн? арх?ву використову?ться мережа однофазного струму 220В. Електричн? фактори небезпеки та засоби захисту в?д електроураження вказан? в таблицях 5.4-5.6Таблиця 5.4Джерела небезпеки№ Найменування Джерело небезпеки Причини небезпекиНасл?дки небезпеки1Персональний комп’ютер Qbox I3277Блок живленняПошкодження блоку живлення, кабеля живлення. Ураження струмом 2сканер Canon CanoScan LIDE 220Блок живлення, детал? сканера, що знаходяться п?д напругоюПошкодження блоку живлення, кабеля живлення.Ураження струмомДан? про споживання напруги наведено у табл.5.5.Таблиця 5.5Реальн? та нормативн? фактори небезпеки№ Фактор небезпеки Реальне значенняНормативн? значення1Максимальний струм>1 A0,25 A220 B45 BДля зниження ймов?рност? настання небезпечно? ситуац??, необх?дно дотримуватись заход?в безпеки, як? наведен? в таблиц? 5.6.Таблиця 5.6Засоби захисту в?д електротравм№Група номенклатурних заход?в з ОПВид заходуКритер?й вибору1Техн?чн?- захисн? заземлення (наземн? комун?кац??);- захисне розд?лення електромереж; Уникнення пробою, виток?в струму уникнення контакту з? струмопров?дними частинами2Орган?зац?йн?- ?нструктаж з правил електробезпеки; - п?дтримка сухого, незапиленого прим?щення з волог?стю не вище 75%Доступн?сть знань щодо безпеки експлуатац??3Режимн?Перев?рка несправностей т?льки у в?дключеному стан?;Уникнення контакту з елементами п?д напругою4Експлуатац?йн? заходиСво?часна зам?на будь-яких пошкоджених елемент?вЗабезпечення безпечно? роботи з об'?ктомВиявлена наявн?сть електронебезпеки, яка може проявлятися у вигляд? витоку струму з електромереж? та надання травм орган?зму при контакт? з джерелом небезпеки.5.2.2 Пожежна безпекаВ прим?щенн? арх?ву присутн? наступн? горюч? речовини: пап?р, дерево, тканина (матер?ал жалюз?, штори), плати (комп’ютер)Таблиця 5.7Джерела пожежно? небезпеки№НайменуванняДжерело небезпекиПричини небезпекНасл?дки небезпеки 1Персональний комп’ютер Qbox I3277Блок живлення, детал? п?д напругоюКоротке замиканняВиникнення пожеж?2сканер Canon CanoScan LIDE 220Блок живлення, детал? п?д напругоюКоротке замикання3Матер?али ? речовини, що схильн? до займанняЗагорання матер?ал?вЗовн?шн? загоранняХарактеристика вибухонебезпечност? та пожежно? небезпеки у табл. 5.8. Таблиця 5.8Характеристика вибухонебезпечност? та пожежно? небезпеки№НазваЗначення1Клас пожеж?А,Е2Клас зони прим?щення по пожежн?й безпец? Клас ??-??а3Категор?я пожежно? небезпеки ВЗасоби та заходи захисту в?д вибухонебезпечност? та пожеж? у таблиц? 5.9.Таблиця 5.9Засоби та заходи захисту в?д пожежно? небезпеки №ЗаходиРеал?зац?яКритер?й вибору1Техн?чн?Розташування у к?мнат? порошкового вогнегасника ОПУ-10Гас?ння первинних осередк?в займання2Орган?зац?йн? Проведення навчань, ?нструктаж?в з пожежно? безпеки. Створення план?в евакуац??. Навчання з питань безпеки при пожеж?, запоб?гання людських жертв3З?ЗПротивогази, респ?ратори та маски, захисний одяг.Запоб?гання отру?нню та оп?к?в4Експлутац?йн?Сво?часний ремонт та зам?на обладнання.Захист в?д пожеж, що можуть бути викликан? техн?чними несправностямиДля забезпечення пожежно? безпеки у прим?щенн? присутн?й порошковий вогнегасник ОПУ-10.5.2.3 Х?м?чн? факториВ таблиц? 5.10 представленн? джерела небезпеки, причини небезпеки та ?х насл?дки.Таблиця 5.10 Джерела небезпеки№Джерело небезпекиПричини небезпекиНасл?док1Полички з медкартамиВдихання пилуРизик виникнення ряду хвороб та алерг?йТаблиця 5.11 Засоби захисту в?д шк?дливих х?м?чних фактор?в№Фактор небезпекиРеальне значенняНормативне значення1Запилення к?мнати0.8 мг/ м31 мг/ м3Можлив? заходи та ?х реал?зац?я представлених джерел небезпеки представлен? в таблиц? 5.12Таблиця 5.12 Засоби захисту в?д шк?дливих х?м?чних фактор?вЗахoдиРеал?зац?яOрган?зац?йн? захoдиВoлoге прибирання прим?щення викoристовуючи засoби дез?нфекц??.Засoби ?ндив?дуальнoгo захистуМедична маскаВисновкиУ данoму рoзд?л? диплoмнo? рoбoти рoзглянутo прим?щення арх?ву, що розраховане на 2 людини, де розробля?ться додаток, а такoж рoзглянут? нoрми та захoди з oхoрoни прац? й техн?ки безпеки. Було зд?йснено анал?з потенц?йних небезпечних ? шк?дливих виробничих фактор?в на робочих м?сцях, що створюються п?д час експлуатац?? техн?чного обладнання. Пожежна безпека в?дпов?да? вс?м нормам. В прим?щенн? ? вс? необх?дн? протипожежн? засоби на випадок виникнення вогню. РОЗД?Л 6РОЗД?Л ЕКОНОМ?КИ6.1. Економ?чний анал?з вар?ант?в розробки програмного продуктуДля визначення вартост? розробки ПП спочатку проведемо розрахуноктрудом?сткост?.Загальна трудом?стк?сть обчислю?ться як То = Тр * Кп * Кск * Км * Кст * Кст.м,де Тр– трудом?стк?сть розробки програмного продукту; Кп – поправочний коеф?ц??нт; Кск –коеф?ц??нт на складн?сть вх?дно? ?нформац??; Км – коеф?ц??нт р?вня мови програмування; Кст – коеф?ц??нт використання стандартних модул?в ? прикладних програм; Кст.м – коеф?ц??нт стандартного математичного забезпечення. Наприклад: (розробка програмного забезпечення моб?льного кл??нта та серверно? частини). Два вар?анти включають в себе по 3 завдання. Причому, для кожного вар?анта два завдання будуть сп?льними.Для першого завдання, виходячи ?з норм часу для завдань розрахункового характеру ступеня новизни Б та групи складност? алгоритму 1, трудом?стк?сть Тр = 64 людино-дн?в. Поправочний коеф?ц??нт, який врахову? вид використано? ?нформац?? для першого завдання (нормативно-дов?дкова ?нформац?я): Кпк = 1,35. Поправковий коеф?ц??нт, який врахову?складн?сть контролю вх?дно? та вих?дно? ?нформац?? для завдань, Кск = 1.Оск?льки п?д час розробки першого завдання використовуються стандартн? модул?, враху?мо це за допомогою коеф?ц??нта Кст = 0,7. Коеф?ц??нти Км ? Кст.п, як? враховують в?дпов?дно програмування на мов? низького р?вня та розробку стандартного програмного забезпечення, для вс?х завдань становлять 1: К м = К ст.п = 1.Отже, загальна трудом?стк?сть програмування першого завдання вар?анту дор?вню?:То= Тр · Кп · Кск · Кст = 64 · 1,35 · 1 · 0,7 = 60,48 людино-дн?в.Проведемо аналог?чн? розрахунки для ?нших завдань.Для другого завдання (використову?ться алгоритм першо? групи складност?, ступ?нь новизни Б):Тр = 64 людино-дн?в; К п = 1,08; К ст = 0,8;То = 64 ? 1,08 ? 0,8 = 55,3.Для третього завдання вар?ант А (використову?ться алгоритм першо? групи складност?, ступ?нь новизни В):Тр = 43 людино-дн?в; К п = 1,02; К ст = 0,8;То = 43 ? 1,02 ? 0,8 = 35,01.Для третього завдання Вар?ант Б (використову?ться алгоритм друго? групи складност?, ступ?нь новизни В):Т р = 19 людино-дн?в; К п = 0,81; К ст = 0,8;Т о = 19 ? 0,81 ? 0,8 = 12,31.Складемо трудом?стк?сть в?дпов?дних завдань, щоб отримати ?х трудом?стк?сть:Т I = (60,48+55,3+35,01) ? 8 = 1206,32 людино-годинТ II = (60,48+55,3+12,31) ? 8 =1024,72 людино-годинОчевидно, що вищу трудом?стк?сть ма? вар?ант I.6.2 Розрахунок зароб?тно? плати розробникаВ розробц? беруть участь два програм?сти з окладом 20000 грн. Денну зароб?тню плату визначимо, виходячи ?з м?сячних оклад?в програм?ст?в, враховуючи тривал?сть умовного м?сяця 21 день при 5-ти робочих дн?в на тиждень. Визначимо зарплату за годину за формулою:Сч= МTm*tгрн.,де М – м?сячний оклад прац?вник?в; T m – к?льк?сть робочих дн?в тиждень; t –к?льк?сть робочих годин в день.Сч =20000+2000021*8*2= 119, 05 грн.Тод?, розраху?мо зароб?тну плату за формулоюСзп = Сч ? Т i ? КД , де Сч – величина погодинно? оплати прац? програм?ста; Тi – трудом?стк?сть в?дпов?дного завдання; К Д – норматив, який врахову? додаткову зароб?тну плату.Тод? зарплата розробник?в за вар?антами в?дпов?дно до формули:I. С зп = 119,05? 1206,32 ? 1,2 = 172334,87 грн.II. С зп = 119,05 ? 1024,72 ? 1,2 = 146391,5 грн.В?драхування на вс? види соц?ального страхування за вар?антами (22%):I. Св?д =172334,87? 0,22 = 37913,67 грн.II. Св?д = 146391,5 ? 0,22= 32206,13 грн.Тепер визначимо витрати на оплату одн??? машино-години. (С М )Так як одна ЕОМ обслугову? одного програм?ста з окладом 20000 грн., зкоеф?ц??нтом зайнятост? 0,2 то для одн??? машини отрима?мо:Сг = 12?M?K З = 12 ? 20000? 0,2 = 148000 грн.З урахуванням додатково? зароб?тно? плати:Сзп =Сг? (1+ Kз) = 48000? (1 + 0.2) = 57600 грн.В?драхування на ?диний соц?альний внесок:Св?д = Сзп ? 0.3677 = 23040 ? 0,22 = 12672 грн.Амортизац?йн? в?драхування розрахову?мо при амортизац?? 25% тавартост? ЕОМ – 25000 грн.Са = Ктм ? Kа ?Цпр = 1.15 ? 0.25 ? 25000 =7187,5 грн.,де Ктм – коеф?ц??нт, який врахову? витрати на транспортування та монтаж приладу у користувача; Kа – р?чна норма амортизац??; Цпр – догов?рна ц?на приладу.Витрати на ремонт та проф?лактику розрахову?мо як:Ср= Ктм ?Цпр ? Кр = 1.15 ? 25000 ? 0.05 = 1437,5 грн.,де Кр – в?дсоток витрат на поточн? ремонти.Ефективний годинний фонд часу ПК за р?к розрахову?мо за формулою:Теф =(Дк – Дв – Дс – Др ) ? tз ? Кв = (365 – 104 – 8 – 16) ? 8 ? 0.9 = 1706.4годин, де Дк – календарна к?льк?сть дн?в у роц?; Дв, Дс– в?дпов?дно к?льк?стьвих?дних та святкових дн?в; Др– к?льк?сть дн?в планових ремонт?вустаткування; t –к?льк?сть робочих годин в день; Кв – коеф?ц??нт використанняприладу у час? протягом зм?ни. Витрати на оплату електроенерг?? для другого класу напруги розрахову?мо за формулою:Сел= Теф ? Nс ? Kз ? Цен =1706,4 ? 0,156 ? 2 ? 278,39 = 1482,14 грн.де Nс – середньо-споживча потужн?сть приладу; K З – коеф?ц??нтомзайнятост? приладу; Цен – тариф за 1 КВт-годин електроенерг??.Накладн? витрати розрахову?мо за формулою:Сн= Цпр ?0.67 = 25000? 0,67 =16750 грн.Тод?, р?чн? експлуатац?йн? витрати будуть:Секз =Сзп + Св?д + Са + Ср + Сел + Сн = 57600 + 12672 + 7187,5+ 1437,5 +1482,14 + 16750 = 97129,14 грн.Соб?варт?сть одн??? машино-години ЕОМ дор?внюватиме:См-г = Секз / Теф = 97129,14 /1706,4 = 56,92 грн/час.Оск?льки в даному випадку вс? роботи, як? пов‘язан? з розробкою програмного продукту ведуться на ЕОМ, витрати на оплату машинного часу, в залежност? в?д обраного вар?анта реал?зац??, склада?:См.ч = См-г?T?. С м.ч = 56,92 ? 1206,32 = 68663,73 грн.??. С м.ч = 56,92 ? 1024,72 = 58327,06 грн.Накладн? витрати становлять 67 % в?д зароб?тно? плати:Сн = Сзп ? 0,67?. С накл = 172334,87 ? 0,67 =115464,36 грн.??. С накл = 146391,54 ? 0,67 =98082,33 грн.Отже, варт?сть розробки ПП за вар?антами становить:Спп = Сзп + Св?д + См +Сн?. С ПП = 172334,87 + 63367,53 + 27636,79 + 115464,36 = 378803,55 грн.;??. С ПП = 146391,54 + 153828,17 + 58327,06+ 98082,33 = 456629,1 грн.;.Висновки до розд?лу 6В даному розд?л? були проведен? розрахунки для вартост? програмного продукту. Була розрахована загальна трудом?стк?сть, яка склада?ться з трудом?сткост? розробки програмного продукту, поправочного коеф?ц??нту, коеф?ц??нту на складн?сть вх?дно? ?нформац??, коеф?ц??нту р?вня мови програмування, коеф?ц??нту використання стандартних модул?в ? прикладних програм, коеф?ц??нту стандартного математичного забезпечення. Також були врахован? виплати програм?стам, витрати на ремонт та проф?лактику, витрати на оплату електроенерг??, накладн? витрати та соб?варт?сть одн??? машино-години ЕОМ.ЗАГАЛЬН? ВИСНОВКИП?сля опрацювання в?тчизняних та заруб?жних л?тературних джерел з поставлено? проблематики було виявлено вс? переваги TF ? встановлено, що дана б?бл?отека п?дходить для реал?зац?? поставлено? задач?.Було реал?зовано ?нтерфейс з ?нтеграц??ю р?зних в?дкритих б?бл?отек для розп?знавання рукописного тексту. Опрацьовано джерела та методи розп?знавання рукописного тексту та сегментац?? зображень.СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛЦарегородцев В.Г.?Перспективы распараллеливания программ нейросетевого анализа и обработки данных?// Материалы III Всеросс. конф. "Математика, информатика, управление", Иркутск, 2004.Царегородцев В.Г.?Оптимизация предобработки данных: константа Липшица обучающей выборки и свойства обученных нейронных сетей?// Нейрокомпьютеры: разработка, применение.?2003, №7. - С.3-8.Matthew D Zeiler and Rob Fergus. Visualizing and understandingconvolutional neural networks. arXiv preprint arXiv:1311.2901, 2013.Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean. Efficient estimation of word representations in vector space. arXiv preprint arXiv:1301.3781, 2013.David Baehrens, Timon Schroeter, Stefan Harmeling, Motoaki Kawanabe, Katja Hansen, and KlausRobert Muller. How to explain individual classification decisions. ¨ The Journal of Machine Learning Research, 99:1803–1831, 2010.Y. Bengio, E. Thibodeau-Laufer, G. Alain, and J. Yosinski. Deep generative stochastic networks trainable by backprop. In Proceedings of the 30th International Conference on Machine Learning, 2014.C. Szegedy, W. Zaremba, I. Sutskever, J. Bruna, D. Erhan, I. Goodfellow, and R. Fergus. Intriguing properties of neural networks. arXiv preprint arXiv:1312.6199, 2013.Петрянин Д.Л. Анализ систем защиты информации в базах данных / Д.Л. Петрянин, Н.В. Горячев, Н.К. Юрков // Труды международного симпозиума Надежность и качество. 2013. Т. 1. С. 115-122Y. Jia, E. Shelhamer, J. Donahue, S. Karayev, J. Long, R. Girshick, S. Guadarrama, and T. Darrell. Caffe: Convolutional architecture for fast feature embedding. arXiv preprint arXiv:1408.5093, 2014.? I. J. Goodfellow, J. Shlens, and C. Szegedy. Explaining and harnessing adversarial examples. arXiv preprint arXiv:1412.6572, Dec. 2014. Pearson R. Python / R. Pearson, M. Gabbouj // Nonlinear Digital Filtering with Python. — 2015. Ramsundar B. TensorFlow tutorial / B. Ramsundar // CS224d. — 2016. Patan K. Neural networks / K. Patan // Studies in Systems, Decision and Control. — 2019. McKinney W. Python for data analysis / W. McKinney. — 2013. Tom Hope, Yehezkel S. Resheff I. L. Learning tensorflow / I. L. Tom Hope, Yehezkel S. Resheff. — 2016 Goldberg Y. A primer on neural network models for natural language processing / Y. Goldberg // Journal of Artificial Intelligence Research. — 2016. tensorflow Vector representations of words / tensorflow // Tensorflow. — 2016. Majumder M. Artificial neural network / M. Majumder // 2015. Chollet Fran?ois Keras: the python deep learning library / Chollet Fran?ois. — 2015. Szegedy C. Going deeper with convolutions / C. Szegedy, W. Liu, Y. Jia[et al.]. — 2015. Lee W. Python? machine learning / W. Lee. — 2019. Kalash M. Malware classification with deep convolutional neural networks / M. Kalash, M. Rochan, N. Mohammed[et al.]. — 2018. Beysolow II T. Applied natural language processing with python / T. Beysolow II. — 2018. Detection S.-S. R. N. N. for O. Dual refinement network for single-shot object detection / S.-S. R. N. N. for O. Detection // CVPR. — 2018. D’Addona D. M. Neural network / D. M. D’Addona // CIRP Encyclopedia of Production Engineering. — 2016. Silver D. Mastering the game of go without human knowledge. / D. Silver, J. Schrittwieser, K. Simonyan[et al.] // Nature. — 2017. Liu W. A survey of deep neural network architectures and their applications / W. Liu, Z. Wang, X. Liu[et al.] // Neurocomputing. — 2017. VanderPlas J. Python data science handbook / J. VanderPlas. — 2016. Liang M. Recurrent convolutional neural network for object recognition / M. Liang, X. Hu. — 2015. Jin K. H. Deep convolutional neural network for inverse problems in imaging / K. H. Jin, M. T. McCann, E. Froustey, M. Unser // IEEE Transactions on Image Processing. — 2017. Simard P. Y. Best practices for convolutional neural networks applied to visual document analysis / P. Y. Simard, D. Steinkraus, J. C. Platt. — 2003 Hua B. S. Pointwise convolutional neural networks / B. S. Hua, M. K. Tran, S. K. Yeung. — 2018. Lavin A. Fast algorithms for convolutional neural networks / A. Lavin, S. Gray. — 2016. Jozefowicz R. An empirical exploration of recurrent network architectures / R. Jozefowicz, W. Zaremba, I. Sutskever, I. G. Com // Proceedings of The 32nd International Conference on Machine Learning. — 2015. Olah C. Understanding lstm networks / C. Olah. — 2015. Mikolov T. Extensions of recurrent neural network language model / T. Mikolov, S. Kombrink, L. Burget[et al.]. — 2011 Karpathy A. The unreasonable effectiveness of recurrent neural networks / A. Karpathy // Web Page. — 2015. Toderici G. Full resolution image compression with recurrent neural networks / G. Toderici, D. Vincent, N. Johnston[et al.]. — 2017. Liu S. A recursive recurrent neural network for statistical machine translation / S. Liu, N. Yang, M. Li, M. Zhou. — 2015. Chen L. C. Encoder-decoder with atrous separable convolution for semantic image segmentation / L. C. Chen, Y. Zhu, G. Papandreou[et al.]. — 2018. Brandon A. Image completion with deep learning in tensorflow / A. Brandon. — 2016. Socher R. TensorFlow: natural language processing with deep learning / R. Socher, G. Genthial, R. Socher. — 2017. Google Simple audio recognition | tensorflow / Google. — 2018. Bakke I. den Python deep learning / I. den Bakke. — 2017. Alzantot M. RSTensorFlow / M. Alzantot, Y. Wang, Z. Ren, M. B. Srivastava. — 2017. Dean J. TensorFlow - google’s latest machine learning system, open sourced for everyone / J. Dean, R. Monga. — 2015. Lukaszewski A. MySQL for python / A. Lukaszewski. — 2010. Unpingco J. Python for probability, statistics, and machine learning / J. Unpingco. — 2016. Mitchell R. Web scraping with python / R. Mitchell. — 2014. Hines M. NEURON and python / M. Hines // Frontiers in Neuroinformatics. — 2009. ................
................

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

Google Online Preview   Download