on
딥러닝 - 농업에서 딥러닝을 통한 이미지 처리
DL (Deep Learning) - 지난 글
목차
- Introduction
- CNN and deep learning – A background
- Object (fruit) detection in images
- Deep learning object detection framework
1. Introduction
딥러닝이란?
리뷰에 앞서 딥러닝이란 무엇인지 간단하게 정의하고 넘어가겠다.
딥러닝이란 인간의 뇌의 작동방식인 신경망을 모방하여 모델링한 알고리즘으로 머신러닝의 일종으로 볼 수 있다. 입력층, 은닉층, 출력층으로 구성되어있으며, 문제와 정답을 미리 제시하고 은닉층에서 이를 해석하는 것이 큰 틀이라고 볼 수 있다.
흔히 말하는 인공지능 학습이란 인간이 계산하기 어려운 수많은 비선형 수식을 가중치 (Weight)와 편향 (Bias)을 조절하여 정답과의 오차 (Loss)를 줄여 나가는 것이라 할 수 있다.
딥러닝은 시계열 예측, 이미지 분류 및 객체 인식, 번역 등에 적용하고 있으며, 기존 머신러닝 기법에서 감당하기 어려웠던 연산량을 극복하여 더 딥 (deep)한 모델을 만들 수 있게 되었다.
이러한 딥러닝 기술은 나의 전공인 농업에도 적용을 시도중인데 오늘은 그 중 농업에서 이미지 분류 및 객체 인식에 활용되는 딥러닝 기법에 대하여 전반적인 내용을 다루는 논문인 Deep learning – Method overview and review of use for fruit detection and yield estimation 에 대하여 리뷰하는 시간을 가져보겠다.
기존의 객체 인식
인공지능에서 객체 인식이라 하면 가장 먼저 등장하는 내용은 컴퓨터 비전 (Computer Vision, CV)이다. CV는 1960년대 후반부터 연구가 시작되었다. 하지만 농업에서의 CV에 대한 연구가 시작한 것은 그리 오래 되지 않았다.
-
“머신러닝을 기반으로 한 방법은 초기 이미지 처리 기술보다 더 나은 결과를 산출하지만, 더 많은 계산 자원과 훈련을 위해 더 많은 라벨이 지정된 데이터가 필요하다.”
-
“최근 몇 년 동안 고성능 GPU를 사용할 수 있게 되었고, 자유롭게 사용할 수 있는 그래픽 라벨링 툴(ex: labelme)의 출현으로 이미지에서 객체를 라벨링하는 작업이 더 쉬워졌다.”
-
“Faster Regional Convolutional Neural Network (Faster R-CNN), Single Shot multibox Detector (SSD), You Only Look Once (YOLO) 와 같은 많은 최첨단 딥 러닝 프레임워크로 이어졌고, 여기에는 모델 학습을 위해 일반적으로 사용되는 PASCAL-VOC 데이터셋이 있다.”
우리는 여기서 딥러닝의 시작에 대해서 엿볼 수 있다. 딥러닝은 그래픽 처리장치 (Graphics Processing Unit, GPU)의 등장으로 그 발전이 가속화 될 수 있었다. 앞에서 기존 머신러닝 기법에서 감당하기 어려웠던 연상량을 극복하여 더 딥 (deep)한 모델을 만들 수 있게 되었다고 했다. 이는 수만개의 코어수로 연산을 병렬로 처리하여 많은 양의 연산을 빠르게 할 수 있는 GPU의 등장이 있었기 때문이다.
Labelme의 등장으로 쉽고 빠르게 이미지의 레이블링과 어노테이션이 가능해졌으며, 이는 라이트 유저 또한 이미지만 있다면 인공지능 학습을 할 수 있게 되었고, PASCAL-VOC, COCO 데이터셋과 같이 수십만장의 레이블링 및 어노테이션 된 훈련용 이미지 데이터 셋을 제공함으로서 최첨단 딥러닝 프레임워크의 발전이 가속화 되었다.
2. CNN and deep learning – A background
배경 (Background)
-
“컨볼루션 네트워크(convNets)를 사용한 딥 러닝은 convNets이 translational invariant patterns를 학습하여 이미지의 모든 곳에서 물체를 감지할 수 있으며 점점 더 복잡해지는 패턴의 계층 구조를 감지하여 복잡한 시각적 개념을 추출할 수 있기 때문에 이미지 처리 작업에 널리 사용된다.”
-
“딥 러닝의 혁명은 AlexNet이 2012 ImageNet Large Scale Visual Recognition Challenge에서 전통적인 지원 벡터 머신 분류기(SVM)를 큰 차이로 우승했을 때 시작되었다. 1995 이후 몇 년 동안 우승한 출품작은 모두 딥 러닝을 사용하였다. 그러나, 훈련과 테스트 오류는 깊이에 따라 증가하여 더 깊은 모델을 훈련하기 어렵게 만들었지만(ex: ‘vanishing gradient’), 이 문제는 skip connection과 residual networks를 사용하여 해결하였다.”
VGGNet
VGGNet은 작은 필터 크기와 더 많은 convolution layer(16-19 layers)를 사용하여 엄청난 메모리 요구량으로 인해 너무 많은 연산량을 요구했다. 더 많은 레이어(더 깊은 모델)의 사용은 정확성을 위해 연산 속도를 희생해야했다.
GoogleNet
GoogLeNet은 inceptio modules를 도입했고 더 깊었지만 (22 layers), 계산적으로 효율적이었다. A basic inception module은 같은 layer에서 작동하는 여러 크기의 필터로 구성됨.
ResNet
ResNet은 더 깊은 (최대 152 layers) 네트워크에 대한 효율적인 학습을 위해 residual learning 프레임워크를 사용했다. ResNet은 더 깊은 네트워크에서 정보가 손실되지 않고 (vanishing gradient 없이) 흐를 수 있도록 ‘identity shortcut connection’을 특징으로 하는 residual blocks을 사용했다.
R-CNN Family
-
R-CNN은 2012년에 출시된 object detection을 위해 heuristic region proposal - selective search와 Convolutional Network (ConvNet) 을 결합한 모델이다.
-
Fast R-CNN(Girshick, 2015)에서 SPP 레이어는 fixed size region of interest pooling (ROIPooling) layer로 대체되어 R-CNN보다 속도를 높일 수 있었다.
-
Faster R-CNN은 Fast R-CNN의 selective search(heuristic region proposal)을 region proposal net- work (RPN)으로 대체했으며 end-to-end 훈련이 가능했다.
Mask R-CNN
2017년에 세분화(bounding box 내부의 각 물체에 대한 정확한 픽셀의 위치와 마스크)를 위해 Faster R-CNN의 확장으로 Mask-RCNN을 도입했다.
YOLO
-
이전의 물체 감지 프레임워크는 2-stage method (region proposal stage 와 classification stage)이었지만, YOLO는 one stage (single shot) 통합 물체 감지 모델로 개발되었다.
-
YOLO에서, 단일 CNN은 여러 bounding box와 클래스 확률을 동시에 예측할 수 있다. ‘Single Shot Detector’ SSD는 멀티스케일 학습을 위해 네트워크 내부의 다양한 수준의 피처 맵에서 앵커박스를 적용하여 객체를 매우 빠르고 정확하게 탐지하는 프레임워크이다.
3. Object (fruit) detection in images
과거 컴퓨터 비전의 객체 인식의 한계
-
기존의 컴퓨터 비전은 색상, 모양, 질감을 주로 사용하였다. 과일의 색상은 다를 수 있으므로, 보다 많은 색상을 염두해야 하며, 모양과 질감과 같은 추가 기능을 사용해야 한다.
-
조명, 색상, 각도 등으로 인하여 줄기에 비치는 그림자를 과일로 인식하거나, 여러개가 겹쳐있는 부분을 하나의 과일로 인식하는 문제가 발생했다.
과거 컴퓨터 비전의 객체 인식 방법
-
원이나 타원형 모양의 과일을 분류하기 위해 Circular Hough Transform (CHT)나 Random Hough Transform (RHT) 와 같은 기법 사용
-
SIFT, Haar Cascade, HOG, LBP 등의 영상 인식 알고리즘을 사용
딥러닝을 이용한 객체 인식
딥러닝을 사용하면 feature 선택 및 classification 작업을 자동으로 수행하며, 많은 개체 클래스를 감지할 수 있다. 하지만 전통적인 컴퓨터 비전을 사용하면 이는 어려울 것이다.
딥러닝 모델의 객체 인식 과정
-
이미지 전처리 (이미지 크기 조정, 이미지 데이터 정규화 등)
-
가설 생성 (ex: 각 위치에서 테스트 패치, 패치 또는 주요 지점에서 투표, 검색 알고리즘을 사용하여 지역 기반 제안과 같은 객체를 포함하는 가능한 영역을 생성)
-
점수 가설 (객체에 대한 확률/신뢰 수준 할당 • 분류기를 사용하여 특정 클래스/카테고리에 속하도록)
-
결과 (ex: 클래스 신뢰 임계값(threshold)을 사용하여 낮은 채점 가설을 제거하고, 객체당 하나의 상자를 할당하여 여러 중복 감지를 억제”
CNN 모델의 구성
-
CNN은 입력 및 출력 계층 그리고 컨볼루션 및 풀링(샘플링) 레이어가 있는 중간 계층으로 구성된다.
-
입력 계층에 공급되는 이미지 데이터는 중간 계층을 통과하여 출력 계층에서 뚜렷한 특징의 벡터를 생성한다.
CNN 모델의 구성
-
CNN은 컨볼루션 레이어에서 다른 객체 클래스에 대한 정보(feature)를 추출한다.
-
각 레이어 마다 이미지 데이터를 풀링(샘플링)하기 때문에 일반적으로 모양과 패턴과 같은 더 복잡하고 의미론적 특징은 더 깊은 층에서 학습되는 반면 색상, 가장자리 및 선과 같은 기본 특징은 초기 층에서 학습된다.
CNN Layer
CNN 모델의 구성
-
최종 컨볼루션 레이어의 클래스 활성화 맵은 Gradient-weighted Class Activation Mapping과 같은 방법을 사용하여 이미지에서 과일 영역의 가중치를 시각화할 수 있다.
-
CNN은 사전 학습된 Box Regression을 사용하여 분류한다. 예를 들어, AlexNet은 RCNN에서, VGG-16은 Fast R-CNN, Faster R-CNN 및 SSD에서, Darknet-19는 YOLO v2에서, Darknet-53은 YOLO v3에서 사용된다.
4. Deep learning object detection framework
Sliding Window
-
분류기가 이미지 위에 균등하게 간격을 둔 위치에서 실행되는 접근 방식으로 sliding window의 각 위치에서 많은 수의 패치(커널)가 생성되며, 다중 스케일 탐지를 위해, 패치는 여러 스케일(크기)로 생성된다.
-
한계: 느림
heuristic Selective Search algorithm
-
R-CNN은 슬라이딩 윈도우 방법을 상대적으로 빠른 휴리스틱 선택적 검색 알고리즘으로 대체하여 일부 지역을 필터링하여 잠재적인 지역 제안만 CNN에 공급했다.
-
한계: “CNN은 SVM 분류기에 지역 제안(region proposals) 기능을 제공하였으나, CNN을 통해 이미지당 거의 2000개의 region proposals을 공급하는 것은 느렸다.
Two stage detection
-
객체 검출 시간을 줄이려면 어떻게 해야 하나?
-
최종 피처 맵(합성곱 행렬)을 생성하기 위해 한 번에 전체 이미지를 CNN 모델에 공급하는 것이 바람직하다. Two stage detection 방식(지역 제안 단계와 분류 및 검출 단계)을 통해 Fast R-CNN과 Faster R- CNN에서 객체 검출 시간을 줄일 수 있었다.
-
Fast R-CNN은 R-CNN의 탐지 속도를 향상시키기 위해 개발되었다.
-
feature 추출은 전체 이미지에서 수행되었고, 지역 제안(region proposals)은 최종 feature 맵에서 생성되었다.
-
관심 지역(RoI) 풀링은 분류를 위해 잘린 모든 피처 맵에서 일정한 스케일(크기)의 feature 벡터를 얻기 위해 구현되었다.
-
단일 Softmax 레이어를 사용하여 탐지 속도가 증가했지만, 지역 제안 생성은 추가 속도 개선을 위한 병목 현상으로 남아 있다.
-
Faster R-CNN은 Fast R-CNN의 휴리스틱 선택적 검색 방법을 속도 개선을 위해 CNN과 앵커 박스를 사용하는 지역 제안 네트워크(RPN)로 대체했다.
-
RPN은 최종 피처 맵에 3 × 3 커널을 배치하고, 각 위치에서 9개의 다른 앵커 박스(3개의 스케일과 3개의 종횡비로 구성)를 고려하여 지역 제안을 생성한다.
-
이러한 제안된 영역은 객체성 점수(제안된 영역이 객체를 포함할 확률)를 기반으로 필터링되고 객체 감지를 위해 다음 단계(Faster R-CNN)로 전달된다.
-
그러나 Fast R-CNN에 보다 Faster R-CNN에서 탐지 속도가 향상되었음에도, 파이프라인은 여전히 실시간 비디오 스트리밍에 적용하기에는 너무 느렸다.
One stage detection
-
Single Shot MultiBox Detector(SSD)는 이미지의 객체 클래스와 바운딩 박스를 동시에 예측하여 더 Faster R-CNN보다 빠르다.
-
SSD는 일련의 컨볼루션 및 풀링 레이어를 통해 입력 이미지를 공급하여 다양한 스케일로 피처 맵을 생성한다.
-
feature 맵의 각 위치에 있는 3 × 3 커널은 SSD가 다른 스케일에 대한 클래스 확률과 바운딩 박스를 예측하는 앵커 박스(기능 맵의 다른 해상도에서 다른 종횡비의 상자 세트)를 평가한다.
-
각 스케일(크기)마다 여러개의 객체가 있을 수 있다. 멀티스케일 감지 접근 방식으로 SSD는 이미지에서 다양한 크기의 물체를 감지하는 데 매우 효과적이다.
-
YOLO 시리즈에 적용하였으며, 객체 검출 속도가 빠르기 때문에 실시간 영상에도 적용이 가능하다. 현재 YOLO는 버전 7 까지 나온 상태이다.