Skip to content
Yehyeok Bang edited this page Sep 26, 2024 · 7 revisions

개발 중 직면했던 문제(우려)와 이를 보완하기 위한 도전

1. Go언어의 고루틴을 활용한 비동기 분석 처리

문제 : BARO 앱에서 사용자가 촬영한 영상을 AI 서버로 전송해 자세를 분석하는 과정에서, 긴 분석 시간이 소요되어 사용자 경험이 저하되었습니다. 특히 초기 프로토타입에서는 분석이 완료될 때까지 사용자가 다른 기능을 사용할 수 없어 불편을 초래했습니다

해결 방법 : Go 언어의 고루틴을 활용 해 보고서 분석을 비동기 처리로 변경했습니다. 이를 통해 분 석이 백그라운드에서 진행되는 동안, 사용자는 앱의 다른 기능을 자유롭게 사용할 수 있게 되었 습니다. 또한, 분석 완료 시 실시간 푸시 알림을 통해 사용자에게 결과를 빠르게 전달함으로써, 분석 과정 중 대기 시간을 최소화하고 사용자 경험을 크게 향상시켰습니다.

기술적 근거 : Go 언어의 고루틴은 경량 스레드로, 비동기 작업을 처리하는 데 매우 효율적입니다. 고루틴을 사용해 비동기 요청을 처리함으로써, CPU 리소스를 적게 사용하면서 동시에 다수의 작 업을 처리할 수 있었습니다. 만약, 비동기 작업 중 에러가 발생하는 경우 Go 언어의 채널을 활용하여 예외 처리를 쉽게 할 수 있습니다.

image

2. 영상 업로드 최적화

문제 : 오랜 측정으로 영상의 길이가 길어지면 파일 크기가 커져 업로드 속도가 느려지고, 저장 공간이 많이 소모되며, 특히 네트워크 대역폭에 부담을 주는 문제가 있었습니다. 이는 비용 문제와 사용자 경험 측면에서 긴 대기 시간이 발생할 수 있습니다.

해결 방법 : 영상 파일을 압축(품질 낮추기, 오디오 제거 포함)하여 업로드하는 방식을 도입했습니다. 이는 긴 측정 시간에 따른 파일 크기 증가 문제를 해결하고, 백그라운드에서 압축 작업을 처 리함으로써 사용자가 앱을 계속 사용할 수 있도록 했습니다. 또한, 최대 측정 시간을 설정해 과도하게 긴 측정을 방지하고, 과도한 리소스 사용을 최소화했습니다.

기술적 근거 : 영상 압축은 네트워크 자원을 절약하고 파일 전송 속도를 향상시키는 데 효과적입니다. 백그라운드에서 진행되는 비동기 압축 작업은 사용자가 다른 기능을 동시에 사용할 수 있 게 해, 사용자 경험을 방해하지 않습니다.

3. 가이드라인 제공

문제 : 컴퓨터는 이미지를 픽셀 단위로 이해하기 때문에 거리와 각도에 대한 판단이 어렵습니다. 따라서 다양한 환경에서 정확한 측정이 힘들 수 있습니다. 추가적으로 초기에는 영상 데이터와 서버 자원이 부족한 상황에서 정확한 측정이 어려운 경우가 많았습니다. 특히, 학생으로서 충분한 리소스를 확보할 수 없는 상황에서 이러한 한계는 기능 제공 여부가 바뀔 수 있는 문제라고 생각했습니다.

해결 방법 : 촬영 전 카메라 화면을 통해 자세 측정 가이드라인을 제공함으로써, 이미지 분석에서 사용할 기준 점을 잡을 수 있었고, 사용자가 촬영 과정에서 올바른 자세를 유지할 수 있도록 돕고, 적은 자원으로도 최적의 결과를 도출할 수 있었습니다. 이를 통해 측정 정확도를 높이고, 사용자 혼란을 줄였습니다. 또한, 다양한 환경에서 직접 촬영한 영상을 바탕으로 추가적인 데이터를 확보했습니다.

기술적 근거 : 사용자가 사전에 정확한 촬영 가이드라인을 제공받으면, 측정 오류를 줄이고 리소스 사용의 비효율성을 방지할 수 있습니다. 이는 리소스가 제한적인 상황에서 최적의 경험을 제공하는 데 중요한 역할을 했습니다.

image

4. 과도한 발열 및 배터리 소모 문제 보완

문제 : TensorFlow Lite를 사용해 실시간 자세 흐트러짐 경고 알림 기능을 제공했지만, 측정(촬영)과 함께 실행됩니다. 이는 많은 컴퓨팅 자원을 소모하기 때문에, 과도한 발열과 배터리 소모 문제에 대한 우려가 존재했습니다.

해결 방법 : 실시간 촬영 중 발열과 배터리 소모를 줄이기 위해, 기기 리소스 사용을 최적화하는 여러 방안을 도입했습니다. TensorFlow Lite 대리자를 활용하여 영상 추론 프로세스를 CPU가 아닌 GPU를 사용하도록 변경하고, 이미지 변환 과정을 병렬 처리하도록 구현했습니다. 추가적으로 해상도와 밝기 같은 품질을 낮춰 효율적으로 리소스를 사용하도록 했습니다.

기술적 근거 : Tensorflow Lite는 경량화된 머신러닝 모델을 제공하지만, 기기의 리소스를 많이 사용합니다. 이를 보완하기 위해 촬영 과정에서 불필요한 리소스 사용을 억제하고, 전력 소모를 줄여보려고 노력했습니다. 물론 컴퓨팅 자원이나 온도를 추적하며 테스트하지는 못했지만, 학교에서 배웠던 이론으로 최선을 다했다고 생각합니다.

image