Korean Institute of Information Technology

Home

The Journal of Korean Institute of Information Technology - Vol. 20 , No. 9

[ Article ]
The Journal of Korean Institute of Information Technology - Vol. 20, No. 9, pp. 19-30
Abbreviation: Journal of KIIT
ISSN: 1598-8619 (Print) 2093-7571 (Online)
Print publication date 30 Sep 2022
Received 28 Jul 2022 Revised 12 Aug 2022 Accepted 15 Aug 2022
DOI: https://doi.org/10.14801/jkiit.2022.20.9.19

실시간 객체 감지 기술로 다중 바코드와 QR코드 인식 시스템 설계
박양재*
*가천대학교 IT 융합대학 컴퓨터공학과 교수

Design of Multiple Barcode and QR Code Recognition System with Real-time Object Detection Technology
Yang-Jae Park*
Correspondence to : Yang-Jae Park Dept. of Computer Engineering, Gachon University, Korea Tel.: +82-31-750-4753, Email: parkyj@gachon.ac.kr


초록

오늘날 스마트팩토리 현장에서는 다양한 부품의 관리를 위해서 바코드와 QR코드를 사용하고 있다. 생산현장에서 많은 부품들이 혼재되어 있을 때 부품마다 바코드와 QR코드를 개별 스캔하여 처리하기에는 많은 시간이 소요된다. 이와 같은 상황에서 일정 영역에 부품들의 이미지를 캡쳐한 후 실시간 감지 기술인 YOLO 알고리즘을 이용하여 바코드와 QR코드를 감지하고 개별 이미지로 잘라낸다. 다음 단계에서 스캐너가 인식할 수 있는 상태의 이미지로 회전시키고, 이미지 수정 단계를 거쳐 바코드와 QR 코드 리더인 Pyzbar 라이브러리로 디코딩하도록 설계하였다. 공정별 바코드나 QR코드의 훼손, 오염 등의 정도에 따라서 디블러 라이브러리를 적용하여 개선 후 디코드함으로써 인식률의 향상을 가져올 수 있었다.

Abstract

In today's smart factory sites, barcodes and QR codes are used to manage various parts. When many parts are mixed at the production site, it takes a lot of time to individually scan and process barcodes and QR codes for each part. In such a situation, after capturing images of parts in a certain area, barcodes and QR codes are detected using YOLO algorithm, a real-time detection technology, and cut into individual images. In the next step, it is designed to be rotated into an image in a state that the scanner can recognize, and then decoded with the Pyzbar library, a barcode and QR code reader, through the image correction step. According to the degree of damage or contamination of barcodes or QR codes by process, the recognition rate could be improved by applying the deblur library to improve and decode.


Keywords: barcode, QR code, YOLO, object detection, smart factory

Ⅰ. 서 론

오늘날 제조업 생산시스템에 스마트팩토리가 실현되면 각 공정에서 생산된 많은 데이터를 기반으로 분석, 의사 결정하는 데이터 기반의 공장 운영체제가 만들어짐으로 생산 현장에서 발생하는 원인불명의 장애, 품질 저하 원인 등 문제들의 상관관계 분석이 가능하다. 또한 경험이 많은 작업자의 노하우를 데이터화하여 누구나 쉽게 활용이 가능하다. 공장 내에서 발생되는 데이터들이 MES, ERP 등과 같은 생산, 경영 분야의 시스템과 연동하여 주문 접수와 경영상 판단에 따른 공장의 최적의 생산체제를 유지할 수 있게 된다[1].

본 논문은 제조업 생산 분야인 스마트팩토리의 작업 현장에서 많은 부품의 관리를 효율적으로 할 수 있도록 실시간 사물 감지 기술인 YOLOv5 기술을 이용하여 바코드와 QR코드가 혼재되어 있는 환경에서 부품 코드를 추출해서 생산시스템과 연계하여 공정의 흐름 시간을 단축하는데 목적이 있다. 스마트팩토리의 제조시스템과 실제 연계하여 적용이 가능하도록 설계하였다.


Ⅱ. 관련 연구
2.1 바코드

바코드(Barcode)는 막대와 공백을 특정한 모양으로 혼합하여 문자와 숫자 그리고 기호 등을 표현하는 것으로 바코드 아래에 표시되는 숫자를 스캐너로 읽을 수 있도록한 것이다. 바코드를 이용한 정보관리는 제조, 물류, 생산 및 판매, 재고관리 분야 외에도 많은 분야에서 적용되어 사용하고 있다.

2.2 바코드의 종류 및 특징

바코드가 사용되는 분야에 맞게 제작된 다양한 모양의 바코드 심벌 체계와 흑, 백의 라벨을 만들어 주는 인쇄 시스템과 바코드를 디코딩하여 사용할 수 있는 정보로 변환하는 판독 시스템으로 구성된다. 종류는 CODE 128 바코드, CODE 39 바코드, CODE 93 바코드, UPC 코드, EAN 바코드, KAN 바코드가 있다[2].

EAN(European Article Number) 바코드는 유럽 12개국이 국제 통상 코드로 제정한 것으로 13개 문자를 포함할 수 있으며 바코드 표현은 12자리, 가장 왼쪽의 문자는 수치로 표현되므로 UPC 바코드와 동일하게 95X를 갖는다. KAN(Korean Article Number)는 한국 공통 상품 코드로 판매시점에 필요한 정보를 신속히 파악할 수 있는 시스템과 연계하여 사용되고 있다[3]. 국제 표준 바코드의 특징은 표 1과 같다.

Table 1. 
Characteristics of international standard barcodes
Data type PDF-147 Dot matrix MaxiCode
Maximum data capacity Number 2,725 3,116 138
Alphabet-number 1,850 2,335 93
Binary 1,108 1,556 -

바코드 판독 시스템은 바코드 심볼, 스캐너, 디코더, 컴퓨터로 구성된다. 바코드 리더기는 스캐너와 디코더로 구성되어 바코드 심볼을 컴퓨터가 이해할 수 있는 데이터 형식으로 변환시켜 주는 역할을 한다. 바코드 리더는 바코드의 디코딩에 필요한 주요 기능과 입출력 및 사용자의 상호작용에 필요한 보조기능으로 구성된다.

2.3 QR 코드

QR코드(Quick Response code)는 1994년 DENSO WAVE 사가 개발한 고속 판독용 매트릭스 2차원 코드이다. QR코드의 규격은 QR코드를 구성하는 최소단위(흑백의 정사각형)를 셀이라 한다. QR코드는 셀의 조합으로 표시되며 위치 검출 패턴(기준 심볼)과 타이밍 패턴, 오류 정정 레벨이나 마스크 번호 등의 정보를 가진 포맷 정보, 데이터 및 오류 정정 부호로 구성된다. QR코드의 규격은 표 2와 같다[4].

Table 2. 
QRCode specifications
Minimum symbol size 21 x 21 cell
Maximum symbol size 177 x 177 cell
Maximum data capacity Number 7,089
Alphabet-number 4,296
Chinese character 1,817

2.4 QR 코드의 위치 검출 패턴

QR코드 심벌의 3 모서리에 배치된 위치 검출용 형태로 검색하여 코드의 위치를 인식할 수 있으며 빠른 디코딩이 가능하다.

그림 1과 같이 위치 검출 형태는 A, B, C 모든 방향에서도 흰색 셀과 검정색 셀의 비율이 반드시 1:1:3:1:1이 되어야 한다. 따라서 모든 방향에서도 판독이 가능하여 작업 효율이 향상된다.


Fig. 1. 
QRcode position detection pattern[5]

얼라인먼트 패턴은 왜곡에 의해 셀이 이탈하는 경우 위치 검출을 위하여 사용된다. 그림 2는 QR 코드 얼라인먼트 패턴이다[5]. QR코드의 마진은 QR코드 주위의 공백으로 모델1과 모델2에서는 4개 셀의 공백이 필요하며, Micro QR코드에서는 2개 셀의 공백이 필요하다[6].


Fig. 2. 
QRcode alignment pattern[6]

2.5 실시간 이미지 처리 기술(OpenCV)

OpenCV(Open source Computer Vision)은 실시간 컴퓨터 비전을 목적으로 작성된 프로그래밍 라이브러리로 실시간 이미지 처리에 초점을 두었으며 인텔에서 개발하였다. 인텔 CPU에서 사용하면 속도의 향상을 느낄 수 있는 IPP 기능을 사용 할 수 있으며, 윈도우, 유닉스, 리눅스 등 여러 운영체제에서도 사용이 가능하며, 텐서플로우, 토치/파이토치 및 카페 등의 딥러닝 프레임워크에서 활용이 가능하다[7].

2.6 실시간 객체감지 기술

정지 또는 동영상에서 실시간 객체 감지(Object detection)기술은 영상처리나 컴퓨터비전 분야에서 많이 적용되는 기술이다. 이 기술의 목적은 지정된 이미지에서 객체를 정확하게 찾아내고 무엇인지를 분류하는 것이다. 이와 같은 일을 사람은 쉽게 처리가 가능하지만 컴퓨터는 특정 객체 알고리즘을 통하여 이미지 또는 영상 속에서 주요 객체를 감지하고 찾아낸 객체를 바운딩 박스로 구분한다. 최근에는 얼굴인식, 음성인식, 비디오 인식, 이미지 분류 다양한 분야에 적용되고 있다[8][9].

객체 감지 기술 중 가장 많이 적용되고 있는 YOLO 알고리즘은 정지 또는 동영상 이미지 안에 존재하는 객체와 객체의 위치를 파악하는데 이미지를 한번 보고 예측이 가능한 알고리즘이다. 이 방법은 분류 대상의 객체를 감지하지 않고 바운딩 박스를 다차원적으로 분리하고 클래스 확률을 적용하여 회귀 문제로 처리한다.

입력 이미지는 CNN을 통해 텐서의 그리드 형태로 분류하고, 각 구간의 객체인 바운딩 박스와 클래스 확률을 만들어 객체를 인식한다, YOLO는 후보 영역을 추출하기 위한 별도의 네트워크 사용하지 않으므로 빠른 R-CNN보다 처리 시간에서 좋은 성능을 나타낸다. 그림 3은 YOLO 객체 감지 시스템이다[10].


Fig. 3. 
YOLO Object Detection System[10]

2.6.1 YOLO v1

VGG Net 기반의 모델을 사용하여 입력 이미지를 SxS개의 그리드로 분할하고 특정 객체의 중앙이 그리드 셀의 중앙에 위치하면 그리드 셀은 객체 검출 작업을 실행한다. 그리드 셀은 각각의 그리드에 다하여 바운딩 박스, 신뢰점수와 클래스 확률의 예측을 수행한다.

이 예측 결과는 텐서에서 SxS x*(B*+C)로 계산된다. B는 바운딩 박스의 수, C는 셀의 조건부 클래스 수를 표시한다. 신뢰점수는 경계 박스 안에 객체의 포함 여부를 예측하는 경우 모델의 신뢰 수준과 정확도를 표시하는 것으로 식 (1)과 같다.

CS=PrObj*IOUpredtruth(1) 

항목에 IOU는 Intersection Over Union을 나타내며, 셀 안에 객체가 존재하지 않는 경우는 신뢰 점수는 0, 객체가 존재하는 경우는 인공지능 모델 출력값을 훈련 및 테스트하는데 사용되는 실제 환경의 데이터인 검증용 실측 정보와 예측 박스 간의 IOU 값을 나타낸다.

YOLO v1의 네트워크 구조는 이미지 분류를 목적으로 설계된 GoogleNet 모델을 기반으로 24개의 convolution계층과 2개의 완전히 연결된 계층으로 구성되며, pooling계층은 적용하지 않는다. YOLO v1는 당시 VGG16과 같이 하나의 네트워크에 이미지를 넣으면 바로 객체의 종류와 위치정보를 파악할 수 있는 1단계 검출기 방식을 적용하여 당시 성능이 가장 좋았던 Faster R-CNN보다는 성능이 조금 저조하였으나 실행속도가 45 FPS로 실시간 객체 감지의 가능성을 보여주었다[11]. 그림 4는 YOLO v1의 네트워크 구조이다.


Fig. 4. 
Network Architecture and Detcection Model of YOLO v1[11]

2.6.2 YOLO v2

YOLO v2는 YOLO v1을 개선한 버전으로 YOLO v1의 VGG Net 기반의 모델을 적용하지 않고 자체적으로 만든 CNN 모델인 Darknet 19를 사용하였다. Darknet은 19개의 layer로 구성되 있으며 처음에는 224x224에 대한 imageNet dataset를 학습시킨 후 448x448 이미지를 재학습 시켜주어야 한다. YOLO v2는 파라미터의 숫자가 많아졌으며, Fully Connected Layer 대신 Anchor box를 사용하여 Faster R-CNN과 같은 방식을 적용하였다[12].

2.6.3 YOLO v3

YOLO v3는 YOLO v2의 구조를 그대로 사용하나 백본 아키텍쳐를 Datknet-19에서 Darknet-53으로 변경하였으며, Feature Pyramid Networkrhk 같이 물체 객체의 정확한 위치를 예측하기 위해서 Anchor box를 사용하면 각 Anchor box와 객체와 차이값을 예측하면 네트워크가 해결해야 할 문제의 난이도가 낮아지고 성능은 향상되었다. 이와 같이 Anchor box를 기준으로 위치를 구하기 때문에 감지 할 수 있는 객체의 수도 YOLO v1이 49개보다 많은 1,000개 이상의 객체 감지가 가능하다. 감지 분야에서 큰 문제점인 작은 물체를 감지하기 어려운 문제를 이미지나 필터 슬라이딩의 결과물인 피쳐맵의 크기를 다양한 형태로 재설계하는 접근 방식을 사용하였다.

그림 5는 파라미드 네트워크 기능이며, (a)는 입력 이미지 자체를 여러 크기로 조절한 뒤 각각의 이미지에서 물체를 감지하는 방법으로 입력 이미지를 그대로 다양한 크기로 복사하여 계산량이 많이 발생하는 문제점이 있다. (b)는 CNN 신경망을 거쳐서 만들어진 마지막 단계의 피쳐맵으로 물체 감지를 수행하는 기법으로 YOLO가 사용하는 기법이다. (c) CNN 신경망을 통과하는 중간과정에서 생성되는 피쳐맵 각각이 물체 감지를 수행하는 기법이다. (d) Feature Pyramid Network으로 신경망을 통과하면서 단계별로 피쳐맵을 생성한다. 그리고 가장 상위 계층에서 역방향으로 피쳐맵들을 합쳐준 뒤 물체 감지를 실시한다.


Fig. 5. 
Feature pyramid network[13]

이와 같은 순서로 상위 계층의 관계 있는 부분의 정보와 하위 계층의 작은 물체들에 대한 정보를 동시에 물체 감지를 할 수 있다[13].

2.6.4 YOLO v4

YOLO v4는 C언어로 작성된 Darknet 프레임워크로 구성에는 .cfg 파일을 사용한다. 최근의 딥러닝 모델은 학습 시 많은 수의 GPU가 필요하고, 전체 학습 데이터를 배치 사이즈로 분할하고 각 배치 셋을 순차적으로 실행하는 mini-batch 크기가 매우 크다는 문제가 있다.

YOLO v4에서는 실시간으로 동작하면서 기존에 사용하던 GPU만으로 매우 빠른 학습이 가능하고 딥러닝의 정확도를 개선하는 다양한 방법을 적용하여 YOLO의 성능을 극대화하였다[14]. 그림 6은 물체 감지기의 구조이다.


Fig. 6. 
Anatomy of an object detector[14]

2.6.5 YOLO v5

YOLO v5는 PyTorch 프레임워크 기반이며, 구성은 .yaml 파일을 사용한다. 모델에는 YOLOv5s, YOLOv5m, YOLOv5l, YOLOv5x의 4가지 모델로 구성되어 있다. small, medium. large. xlarge 모델로 backbone이나 head는 모두 같으나 depth_multiple과 width_multiple이 다르다. Large가 1.0을 기준으로 되는 크기로 다른 모델과 비교하여 판단한다[15]. 모델별 성능 비교는 그림 7과 같다.


Fig. 7. 
Performance comparision by YOLO v5[15]


Ⅲ. 시스템 개발
3.1 시스템 개발 환경과 과정

본 시스템의 개발과정 환경은 PyCharm 2022.1 Community Edition에서 opencv-python, matplotlib, numpy, Pyyaml, Pillow, torch 라이브러리와 YOLO v5 모델을 PyTorch 프레임워크에서 구현하였다.

PyTorch는 컴퓨터비전 및 자연어 처리 응용 프로그램에서 사용되는 Torch 라이브러리를 기반으로 하는 오픈 소스 기계 학습 라이브러리이다.

시스템 개발 과정은 그림 8과 같이 카메라로 캡쳐된 이미지에서 객체 감지 기술인 YOLO v5를 적용하여 바코드와 QR코드를 감지하고, 각각의 바코드와 QR코드로 잘라낸 후 이미지를 판독이 용이한 방향으로 회전 시키고, 바코드와 QR코드의 화질을 개선 후 바코드와 QR 코드 리더기인 Pyzbar로 스캔하여 부품의 번호를 디코드하는 순서로 진행하였다.


Fig. 8. 
System development process

3.2 학습 모델

본 시스템에서는 파이썬 프로그램에서 카메라로 이미지를 캡쳐하고 캡쳐된 이미지에서 물체를 식별하고 위치를 파악하는 물체 감지는 YOLO v5 알고리즘을 사용하였다. 웹에서 128개의 바코드와 QR코드 이미지와 비디오 프레임에 수동으로 태그를 지정하여 데이터 세트를 만들었다. YOLO 라벨링 형식은 이미지 당 하나의 주석 텍스트 파일을 제공한다. 각 텍스트 파일에는 이미지의 각 객체에 대한 하나의 경계 상자(BBox) 주석이 포함되어 있다. 주석은 이미지 크기로 정규화되며 0에서 1 사이의 범위에 있다. 주석의 형식은 식 (2)와 같이 표시된다.

object-class-ID X center Y center Box width box height(2) 

이미지에 두 개의 객체가 있는 경우 YOLO 주석 텍스트 파일의 내용은 그림 9와 같이 표현된다.


Fig. 9. 
YOLO annotation

YOLO 데이터 디렉토리 구조는 Ultralytics는 model 디렉토리 아래에 각 아키텍쳐에 대한 기본 제공 모델 구성 YAML 파일을 제공한다.

본 시스템에서는 project/models/yolov5s.yaml을 선택하고 YOLO 데이터 디렉토리 구조를 그림 10과 같이 구성하였다.


Fig. 10. 
YOLO data directory structure

사전 훈련된 가중치(1개 클래스)로 실시간 다중 객체 감지 및 추적 기술인 YOLO v5s 모델을 구현하였다. 전이 학습을 사용하여 128개의 바코드 이미지 세트 중 90%는 학습용(Train), 10%는 검증용(Validation)으로 모델 학습에 적용하였다. 새로운 이미지가 입력되면 훈련된 학습 모델에 적용하여 처리되도록 하였다.

그림 11은 yolov5s.yaml 파일의 구성을 나타내었으며 훈련은 그림 12와 같은 명령어로 실시하였다.


Fig. 11. 
Contents of the YOLOv5s.yaml file


Fig. 12 
Model training command

학습된 모델에서 추론 과정은 settings.py 파일에서 score_thres-hold-io_threshold 매개변수를 조정하여 향상된 추론 결과를 얻을 수 있다.

한 장의 이미지 내에서 다중 바운딩 박스를 적용하여 복수 개의 바코드와 QR코드를 감지한 후 개별 바코드와 QR코드로 분리한다. Detect.py 파일에서 —save-txt 인수를 설정하여 바운딩 박스 위치와 클래스가 이미지마다 하나의 파일과 함께 /inference/output/에 저장된다.

그림 13은 YOLO v5s 실시간 다중 객체 감지 및 추적 기술로 감지된 바코드와 QR 코드이다.


Fig. 13 
Barcodes and QRcodes detected by YOLO v5s

3.3 객체 인식 과정

입력 이미지가 YOLO v5 알고리즘에 의하여 바코드와 QR코드 이미지를 감지한 후 개별 이미지로 crop 분리된다.

개별 이미지 바코드와 QR코드 이미지는 이동하는 객체의 바운딩 박스를 추적하는 객체 추적 프레임워크인 Deep SRORT로 처리되었을 때 올바른 ID가 디코딩 되면 처리가 완료되고 올바른 ID가 디코딩 되지 않으면 이미지를 판독이 가능한 각도로 이미지를 회전시켜서 Pyzbar 라이브러리가 디코딩을 수행한다.

디코딩 결과가 올바르면 결과를 출력하고 그렇지 않으면 이미지 사이즈를 검사하여 70보다 크면 Pyzbar 디코딩 수행하고 그렇지 않으면 블러처리 후 이미지 사이즈 조정하고, DeblurGAN 처리로 생성적 적대 신경망(GAN)을 적용하여 이미지의 흐릿한 요소를 제거 후 Pyzbar 라이브러리가 디코딩을 수행하도록 설계하였다.

3.3.1 Deep SORT

Deep SORT(Simple Online Real-time Tracker)는 가장 보편적으로 사용되고 있는 객체 추적 프레임워크로 SORT를 기술적으로 확장한 기술이다. 이동하는 개체의 바운딩 박스를 추적하는 기술로 칼만 필터가 적용된다. 칼만 필터는 이전 프레임에 나타나는 개체를 사용하여 다음 프레임의 개체의 좌표를 예측하고 측정하는데 사용하였다[16].

그림 14는 칼만 필터의 모델로 Predicted state estimate는 예측 모델이고, Measurement는 측정 모델로 이 두 모델을 사용하여 추측을 더 잘하기 위해 상태의 업데이트를 진행한다.


Fig. 14. 
Model of kalman filter[16]

칼만 필터는 바운딩 박스 요소로 데이터를 처리한다. 바운딩 박스는 이미지 내의 개체의 위치를 나타내며, [x, y, a, h, vx, vy, va, vh]를 가진다. (x, y)는 바운딩 박스의 중심 위치를 a는 가로-세로 비율, h는 높이, vx, vy, va, vh는 각 요소들의 속도를 나타낸다. 이 데이터를 사용하여 위치를 추적하고 실제 측정된 값들과 비교하여 상태를 업데이트한다.

3.4 이미지 처리 과정

카메라로 입력된 입력 이미지는 Sobel, Blur, Binarization, Morphology, Erosion, Delatation, 바운딩 박스 생성, Rotation 순서대로 이미지 처리를 진행하였으며, 이미지 처리 과정은 그림 15와 같다.


Fig. 15. 
Image processing process

3.4.1 Sobel 엣지 검출

Sobel은 입력된 이미지에 3x3 크기의 행렬을 사용하여 연산하였을 때를 중심으로 각 방향의 앞뒤 값을 비교하여 변화량을 검출하는 알고리즘으로 바코드의 바와 바 사이의 가장자리를 인식되게 처리하였다[17].

3.4.2 Blur

Blur는 이미지 처리나 컴퓨터 비전에 적용되는 기본적인 이미지 형태를 바꾸는 처리 방법이다. 이것은 이미지에 필터의 합성(2차원 컨볼루션)을 사용하여 만들어진다. 작은 필터를 사용하여 전체 이미지에 이동하면서 원본 이미지의 모든 픽셀값을 변경시킨다. 노이즈를 제거하기 위한 방법으로 블러링을 많이 사용하고 있으며, 이미지의 거친 부분을 다듬는 효과가 있다.

이미지의 픽셀의 값은 공간적으로 천천히 변경된다. 따라서 픽셀 간의 상관관계가 매우 크다. 이를 저속 공간적 변형이라 하며, 노이즈는 이미지에서 어떤 패턴도 나타내지 않으므로 노이즈를 제거하는 유용한 방법은 평균을 내는 것이다. 노이즈는 서로 상관관계가 아주 작으므로 평균을 사용하면 0으로 근접하게 된다.

이것을 통해 이미지의 시그널을 상대적으로 크게 나타낼 수 있다. 대부분의 이미지 블러링 알고리즘은 픽셀값의 평균을 이용한다. 평균을 이용하는 방식이 단순한 산술 평균 또는 가중치를 고려한 평균이냐에 따라 다양한 방법으로 분류된다. 감지된 바운딩 박스 내부를 흐리게 처리하기 위하여 사용하였다.

3.4.3 Binarization

이진화(Binarization)는 영상처리에서 두 클래스 분류 문제로 0 아니면 1 또는 검정색 아니면 흰색으로 일괄적으로 분류하는 연산 중 하나이다. 어떤 주어진 임계값 보다 밝은 픽셀들은 모두 흰색으로 나머지 픽셀들은 모두 검은색으로 바꾸는 연산이다[18]. 이진화 어떤 값이 두 클래스 중 어떤 것으로 분류할 때, 그 경계가 모호하면 큰 값의 차이에도 불구하고 다른 클래스에 소속되는 경우와 같은 오류가 발생하는 이진화 오류 문제가 있다.

이진화 오류문제를 작게 나타내기 위해 현재 픽셀값뿐만 아니라 주변의 값을 참조하여 오류를 줄일 수 있다. 히스테리시스 임계값은 주변의 분류 결과에 따라서 자신의 분류 결과가 다르게 나타나는 임계치 기법으로서 캐니 엣지 디텍터에 이진화 기법이 대표적이다. 히스테리시스는 어떤 시스템의 상태가 자신의 현재 픽셀값뿐만 아니라 과거 또는 주변의 값에 따라서 변경되는 현상을 의미한다.

3.4.4 Morphology

형태학(Morphology)는 영상처리 분야에서 잡음 제거, 구멍 메우기, 선 이어 붙이기 등에 사용되는 형태학적 연산이다. 모폴로지 연산은 검은색과 흰색으로만 구성 되어 있는 이진화 이미지에 사용된다.

모폴로지 연산에는 침식, 팽창, 열림, 닫힘이 있으며, 침식(Erosion)연산은 이미지를 깎아 내는 연산이며, 팽창(Dilatation)은 침식과 반대로 물체의 주변을 늘려주는 연산이다. 침식 연산 후 팽창 연산을 수행하는 것을 열림(Opening)연산으로 밝은 노이즈를 제거하며, 닫힘 연산은 주변보다 어두운 잡음을 제거하고 분리되어 보이는 개체를 연결하거나 구멍을 메우는데 효과적인 연산이다[19].

3.4.5 Rotation

일정한 각도 만큼 시계방향 또는 반 시계 방향으로 회전시켜서 프레임 내 물체의 위치를 변경한다. 먼저 Roation을 적용 시킬 이미지를 불러오고, 그 이미지의 바운딩 박스 정보를 읽어 저장한다. 기존 바운딩 박스는 [x, y, w, h]가 지정되어 있기 때문에 x1, y1, x2, y2를 계산하여 저장할 새로운 리스트를 만든다.

3.4.6 DeblurGAN

이미지에서 흐릿한 요소를 제거하는 프로세스를 디블러링이라 한다. 흐릿한 이미지 B 에서 선명한 이미지 S를 복구한다. 여기서 S는 K(흐림 커널)와 컨벌루션되어 B를 생성한다. 식 (3)과 같이 나타낼 수 있다.

B=S K 여기서 * 회선(3) 

블러 K는 점확산 함수로 모델링 되고 가상의 선명한 이미지 S와 컨벌루션 되어 B를 얻는다. 대부분의 경우 흐릿한 이미지에는 원본 이미지를 고유하게 판별하기 위한 정보가 충분하지 않아 문제가 발생한다. 또한 흐릿한 이미지에는 원본 이미지를 결정하는 작업을 복잡하게 만드는 추가 노이즈가 포함되어 있다. 이것은 일반적으로 정규화를 사용하여 해결된다. 포인트 확산 함수 K와 흐릿한 이미지 B의 적절한 디콘볼루션에 의해 흐릿한 이미지 B는 디블러링되고 선명한 이미지 S는 복구될 수 있다.

생성적 적대 신경망(Generative adversarial network)은 일반적으로 한 가지에 만들어진 신경망 모델들과 다르게 생성자, 판별자의 2가지의 신경망을 소유하고 있으며, 이것을 사용하여 진짜와 동일한 가짜를 제작하는 것을 목표로 하는 딥러닝(Deep learning) 알고리즘이다[20]. 그림 17은 블러링된 이미지를 디블러하여 만든 선명한 이미지이다.


Fig. 17. 
Deblur the blurred image to create a clear image

3.5 Pyzbar

Pyzbar는 C++, Python, Perl 및 Rudy 바인딩이 포함된 오픈소스 C 바코드 디코드 라이브러리이다. 이미지 스캐닝, 비디오 스트림의 실시간 스캔 기능과 EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 of 5 및 QR Code 기호 인식기능이 있다. 시스템 구성언어로 파이썬을 사용하였으며, 1차원 바코드와 QR코드를 읽어 주는 라이브러리로 Pyzbar 판독 라이브러리를 사용하였다[21].

입력된 이미지에서 바코드와 QR코드를 디코드한다. 디코드 실험 결과는 그림 18와 같이 웹캠(로지텍 930C)와 아이폰12 프로맥스에서 테스트 결과 정확하게 디코드가 실행되었다.


Fig. 18. 
Decode experiment result


IV. 시스템 구축 및 평가

본 연구는 제조업 스마트팩토리 현장에 적용하기 위하여 모의 컨베이어 벨트 시스템에 바코드와 QR 코드가 부착된 부품들이 이동할 때를 가정하여 시스템을 설계하고 테스트를 진행하였다.

사용된 컨베이어 벨트 시스템은 크기가 53x 6.5x26(cm), 폭은 55(mm)이며, 서보모터는 속도는 0.23(sec/60° at 4.8[V])와 0.19(sec/60° at 6[V])이다. 카메라는 글로벌 셔터 카메라로 CMOS 센서 타입이고 렌즈는 CS 마운트 2.8~12mm 가변 초점 렌즈, 판독거리는 20cm, 해상도 프레임 수는 1280x720 MJPEG@ 120fps, 셔터는 글로벌 타입, 인터페이스는 USB 2.0, 전압은 DC 5[V]이다.

컨베이어 벨트 환경에서 컨베이어 벨트 이동 속도별(Max = 0.23 m/sec, Min = 0.19 m/sec) 테스트 결과를 표 3에 나타내었다.

Table 3. 
Results by conveyor belt movement speed


모의 컨베이어 벨트에서 이동 속도별 테스트 결과 컨베이어 벨트의 이동 속도에 따른 인식률의 큰 차이가 발생하지 않으므로 제조업 스마트팩토리 현장에서 적용이 적합한 것으로 판단된다.


V. 결 론

본 연구는 제조업 분야에 많이 적용되고 있는 스마트팩토리에서는 공정별 많은 부품을 관리하기 위한 방법으로 바코드와 QR코드를 같이 사용하고 있다. 공정별 바코드나 QR코드의 훼손, 오염 등의 정도에 따라서 디블러 라이브러리를 적용하여 개선 후 디코드함으로써 인식률의 향상을 가져올 수 있었다.

제조업의 MES(Manufacturing Execution System)는 기초관리, 생산관리, 생산공정관리, 설비정비관리, 입고관리/바코드 관리, 생산현황 모니터링, 품질관리, 출고관리, 재고관리 기능이 있다. MES와 연계를 위한 연구가 필요하며, 본 논문의 향후 과제로 한다.


References
1. J. W. Byun, "A Study on Smart Factory Policy and Implications in the Era of the 4th Industrial Revolution: Focusing on German and American Cases", Journal of Culture Industry, Vol. 21, No. 3, pp. 143-150. May 2021.
2. M. K. Lee and K. T. Seo, "Barcode-based document search service design", Journal of Korean Society for Emotion & Sensibility, Vol. 2020, pp. 45-46. Nov. 2020.
3. H. S. Shin and J. W. Lee, "Design and Development on 2D Barcode Based Network Advertising Contents", The Journal of the Korea Contents Associatio, Vol. 19, No. 7, pp. 376-383, Jul. 2019.
4. S. Y. Park, S. B. Jeon, and H. Y. Song, "Implementation of QR code activation based on blockchain", Journal of Korea Telecommunications Society Fall Conference, pp. 1001-1002, Nov. 2021.
5. S. T. Kim, S. Y. Cha, and K. Park, "QR code", Seongandang, pp. 34-45, Mar. 2011.
6. C. J. Park and J. S. Hyun, "Smartphone-based QR code interpreter performance analysis and application development", Journal of the Korea Maritime Information and Communication Society, Vol. 13, No. 10, pp. 2242-2250, Oct. 2009.
7. B. Gray and A. Keahier, "Learning OpenCV", Wikibooks, pp. 31-87, Nov. 2018.
8. J. S. Shim, S. Y. Yun, and S. C. Park, "Design of Webcam-Based Object Detection System", Proc. of the Korea Information Proc. Society Conference, Vol. 19, No. 2, pp. 549, Nov. 2012.
9. S. Jung, "Japanese Technical Trend in 3D Object Detection Technique", Auto Journal, Vol. 42, No. 3, pp. 14-17, Mar. 2020.
10. C. C. Liu, S. C. Fuh, C. J. Lin, and T. H. Huang, "A Novel Facial Mask Detection Using Fast-YOLO Algorithm", International Conference on Applied System Innovation (ICASI) Applied System Innovation(ICASI), 2022 8th International Conference, pp. 144-146, Apr. 2022.
11. F. Yan and Y. Xu, "Improved Target Detection Algorithm Based on YOLO", 4th International Conference on Robotics, Control and Automation Engineering(RCAE), pp. 21-25, Jul. 2021.
12. Sogangori, "Deep Learning YOLOv2&YOLO-9000", May. 2017. https://m.blog.naver.com/sogangori/221011203855. [accessed: Jan. 06, 2022]
13. J. Hui, "Deep Learing Real-time Object Detection with YOLO, YOLOv2 and now YOLOv3", Mar. 2018. https://jonathan-hui.medium.com/real-time-object-detection-with-yolo-yolov2-28b1b93e2088. [accessed: Jan. 06, 2022]
14. Hooai, "Difference between YOLOv5 and YOLOv4", Dec. 2021. https://whoishoo.tistory.com/207. [accessed: Feb. 10, 2022]
15. X. Song and W. Gu, "Multi-objective real-time vehicle detection method based on yolov5", 2021 International Symposium on Artificial Intelligence and its Application on Media, pp. 142-145, 2021.
16. Nononets, "DeepSORT : Deep Learing to Tarck Customer Objects in a Video", Mar. 2019. https://nanonets.com/blog/object-tracking-deepsort. [accessed: May 22, 2021]
17. Openlab, "sobel edge detection", Sep. 2015. https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=roboholic84&logNo=220482877717. [accessed: Jan. 06, 2022]
18. Dark Programmer, "Binarization, thresholding", Apr. 2014. https://darkpgmr.tistory.com/115. [accessed: Jan. 07, 2022]
19. K. S. Baek, "OpenCV-19, Morphology, erosion, dilatation, Opening, Closing", Nov, 2020. https://bkshin.tistory.com/entry/OpenCV-19. [accessed: Jan. 07, 2022]
20. Computer, "DeblurGAN : Blind Motion Debluring Using Conditional Adversarial Networks", Aug. 2019. https://myeonghui-deep.tistory.com/13. [accessed: Jan. 06, 2022]
21. Python Software Foundation, "pyzbar 0.1.9", https://pypi.org/project/pyzbar. [accessed: Jan. 06, 2022]

저자소개
박 양 재 (Yang-Jae Park)

1984년 2월 : 인하대학교 공과대학 전자공학과(공학사)

1990년 8월 : 인하대학교 정보공학과(공학석사)

2003년 8월 : 인하대학교 전자계산공학과(공학박사)

2001년 2월 ~ 2002년 12월 : ㈜이메디피아 원격의료 연구소 연구소장

1993년 2월 ~ 현재 : 가천대학교 IT 융합대학 컴퓨터공학과 교수

관심분야 : HCI, 영상처리 및 인식, 컴퓨터비젼, 모바일 네트워크