인재 DB 등록 시 유의사항

CLOSE

채용공고 지원 시 유의사항

CLOSE
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
작성자 차단하기 (이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

서비스 로봇용 신규 Vision AI 응용 기술 개발 - 연구 결과(3)

shinkansan 21.11.18
1426 4 0

안녕하세요 SKT AI Fellowship 3기 1번 과제 서비스 로봇용 신규 Vision AI 응용 기술 개발을 연구하고 있는 신서유기입니다. 어느덧 연구를 시작한지 5개월이 지났고, 연구 내용들에 대해 전달해드리려고 합니다.

 


​​​​​​먼저 저희는 저희가 개발한 로봇 AI 비전 애플리케이션 과제에 제목과 맞게, 로봇에 탑재되는 PC에 딥러닝 기반의 여러 기능등을 탑재하여 Coex에서 열린 SKT 부스에 한 칸에 전시했는데요!

 

그리고 이 연구를 마지막으로 저희의 활동은 종료됩니다! 

물론 저희가 만든 개발 산출물에 대한 문서화나.. 노력의 잔흔 (e.g. 코멘트, 이상한 코드들)들을 제거하는 작업들은 계속하고 있습니다.  ㅎㅎ

 

1. 연구의 제약 조건

저희의 최종 목표는 Non-GPU PC에서 딥러닝 기반 Vision 애플리케이션 서비스를 개발하고 방역로봇 키미에 탑재하는 것인데요. 아무래도 로봇에 탑재할 용도로 만들어지는 서비스인만큼 고려해야할 여러 상황들과 제약 조건이 존재할 수 밖에 없습니다. N대에 로봇에 비싼 PC를 탑재할 수는 없기 때문에 성능이 안좋은 PC를 사용하는데요.

특히, GPU는 비용이 비싸고 전력도 많이 사용하여 로봇에는 적합하지 않은 부품인데요. GPU 없이 높은 연산 요구량을 지닌 딥러닝 모델을 이용한 실시간 application을 만들기가 쉽지 않습니다. 그래서 딥러닝 런타임 가속화/최적화를 위해 인텔이 제공하는 런타임 프레임워크인 OpenVino 사용을 고려했고, IR 형식으로 모델을 변환하여 사용하였습니다. 모델 자체의 경량화나 Task에 특화된 모델을 개발하여 이를 위한 모델 구조 및 파이프라인의 최적화 기법을 다수 적용하여 inference time 성능에 평균적으로 40% 향상을 경험할 수 있었습니다.

그리고 저희는 Smart Factory 사업협력팀에서 운용중인 사이니지와 Keemi 방역로봇 탑재를 염두에 두고 Intel 기반의 저전력 CPU (i3) 베이스로 추론을 하였는데요.

 

2. Human interaction 위한 솔루션

1) AR 얼굴 합성 기능

큰 사이니지에 얼굴 그대로의 모습이 나오는 걸 꺼려하는 분들이 많고, 요즘 초상권 침해에 대한 문제도 있는데요. 이런 문제들에 대응하며 사람과 interaction 할 수 있는 기능으로써 AR 얼굴 합성 기능을 개발하게 되었습니다.

얼굴의 landmarks를 찾아내고 geometric calculation을 통해 얼굴에 맞게 합성을 할 수 있습니다. Landmarks를 찾기 위해서는 face detection이 선행되는 2stage method를 이용했습니다. 얼굴의 여러 특징을 함께 해결하고자 하는 멀티 태스크 방법론, 얼굴의 큰 움직임에 신경을 쓰는 attention mechanism 등 여러 선행 연구들이 있는데요. Non-GPU PC에서 실시간 적용을 위한 간단하면서 정확한 성능을 내는 모델이 필요했습니다.

 

Face feature extractor가 64*64 feature map으로부터 눈과 입 영역의 24*24 feature를 추출함으로써 눈과 입의 움직임에 더욱 집중하는 방식으로 attention mechanism을 적용했습니다. 이 모델을 사용하여 geometric calculation까지 한 결과 i3 NUC 에서 23% CPU 점유율과 약 11fps의 run time을 보여주었습니다.

 

2) Hand Palm과 Skeleton 인식을 통한 HMI 기능 도입

일단 얼굴을 이용한 기능 수행과 별개로 로봇과 사람 간의 인터랙션을 위한 기능들도 구성하였습니다. 손바닥과 손 관절의 인식 모델을 작성하고 – Gesture 인식을 통한 인터랙션을 구현하였습니다. SSD 기반의 디텍터로 ResNet + MobileNet의 백본으로 구성하여 개발하였습니다.

 

Palm의 경우 플랫폼과 다소 먼 거리에서도 인식할 수 있도록 Scale-aware context Encoder-Decoder 타입의 네트워크로 구성되어 먼 거리에서도 인식 성능을 보장하였습니다.

그래서 그런지 먼 거리에서 파악하는 사람들의 손 인사에도 정확하게 파악하는 모델이 완성되었습니다.

 

 

3. 다중 모델 처리 파이프라인

Pedestrian detection, Face detection, face landmark detection, palm detection, hand landmark detection 등 여러 개의 모델을 동시에 사용하여 서비스를 제공하기 때문에 다중 모델 처리 파이프라인 개발은 필수였습니다. 메모리 관리와 정밀도 조정, 요구도에 따른 로드 조정 등을 통해 다중 모델 처리를 할 수 있도록 개발했고, NUC i3에서 Troughput과 stability 2가지 메트릭으로 파이프라인 성능을 검증했습니다.

 

 

4. 실제 성능 평가

저희는 방역 로봇 키미에 탑재하는 것을 목표로 하고 있기 때문에, 개발 플랫폼 검증 및 문제점 확인을 위하여 AIOT 국제전시회에 SKT 부스로 로봇향 비전 AI 기술 시연 키오스크를 선보이고 왔습니다.

실제로 선보이려고하니 여러 우여곡절이 있었습니다. 저희가 구상한 platform에서 여러 프로그램들을 한꺼번에 돌리다보니 deadlock이 발생하는 이슈가 있었는데요. IPC 통신을 통해 deadlock을 해결하고 로봇 탑재용으로 적절한 성능을 보여주었습니다.

다양한 모델과 서로 복잡한 라이브러리를 병행 사용하면 메모리 Leak나 CPU의 발열로 인한 성능 감소 이슈들이 발생할 수 있고 이는 곧 전체 시스템의 안정성에 영향을 줄 수 있는데요 처음에 아래 사진의 (혼돈편)은 3시간 정도 지나면 프로그램이 감당할 수 없는 지연 현상과 Windows 자체가 먹통이 되는 그러한 문제가 생겼습니다. 우리가 혼돈이라서 혼돈편 다행히 하루만에 전체 프로그램 구조를 싹 갈아끼고 희망편의 형태로 데모 SW 구조를 개발하여, 안정적인 운영이 가능했습니다. 복잡한 디펜던시를 사용할땐, OS의 스케줄링 기능에 기대보는 것도..? ㅎㅎ

 

약간의 모험이었지만, 상용화를 염두에 두고 개발한 노력들 덕분에 개발 PC 이외의 다른 PC에서 안정적인 구동을 하는 것을 확인하였고, wild한 환경에서도 성능 감소와 같은 이슈가 없었습니다.

 

 

5. 마무리

AI Fellowship을 통하여 lab level에서 벗어나 industrial level에서의 장치나 요구사항들과 다양한 제약조건 속에서도 잘 작동하는 플랫폼을 개발하는 방식들을 배우게 되었어요. 멘토님들 덕분에 SKT 이름으로 저희가 직접 개발한 AI Vision 솔루션이 선보여지는 귀중한 경험을 했습니다. 많은 시간을 할애한만큼 많은 배움과 좋은 결과를 가지고 갈 수 있어서 좋았습니다. 이상으로 신서유기 신관준, 서은빈이었습니다. 감사합니다.

shinkansan 님의 최신 블로그

더보기

관련 블로그