Кіріспе.Компьютерлік көру-бұл өте кең ауқымды және жан-жақты түсінік. Оның мүмкіндіктерін қолдану аясы өте үлкен. Жазбаша және басып шығарылған мәтінді танудан бастап, қылмыскерлерді іздеу үшін көп кісілер арасынан бет-әлпетті тануға дейін, МРТ суреттеріндегі ауытқуларды анықтау, шулы суреттерді қалпына келтіру, толық үш өлшемді көріністі қалпына келтіру және т. б.
Басқа облыстармен салыстырғанда компьютерлік көру саласы жас, қарқынды дамып келе жатқан деп сипаттауға болады [1].
Компьютерлік көру саласындағы проблемалар мен оларды шешу әдістерінің алуан түрлілігіне байланысты жалпы мақсаттағы және тек жоғары мамандандырылған міндеттерге арналған бағдарламалық жасақтаманың алуан түрлілігі бар.
Көбінесе қосымшалармен жұмыс істеу кезінде тек бір бағдарламалаушы емес, үлкен командалар жұмыс істейді, компьютерлік көру технологияларын қолданатын қосымшаларды әзірлеу процесін тездететін қарапайым және түсінікті құрылым құру қажеттілігі туындады. Үлкен жобамен жұмыс жасау кезінде әзірлеушілерге бір-бірінің кодын түсінуді жеңілдету үшін қолданыстағы алгоритмдерді қарапайым пайдалану және стандартталған параметрлердің болуы қажеттілігімен байланысты мәселе туындайды. Компьютерлік көру мәселелерін шешудің тиімділігін арттыру үшін суреттермен жұмыс істеудің негізгі алгоритмдері жүзеге асырылатын әртүрлі бағдарламалау тілдеріне арналған кітапханалар мен фреймворктар жасалды, алгоритмдердің әрқайсысының жұмысына қажетті параметрлердің құрылымдық тізімі бар және бірыңғай нұсқаулықтар бар, оған сәйкес әр параметр нені білдіретінін және сол немесе басқа функция не үшін жауап беретінін түсінуге болады.
1.Тақырыптың өзектілігі.Қазіргі уақытта суретте мәтіннің болуын тануға, оны бөліп көрсетуге және болашақта деректер түрінде пайдалану үшін цифрландыруға мүмкіндік беретін көптеген әдістер мен алгоритмдер бар.
Мәтінді тану-кез-келген адам оқу және емле принциптерін зерттегеннен бастап күнделікті кездесетін істердің бірі. 2020 жылғы 31 желтоқсандағы жағдай бойынша Интернетке 5,053,911,722 адамға қол жетімді [2]. Тиісінше, бұл адамдардың барлығы іздеу жүйелерін пайдаланады. Осы немесе басқа тақырып туралы ақпаратты іздеуді жеңілдету үшін компьютерлік көру технологияларын, атап айтқанда іздеу сұранысын қалыптастыру үшін мәтінді тануды қолдануға болады.
2.Зерттеудің мақсаты мен міндеттері.Зерттеудің мақсаты-кескіндерді тану мен жіктеудің практикалық мәселелерін шешуде үлгіні танудың тиімділігін арттыру үшін заманауи бағдарламалық құралдар мен технологиялардың мүмкіндіктерін зерттеу.
Зерттеу нысаны-компьютерлік көрудің бағдарламалық технологиялары.
Зерттеу пәні-символдық ақпараттың бейнесін тану әдістері мен құралдары.
Зерттеудің негізгі міндеттері:
- Компьютерлік көру кітапханаларының функционалын талдау
- Оптикалық таңбаларды тану саласындағы мәселелерді шешу үшін компьютерлік көру кітапханасын таңдауды негіздеу
- Таңбаларды тану бағдарламалық жүйесінің архитектурасын әзірлеу
- OpenCV кітапханасының алгоритмдері негізінде кескіндерді тану және жіктеу мәселелерін шешуге арналған бағдарламалық жүйенің прототипін іске асырудың тиімділігін зерттеу
3.Зерттеулер мен әзірлемелерге шолу.Бағдарламалық жасақтама қоғамдастығының қазіргі даму кезеңінде әр түрлі даму деңгейіне және пайдалану мүмкіндіктеріне ие компьютерлік көру кітапханаларының алуан түрлілігі бар. Жұмыста ең танымал және тұрақты жұмыс істейтіндерді талдау және салыстыру келтірілген.
3.1.Халықаралық дереккөздерге шолу. Мәтінді тану кітапханаларын салыстыру.Жүргізілген іздестіру негізінде бір-біріне өте ұқсас, функциялардың ұқсас жиынтығы бар және әзірлеуші қойған мақсаттарға байланысты кең бейінді қолдану мүмкіндігі бар 4 кітапхана табылды [3, 4, 5, 6]:
- OpenCV
- AForge.NET
- VXL кітапханалар жинағы
- LTI-lib
OpenCV кітапханасы бойынша нұсқаулықтар мен ақпараттар көп және пайдалану мысалдары бар.
3.1.1.OpenCV.OpenCV (Open Source Computer Vision Library) — бұл бастапқы ашық коды бар компьютерлік көру және компьютерлік оқыту бағдарламалық жасақтамасының кітапханасы. OpenCV компьютерлік көру қосымшаларының жалпы инфрақұрылымын қамтамасыз ету және коммерциялық өнімдерде машинаны қабылдауды тездету үшін жасалды.
Осы кітапхананы дамыту мақсаты нақты уақыттағы қосымшаларда тиімділікті арттыру болды. Кітапхананың функционалы СИ тілінде жүзеге асырылады. OpenCV көп ядролы процессорларды қолдана алады. Егер Intel платформаларында Автоматты оңтайландыру қажет болса, IPP кітапханасын қосымша сатып алуға және біріктіруге болады.
Кітапханада 2500-ден астам оңтайландырылған алгоритмдер бар, олар классикалық және заманауи компьютерлік көру және машиналық оқыту алгоритмдерінің толық жиынтығын қамтиды. Бұл алгоритмдерді бет-әлпетті анықтау және тану, нысандарды анықтау, бейнедегі адам әрекеттерін жіктеу, камераның өзі қозғалатын нысандар мен қозғалыстарды бақылау және т.б. үшін пайдалануға болады. Кітапхана компанияларда, зерттеу топтарында және мемлекеттік органдарда кеңінен қолданылады.
Google, Yahoo, Microsoft, Intel, IBM сияқты танымал компаниялардан басқа, OpenCV функционалдығын қолданатын Applied Minds, VideoSurf және Zeitera сияқты көптеген стартаптар бар.
Кітапханада C++, Python, Java және MATLAB интерфейстері бар және Windows, Linux, Android және Mac OS операциялық жүйелерінде қолданылады. OpenCV негізінен нақты уақыттағы қосымшаларға бағытталған және қол жетімді болған кезде MMX және SSE командаларын пайдаланады. Қазіргі уақытта толық функционалды CUDA және OpenCL интерфейстері белсенді дамуда. 1-суретте OpenCV жобасының жалпы құрылымы көрсетілген.
1-сурет. OpenCV жобасының жалпы құрылымы.
3.1.2AForge.NET.AForge.NET бұл C# тілінде жасалған, компьютерлік көру саласындағы әзірлеушілер мен зерттеушілерге арналған бастапқы ашықкоды бар кітапхана. Сонымен қатар, кітапханада жасанды интеллект саласындағы әзірлеушілерге арналған функционалдылық бар. Кітапхананың мүмкіндіктері өте кең: суретті өңдеу, нейрондық желілер, генетикалық алгоритмдер, анық емес логика, машиналық оқыту, робототехника және басқалар [4].
Кітапхана бірнеше негізгі компоненттерді қамтиды. AForge.Imaging-суреттер мен сүзгілерді өңдеуге арналған кіші бағдарламалар кітапханасы. AForge.Vision-компьютерлік көру кітапханасы. AForge.Video-бейне ақпаратпен жұмыс істеуге арналған кітапханалар жиынтығы. AForge.Neuro-нейрондық желілермен әр түрлі әрекеттер мен операцияларды орындауға арналған кітапхана. AForge.Genetic-әртүрлі есептерді шешу үшін генетикалық алгоритмдерді қолдануға арналған кіші бағдарламалар кітапханасы. AForge.Fuzzy-анық емес логикамен жұмыс істеуге арналған кітапхана. AForge.Robotics-робототехника саласында қолданылатын кейбір әдістерді қолдайтын кітапхана. AForge.MachineLearning-Машиналық оқыту элементтерімен жұмыс істеуге арналған кітапхана. OpenCV кітапханасындағы сияқты белсенді қауымдастықтар бар, онда сіз әзірлеушілерге сұрақтар қою арқылы қажетті ақпаратты таба аласыз немесе өз тәжірибеңізбен бөлісе аласыз. Бірақ, өкінішке орай, осы қауымдастыққа қатысушылардың саны OpenCV-дің қауымдастығына қарағанда төмен. Әзірлеушінің жолындағы тағы бір шектеу-кітапхананың барлық құжаттары тек ағылшын тілінде жазылған. Осыны ескере отырып, осы шеңберді зерттеу мен дамытуда қиындықтар туындауы мүмкін. 2-суретте AForge.NET кітапханасының жалпы құрылымы көрсетілген.
2-сурет. AForge.NET кітапханасының жалпы құрылымы.
3.1.3.VXL.VXL-бұл C++ тілінде жазылған кітапханалар жиынтығы, олар ғылыми зерттеулерге және компьютерлік көру технологияларын енгізуге арналған. VXL ANSI / ISO C++ тілінде жазылған және портативті платформаларға арналған. Кітапхана бірнеше негізгі компоненттерден тұрады: VNL (сандар) — сандық алгоритмдер мен контейнерлер, мысалы, матрицалар, векторлар, оптимизаторлар және т.б., VIL (суреттер) — суреттерді көптеген кең таралған форматтарда жүктеу, сақтау және өңдеу (сонымен қатар өте үлкен суреттермен жұмыс істеу мүмкіндігі бар), VGL (геометрия) — нүктелер, қисықтар және басқа элементар нысандардың геометриясы бір, екі және үш өлшемді кеңістіктерде, VSL (кіріс және шығыс ағындары), VBL (негізгі үлгілер), VUL (утилиталар) — тәуелсіз платформаларға арналған функционалдар жиынтығы[5]. Кітапхананың ерекшелігі-оның әр компонентін басқа компоненттерге сілтеме жасамай бөлек пайдалануға болады. Осылайша, қосымшада шынымен қажет нәрсені ғана пайдалануға болады. 3-суретте VXL ядросының иерархиялық құрылымы көрсетілген.
3-сурет. VXL ядросының иерархиялық құрылымы.
3.1.4.LTI-lib.LTI немесе LTI-lib – алгоритмдер мен деректер құрылымдарының объектіге бағытталған кітапханасы. Ол көбінесе кескіндерді өңдеуде және компьютерлік көру саласында қолданылады. LTI-lib робототехника технологиясымен компьютерлік көру, нысандарды тану, дауыс және ым-ишарат саласындағы ғылыми-зерттеу жобаларының бөлігі ретінде жасалды. Бұл кітапхананы дамытудың негізгі мақсаты C++ тілінде объектіге бағытталған кітапхана құру болып табылады, бұл кодты қолдануды және оған қызмет көрсетуді жеңілдетеді, бірақ сонымен бірге нақты қосымшаларда қолдануға болатын жылдам алгоритмдерімен қамтамасыз етіледі.
Кітапхана Linux-та GCC (әртүрлі бағдарламалау тілдері үшін қолданылатын компиляторлар жиынтығы) және Windows-да Visual C++ көмегімен жасалды. Көптеген класстар жүйелік немесе аппараттық мәселелерді шешуді жеңілдету үшін Windows/Linux функционалдығын инкапсуляциялайды (мысалы, көп ағынды және синхрондау, уақытты өлшеу және сериялық портқа кіру сыныптары) [6].
4.Суреттерді тану және жіктеу жүйесі және компьютерлік көру кітапханасын таңдау.Суреттерді тану және жіктеудің типтік мәселелерін шешу үшін бағдарламалық жүйені құру міндеті тұр. Клиент-сервер архитектурасын қолданған дұрыс болар еді. Жүйе жоғары ақауларға төзімділікке, деректермен алмасу үшін интернетке тұрақты қосылуға, мәліметтер базасының серверіндегі ақпаратқа қол жеткізу үшін дұрыс ұйымдастырылған құпиялылық саясатына ие болуы керек. 4-суретте осы жүйенің кеңейтілген жұмыс схемасы көрсетілген.
4-сурет. Кескінді тану және жіктеу жүйесінің кеңейтілген құрылымы
Компьютерлік көру кітапханаларының қарастырылған нұсқаларының ішінде OpenCV кітапханасын пайдалану оңтайлы болады, өйткені ол тез жұмыс істейді, оның құрамында мәтінді тануға ғана емес, сонымен бірге кескінді тұтастай өңдеуге арналған функциялар бар, бұл болашақ қосымшаның құрылымын жеңілдетеді. 5-суретте OpenCV, OpenCV + IPP, VXL және LTI кітапханаларының жылдамдығын салыстыратын диаграмма көрсетілген [7].
5-сурет. OpenCV, OpenCV + IPP, VXL және LTI кітапханаларының жылдамдығы
5.Қортынды.Жоғарыда келтірілген компьютерлік көру кітапханалары туралы деректерді талдау кезінде тану қосымшасын жасау үшін OpenCV кітапханасын пайдалану пайдасына келесі тұжырымдар алынды:
- Компьютерлік көру кітапханасының басты артықшылығы, кез-келген басқа бағдарламалық жасақтама сияқты, оның өнімділігі. 5-суреттегі диаграммадан көріп отырғанымыздай, OpenCV өнімділігі аналогтардың (VXL және LTI-lib) өнімділігінен асып түседі, тіпті қосымша IPP компонентін пайдаланбайды.
- Кітапханада кескіндерді өңдеуден, компьютерлік көруден бастап, машиналарды оқытуға дейінгі әртүрлі мәселелерді шешуге арналған көптеген функциялар бар. Сонымен қатар, кітапхана ашық және коммерциялық өнімдерді әзірлеу үшін барлық функцияларды пайдалануға мүмкіндік беретін лицензияға ие.
- OpenCV-тің артықшылығы-орыс тіліндегі құжаттаманың болуы, көптеген нұсқаулықтар, сабақтар, ғылыми материалдар мен кітапханамен жұмыс істеу әдістері мен әдістерін қолдану туралы кітаптардың болуы. Өз тәжірибесімен бөлісе алатын және қызықтыратын сұрақтарға жауап бере алатын өте белсенді кітапхананы жасаушылар мен пайдаланушылар қауымдастығы туралы да айта кету қажет.
- OpenCV таңдаудағы шешуші артықшылығы оның кросс-платформалылығы және кез-келген бағдарламалау тілімен бірге қолдану мүмкіндігі болды.
6.Пайдаланылған әдебиеттер
- Компьютерлік тану — Википедия [Электрондық ресурс]. – Қатынау режимі: https://ru.wikipedia.org/wiki/Компьютерное_зрение
- World Internet Users Statistics and 2021 World Population Stats [Электрондық ресурс]. – Қатынау режимі:https://www.internetworldstats.com/stats.htm.
- OpenCV library [Электрондық ресурс]. – Қатынау режимі:https://opencv.org/.
- NET::Framework [Электрондық ресурс]. – Қатынау режимі: http://www.aforgenet.com/framework/.
- VXL — C++ Libraries for Computer Vision [Электрондық ресурс]. – Қатынау режимі: https://vxl.github.io/.
- LTI-Lib [Электрондық ресурс]. – Қатынау режимі: http://ltilib.sourceforge.net/doc/homepage/index.shtml.
- OpenCV vs VXL vs LTI: Performance Test — AI Shack[Электрондық ресурс]. – Қатынау режимі: http://www.aishack.in/tutorials/opencv-vs-vxl-vs-lti-performance-test/.