728x90
반응형

 

 

모바일 분야(안드로이드, IOS 등)에서의 개발은 많은 코더들이 존재한다. 또한 딥러닝 연구자, 개발자들도 많이 존재한다. 하지만 이 두 분야를 모두 다룰 수 있는 전문가는 많지 않다. 특히 딥러닝을 활용한 서비스들은 모바일에서 수요가 꾸준하게 증가하고 있기 때문에 딥러닝 모델들을 모바일에 이식하여 배포할 수 있는 기술이 매우 중요해진 실정이다.

 

나같은 필자 또한 모바일에 딥러닝 모델을 배포하고 서비스하는 것에 관심이 많고, 앞으로도 중요한 핵심 기술이 될 것 같기 때문에 개인적으로 TensorFlow Lite를 공부하고 있었다. 하지만 나는 모바일 프로그래밍이라고는 대학교 2학년 때 안드로이드 어플을 간단히 만들어 본 적 밖에 없고, 딥러닝 모델을 개발한 적은 있어도 모바일 기기에 배포한 적은 없었기 때문에 어디서부터 손을 대야 할지 모르겠는 상황이였다.

 

때 마침 한빛미디어에서 "텐서플로 라이트를 활용한 안드로이드 딥러닝"이라는 책이 발간되었다. 이 책은 삼성전자에서 9년동안 안드로이드 기반 서비스를 개발했고, 현재 쿠팡에서 플러터를 이용하여 모바일 앱을 개발하고 있는 임태규 저자가 집필하였다. 

 

이 책은 안드로이드 앱에서 딥러닝 모델을 활용하는 방법을 다루고 있는데, 이 책을 읽으려면 자바와 파이썬 언어에 대한 기본적인 지식이 필요하다고 한다. 앱 개발 경험이 있는 안드로이드 개발자라면 이 책을 통해 스스로 만든 앱에 딥러닝 모델을 배포하여 활용하는 방법을 익힐 수 있다고 한다. 또한 딥러닝 모델 개발 경험이 있는 AI 엔지니어라면 직접 개발한 모델을 안드로이드 환경에서 서비스 하는 방법을 배울 수 있다고 한다. 

 

 

이 책의 목차는 아래와 같이 구성되어있다. 

 

1장, 개요 및 개발 환경 구축

2-3장, 안드로이드 앱 개발

4장, 딥러닝 모델 개발

5-7장, 딥러닝 모델을 이용한 안드로이드 앱 개발 

8-9장, 성능 향상 및 최적화 

 

일단 안드로이드와 텐서플로 라이트를 이용하여 앱을 개발하는 전체 프로세스는 다음과 같다. 

 

딥러닝 모델 개발 프로세스 에서는 파이썬과 텐서플로를 이용하여 모델을 설계하고 학습을 하게된다. 모델이 개발되면 모바일에서 사용 가능 하도록 텐서플로 라이트 모델로 변환하여 저장한다. 딥러닝 모델 개발 단계의 최종 산출물은 텐서플로 라이트 모델을 파일로 저장한 tflite 파일이 된다. 이 파일이 생성되면 안드로이드 앱 개발 환경에서 안드로이드 앱의 UI와 비즈니스 로직을 개발한다. UI 개발 단계에서는 사용자에게 보여줄 화면을 개발하고 화면에서 발생하는 이벤트를 비즈니스 로직과 연결한다. 비즈니스 로직 개발 단계에서는 UI로부터 전달 받은 이벤트를 처리하고, 딥러닝 모델을 불러와 데이터 입력 및 추론 결과 처리 로직을 구현한다. 앱 개발 단계의 최종 산출물은 안드로이드 기기에 직접 설치되는 앱의 설치 파일인 apk 파일이 된다. 이렇게 개발된 앱은 사용자로부터 데이터를 입력 받아 딥러닝 모델로 추론하여 결과를 활용하는 서비스를 제공한다. 

 

필자는 딥러닝 모델을 개발 한 다음 모바일 개발자에게 딥러닝 모델을 제공하기 위해 신경써야 할 것들이 무엇이 있는지 알아야하기 때문에 이 관점에서 책을 보았다. 그래서 1장에서부터 3장 까지는 가볍게 읽었고, 4장 부터 집중적으로 보았다.

 

이 책을 통해서 딥러닝 모델 개발러가 모바일 개발러에게 제공해야 할 것은 아래와 같다. 

 

1. 좋은 성능을 가진 딥러닝 모델 개발 (모델을 이미 개발했다고 가정)

2. 텐서플로 라이트 모델로 변환하여 배포 (+ 모델 입력을 위한 이미지 전처리 과정 알려주기)

3. 모델이 안드로이드 기기에서 최적의 성능을 발휘하도록 튜닝

 

필자가 생각하기에 모든 과정이 중요하지만, 여기서 가장 중요한 것은 이미지 전처리하는 방식 아닐까 싶다. 학습 과정에서 사용한 이미지 전처리 방식을 안드로이드에서 테스트 할 때도 동일한 전처리 방식으로 적용해주어야 똑같은 추론 결과를 얻기 때문이다. 텐서플로 라이트 모델로 변환하기 전의 딥러닝 모델의 결과와 변환 후의 모델 결과를 비교하는 과정이 반드시 필요할 것 같다. 또한 텐서플로 라이트 서포트 라이브러리에서는 이미지 전처리 하는 라이브러리를 몇가지 제공하고 있다. 

 

이 책의 좋은점은 안드로이드 카메라 API 를 통해 실시간으로 이미지를 처리하는 방법에 대해서도 다루고 있다. 카메라를 연결하여 실시간으로 이미지를 처리하는 딥러닝 모델을 모바일에 이식하고자 하는 사람들에게 굉장히 많은 도움이 될 것 같다. 경험자라서 그런지 내용이 굉장히 세세하며, 경험해보지 않은 이상 이러한 내용을 적을 수 없다. 또한 학습 후 양자화 하는 과정에 대해서도 다루고 있는데 이 부분도 꽤 중요하다. 왜냐하면 양자화를 통해 정확도를 조금 잃는 대신 엄청난 속도 향상을 얻을 수 있기 때문이다. 무거운 딥러닝 모델의 경우 이 양자화가 굉장히 중요하다. 개인적으로 모델마다 달라질 순 있겠지만 integer 양자화 보다는 fp16 양자화를 선호한다. 

 

이 책을 모두 읽고나서 든 생각은 앞으로 발전할 On-Device AI 분야에서 전문가가 되기 위해 반드시 거쳐야할 책이라고 생각한다. 모든 내용을 책 한권에 담을 순 없겠지만, 적어도 딥러닝 모델을 모바일에 배포하기 위한 시작점이 되기에 충분한 책이라고 생각한다. 

 

 

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

 

 

728x90
반응형