대표적인 AI 기술 중 하나인 딥러닝은 자율주행, 음성 인식, 결함 검출 등에 활용된다. 그러나 복잡한 시스템에서 딥러닝을 사용하는 경우 딥러닝은 하나의 구성요소다.  자율주행 차량을 예로 들어보자. 임베디드 소프트웨어에는 차선 감지 같은 딥러닝 모델 외에도 적응 순항 제어, 차선 유지 보조, 센서 융합 등 다양한 구성요소가 있다. 이러한 구성 요소를 통합, 구현, 테스트하기 위해 실제 차량 사용하면 많은 비용이 든다. 

매스웍스코리아 김영우 전무.
매스웍스코리아 김영우 전무.

여기서 주목해야 하는 것이 시뮬링크를 활용한 모델기반 설계이다. 비용 최소화를 위한 가상 테스트에서 효율성을 높일 수 있는 키(Key)가 되기 때문이다.

시뮬링크에서의 딥러닝

시뮬링크(Simulink)와 매트랩(MATLAB)은 자율주행 알고리즘 실무에서 많이 쓰인다복잡한 시스템 시뮬링크(Simulink) 모델을 만드는 경우, 일반적으로 두개 주요 구성요소가 필요하다. 첫 번째 구성요소는 임베디드 시스템에 구현되는 알고리즘이다. 이는 제어, 컴퓨터 비전, 센서 융합 등을 포함한다. 두 번째 구성요소는 임베디드 소프트웨어를 개발하고자 하는 기계 또는 공정의 동역학이다. 이 구성요소는 차량 동역학 모델, 리튬 이온 배터리 동역학 또는 유압 밸브 모델이 될 수 있다.

시뮬링크로의 딥러닝 모델 통합
시뮬링크로의 딥러닝 모델 통합

시뮬링크 모델에 이 두 가지 구성요소가 모두 있다면, 타겟 하드웨어에 임베디드 알고리즘을 구현하기 전 시뮬레이션이 가능하다. 훈련된 딥러닝을 통해 사전 검증이 가능하다는 뜻이다. 알고리즘 개발에 딥러닝을 사용하는 예로는 객체 검출 및 소프트 센싱∙가상 센싱에 딥러닝을 사용하는 경우가 있다. 

딥러닝은 환경 모델링에서도 사용할 수 있다. 이를 차수 축소 모델링이라고도 부른다. 기계 또는 공정 고충실도에 대한 상세한 모델은 원래 모델의 동역학적인 특징을 대표하는 더 빠른 AI기반 훈련 모델로 대체가 가능하다.

딥러닝 워크플로우의 4가지 단계

시뮬링크에서 딥러닝 워크플로우 네 가지 단계를 심층적으로 체크해보고, 각 단계에서 딥러닝이 어떻게 중요한 역할을 하는지 살펴보려 한다. 배터리 SOC(충전상태)를 추정하는 데 활용하는 딥러닝 배터리 관리 시스템을 예로 들어보겠다.

배터리 충전상태(SOC)는 배터리 관리 시스템에서 중요한 신호다. 그렇지만 동작 중에는 직접 측정이 불가능하다. 그러나 실험실에서 충분한 데이터를 수집한다면, 일반적으로 사용할 수 있는 측정 방법으로 SOC를 예측하도록 딥러닝 모델을 훈련할 수 있다.

먼저, 딥러닝 신경망에 필요한 데이터 예측 변수 또는 관측 값을 살펴보자. 이러한 예측 변수에는 전압, 전류, 온도의 측정값과 전압 및 전류의 이동 평균 값이 있다. 이 데이터를 통해 딥러닝 모델은 5개 입력을 받고 배터리 충전상태(SOC)를 예측된 출력으로 제공한다.

딥러닝 신경망 훈련용 데이터(위), 딥러닝 신경망 입력 및 출력(아래).
딥러닝 신경망 훈련용 데이터(위), 딥러닝 신경망 입력 및 출력(아래).

데이터가 전처리된 후에는 딥러닝 툴박스(Deep Learning Toolbox)를 사용해 딥러닝 모델을 훈련할 수 있다. 이미 텐서플로(TensorFlow) 또는 다른 딥러닝 프레임워크에서 개발된 AI 모델이 있는 경우도 있다. 딥러닝 툴박스(Deep Learning Toolbox)를 사용하면 시스템 수준 시뮬레이션 및 코드 생성을 위해 이러한 모델을 매트랩(MATLAB)으로 가져올 수 있다. 이 예에서는 텐서플로(TensorFlow)에서 훈련된 기존 딥러닝 모델을 사용한다.

1단계는 데이터 준비다. 데이터 준비 단계에서는 실험실에서 수집해 전처리한 실험 데이터를 활용한다. 이 데이터에는 그림2에 표시된 모든 예측 변수와 응답 변수가 포함된다.

2단계는 AI 모델링이다. 딥러닝 모델은 딥러닝 툴박스(Deep Learning Toolbox)를 활용해 매트랩(MATLAB)에서 훈련할 수 있다. 이번 예시에서는 텐서플로(TensorFlow)에서 훈련된 기존 딥러닝 모델로 이해를 도우려 한다. 훈련된 신경망을 매트랩(MATLAB)으로 가져오기 위해 텐서플로 네트워크 불러오기(importTensorFlowNetwork) 함수를 사용한다.

MATLAB에서 테스트 데이터를 불러온 다음 가져온 신경망 성능을 확인하는 과정을 거치면 예측된 SOC와 실험으로 관측된 값과 거의 큰 차이가 없이 동일선상에 있는 것을 확인할 수 있다.

실제 관찰된 SOC값과 딥러닝 SOC 예측 값 비교.
실제 관찰된 SOC값과 딥러닝 SOC 예측 값 비교.

3단계는 시뮬레이션 및 테스트다.

배터리 관리 시스템의 다른 구성요소와 함께 해당 딥러닝 배터리 충전상태(SOC) 추정기를 시뮬레이션하고 테스트하려면, 이 구성요소를 시뮬링크(Simulink)로 가져와야 한다. 이를 위해 딥러닝 툴박스(Deep Learning Toolbox) 블록 라이브러리의 훈련된 딥러닝 신경망을 이용한 반응 예측(Predict) 블록을 활용, 딥러닝 모델을 시뮬링크(Simulink) 모델에 추가한다. 

딥러닝 신경망을 이용한 반응 예측(Predict) 블록은 훈련된 딥러닝 모델을 ‘.MAT’ 파일에서 시뮬링크(Simulink)로 불러온다. 이제 시뮬링크(Simulink)에서 배터리 SOC를 추정하기 위해 훈련된 딥러닝 모델을 통합하여 전체 시스템을 시뮬레이션 할 수 있다.

배터리 관리 시스템 및 배터리 플랜트를 나타내는 시스템 수준의 시뮬링크(Simulink) 모델.
배터리 관리 시스템 및 배터리 플랜트를 나타내는 시스템 수준의 시뮬링크(Simulink) 모델.

시뮬링크(Simulink) 모델을 보면, 배터리 상태를 모니터링하고 안전하게 동작하도록 하는 배터리 관리 시스템과 배터리 및 부하 동역학을 모델링하는 배터리 플랜트가 있다. 딥러닝 배터리 충전상태(SOC) 예측 변수는 셀 밸런싱 논리와 과충전 및 과방전 방지 논리, 다른 구성요소와 함께 배터리 관리 시스템 아래 하나의 구성요소로 존재한다.

이제 폐루프 시스템을 시뮬레이션하고 배터리 충전상태(SOC) 예측값을 관찰한다.

딥러닝 신경망 SOC 예측값과 실제 값을 비교하는 시스템 수준 시뮬레이션 결과
딥러닝 신경망 SOC 예측값과 실제 값을 비교하는 시스템 수준 시뮬레이션 결과

딥러닝 모델 배터리 충전상태(SOC) 예측값이 실제 측정값에서 예측한 값과 매우 유사한 것을 볼 수 있다.

4단계는 배포다. 이번 예시에서는 딥러닝 신경망 배포 기능을 강조하기 위해 딥러닝 배터리 충전상태(SOC) 예측 변수만 포함된 개루프 모델을 사용한다. 그러나 워크플로우 단계는 시스템 수준 모델에서도 동일하다. 먼저 시뮬링크(Simulink)의 훈련된 딥러닝 모델에서 C코드를 생성한다.

NXP 보드에서 실행되는 딥러닝 SOC 구성요소의 Processor-in-the-loop 시뮬레이션.
NXP 보드에서 실행되는 딥러닝 SOC 구성요소의 Processor-in-the-loop 시뮬레이션.

생성된 코드에는 배터리 충전상태(SOC) 예측을 수행하는 딥러닝 함수에 대한 호출이 포함된 것을 확인할 수 있다.

PIL(Proccessor-in-the-Loop) 시뮬레이션을 위해 생성된 코드를 NXP 보드에 배포하게 되면, PIL시뮬레이션에서는 개발 중인 알고리즘에 대해서만 생산 코드를 생성한다. 타겟 하드웨어 보드 NXP S32K3에서 생성된 코드를 실행하면 임베디드 타겟에서 코드 동작을 확인 가능하다. 아울러, NXP 타겟에서 생성된 코드 동작이 실제 측정된 SOC 값과 일치하는 것 또한 볼 수 있다.

다소 복잡하고도 긴 설명이었다. 명확하게 알 수 있었던 사실은 시뮬링크(Simulink) 환경에서 딥러닝을 통해 효율적인 인공지능(AI) 시뮬레이션이 도출됐다는 것이다. 실험실에서 비용을 최소화하면서 성공적인 결과를 이끌어 낸 셈이다. 혁신에 수많은 비용이 들 것이라는 시각도 이제 옛말이다. 기술의 발전이 효율성의 극대화까지 만들어내고 있는 것이 시뮬링크(Simulink)와 매트랩(MATLAB)의 힘이다. 이를 기반으로 인공지능(AI) 프로젝트를 진행한다면 최소 비용으로 최대 효과를 거두게 될 것이다.
 

키워드

#매스웍스
저작권자 © 디지털투데이 (DigitalToday) 무단전재 및 재배포 금지