훈련에서 추론까지 이미지 인식을 위한 신경망 만들기
기존의 이미지 처리 소프트웨어가 작업별 알고리즘에 의존하 는데 비해, 딥 러닝 소프트웨어는 네트워크를 사용하여 사용자 훈련 알고리즘을 구현하고, 이를 통해 좋은 이미지와 나쁜 이미지 또는 영역을 인식한다. 다행히 신경망 훈련을 위한 특수 알고리즘 및 그래픽 사용자 인터페이스(GUI) 도구의 등장으로 제조업체는 보다 쉽고 빠르고 저렴하게 알고리즘을 구현할 수 있다. 지금부터 제조업체는 이러한 딥 러닝 GUI 도구로부터 무엇을 기대할 수 있으며 이 도구를 사용한다는 것이 무엇인지 살펴보겠다.

훈련: 딥 러닝 모델 만들기
‘훈련’은 심층 신경망(DNN)이 학습할 수 있는 데이터를 제공하여 이미지 분류 또는 음성을 텍스트로 변환하는등 원하는 작업을 수행하도록 ‘가르치는’ 프로세스이다. DNN은 데이터가 나타내는 것이 무엇인지 예측한다. 그런 다음 예측 오류가 네트워크에 피드백되며 인공 뉴런 간의 연결 강도를 업데이트한다. DNN이 원하는 수준의 정확도로 예측을 할 때까지 더 많은 데이터를 제공할수록 DNN은 더 많이 학습한다.
예를 들어 보자. 어떤 이미지를 세가지 카테고리(사람, 자동차, 기계 장치) 중 하나로 식별하도록 설계된 DNN을 훈련 시킨다고 생각해 보자. 일반적으로 DNN을 사용하는 데이터 과학자에게 미리 조합된 훈련 데이터 세트가 주어진다. 이 데이터 세트는 수천개의 이미지로 구성되며 각 이미지는 ‘사람’ ‘자동차’ ‘기계’ 장치로 레이블이 지정된다. 이러한 데이터 세트로는 쉽게 이용할 수있을 뿐만 아니라 900만개의 이미지와 6000만 개에 달하는 이미지 수준 레이블이 포함된 Google의 Open images가 사용될 수 있으며, 더 심화된 데이터 세트가 사용될 수도 있다.

▲ Google Open Images의 어노테이션 양식: 이미지 수준 레이블, 테두리 상자, 인스턴스 세그멘테이션 및 시각적 관계.
데이터 과학자의 애플리케이션이 기존 솔루션에 비해 너무 전문화된 경우, DNN이 학습해야 할 내용을 가장 잘 나타내는 이미지를 수집하고, 레이블을 지정해 자체 훈련 데이터 세트를 직접 구축해야 할 수도 있다.
훈련 과정이 진행되는 동안 각 이미지가 DNN에 전달되면 DNN은 이미지가 무엇을 나타내는지 예측한다. 각 오류는 다음 예측에서 정확도를 향상시키기 위해 네트워크에 피드백 된다. 여기서 신경망은 ‘자동차’를 나타내는 이미지를 ‘기어’ 라고 예측한다. 이 오류는 다시 DNN을 통해 전파되고 네트워크 내의 연결점은 오류를 수정하도록 업데이트된다. 따라서 다음에 동일한 이미지가 DNN에 제시되면 정확하게 예측할 가능성이 높아진다.

이 훈련 과정은 DNN이 원하는 정확도로 예측할 때까지 수십 수천번 반복되며 DNN에 이미지를 지속적으로 피드백하고 오류를 수정하기 위해 가중치를 업데이트한다. 이 시점에서 DNN은 ‘훈련된’ 것으로 간주되고 결과 모델은 새로운 이미지 분류를 위한 준비를 갖춘다.
신경망 크기 조정
신경망의 입력 수, 은닉층, 출력 수는 해결하려는 문제와 귀하가 보유한 신경망의 특정 설계에 크게 의존한다. 훈련 과정에서 데이터 과학자는 원하는 정확도를 달성하기 위해 DNN 모델을 지도한다. 이를 위해 뉴런과 레이어의 수에 따라 다양한 DNN 설계를 시도하면 수백 번 정도의 실험을 수행해야 할 수도 있다. 입력과 출력 사이에는 뉴런과 네트워크의 연결점이 있다.
이를 ‘은닉층’이라고 한다. 많은 딥 러닝 문제의 경우 1-5개의 뉴런 레이어만 있어도 충분한다. 왜냐하면 예측을 위해 몇 가지 기능만 평가되기 때문이다. 그러나 작업이 더 복잡하고 더많은 변수와 고려 사항이 있을수록 더 많은 레이어가 필요하다. 이미지 또는 음성 데이터로 작업하려면 각각 특정 기능을 수행하는 수십 수백개의 레이어로 구성된 신경망과 이를 연결하는 수백만 또는 수십억개의 가중치가 필요할 수도 있다.

▲ 개별 레이어가 수행할 수 있는 작업 종류를 가진 단순화된 다중 레이어 DNN 의 예시
샘플 수집 시작하기
전통적으로 시스템을 훈련하고 높은 예측 능력으로 사물을 분류하는 모델을 생성하려면 수동으로 분류한 수백 또는 수천 개의 이미지가 필요했다. 그러나 이러한 복잡한 데이터세트를 수집하고 주석을 추가하는 작업은 개발에 지장을 주며 주류 비전 시스템이 딥러닝을 채택하는 데 걸림돌이 됐다.
딥 러닝은 조명, 노이즈, 모양, 색상 및 질감과 같은 변수가 일반적인 환경에 적합하다. 딥러닝이 강점을 가지는 실질적인 예시로는 브러시드 메탈과 같은 질감 표면의 스크래치 검사를 들 수 있다. 일부 스크래치는 질감이 있는 배경과 비슷한 대비를 가지며 덜 밝다. 따라서 일반적으로 기존에 사용하던 기술을 통해 특히 모양, 밝기 및 대비가 샘플마다 다른 경우 이러한 유형의 결함을 문제없이 찾아내는 일은 어렵다. 아래 그림은 금속판의 스크래치 검사 과정을 보여준다. 결함이 있는 위치의 픽셀이 히트맵 이미지로 강조되며 결함이 명확하게 표시된다.

▲ 표면 검사를 통해 스크래치가 있는 브러시드 메탈 판이 왼쪽에 나타나고, 입력 샘플로 신경망을 훈련하는 동안 자동으로 생성된 분류 알고리즘이 출력하는 히트맵이 오른쪽에 결함이 있는 부분을 표시한다. 참고로 원본(Raw) 이미지와 히트맵이 어떻게 대응되는지 표시하기 위해 노란색 원을 추가했다.
처음부터 훈련을 통해 심층 신경망을 구축하는 데에는 일반적으로 수백 또는 수천 개의 이미지 샘플이 필요하다. 그러나 오늘날의 딥 러닝 소프트웨어는 이미 사전에 훈련된 경우가 많으므로 사용자는 수십 개의 추가 샘플만을 가지고 시스 템을 특정 애플리케이션에 적용할 수 있다.
반면에 일반적인 분류를 통해 만들어진 검사 애플리케이션은 훈련을 위해 ‘좋은’ 이미지와 ‘나쁜’ 이미지를 모두 수집해야 한다. 그러나 이상 탐지와 같은 새로운 분류 알고리즘을 사용하면 사용자는 좋은 샘플만을 이용해 훈련할 수 있으며 최종 테스트에는 몇 개의 불량 샘플만 필요하다.
이미지 샘플을 수집하는 마법 같은 방법은 없지만 훨씬더 쉬워지고 있다는 것은 분명하다. 이미지를 수집하기 위해 기술자는 ‘Sapera LT’를 사용할 수 있다. 이것은 Teledyne DALSA의 2D/3D 카메라 및 프레임 그래버용 무료 이미지 획득 및 제어 소프트웨어 개발 툴킷(SDK)이다.
‘Astrocyte’는 신경망 훈련을 위한 GUI 도구로 Sapera LT 에 연결하여 카메라를 통해 이미지를 수집할 수 있다. 예를 들어 수동 모드로 PCB의 부품 이미지를 수집하는 사용자는 손으로 PCB를 움직이고, 카메라 위치, 각도 및 거리를 조절하여 PCB 부품의 다양한 면들을 생성한다.
시각적 도구로 신경망 훈련
사용자에게 이미지가 있다면 이제 신경망을 훈련할 차례이다.
기본 하이퍼 파라미터로 훈련 프로세스를 시작하기 위해 ‘훈 련’ 버튼을 클릭하기만 하면 Astrocyte에서 훈련이 수행된다.
최종 모델에서 더 나은 정확도를 달성하기 위해 하이퍼 파라 미터를 수정할 수 있다. 사용자는 정확도를 확인하기 위해 다른 이미지 세트로 모델을 테스트하고 분류 모델에 대해 혼동 행렬(Confusion Matrix)과 같은 진단 도구를 사용할 수 있다. 혼동행렬은 각 클래스의 예측 정확도를 보여주는 N x N 테이블(여기서 N = 클래스 수)이다. 이 예시(아래 그림 참조) 에서 색상을 통해 모델의 정밀도/재현율의 성공 정도가 나타 나며 녹색은 90%를 초과하는 비율을 나타낸다.

▲ 혼동행렬에서 결과 필드를 두 번 클릭하면 Astrocyte의 이미지 탭에서 연결된 이미지를 열어 더 살펴볼 수 있다.
히트맵은 또 다른 매우 중요한 진단 도구이다. 예를 들어, 이상 탐지에 사용될 때 히트맵은 결함의 위치를 강조 표시한다.
사용자는 히트맵을 보고, 이미지에서 직접 정상인지, 이상인 지를 확인할 수 있다. 이미지가 정상임에도 불구하고 이상으로 분류된 경우, 사용자는 히트맵을 통해 더 자세한 정보를 확인할 수 있다. 신경망은 사용자가 입력으로 제공한 것을 따릅니다. 좋은 예시로 나사 검사 애플리케이션에서 히트맵이 사용되는 방식을 들 수 있다.

▲ Astrocyte는 해당 히트맵을 통해 오른쪽 상단에 동그라미로 표시된 부분에 있는 결함을 보여준다. 이를 대조적으로 나타내기 위해 온전한 이미지가 왼쪽 상단에 있다.
또한 히트맵은 모델이 이미지에서 대상으로 하는 부분이나 사물의 원하던 분석과 관련 없는 세부 정보 또는 특징에 초점을 맞추고 있는지 밝혀 낼 수 있다. Astrocyte 모듈에 따라 다양한 유형의 히트맵 생성 알고리즘을 사용할 수 있다.
추론을 위한 최적화
훈련이 허용 가능한 정확도로 완료되면 가중 신경망(기본적 으로 대규모 데이터베이스)이 된다. 이는 잘 작동하더라도 속도와 전력 소비 측면에서 최적이 아닐 수도 있다. 일부 애플리 케이션에서는 높은 지연 시간이 용인되지 않는다. 지능형 운송 시스템이나 자율주행 자동차를 생각해 보자. 자율비행 드론이나 그 밖의 배터리로 구동되는 시스템은 비행시간 요구 사항을 충족하기 위해 전력을 조금만 사용하여 작동해야 할수 있다.
DNN이 크고 복잡할수록 DNN을 훈련하고 실행하는 데 더많은 컴퓨팅, 메모리 및 에너지가 소모된다. 따라서 주어진 애플리케이션이나 장치에서 작동하지 않을 수 있다. 이러한 경우, 단순화로 인해 예측 정확도가 조금 감소하더라도 전력 및대기 시간을 줄이기 위해 훈련을 마친 후 DNN을 단순화할 필요가 있다.
이러한 종류의 최적화는 딥 러닝에서 비교적 새로운 영역 이다. 칩 및 AI 가속기를 공급하는 업체는 일반적으로 특정 아키텍처에 맞게 특별히 조정된 소프트웨어를 통해 사용자가 이러한 종류의 작업을 수행하는 데 도움이 되는 SDK를 만든 다. 이와 관련된 칩은 GPU, CPU, FPGA 및 신경 프로세서까지 광범위한 범위를 포괄한다.

생산 준비 완료: 추론으로 이동
DNN 모델이 훈련되고 최적화되면, 이제는 이전에 보지 못한 데이터에 대해 예측을 수행할 때이다. 이는 이미지가 입력으로 제공되고 DNN이 이를 분류하는 훈련 프로세스와 같다. Teledyne DALSA는 Sapera Processing과 Sherlock을 제공 하며, 이 두 소프트웨어 패키지는 일련의 이미지 처리 도구와 Astrocyte로 만든 AI 모델 실행을 위한 추론 엔진을 제공한다. 사용자는 GPU 또는 CPU를 사용하는 PC 또는 임베디드 장치 에서 추론을 구현할 수 있다. 애플리케이션의 크기, 무게 및전력(SWAP) 요구 사항에 따라 사용자는 GPU, FPGA 및 특수 신경 프로세서와 같은 임베디드 장치에서 딥 러닝 추론을 구현하기 위한 다양한 기술을 활용할 수 있다.

▲ AI 교육 및 추론을 위한 Teledyne DALSA 소프트웨어 패키지
날마다 쉬워지는 딥 러닝
신경망은 복잡하고 강력한 도구이다. 해결하고자 하는 문제에 대한 최상의 성능을 얻기 위해 하나하나 조정하고 최적화할수 있는 거의 무한한 기회가 있다. 최적화의 범위와 빠르게 등장하는 새로운 연구 및 도구는 노련한 실무자에게도 버거울수 있다. 그러나 그렇다고 해서 비전 시스템에 이러한 도구가 가지는 이점을 통합할 수 없는 것은 아니다.
GUI 도구로의 전환을 통해 비전 시스템에서 딥 러닝은 대중화되고 있다. AI 학습 및 프로그래밍 경험이라는 가혹한 요구에서 사용자를 해방시키는 소프트웨어를 통해, 제조업체는 딥 러닝을 사용하여 기존 알고리즘보다 이미지를 더 잘 분석하고 있다. 그리고 머지않아 이러한 GUI 도구가 수많은 검사관들보다 더 뛰어난 성능을 발휘하게 될 것이다.
자료제공 : Teledyne DALSA(www.teledynedalsa.com)


