음성을 입력하고 음성기반으로 자연어처리를 수행하여 드론을 제어하는 것을 목표
특정 context에서만 동작하지 않고 한국어에 동의어가 많기에
뜻이 같은 단어라면 같은 동작을 수행하기 위해 자연어처리를 사용
드론 스펙
제품명 : DJI 텔로 미니드론(교육용)
배터리 : 3.8V, 1100mAh
비행성능 : 13분 | 시속 8m/s
카메라 : 720p (동영상) | 5MP (사진)
조종거리 : 100m, 무게 : 80g, 크기 : 9.8x9.2x4.1(cm) (가로, 세로, 높이)
짐벌 : 2축 짐벌
드론 제조사 TELLO 공식 홈페이지 : https://djitellopy.readthedocs.io/en/latest/tello/
개발자를 위하여 sdk mode로 지원하며 이를 활용
전체 Architecture
1. 음성인식(Speech To Text)
: STT 기술을 활용하여 오디오 데이터를 텍스트 데이터로 변환
2. 자연어 생성(NLP, Text to code)
: 자연어 텍스트 데이터를 드론을 제어할 수 있는 코드 시퀀스로 변환
3. 통신 및 드론제어 (Communication and Control)
: 변환된 제어 코드 시퀀스를 드론에 전송하여 해당 코드를 실행
모델 - 음성인식 모바일 어플리케이션
어플을 통해서 실시간으로 음성을 인식, 음성을 인식하여 STT 후 변환된 text를 서버로 전송
서버에서 text를 통해 code를 생성
안드로이드 스튜디오를 활용한 음성 인식 어플리케이션 구현
: 안드로이드 스튜디오에서 제공 중인 내부 google STT API를 활용하여 음성인식 어플을 구현
모델 - Text to Code 모델
Transformer 기반 Seq2Seq 모델 BART 사용
BART -> Bidirectional Auto Regressive Transformer, 위는 Facebook(현 meta) AI에서 2019년에 발표한 논문
원본 텍스트에 노이즈를 주고 (텍스트 일부를 마스킹), 디코더에서 Autoregressive하게 원본을 복원하는 task로 사전학습된 언어 모델, 인코더와 디코더가 결합한 구조로, 기계 번역, 요약 등의 Seq2Seq task에 적합
- 인코더 입력 : 한국어, 디코더 출력 : 영어
- 인코더 입력 : 원본문서, 디코더 출력 : 요약문
-> 영어로 fine-tuning된 BART를 기본 모델로 사용, https://huggingface.co/circulus/kobart-trans-ko-en-v2
왜 한국어 to 영어 번역 task로 학습된 모델을 선택했는가 ?
1. 음성으로 입력되는 명령어는 한국어
2. 드론을 제어하기 위한 code는 영어(Python)
3. 본 문제는 크게 보아 한국어를 영어 Code로 변환하는 Task
4. 단순 한국어 to 한국어로 학습된 모델보다 한국어 to 영어로 학습된 모델의 능력이 본 문제에 도움이 될 것으로 기대
5. 즉, 한국어->영어 번역으로 학습된 능력을 한국어->영어 Code Task에 전이학습(Trasfer Learning)시키기 위함
데이터셋 구축
한국어 명령어 -> 영어 Code로 모델을 학습 시키기 위해서는 자연어-code pair 데이터셋이 필요
문제점 : 사람이 수기로 데이터셋을 제작하는 데에는 너무 많은 시간과 비용 요구 -> cost가 큼
해결 : GhatGPT와 같은 거대 언어모델을 사용하여 synthetic dataset 구축!
데이터셋 생성 중간 중간 원하는 output을 얻을 수 있도록 가이드 하기 위해 Prompt로 Feedback
결과적으로 ChatGPT가 생성한 데이터셋을 모델 학습을 위해 JSONL 형식의 파일로 저장
-> 총 약 1400여 개의 자연어-code pair를 생성
모델 학습
1300개를 Train, 100개를 Valid set으로 분할하여 kobart-trans-ko-en-v2 mdoel fine-tuning 진행
총 15 epoch동안 학습을 진행하고 최저 validation_loss(Cross-Entropy Loss) check point model을 최종 선택
Text to Code 정상 작동하는 지 Test
API Server 구축
통신 Architecture
Workflow
시스템 구축 (앱)
최종 시연 Local PC
최종 시연 API Server
최종 시연 APP
최종시연 영상 : 추가가 안돼서.. 파일로 대체(20Mb까지 파일올릴수 있다고 하여 ... pass)
결론
1. 음성인식+자연어처리+API서버/안드로이드 어플리케이션+드론 통신 기술 융합
2. 음성인식은 Application에서, Text to code는 backend에서 수행하고 결과만을 API로 보내주기에
드론과 직접 통신하는 모듈의 부담을 완화 -> 실시간성 확보
3. ChatGPT를 활용하여 Synthetic dataset 만드는 것이 가능, 이는 dataset 구축을 위해 드는 cost 감소
4. Synthetic dataset만으로 준수한 성능의 text to code model 학습 가능
'Project > +α' 카테고리의 다른 글
[GoogleMap API] CCTV정보를 통해 안전지역 표시or위험지역표시 (0) | 2022.04.11 |
---|