시각장애인의 상품 구매 보조를 위한 어플리케이션 개발

Development of a Product Purchase Assistance Application for the Visually Impaired

Article information

J Appropr Technol. 2025;11(2):89-102
Publication date (electronic) : 2025 August 30
doi : https://doi.org/10.37675/jat.2025.00703
1KOREAINT., Co. LTD, 126 Beolmal-ro, Dongan-gu, Antang-si, Gyeonggi-do 14057, Korea
2Major in Online Video Promotion, Gangdong University 278, Daehak-gil, Gamgok-myeon, Eumseong-gun, Chungcheongbuk-do, 27600, Korea
3Dept. of Software, Anyang University, 22, Samdeok-ro 37beon-gil, Manan-gu, Anyang-si, Gyeonggi-do, 14028, Korea
오재곤1, 문진용2, 김정준3,
1한국정보기술, 경기도 안양시 동안구 벌말로 126, 14057, 대한민국
2강동대학교 온라인영상홍보전공, 충청북도 음성군 감곡면 대학길 278, 27600, 대한민국
3안양대학교 소프트웨어학과, 경기도 안양시 만안구 삼덕로 37, 14028, 대한민국
To whom correspondence should be addressed. E-mail: jjkim@anyang.ac.kr
Received 2025 April 29; Revised 2025 August 22; Accepted 2025 August 22.

Abstract

본 개발의 목적은 시각장애인을 대상으로 한 보조 서비스를 제공함으로써, 편의점에서 상품 구매 시 소비자로서의 권리를 보장하고, 상품에 대한 정확한 정보를 제공받을 수 있도록 돕기 위함이다. 현재 시각장애인들이 편의점에서 상품을 선택할 때는 제품의 점자 표기가 미흡하거나 제품 상단에 작게 표시되어 있어 정확한 정보를 파악하기 어려운 실정이다. 특히 음료수 캔과 같은 원통형 제품은 점자 위치가 일정하지 않아 인식에 더욱 어려움을 겪는다. 이러한 문제를 해결하기 위해 본 개발에서는 사용자의 현재 위치를 기준으로 가장 가까운 편의점을 탐색하여 경로를 안내하고, 편의점 내에 있는 다양한 상품 중 사용자가 선택한 상품의 전면을 스마트폰 카메라로 인식할 수 있도록 하였다. 이후 이미지 인식 기술을 활용하여 상품의 종류, 브랜드, 주요 성분 등의 정보를 식별한 후 이를 음성으로 안내해줌으로써 시각장애인이 스스로 상품을 선택하고 구매 결정을 내릴 수 있도록 하였다. 이 시스템은 단순한 접근성 향상을 넘어, 시각장애인이 독립적으로 소비 활동에 참여할 수 있는 환경을 조성하는 데 큰 의의가 있다. 향후에는 제품 카테고리 확대, 다국어 지원, 가격 정보 및 할인 정보 안내 기능 등으로 확장 가능성이 있으며, 보다 포괄적인 스마트 유통 보조 시스템으로 발전할 수 있다.

Trans Abstract

The purpose of this development is to support visually impaired individuals in receiving accurate product information during convenience store purchases, thereby ensuring their rights as consumers. Currently, visually impaired users face significant difficulties in identifying products due to insufficient braille labeling, especially on cylindrical items such as beverage cans, where the braille is often small, inconsistently placed, or even missing. This makes independent product selection challenging and often unreliable. To address these challenges, the system provides navigation to the nearest convenience store based on the user’s current location. Once inside the store, users can scan the front of a desired product using their smartphone camera. The system employs image recognition technology to analyze the product’s front image and extract key information such as product name, brand, and main ingredients. This information is then conveyed to the user through voice output, enabling them to make informed purchasing decisions independently. This application goes beyond simply enhancing accessibility; it empowers visually impaired users to engage in consumer activities without assistance. Additionally, the solution offers potential for future expansion, including support for multiple product categories, multilingual functionality, and features like real-time pricing and discount alerts. Ultimately, it lays the foundation for a more inclusive and intelligent retail assistance system.

서론

구글의 알파고를 기점으로 대중들에게 인공지능이라는 기술이 다가오면서 딥러닝을 활용한 많은 서비스들이 출시되었다. 인공지능 비서부터 시작하여 코로나 바이러스로 인하여 얼굴 인식을 활용한 체온 감지 등 다양한 서비스들이 대중들에게 선보였다. 하지만 아직까지도 장애인을 위한 서비스가 많이 발전하지 못했다는 것을 알 수 있다. 이러한 상황에서 인공지능을 활용한 장애인 지원 서비스의 필요성이 대두되고 있다(Shin & Cho, 2024).

기술이 발전함에 있어서도 시각장애인은 원시적인 방법인 점자표기를 손으로 만지며 글을 읽는다. 우리는 물건을 구매할 때 상표와 판매점의 가격표를 확인한다. 하지만 시각장애인을 위한 점자표기가 된 상품은 없는 것이 대부분이며 그나마 점자표기가 되어있는 상품은 모호한 내용을 담고 있는 경우가 대부분이다. 특히 음료수 캔 상단에 위치하고 있는 점자의 경우 제품명이 아닌 제품의 분류명인 ‘탄산’, ‘음료’ 등으로 표기되어 있으며 대표적인 탄산음료 중 하나인 코카콜라는 제품 측면에는 탄산음료로 분류되어 있지만 점자표기로는 ‘음료’로 오표기되어 있다. 언론 보도에서 제조사는 점자표기가 캔의 상단 부분에 위치해 있기 때문에 최대 4음절까지 적을 수밖에 없으며 위치 변경 혹은 점자 내용 변경은 추가적인 비용이 소모되어 변경하지 않는다는 입장을 밝혔다. 이에 유일하게 표기가 정확히 되어 있는 음료는 진로 하이트사의 ‘테라’ 제품만 표기되어있다(Kim, 2021).

이에 시각장애인도 소비자로서 당연히 누려야 할 권리로 정확한 제품명과 가격, 영양정보 등을 안내 받을 수 있도록 하기 위해 이미지 인식을 활용한 개발을 하였다. 인공지능 이미지 인식은 기계가 마치 사람처럼 사진이나 동영상으로부터 사물을 인식하거나 장면을 이해하는 것으로 정의할 수 있다(Jung & Kim, 2019). 이러한 이미지 인식은 컴퓨터 비전(computer vision) 기술 중 하나에 해당한다. 이미지 인식에는 대표적으로 세 가지 태스크(task)가 존재하는데 이미지 내 특정 사물을 분류하는 태스크, 여러 사물을 동시에 검출하는 태스크, 사물들을 픽셀 단위로 식별하여 분할하는 태스크 등이 있다. 이러한 이미지 인식 기술에 있어 2012년 혁신적인 연구 결과가 나온다. 대규모 이미지 인식 경진 대회인 ILSVRC(ImageNet Large Scale Visual Recognition Challenge)에서 토론토 대학 연구진이 딥러닝이라 불리는 새로운 기법을 활용해 기존의 방법론에 대비해 압도적인 성능으로 우승한 것이다. 이 연구는 신경정보처리시스템학회에 발표되어 지금까지도 인공지능 분야에서 가장 많이 인용되고 있는 논문 중 하나가 되었다(Kim & Lee, 2021). 이를 계기로 딥 러닝이 학계, 산업계에 널리 받아들여지게 됨에 따라 딥 러닝 또한 폭발적으로 발전하여, 2015년 ILSVRC에서 사람의 인식률(94.90%)을 추월(96.43%)하고, 2020년에는 사람을 한참 뛰어넘은(98.7%)으로 진화했다(Park & Kim, 2021).

위와 같이 시각장애인을 위한 보다 정확한 제품 정보 제공을 목표로 하는 어플리케이션 개발을 위한 기술적 기초가 마련되었으며, 이는 앞으로도 지속적인 기술 발전과 함께 시각장애인의 생활에 실질적인 도움을 줄 수 있을 것이다.

따라서 본 논문의 목적은 시각장애인을 위한 이미지 인식 기반 제품 정보 제공 애플리케이션의 개발 가능성을 탐구하는 것이다. 구체적으로는 인공지능의 이미지 인식 기술을 활용하여 제품의 정확한 명칭과 가격, 영양 성분 등의 정보를 사용자에게 전달함으로써, 시각장애인도 비장애인과 동등하게 소비자로서의 권리를 보장받을 수 있는 방안을 제시하고자 한다. 나아가 본 연구는 단순한 기술적 구현을 넘어, 장애인을 위한 인공지능 서비스가 사회적 가치와 포용성을 확대하는 방향으로 발전해야 함을 보여주는 데 그 의의가 있다.

관련 연구

1. 딥 러닝

심층 학습(深層學習) 또는 딥 러닝(영어: deep structured learning, deep learning 또는 hierarchical learning)은 여러 비선형 변환기법의 조합을 통해 높은 수준의 추상화 (abstractions, 다량의 데이터나 복잡한 자료들 속에서 핵심적인 내용 또는 기능을 요약하는 작업)를 시도하는 기계 학습 알고리즘의 집합으로 정의되며, 큰 틀에서 사람의 사고방식을 컴퓨터에게 가르치는 기계학습의 한 분야라고 이야기할 수 있다.

어떠한 데이터가 있을 때 이를 컴퓨터가 알아들을 수 있는 형태(예를 들어 이미지의 경우는 픽셀정보를 열벡터로 표현하는 등)로 표현(representation)하고 이를 학습에 적용하기 위해 많은 연구(어떻게 하면 더 좋은 표현기법을 만들고 또 어떻게 이것들을 학습할 모델을 만들지에 대한)가 진행되고 있으며, 이러한 노력의 결과로 deep neural networks, convolutional deep neural networks, deep belief networks와 같은 다양한 딥 러닝 기법들이 컴퓨터 비전, 음성인식, 자연어 처리, 음성/신호처리 등의 분야에 적용되어 최첨단의 결과들을 보여주고 있다.

2012년 스탠포드대학의 앤드류 응과 구글이 함께한 딥 러닝 프로젝트에서는 16,000개의 컴퓨터 프로세서와 10억 개 이상의 neural networks 그리고 DNN(deep neural networks)을 이용하여 유튜브에 업로드 되어 있는 천만 개 넘는 비디오 중 고양이 인식에 성공하였다. 이 소프트웨어 프레임워크를 논문에서는 DistBelief로 언급하고 있다. 이뿐만 아니라 마이크로소프트, 페이스 등도 연구팀을 인수하거나 자체 개발팀을 운영하면서 인상적인 업적들을 만들어 내고 있다.

2. 공공데이터

공공 데이터(open data)는 데이터베이스, 전자화된 파일 등 공공기관이 법령 등에서 정하는 목적을 위하여 생성 또는 취득하여 관리하고 있는 광(光) 또는 전자적 방식으로 처리된 자료 또는 정보로서 다음과 같은 것을 지칭한다. 첫째, 「전자정부법」에 따른 행정정보, 둘째, 「국가정보화 기본법」에 따른 정보 중 공공기관이 생산한 정보, 셋째, 「공공 기록물 관리에 관한 법률」에 따른 전자기록물 중 대통령령으로 정하는 전자기록물, 그 밖에 대통령령으로 정하는 자료 또는 정보가 있다. 따라서, 공공데이터는 개별 공공기관이 일상적 업무수행의 결과물로 생성 또는 수집·취득한 다양한 형태(텍스트, 수치, 이미지, 동영상, 오디오 등)의 모든 자료 또는 정보를 대상으로 하며, “기계 판독이 가능한 형태”로 “제공”이되어야 한다. 여기서 “기계 판독이 가능한 형태”란 소프트웨어로 데이터의 개별 내용 또는 내부 구조를 확인하거나 수정, 변환, 추출 등 가공할 수 있는 상태를 말하며, “제공” 이란 공공기관이 이용자로 하여금 기계 판독이 가능한 형태의 공공데이터에 접근할 수 있게 하거나 이를 다양한 방식으로 전달하는 것을 말한다.

정부는 보유한 공공 정보를 적극적으로 개방하여 국민과 공유함으로써 소통과 협력을 확대하기 위해 공공데이터 정책을 추진하게 되었고, 2013년 7월 공공데이터의 제공 및 이용활성화에 관한 법률(공공 데이터 법)을 제정하고 10월부터 시행 되었다.

공공데이터 제공 및 이용 활성화에 관한 정책은 ‘행정안전부’가 총괄하며, 이 법률에 근거하여 2013년 11월, 정부나 공공기관이 보유한 공공데이터를 민간에서 쉽게 활용할 수 있도록 지원하기 위하여 한국정보화진흥원에 공공데이터활 용지원센터’를 설치 하였다. 각 공공기관은 공공데이터제공 책임관 및 실무자를 지정하고 관련 업무를 지원한다. 또한 정부는 공공데이터 관련 정책을 심의, 조정 및 그 추진사항을 점검하기 위하여 국무총리실 산하에 공공데이터전략위원회를 설립하였고, 공공기관의 공공데이터 제공거부 또는 중단문제 발생시 해결을 위한 공공데이터제공분쟁조정위원회를 설립하여 공공데이터 활성화 정책을 추진하고 있다.

3. Tensorflow & Keras

텐서플로 또는 텐서플로우는 다양한 작업에 대해 데이터 흐름 프로그래밍을 위한 오픈소스 소프트웨어 라이브러리이다. 심볼릭 수학 라이브러리이자, 인공 신경망 같은 기계 학습 응용프로그램 및 딥러닝에 사용된다. 이것은 구글 브레인팀의 연구와 제품개발을 위한 목적으로 2015년 아파치 2.0 오픈 소스 라이선스로 공개되었다.

케라스(Keras)는 파이썬으로 작성된 오픈 소스 신경망 라이브러리이다. MXNet, Deeplearning4j, 텐서플로, Microsoft Cognitive Toolkit 또는 Theano 위에서 수행할 수 있다. 딥 신경망과의 빠른 실험을 가능케 하도록 설계되었으며 최소한의 모듈 방식의 확장 가능성에 초점을 둔다. ONEIROS(Open-ended Neuro-Electronic Intelligent Robot Operating System) 프로젝트의 연구적 노력의 일환으로 개발되었으며 주 개발자이자 유지보수자는 구글의 엔지니어 프랑소아 숄레(Francois Chollet)이다.

2017년, 구글의 텐서플로(Tensorflow) 팀은 텐서플로의 코어 라이브러리에 케라스를 지원하기로 결정하였다. Chollet 는 케라스가 단대단(end-to-end) 기계 학습 프레임워크가 아닌 인터페이스의 역할을 염두에 두었다. 더 높은 수준의 더 직관적인 추상화 집합을 표현함으로써 백엔드 과학 컴퓨팅 라이브러리임에도 불구하고 신경망을 구성하기 쉽게 만들어준다. 마이크로소프트 또한 CNTK 백엔드를 케라스에 추가하는 작업을 수행하고 있으며 기능은 현재 CNTK 2.0과 더불어 베타 릴리스 단계에 있다.

4. TTS (Text to speech)

우리말로 ‘음성 합성 시스템’이라 부르며 보통 TTS라 부른다. 컴퓨터의 프로그램을 통해 사람의 목소리를 구현해내는 것으로 성우 없이도 거의 모든 단어와 문장의 음성을 쉽게 구할 수 있다. 하지만 사전 녹음된 목소리 자료를 기반으로 쓰는 만큼 억양이 자연스럽지 못하다는 단점이 있다. 본 개발에서 사용한 시스템은 Google Text-to-speech이며 안드로이드 운영 체제용으로 구글이 개발한 스크린 리더 기능이다. 화면상의 텍스트를 읽는 기능을 제공하며 수많은 언어를 지원한다. 텍스트 음성 변환은 책을 읽거나 사용자가 입력한 글 혹은 선택한 텍스트, 버튼을 안내한다.

5. 크롤링 (Crawling)

크롤링이란 데이터를 수집하고 분류하는 것을 의미한다. 주로 인터넷상의 웹페이지를 수집해서 분류하고 저장하는 것을 뜻하며 데이터가 어디에 저장되어 있는지 위치에 대한 분류 작업이 크롤링의 주요 목적이다. 크롤링의 주요 대상은 다양한 형태로 존재하는 데이터로, 데이터 생성 스타일에 따라 정형, 반정형 그리고 비정형 데이터로 구분되기도 한다.

6. DarkNet

Darknet은 Joseph Redmon이 독자 개발한 신경망 프레임워크(neural network framework)로서 dnn(deep neural network)들을 학습시키고 실행시킬 수 있는 프레임워크다. Darknet을 이용하면 기존 정통 주류의 dnn 모델 AlexNet, VGG-16, Resnet, Densenet 등 을 실행 할 수 있으며 YOLO 역시 Darknet을 통해 학습된 신경망 중 하나이다.

7. CNN

합성곱 신경망(Convolutional neural network, CNN)은 시각적 영상을 분석하는 데 사용되는 다층의 피드-포워드적인 인공신경망의 한 종류이다. 딥 러닝에서 심층 신경망으로 분류되며, 시각적 영상 분석에 주로 적용된다. 또한 공유 가중치 구조와 변환 불변성 특성에 기초하여 변이 불변 는 공간 불변 인공 신경망 (SIANN)으로도 알려져 있다. 영상 및 동영상 인식, 추천 시스템, 영상 분류, 의료 영상 분석 및 자연어 처리 등에 응용된다.

합성곱 신경망은 정규화 된 버전의 다층 퍼셉트론이다. 다층 퍼셉트론은 일반적으로 완전히 연결된 네트워크, 즉 한 계층의 각 뉴런이 다음 계층의 모든 뉴런에 연결되는 신경망 구조이다. 이와 같이 네트워크가 완전 연결된 경우 주어진 데이터에 과적합 되는 경향이 있다. 일반적인 정규화를 위해 최적화 함수에 특정 척도를 추가하는 방법이 흔이 쓰이지만, CNN은 정규화를 위한 다른 접근 방식을 취한다. 데이터에서 계층적 패턴을 활용하고 더 작고 간단한 패턴을 사용하여 더 복잡한 패턴을 표현함으로써 정규화와 같은 효과를 내는 것이다. 따라서 합성곱 신경망의 연결 구조의 복잡성은 유사한 기능의 다층 퍼셉트론에 비해 극단적으로 낮다.

합성곱 신경망은 뉴런 사이의 연결 패턴이 동물 시각 피질의 조직과 유사하다는 점에 영감을 받았다. 개별 피질 뉴런은 수용장(receptive field)으로 알려진 시야의 제한된 영역에서만 자극에 반응한다. 상이한 뉴런의 수용 필드는 전체 시야를 볼 수 있도록 부분적으로 중첩된다.

합성곱 신경망을 이용한 영상 분류는 다른 영상 분류 알고리즘에 비해 상대적으로 전처리를 거의 사용하지 않는다. 이는 신경망이 기존 알고리즘에서 수작업으로 제작된 필터를 학습한다는 것을 의미한다. 기존 영상 분류 알고리듬에서 설계자가 영상의 특징들을 미리 이해해 알고리듬을 만드는 과정이 없는 것이 합성곱 신경망의 주요한 장점이다.

합성곱 신경망은 크게 합성곱층(Convolution layer)과 풀링층(Pooling layer)으로 구성된다.

시스템 설계 및 구현

본 시스템을 구현하기 위해 파이썬(본 개발에서는 파이썬 버전 3.9)을 사용하고, IDE는 Pycharm을 활용했으며 이미지 인식을 위한 주요 라이브러리 Tensorflows 2.0을 기반으로 개발 하였으며 어플리케이션 코틀린(Kotlin 203-1.6.0 release) 및 IDE는 AndroidStudio archtic fox 2020.3.1.을 사용하였다.

딥러닝 학습에 사용된 컴퓨터 시스템은 Ryzen5 3600 CPU, 32GB RAM, B450 AORUS ELITE MainBoard, Nvidia GTX1060 6GB GPU를 사용하였다.

본 개발 시스템 구성도는 Figure 1과 같다.

Figure 1.

System Configuration Diagram of the Product Purchase Assistance Application for the Visually Impaired

Figure 1에서 보는 바와 같이 본 개발의 시스템은 백엔드 서버와 프론트엔드 어플리케이션, API 파트로 나뉜다.

1. 어플리케이션

1.1. 어플리케이션 기능 권한 부여

어플리케이션에서 카메라나 위치기능 등 휴대전화에 있는 다양한 기능을 사용할 수 있도록 허용할 수 있다. 앱에서 휴대전화의 기능을 사용하기 위한 권한을 요청하는 알림을 전송하면 이를 허용 또는 거부하는 기능이다.

Figure 2는 휴대전화의 카메라와 GPS의 정보를 사용하기 위해 엑세스를 허용할지 사용자가 결정할 수 있도록 요청하는 코드이다. 1) 휴대전화의 카메라 기능의 권한을 요청하는 역할을 한다. 2) 휴대전화의 GPS 기능의 권한을 요청하는 역할을 한다.

Figure 2.

Authorize camera and location functions

1.2. Tmap Api를 사용한 도보 길찾기

사용자의 위치를 기준으로 하여 최단거리 편의점의 경로를 음성으로 안내해주는 보조기능이다. 주변의 편의점 4개중 1개를 선택하여 원하는 편의점까지 안내를 해준다.

Figure 3은 지도를 사용하기 위해 key값을 사용하여 화면에 지도를 띄우는 과정이다. 객체 함수를 사용하여 지도의 언어, 줌, 위치 등등 최적한 환경으로 설정하는 과정이다.

Figure 3.

Tmap load and setup code

Figure 4.

Map screen output result after using Tmap api

Figure 5.

Find a convenience store near you based on your current location

Figure 6은 명칭별 주변검색 POI데이터를 검색개수와 반경정보를 기준으로 요청한다. “편의점”을 포함한 데이터를 최대 10개를 가져오도록 요청한 코드이다.

Figure 6.

Result value through POIdata search

Figure 7은 Tmap에서 제공한 도보 길찾기 기능을 사용하여 시작점과 도착점을 기준으로 하여 지도 위에 선을 그려주는 기능이다.

Figure 7.

Pedestrian Navigation

Figure 8은 길안내 중에 목적지까지 방향을 알려주는 코드이다. 방향을 바꿔야 하거나 횡단보도를 건너야 할 경우 TTS로 방향을 안내해 주는 기능이다. 자신의 위치를 기준으로 하여 다음 안내의 위치 근처로 오면 다음 안내를 하도록 구현하였다.

Figure 8.

Voice guidance output code

Figure 9는 텍스트 파일을 음성 파일로 읽어주는 기능으로, 길안내를 음성으로 변환하기 위해 사용되었다. 설정을 통해 목소리의 높이와, 속도, 언어 등을 설정할 수 있다.

Figure 9.

Setting up and activating the TTS function

1.3. 카메라를 사용한 음료 인식

카메라를 사용하여 원하는 음료를 촬영한 데이터를 서버로 전달해 주는 보조기능이다. 서버와 통신을 성공하였으면 통신 받은 결과 값을 출력해주는 기능이다.

Figure 10은 이전에 기기에 카메라 기능에 대한 권한을 받아 camera api를 사용하여 CamaeraManager의 메소드인 openCamera()를 이용하여 전면 카메라 기능 구현이다.

Figure 10.

Implementing camera functions

1.4. 음성인식을 사용한 음료 판별

사용자의 음성을 인식하여 원하는 음료를 찾는 보조 기능이다. 원하는 음료를 말해서 카메라로 찍으면 음성으로 말한 음료와 카메라로 찍은 음료와 비교해서 같은지 다른지 판단하여 사용자에게 전달한다.

Figure 11은 google speech api를 사용하여 사용자의 음성을 텍스트로 변화해주는 기능이다.

Figure 11.

Google Voice Input Activation Code

RecognizerIntent.ACTION_RECOGNIZE_SPEECH 함수에 의해 인식이 된다.

Figure 12는 음성인식 후 문자로 변환된 데이터 값을 서버로 전송하는 코드이다. 이 방식도 카메라와 같이 http로 통신을 하여 서버로 전송하는 방식이다.

Figure 12.

Speech recognition result sent to server

Figure 13화면에서 원하는 음료를 입력 받고 통신에 성공하였으면 카메라 기능으로 이동되며, 촬영한 음료와 입력받은 음료와 비교하여 결과가 같은지 사용자에게 전달한다.

Figure 13.

Google Voice API screen

2. 서버

2.1. 데이터베이스 처리 프로세스

처리 프로세스는 서버 프로세스에서 활용하기 위해 데이터를 전처리하는 과정이다. 공공 데이터의 포맷을 통일하고 분석 프로세스에 활용할 컬럼을 추출 및 필터링하는 과정을 거친다. 그리고 데이터베이스를 사용하기 위한 준비를 한다.

Figure 14는 필요한 모듈을 모두 호출하고 공공데이터가 저장된 디렉토리의 경로를 변수에 저장하는 과정이다. 1) drop 함수는 해당 경로의 필요없는 부분을 삭제해주는 역할을 한다. 2) loc 속성은 인덱스를 통해 행 데이터를 가져옵니다.

Figure 14.

Call Modules and Assigned Directories

Figure 15는 생필품의 가격 정보를 전처리하고 해당 정보를 데이터베이스에 저장해주는 과정이다. 우선 해당 정보의 생필품 이름과 가격, 편의점의 정보를 행단위로 끓어서 데이터베이스에 저장해준다. 각각의 편의점 별로 다르게 저장해주는 과정이다.

Figure 15.

Price Information Preprocessing and DB Save

Figure 16.

Price Information Preprocessing and DB Save Output

2.2. 서버 프로세스

Figure 17은 시각장애인이 어플리케이션으로 음료수사진을 찍어서 서버로 보내주면 서버에서 해당하는 이미지를 딥러닝을 이용하여 해당하는 이미지의 음료수를 정보를 분류해서 해당하는 음료의 이름이 변수에 저장해주고 해당하는 음료의 이름, 가격 및 영양정보를 데이터베이스에서 찾아줘서 해당 음료의 이름, 가격 및 칼로리, 탄수화물, 단백질 지방의 정보를 어플리케이션으로 보내주는 과정이다.

Figure 17.

Beverage Image recognition and Price, Nutritional Information communication Code

Figure 18.

Beverage Image recognition and Price, Nutritional Information Communication Output

Figure 19는 어플리케이션에서 시각장애인이 원하는 음료를 찾아주기위해서 시각장애인이 원하는 음료를 음성으로 말해주면 해당 음성을 서버에 보내주면 해당하는 음료가 시각장애인이 원하는 음료인지 확인하기 위한 통신의 과정이다.

Figure 19.

Voice Input Communication Code

Figure 20.

Voice Input Communication Output

Figure 21은 시각장애인이 어플리케이션으로 음료사진을 찍었을 때 해당하는 음료의 이름만 알려주는 기능을 한다. 해당하는 사진을 딥러닝을 이용하여 해당하는 음료의 정보를 어플리케이션으로 보내주는 기능을 한다.

Figure 21.

Find Beverage Communication Code

Figure 22.

Find Beverage Communication Output

3. 이미지 인식

3.1. 이미지 학습

이미지 인식은 사용자가 정보를 원하는 제품을 스마트폰 카메라로 촬영 후 촬영된 이미지를 서버로 전송. 전송된 이미지를 분석 후 학습 된 모델로 객체를 검출하여 결과 값을 리턴 하는 과정이다.

Figure 23은 이미지 프로세싱을 위한 모듈을 호출하며 카테고리 별로 네이밍을 하는 과정이다. 1) 파이썬의 내장모듈이 아닌 라이브러리들은 명령 프롬프트에서 pip 명령, 또는 conda 명령을 이용한 별도의 설치가 필요하다. 2) 이미지가 저장되어있는 경로를 미리 명시해 놓으며 카테고리를 리스트화 하여 저장한다.

Figure 23.

Call Modules and Assigned Directories

Figure 24은 이미지 프로세싱을 위하여 사이즈 조절을 하며 변환된 이미지를 numpy배열에 저장하여 npy로 저장하는 기능을 수행한다. 1) 빠른 인식을 위하여 학습에 사용될 이미지를 64*64 크기로 조절을 한다. 2) 조절 된 이미지들을 RGB형태로 변환하며 해당 데이터를 numpy array로 저장한다. 3) 저장된 데이터를 np.save를 이용하여 npy파일 형태로 저장한다.

Figure 24.

Assigned Directories and image resize.

Figure 25는 이미지 프로세싱을 위한 모듈을 호출하며 카테고리 마다 네이밍을 하는 과정이다. 1) 파이썬의 내장모듈이 아닌 라이브러리들은 명령 프롬프트에서 pip 명령, 또는 conda 명령을 이용한 별도의 설치가 필요하다. 2) GPU 사용을 위하여 GPU 확인 및 Session확인을 위한 함수를 사용한다. 3) Figure 3-2에서 저장한 npy를 불러온다. 4) 불러온 npy는 학습을 위하여 3차원데이터를 2차원 배열로 표기하기 위해 astype 함수를 통해 실수화(float) 한 후 255로 나누어 일반화를 한다.

Figure 25.

Call Modules and Assigned npy file, npy file generalization, GPU load

Figure 26은 학습에 필요한 모델 레이어(Layer)를 생성하며 각 레이어별로 신경망을 구성한다. 1) 모델을 구성하기 위해 Sequential()을 이용하여 설계를 시작한다. 사용된 레이어는 컨볼루션(Convolution Layer)를 사용하였다. 이미지 혹은 영상처리에 주로 사용되는 Conv2D레이어를 사용하였다. 첫 Layer는 64개의 filter를 사용하였으며 커널은 (3, 3)으로 설정, Padding값은 same 정의하여 출력 이미지 사이즈와 입력 임지 사이즈를 동일하게 설정하였다. 또한 활성화 함수는 relu로 설정하였다.

Figure 26.

Call Modules and Assigned npy file, npy file generalization, GPU load

Figure 27.

Example MaxPooling

이후 이미지의 크기를 줄이면서 데이터의 손실을 막으며 합성곱 계층의 과적합(Overfitting)을 막기 위해 MaxPooling2D Layer를 추가하였다. Pooling의 크기는 (2, 2)로 설정하였다. 또한 Padding 값은 ‘same’으로 하여 입력 데이터와 출력 데이터의 크기를 동일하게 설정하였다. ‘same’의 경우 데이터가 없는 부분에만 zero-padding이 생겨 데이터의 손실을 막아준다. 이후추가적으로 과적합을 방지하기 위한 정규화 기법으로 dropout을 추가하였다. 계속해서 과적합을 방지하는 이유는 충분한 데이터가 부족하기 때문에 여러 학습을 통하여 과적합 방지를 진행하여 최적의 결과가 나오게 함을 위함이다.

이후 동일한 층을 생성 후 Flatten() 함수를 이용하여 입력 이미지를 1차원 배열로 만든다. 이후 Softmax 활성화 함수를 통하여 최종적인 분류를 한다.

Figure 28.

Categorical Cross Entropy formula

설정한 합성곱 계층을 이용하여 compile()을 진행한다. 손실함수(loss function)은 Categorical Cross Entropy를 사용하였다. 주로 분류에 사용되며 특히 제품의 종류를 구분해야 하는 본 개발과 적절하다고 생각되어 선택하였다.

Figure 29.

Adaptive Moment Estimation formula

Optimizer는 Figure 30의 Adam을 사용하였다. Adam은 RMSProp과 Momentum을 배분하여 방향과 스텝사이즈를 상황에 맞게 대응하여 조절하는 Optimizer이다.

Figure 30.

Adaptive Moment Estimation graph

Momentum에서 관성계수 m과 함께 계산된 Vt로 parameter를 업데이트하지만 Adam에서는 기울기 값과 기울기의 제곱값의 지수이동평균을 활용하여 step변화량을 조절한다.

학습 결과 측정 방법은 ‘Accuracy’를 기준으로 측정하였다.

Figure 31은 저장한 pb 파일을 불러오며 체크 포인트 생성 및 모델 학습을 하는 코드이다. batch size는 64, epochs는 30회로 설정하였다. 위와 같이 설정한 기준은 여러 값을 대입 하여 학습해본 결과 가장 높은 인식률을 나타내었기 때문이다.

Figure 31.

Categorical Cross Entropy formula

3.2. 손 기준 최근접 객체 우선 인식

본 개발의 이미지 인식 기능 중 하나인 손을 기준으로 하는 근접 객체를 우선 인식하는 코드이다. 1)먼저 이미지를 불러온 후 이미지 사이즈 조정 및 전체 색을 변경한다. 변경하는 색은 cv2.COLOR_BGR2HSV 이다. 또한 2)잡음 제거를 위하여 fastNlMeansDenoisingColored를 활용한 잡음 제거를 진행한다.

Figure 32.

load image file and noise canceling

이후 findContours를 이용하여 경계선을 찾은 뒤 가장 큰 영역을 찾는다.

Figure 33.

Convert image file

잡음 제거 및 경계선 찾기 및 최대 크기의 영역의 각 꼭짓점의 다각선을 만든 이후 X축 기준의 최대 최소를 저장. 경계선 내부를 255로 채운다. 이후 나온 이미지를 Detection_img의 predict 함수로 전달한다.

Figure 34.

Detection image GPU load.

이미지 인식을 위한 GPU 로드 및 필요 라이브러리 선언. 본 논문에서는 NVIDIA GeForce GTX1060 6GB를 사용하였다.

Figure 35.

Predict Image

전달 받은 이미지를 먼저 RGB로 convert 한 뒤 해당 이미지의 사이즈를 조정. 이미지를 numpy의 asarray로 3차원 변환하였다.

변환된 이미지의 3차원 배열을 기존에 학습 해 놓은 모델을 불러 온 뒤 predict를 실행한다.

실행한 predict 따라 저장된 예측 레이블의 값에 따라 최종적으로 사용자에게 전송할 데이터를 분류. 본 논문에서는 예시를 위하여 레이블을 두 개만 진행하였다.

Figure 36.

Return result

결론

본 논문에서는 공공데이터 API와 수집한 데이터셋을 기반으로 하여 시각장애인들이 일상생활 속에서 당연히 누려야 할 소비자의 권리를 보장받을 수 있도록 돕는 어플리케이션을 개발하였다. 특히, 편의점과 같은 일상적인 소비공간에서의 상품 정보 접근성을 강화함으로써, 시각장애인들도 비장애인과 동일하게 독립적인 소비 활동을 할 수 있도록 지원하고자 하였다. 기존에는 음료수 캔 상단에 위치한 점자 표기만으로는 제품 정보 파악에 한계가 있었으며, 안내 인력이나 타인의 도움 없이는 원하는 상품을 정확히 선택하기 어려운 실정이었다.

이 개발은 이미지 인식 기술을 통해 시각장애인이 직접 제품의 전면을 인식하고, 해당 제품의 이름, 용량, 가격 등의 정보를 음성으로 안내받을 수 있도록 설계되었다. 나아가 사용자의 현재 위치를 기반으로 최단 거리 편의점을 안내하는 기능을 통해 접근성 문제를 해결하고, 독립적인 이동을 가능하게 하는 편의성 또한 제공하였다. 이를 통해 단순한 보조 기능을 넘어서, 시각장애인이 스스로 정보를 탐색하고 선택하는 주체로서의 위치를 회복할 수 있게 된다. 뿐만 아니라 본 개발은 시각장애인의 권리를 보장하려는 목적을 넘어서, 소비자의 권리에 대한 인식을 확산시키고, 기업이 사회적 책임을 다하지 않는 현실에 대한 문제 제기를 가능하게 한다는 데에도 의의가 있다. 단순히 상업적 손해를 이유로 접근성을 외면하는 기업 태도에 대해 대중의 인식을 변화시키는 데 기여할 수 있으며, 사회적 약자에 대한 관심과 책임감을 촉구하는 계기를 마련한다.

이 어플리케이션은 향후 시각장애인을 넘어 다양한 장애 유형을 포괄하는 보조 기술로 확장 가능하며, 교통, 교육, 문화 등 다양한 분야로 확대 적용될 수 있다. 본 개발은 장애인의 삶의 질 향상과 포용적 기술 개발이라는 관점에서 큰 의미를 가지며, 이러한 시도가 계속 확산된다면 사회 전반의 평등성과 공공성이 더욱 강화될 것으로 기대된다. 결과적으로, 이 연구는 모든 시민이 정보와 자원을 공정하게 접근할 수 있는 사회 실현을 위한 출발점이 될 것이다.

다만 본 연구에는 몇 가지 한계가 존재한다. 본 연구에서 는 공공데이터 API와 자체 수집 데이터셋을 기반으로 한 코딩 구현 결과를 제시하였으나, 실제 어플리케이션을 현장에서 적용하여 편의점까지의 이동 경로 최적화 정확도를 수치적으로 검증하거나, 실제 음료수 제품 인식에 대한 정량적 인식률을 산출하지는 못하였다. 이는 연구 과정에서 제한된 실험 환경과 데이터셋 구성의 한계로 인해 발생한 부분이다. 따라서 향후 연구에서는 보다 다양한 제품군과 실제 사용 환경을 반영한 데이터셋을 구축하고, 앱의 성능을 정량적으로 평가하여 보완할 필요가 있다. 이러한 후속 연구를 통해 본 개발의 실효성을 더욱 높이고, 실제 생활에 안정적으로 적용 가능한 수준으로 발전시킬 수 있을 것이다.

References

Shin J., Cho D.. 2024;Context-aware offline shopping assistance system for visually impaired individuals. Proceedings of the Korea Information and Communication Society Conference 28(1):588–589.
Kim S.. 2021;Research on inclusive design applied to convenience store design for visually impaired individuals. Journal of the Korea Society of Design Culture 27(3):15–27.
Park J., Kim Y.. 2021;Exercise motion classification and correction system for home training. Journal of the Korea Information Science Society 48(7):657–664.
Kim J., Lee S.. 2021;Improvement of AI home training services through enhanced anthropomorphism of agents. Journal of the Korea Society of Design Culture 27(3):29–41.
Jung S., Kim D.. 2019;Direction for implementing personal exercise trainer through AI-based action recognition. Journal of the Korea Society of Computer and Information 24(6):137–144.

Article information Continued

Figure 1.

System Configuration Diagram of the Product Purchase Assistance Application for the Visually Impaired

Figure 2.

Authorize camera and location functions

Figure 3.

Tmap load and setup code

Figure 4.

Map screen output result after using Tmap api

Figure 5.

Find a convenience store near you based on your current location

Figure 6.

Result value through POIdata search

Figure 7.

Pedestrian Navigation

Figure 8.

Voice guidance output code

Figure 9.

Setting up and activating the TTS function

Figure 10.

Implementing camera functions

Figure 11.

Google Voice Input Activation Code

Figure 12.

Speech recognition result sent to server

Figure 13.

Google Voice API screen

Figure 14.

Call Modules and Assigned Directories

Figure 15.

Price Information Preprocessing and DB Save

Figure 16.

Price Information Preprocessing and DB Save Output

Figure 17.

Beverage Image recognition and Price, Nutritional Information communication Code

Figure 18.

Beverage Image recognition and Price, Nutritional Information Communication Output

Figure 19.

Voice Input Communication Code

Figure 20.

Voice Input Communication Output

Figure 21.

Find Beverage Communication Code

Figure 22.

Find Beverage Communication Output

Figure 23.

Call Modules and Assigned Directories

Figure 24.

Assigned Directories and image resize.

Figure 25.

Call Modules and Assigned npy file, npy file generalization, GPU load

Figure 26.

Call Modules and Assigned npy file, npy file generalization, GPU load

Figure 27.

Example MaxPooling

Figure 28.

Categorical Cross Entropy formula

Figure 29.

Adaptive Moment Estimation formula

Figure 30.

Adaptive Moment Estimation graph

Figure 31.

Categorical Cross Entropy formula

Figure 32.

load image file and noise canceling

Figure 33.

Convert image file

Figure 34.

Detection image GPU load.

Figure 35.

Predict Image

Figure 36.

Return result