Drass - 해상 환경의 실시간 객체 검출을 위한 딥러닝 시스템 개발 사례

“데이터 주석부터 딥러닝 모델의 선택, 훈련, 테스트, 미세 조정에 이르기까지, MATLAB에는 우리에게 필요한 모든 툴이 있었습니다. 또한 GPU Coder 덕분에 GPU 관련 경험이 부족했어도 NVIDIA GPU로의 배포를 신속히 진행할 수 있었습니다.”

과제

선박 운항자가 해상 환경을 모니터링하고 객체, 장애물 및 다른 선박을 검출할 수 있도록 지원

솔루션

선상 배포 및 실시간 실행이 가능한 객체 검출 딥러닝 모델 생성

결과

  • 데이터 레이블 지정 자동화
  • 개발 시간 단축
  • 유연하고 재현 가능한 프레임워크 구축
장비로 객체 검출 테스트를 수행하면서 항구 너머를 보고 있는 두 명의 Drass 팀원.

광전자공학 시스템 프로토타입을 사용한 객체 검출 테스트 개시일.

안전한 항해를 확보하기 위해 선박 운항자는 항해 내내 객체와 장애물, 다른 선박을 추적해야 합니다. 그러나 바다에서의 객체 검출은 끊임없는 파도의 움직임에 따른 배경이 변화로 인해 까다로우며, 망망대해에는 참조 지점도 거의 없습니다.

이 문제를 해결하기 위해 해상 기술 기업 Drass는 바다에서의 실시간 객체 검출을 위한 딥러닝 모델을 개발했습니다. 팀으로서는 이번이 최초의 딥러닝 응용 사례였지만 MATLAB® 덕분에 YOLOv2 모델을 기한보다 2개월 일찍 훈련 및 검증한 후 선박에서 실행되는 C++ 응용 프로그램에 통합할 수 있었습니다.

“프로토타이핑부터 통합에 이르기까지 MATLAB의 툴 덕에 프로젝트의 모든 단계가 간편해졌습니다." Drass의 컴퓨터 비전 엔지니어인 Valerio Imbriolo의 말입니다. "7개월 만에 객체 검출 응용 프로그램을 완성할 수 있었고 10개월 만에 테스트 준비를 마쳤습니다. 남은 2개월 동안은 부가 기능을 개발했습니다.”

과제

해상 환경에 대한 사전 훈련된 객체 검출 모델이 없으므로 Drass 팀은 그들의 딥러닝 신경망을 처음부터 새로 개발하고 훈련시켜야 했습니다. 전통적인 객체 검출 시스템은 단일 시각적 입력 소스를 사용합니다. 반면에 Drass 팀의 딥러닝 모델은 일광 및 열 카메라 등 여러 소스의 입력값을 병합해야 했기에 신경망 아키텍처와 데이터 전처리 파이프라인에 추가적인 조정이 필요했습니다.

Drass는 여러 해상 표적에 대해 객체 검출 모델을 테스트하길 원했으므로 팀에서 직접 데이터셋을 생성 및 전처리하고 레이블을 지정해야 했는데, 이는 많은 노동과 시간이 드는 작업이었습니다.

팀원들은 C++로 작성된 선박에서 사용되는 주요 객체 검출 응용 프로그램에 통합할 수 있도록 모델을 개발해야 했습니다. Drass의 응용 프로그램은 매우 전문화된 특성 때문에 최적의 성능을 발휘하는 모델 구성을 찾기까지 상당한 연산 집약적 테스트와 변경이 필요했습니다.

이러한 모든 작업을 12개월 안에 완료해야 했는데, 첫 딥러닝 프로젝트임을 감안하면 촉박한 기한이었습니다.

솔루션

Drass 팀은 Deep Learning Toolbox™를 사용하여 자사 신경망의 프로토타입을 생성 및 훈련시키고 GPU Coder™를 사용하여 그들의 C++ 응용 프로그램에 통합했습니다.

팀원들은 레이블 미지정 해상 촬영 원시 영상 5,000프레임으로 구성된 데이터셋으로 작업을 시작했습니다. 그리고 Image Processing Toolbox™를 사용하여 영상을 전처리하면서 잡음과 렌즈 왜곡을 제거했습니다. Wavelet Toolbox™를 통해 일광 및 열 카메라의 데이터를 단일 데이터 소스로 병합할 수 있었습니다.

Drass 팀은 비디오 레이블 지정기 앱을 사용하여 데이터셋의 작은 일부분에 레이블을 지정했습니다. 이들은 Deep Learning Toolbox에서 YOLOv2 객체 검출 모델을 만든 후에 레이블 지정된 데이터의 서브셋으로 훈련시켰습니다. 이렇게 부분적으로 훈련된 모델은 비디오 레이블 지정기에서 데이터셋의 나머지 부분에 주석을 다는 과정을 자동화하는 데 도움이 되었습니다. 이후 팀원들은 훈련 표본의 복사본을 만들고 잡음 추가, 영상 뒤집기 또는 색 변경을 통해 수정함으로써 데이터셋을 증강했습니다.

Drass 팀은 타겟 응용 프로그램에 대한 신경망 구성 공정을 가속화하기 위해 Parallel Computing Toolbox™를 사용하여 고성능 CPU 및 GPU 클러스터에서 훈련 및 최적화 공정의 여러 인스턴스를 실행했습니다.

GPU Coder는 프로토타입 모델을 선박에 사용되는 NVIDIA® GPU를 위한 CUDA® 코드로 변환했습니다. C++로 작성된 이 코드는 변환 후에 선상 응용 프로그램과의 통합을 위해 프로그래밍 팀으로 전달되었습니다.

결과

  • 데이터 레이블 지정 자동화. “손으로 직접 레이블 지정을 했다면 프레임당 3분, 즉 전체 데이터셋에 249시간이 들었을 것입니다." Imbriolo가 말합니다. 비디오 레이블 지정기에서 자동화된 레이블 지정 공정을 사용함으로써 이 시간을 프레임당 0.3초로 줄였습니다. 5,000프레임의 레이블 지정과 검증을 42시간 만에 마칠 수 있었습니다.”
  • 개발 시간 단축. “우리는 프로젝트를 10개월 만에 마쳤고 기한까지 남은 2개월은 고객을 위한 부가 기능 구현에 썼습니다.”라고 Imbriolo는 말합니다. “MATLAB과 GPU Coder가 없었다면 모델을 처음부터 새로 개발하고 테스트하는 데 C++ 엔지니어 팀 전체가 매달려 주당 40시간씩 18개월이 걸렸을 겁니다.”
  • 유연하고 재현 가능한 프레임워크 구축. Imbriolo는 “앞으로는 MATLAB 프레임워크를 사용해서 최소한의 노력으로 모델을 수정, 업데이트, 재훈련하고 응용 프로그램에 재통합할 수 있을 겁니다. 예를 들어 YOLOv2가 아닌 YOLOv3 모델을 도입하라는 요청을 받는다면 약 3일 만에 결과물을 선보일 수 있을 것입니다.”라고 말합니다.