딥러닝 신경망을 구축 및 배치하는 5개 단계

딥러닝을 이용하여 머신비전의 구현을 간소화하고 가속화하십시오.

소개

“백문이 불여일견”이라는 속담이 오늘날 머신비전 세상에서처럼 타당한 울림을 선사한 적은 어느 때도 없었습니다. 딥러닝을 사용하면 이미지와 약간의 코딩 작업으로 훈련한 간단한 신경망으로 수천 코드 라인, 심지어 수백만 코드 라인을 교체할 수 있습니다.

반가운 뉴스는 딥러닝이 더 이상 전문적 기술수준이 높고 예산이 많은 연구원이나 사람들만 사용할 수 있는 방법이 아니라는 사실입니다. 오늘날 많은 도구가 무료이고 자습서를 쉽게 찾을 수 있으며, 하드웨어 비용은 저렴하고 심지어 훈련 데이터도 무상으로 이용할 수 있습니다. 이런 상황은 새로운 회사가 등장하면서 확립된 이름을 허물고 혁신을 가속화할 수 있다는 점에서 기회이기도 하고 위기이기도 합니다. 또한 머신비전 시스템에게는 이전에 상상할 수 없었던 일을 수행할 수 있는 기회이기도 합니다. 예를 들어, 딥러닝을 사용하면 일반적으로 기존의 코딩 작업으로는 수행하기 아주 어려웠거나 거의 불가능했던 예기치 않은 이상을 인식할 수 있습니다.

딥러닝 신경망 배치의 주목할 만한 이점은 최소한도의 하드웨어 및 약간의 처리기능으로 엣지에서 복잡한 결정을 수행할 수 있다는 점입니다. 즉, 저가의 ARM 또는 FPGA 기반 시스템과 FLIR Firefly DL과 같은 새로운 추론 카메라로 이 작업을 수행할 수 있습니다.

이 논문에서 학습할 내용은 다음과 같습니다.

  • 딥러닝에서 사용되는 기본 용어
  • 딥러닝이 가장 적합한 머신비전 작업 유형
  • 신경망을 개발 및 배치하여 엣지 추론을 수행할 수 있는 5개 단계
  • 시작할 때 사용할 수 있는 도구 및 프레임워크
  • 프로세스를 간편하게 수행할 수 있는 요령
  • 고려해야 할 딥러닝의 단점

딥러닝의 의미: 기본원리

딥러닝은 인간 뇌의 작동 방식에서 영감을 얻은 머신러닝의 하위 세트입니다. 딥러닝을 “심층”으로 만드는 요소는 신경망이 결정을 내릴 수 있는 다양한 무게의 뉴런 ”층”이 다수 존재한다는 사실입니다. 딥러닝은 2개 단계, 즉 훈련 및 추론 단계로 세분할 수 있습니다.

훈련 단계에서는 신경망을 구성할 뉴런 및 층의 개수를 정의하고 신경망을 라벨 표시 훈련 데이터에 노출시킵니다. 이 데이터를 사용하여 신경망은 ‘좋음’ 또는 ‘나쁨’에 해당하는 것을 스스로 학습합니다. 예를 들어, 과일의 등급을 정하는 경우에 “A 등급”, “B 등급”, “C 등급” 등으로 라벨 표시한 과일 이미지를 신경망에 보여줍니다. 그러면 신경망이 크기, 형태, 색상, 색상의 일관성 등과 같은 각 등급의 특성을 이해합니다. 사용자가 이 특성을 수동으로 정의하거나 심지어 너무 크거나 너무 작은 것을 프로그래밍할 필요가 없으며, 신경망이 스스로 훈련합니다. 훈련 단계가 끝나면 훈련된 신경망이 생성됩니다.

신경망을 통해 새 이미지를 평가하여 결정을 내리는 프로세스를 추론이라고 부릅니다. 훈련된 신경망에 새 이미지를 제시하면 신경망이 추론(즉, 해답)을 예를 들어, “95%의 신뢰도로 A 등급”이라고 제공합니다.

딥러닝 응용제품을 개발하는 5개 단계

딥러닝 응용제품의 개발은 크게 5개 단계로 구성됩니다. 각 단계를 개략적으로 설명하면 다음과 같습니다.

제 1단계] 적절한 딥러닝 기능을 확인

딥러닝 세계에서 작업은 여러 기능으로 세분됩니다. 머신비전에서 가장 흔히 사용된다고 판단되는 기능은 다음과 같습니다.

분류

딥러닝의 가장 중요한 기본적 기능은 분류입니다. 이 프로세스에서는 이미지를 공통 특성에 기초하여 다양한 유형 및 그룹으로 분류합니다. 예를 들어, (FLIR Firefly DL 추론 카메라를 사용하는) 아래 그림 1에서와 같이 분류 기능을 사용하여 생산 라인의 품질 관리 또는 PCB 납땜 검사 중에 결함 부품과 양호한 부품을 구분할 수 있습니다.

flir-firefly-pcb_solder_inspection.jpg

그림 1. FLIR Firefly DL을 사용하여 결함 납땜을 확인하는 데 사용되는 분류 기능

검출 및 지역화

머신비전에 이상적인 또 다른 딥러닝 작업은 검출 및 지역화라고 부릅니다. 이 기능을 사용하면 이미지의 특징을 확인하고 바운딩 박스 좌표를 제공하여 이미지의 위치 및 크기를 결정할 수 있습니다. 예를 들어, 이 기능을 사용하여 생산 라인 상의 로봇 주변의 안전성 매개변수를 위반하는 사람을 검출하거나, 생산/조립 라인 컨베이어 시스템상의 단일 불량 부품을 확인할 수 있습니다.

분할

딥러닝의 세 번째 유형은 분할로서, 일반적으로 이미지의 어떤 픽셀이 어떤 객체에 해당하는지 확인할 때 사용됩니다. 분할은 객체의 맥락과 객체의 상호관계를 결정해야 하는 응용제품에 이상적입니다(예를 들어, 자율주행차 / 고급 운전자 보조 시스템(일반적으로 ADAS라고 부름)).

그림 2. 객체 및 그 위치를 확인하는 데 사용되는 검출, 지역화 및 분할 기능

이상 검출

이 유형의 딥러닝 작업은 패턴에 일치하지 않는 영역을 확인하는 데 사용될 수 있습니다. 이상 검출이 부가가치를 창출할 수 있는 응용 분야의 전형적인 사례는 그림 4에서와 같이 식료품점의 재고 관리입니다. 이 응용분야에서는 추론 카메라를 사용하여 비어 있거나 보충이 필요한 진열대를 검출하여 강조 표시함으로써 실시간 알림을 제공하고 효율성을 개선할 수 있습니다.

제 2단계] 프레임워크 선택

사용하고자 하는 딥러닝 기능을 결정했으면 이제 사용자의 요구사항에 가장 적합한 도구 세트(개발자들은 이를 “프레임워크”라고 부름)를 선택해야 합니다. 이 프레임워크에서는 신경망을 훈련하고 시험하기 위한 스타터 신경망 및 도구를 선택할 수 있습니다.

세계 최대의 기술 회사들이 딥러닝 시장에서 지배적인 위치를 점유하기 위해 경쟁하고 있는 상황에서 Google의 TensorFlow, Facebook의 Caffe2, Intel의 OpenVino 등(모두 무료)은 엄청난 투자 및 자원이 딥러닝 시장으로 유입되었음을 나타냅니다. 이 스펙트럼의 다른 쪽 끝에는 현재 Facebook의 일부인 오픈소스 솔루션, Pytorch도 있습니다. 이 도구들은 사용하기 쉽고 문서화 기능(예제 등)이 훌륭하여 초보 사용자도 최소의 노력으로 쉽게 신경망을 훈련 및 배치할 수 있습니다.

제공되는 모든 프레임워크를 논의하려면 별도의 논문이 필요할 것이지만 아래 포인터에서는 가장 인기 있는 프레임워크 중에서 세 개의 주요 장단점을 기술합니다.

Pytorch

  • 간단하고 쉽게 사용할 수 있습니다.
  • 많은 연구 프로젝트에서 사용합니다.
  • 대형 배치에는 흔히 사용되지 않습니다.
  • Python에만 모두 지원됩니다.

TensorFlow

  • 훌륭한 문서화 기능으로 많은 사용자층을 확보했습니다.
  • Pytorch보다 학습곡선이 높습니다.
  • 생산 배치가 확장 가능하며, 이동성 배치를 지원합니다.

Caffe2

  • 경량으로서, 효율적인 배치로 변환할 수 있습니다.
  • 가장 오래된 프레임워크 중 하나입니다(CNN 및 컴퓨터 비전용의 라이브러리를 광범위하게 지원).
  • OpenCV를 사용하는 휴대용 장치에 최적입니다.

어떤 신경망을 선택할지는 결국 바로 수행해야 하는 작업의 복잡성 및 추론을 실행해야 하는 속도에 따라 달라집니다. 예를 들어, 층 및 뉴런이 더 많은 신경망을 선택하면 추론 실행이 더 느려집니다. 일반적으로 훈련된 신경망은 계산 기능이 거의 필요 없으며 결과를 몇 밀리초 만에 제공할 수 있습니다. 이를 통해 저전력 ARM 기판의 엣지에서 복잡한 딥러닝 추론이나 FLIR Firefly DL과 같이 특수 제작된 추론 카메라의 엣지에서 추론을 수행할 수 있습니다.

또한 딥러닝 솔루션을 학습 및 구현할 수 있는 자원 및 직원이 없는 회사들도 개념화에서부터 배치에 이르기까지 전체 개발 사이클에 걸쳐서 다양한 이해관계인을 지원할 수 있는 제 3자 컨설턴트를 활용할 수 있습니다 예를 들어, Enigma Pattern이 있습니다(https://www.enigmapattern.com).

제 3단계] 신경망에 제공하는 훈련 데이터 준비

사용자는 평가하고자 하는 데이터 유형에 따라 평가에서 사용하고 싶은 것만큼 많은 특성을 갖춘 이미지 저장소가 있어야 하며, 이미지에 적절하게 라벨 표시해야 합니다. 예를 들어, 신경망이 양호한 납땜과 불량 납땜을 구분해야 하는 경우에는 해당 라벨이 표시된 수백 가지의 양호한 납땜 외관 세트 및 불량 납땜 외관 세트가 있어야 합니다.

이미지 데이터세트를 수집할 수 있는 경로는 몇 가지가 있습니다.

  • 통상적인 사용례의 경우에는 사용자의 특정 요구사항에 부합하고 사전 라벨 표시된 데이터세트를 온라인에서 구매할 수 있습니다(많은 경우에 무료로 구할 수 있음).
  • 합성 데이터를 생성하는 것도 특히 라벨 표시가 필요하지 않기 때문에 몇 가지 응용 분야에는 효율적인 옵션으로 사용할 수 있습니다. FLIR가 후원하는 Cvedia(https://www.cvedia.com)와 같은 회사에서는 시뮬레이션 기술 및 첨단 컴퓨터 비전 이론을 사용하여 고충실도 합성 훈련 세트 패키지를 구축하고 있습니다. 이 데이터세트는 알고리즘 훈련에 최적입니다.
  • 처음 두 옵션을 사용할 수 없는 경우에는 자체 이미지를 수집하여 개별적으로 라벨 표시해야 합니다. 이 프로세스는 시장에서 구할 수 있는 몇 가지 도구로 간편하게 수행할 수 있습니다(개발 일정을 단축할 수 있는 몇 가지 도구 및 기법을 아래에서 간략하게 논의합니다).

유용한 요령:

여러 개발자들이 자신의 딥러닝 코드를 구축하는 프로세스에서 자신의 솔루션을 오픈 소스로 제공하면서 흔쾌히 무상으로 공유하고 있습니다. 데이터세트가 사전 라벨 표시되어 있지 않은 경우에 특히 유용한 도구는 LabelImg으로서, 객체를 이미지 내의 바운딩 박스 내에 라벨 표시할 수 있는 그래픽 이미지 주석 도구입니다(https://github.com/tzutalin/labelImg). 또는 전체 프로세스를 제 3자에 아웃소싱할 수도 있습니다.

데이터 준비 단계를 단축할 수 있는 다른 방식은 단일 이미지 위에서 이미지 처리작업(회전, 크기 조정, 늘리기, 명암…. 등)을 수행함으로써 다양한 이미지를 생성하는 방법입니다. 이렇게 하면 초보 사용자는 훈련 데이터를 캡처하고 이미지에 라벨 표시하는 프로세스를 생략할 수 있기 때문에 개발 시간을 단축할 수 있습니다.

또한 하드웨어 제약이나 선호도가 있는 경우에 이 방식은 다음 절에서 논의하는 딥러닝 도구가 한정된 하드웨어 세트를 지원하고 호환되지 않는 경우도 종종 있어서 훨씬 중요한 요소입니다.

제 4단계] 신경망을 훈련 및 검증하여 정확도를 보장

데이터가 준비된 후에는 신경망의 정확도를 훈련, 테스트 및 검증해야 합니다. 이 단계에서는 훈련 프로세스가 사용자의 특정 사용례에 적절한 정확도 수준을 제공할 때까지 컴퓨터에서 스크립트를 구성하여 실행합니다. 평가한 테스트 데이터가 훈련 중에 사용되지 않도록 훈련 및 테스트 데이터를 별도로 관리하는 모범사례를 권장합니다.

이 프로세스는 전이학습을 사용하여 가속화할 수 있습니다. 전이학습은 이미 훈련된 신경망을 다른 작업에 재사용하는 프로세스입니다. 심층 신경망의 많은 층은 특징 추출을 수행하고 있기 때문에 새로운 객체를 분류하기 위해 재훈련할 필요가 없습니다. 따라서 전이학습 기법을 이미 훈련된 네트워크에 출발점으로 적용하고 전체 신경망을 훈련하는 대신에 몇 개의 층만 재훈련할 수 있습니다. Caffe2, TensorFlow 등의 인기 있는 프레임워크는 이 기법을 무료로 제공합니다.

또한 이미 훈련된 신경망에 검출할 새로운 특징을 추가하는 것은 결함이 있는 이미지 세트에 이미지를 추가하고 전이학습을 적용하여 네트워크를 재훈련하는 것만큼이나 쉽습니다. 이는 새로 추가된 코드가 불필요한 오류를 발생시키지 않도록 보장하면서 새 코드를 추가하고 다시 컴파일하여 실행하는 논리 기반 프로그래밍보다 훨씬 더 쉽고 빠릅니다.

자신의 신경망을 훈련할 코딩 전문지식이 없는 경우, 다양한 프레임워크로 작동하는 그래픽 사용자 인터페이스(GUI) 기반 소프트웨어가 여러 개 있습니다. 이러한 도구를 사용하면 경험이 적은 사용자라도 교육 및 배치 프로세스를 매우 직관적으로 수행할 수 있습니다. Matrox MIL은 머신비전 분야의 그러한 예 중 하나입니다.

제 5단계] 신경망 배치 및 새 데이터에 대한 추론 실행

마지막 단계에서는 선택된 하드웨어에 훈련된 신경 네트워크를 배치하여 성능을 테스트하고 현장에서 데이터를 수집합니다. 추론의 처음 몇 단계는 현장에서 사용하여 훈련 데이터로서 앞으로 반복 사용할 수 있는 추가 테스트 데이터를 수집하는 것이 이상적입니다.

다음 섹션에서는 몇 가지 관련 장단점과 함께 일반적인 배치 방법에 대해 간략하게 요약하여 설명해 드립니다.

클라우드 배치

  • 하드웨어 비용의 상당한 절감
  • 신속한 확장성
  • 여러 위치에 변경 사항을 배치 및 전파할 수 있는 능력
  • 인터넷 연결의 필요성이 주요 단점임
  • 엣지 배치보다 긴 대기시간(로컬 하드웨어와 클라우드 간의 데이터 전송 볼륨으로 인함)
  • 낮은 신뢰성(연결 문제로 인해 중대한 고장이 발생할 수 있음)

엣지(표준 PC)

  • 고성능 응용제품에 이상적
  • 주문 제작 범위가 넓음(고객 용도에 적절한 부품으로 제작)
  • 유연한 가격 범위(고객의 응용분야에 따른 부품 선택 기준)
  • 고비용
  • 일반적으로 설치 공간이 상당히 증가

엣지(ARM, FPGA & FLIR Firefly DL과 같은 추론 카메라)

  • 저전력 소비율
  • 주변 하드웨어를 상당히 절약
  • 높은 신뢰성
  • 단일 시스템에 다수의 카메라가 필요한 응용제품에 이상적(처리 요구 사항을 여러 카메라에 분산시키는 데 도움).
  • 보안 유지(하드웨어를 다른 방해로부터 분리할 수 있음)
  • 소형 크기가 필요한 응용제품에 이상적
  • 계산이 까다로운 작업에는 부적합
  • VPU 기반 솔루션은 FPGA 솔루션에 비해 성능/전력 비율이 우수
  • FPGA 솔루션은 VPU 기반 솔루션에 비해 성능이 우수

이미지: DL 추론 카메라 사례 – FLIR Firefly DL

딥러닝의 단점

개발 및 배치 프로세스의 개요를 살펴보았으니 이제 몇 가지 단점 또한 살펴보는 것이 적절할 것입니다.

  • 딥러닝의 대부분이 블랙박스이므로 신경망이 어떻게 결정을 내리는지 설명/이해하기가 실제로 매우 어렵습니다. 이런 점이 일부 응용 분야에서는 중요하지 않을 수 있지만, 의료, 보건 및 생명과학 분야의 기업은 제품이 FDA 또는 다른 지역 해당 기관의 승인을 취득하기 위해 엄격한 문서화 요건을 충족해야 합니다. 대부분의 경우에 사용자는 소프트웨어가 어떻게 기능하는지 완전히 이해하여 전체 작업을 세부적으로 문서화해야 합니다.
  • 딥러닝을 배치하면서 다루어야 할 또 다른 문제는 신경망을 예측 가능한 방식으로 최적화하기가 매우 어렵다는 점입니다. 현재 훈련하여 사용하고 있는 많은 신경망은 전이학습을 사용하여 기존의 신경망을 재훈련하고 있을 뿐, 최적화 작업을 거의 수행하고 있지 않습니다.
  • 훈련 데이터를 라벨 표시할 때 경미한 오류가 흔히 사람의 실수로 발생할 수 있는데, 이로 인해 신경망의 정확성을 떨어뜨릴 수 있습니다. 또한 잘못된 라벨을 찾기 위해 모든 훈련 데이터를 개별적으로 검토해야 할 수도 있기 때문에 문제를 디버깅하는 작업이 매우 지루합니다.

이러한 단점 외에도, 많은 응용 분야가 개념적으로 논리 기반 솔루션에 더 적합합니다. 예를 들어, 문제가 잘 정의되어 있고 결정론적이며 예측이 가능한 경우에 논리 기반 솔루션을 사용하면 딥러닝보다 양호한 결과를 얻을 수 있습니다. 대표적인 사례로는 바코드 판독, 부품 정렬, 정밀 측정 등이 있습니다.

결론

위에서 강조된 몇 가지 단점들에도 불구하고, 딥러닝의 잠재적 이익이 부정적인 측면을 훨씬 능가합니다(개발의 신속성, 복잡한 문제 해결 능력, 사용 및 배치의 용이성 등). 또한 딥러닝 분야에서 이러한 단점을 극복하기 위한 개선활동이 지속적으로 수행되고 있습니다. 예를 들어, 활성화 맵을 사용하면 신경망이 결정을 내릴 때 어떤 이미지 픽셀을 고려하고 있는지 시각적으로 확인할 수 있어서 신경망이 어떻게 그 결론에 도달했는지 쉽게 이해할 수 있습니다. 또한 딥러닝 채택의 확대와 더불어 많은 기업이 현재 전이학습에 의존하지 않고 자체 신경망을 개발하여 성능을 개선하고 특정 문제에 대한 솔루션을 맞춤 제작하고 있습니다. 논리 기반 프로그래밍에 적합한 응용분야에서도 딥러닝은 기본 논리를 도와 시스템의 전체 정확도를 향상시킬 수 있습니다. 결론적으로 사용자가 독자적인 딥러닝 시스템 개발을 시작하는 것이 이전보다 더 쉽고 저렴해지고 있습니다. 여기를 클릭하여 600달러 미만으로 DL 분류 시스템을 구축하는 방법을 알아보십시오.

항상 여러분을 기다리고 있습니다!

지금 바로 카메라 전문가에게 문의하세요.

문의