본문 바로가기
컴퓨터 과학

텐서플로 라이트를 활용한 안드로이드 딥러닝

by pagehit 2021. 8. 22.
반응형

이 글은 한빛미디어 도서 서평단 나는 리뷰어다 2021을 통해 책을 제공받아 작성하였습니다.

이 책은 번역서 '텐서플로 라이트를 활용한 안드로이드 딥러닝(임태규 지음, 한빛미디어)' 입니다.

 

이 책은 텐서플로 라이트를 이용하여 인공지능 딥러닝 모델을 안드로이드 기기에 배포하는 것까지를 다루고 있습니다. 이 과정에서 딥러닝 모델에 대해 소개해 주며, 안드로이드 컴포넌트에는 어떤 것이 있는지 UI는 어떻게 구성할 것인지 코드를 보여주면 해당 코드에 대한 상세한 설명으로 알려 줍니다. 또한 여기에 그치지 않고 실제 서비스 가능하도록 딥러닝 모델은 어떻게 최적화 시켜야 하며, 텐서플로 라이트 모델을 배포할 때는 어떤 최적화들을 이용할 수 있는지 자세히 실험을 하며 해당 결과를 제시해 줍니다.

 

이 책의 목차와 함께 책 내용에 대해 간략히 살펴 보겠습니다.

 

<1장. 안드로이드와 텐서플로 라이트 입문>에서는 개발 환경 구축을 주로 다룹니다. 이미 텐서플로를 사용해 본 적이 있거나 안드로이드를 다뤄 본 적이 있으면 건너 뛰어도 될 내용입니다. 하지만 둘 모두를 다뤄 본 적이 있더라도 빠르게 읽어가며 텐서플로와 라이트의 차이는 무엇인지 안드로이드의 기본 구성요소 액티비티, 서비스, 브로드캐스트 리시버, 콘텐트 프로바이더 등에 대해 복습할 수 있습니다. 중요 내용만 간략히 다뤄 해당 지식이 없더라도 읽으면서 공부할 수 있습니다. 이 책에서는 파이썬과 텐서플로를 이용하며 파이썬의 가상환경인 아나콘다, 에디터로는 주피터 노트북을 사용합니다.

 

<2장. 처음 만드는 안드로이드 앱>은 주로 안드로이드에 관한 내용입니다. 안드로이드 스튜디오를 이용하여 안드로이드 앱을 어떻게 만드는지, 안드로이드 스튜디오를 사용하는 방법과 같이 코드를 보여주면서 설명해 주고 있습니다. 핵심 코드를 보여주고 해당하는 코드를 설명하는 방식으로 책을 따라 읽으면서 코드에 대한 내용도 상세히 알 수 있습니다. 안드로이드의 빌드 툴인 Gradle을 사용하는 방법과 빌드 프로세스까지 상세히 알려 줍니다. 또한 앱을 만들어 실제 안드로이드 스마트폰 기기에 배포하여 테스트하는 과정까지 설명해 주며, 최종적으로 책의 말미에 가서는 안드로이드 기기를 사용해 앱을 사용합니다. 이 책에서는 안드로이드 개발언어로 주로 자바를 사용하고 있습니다. <3장. 안드로이드 앱 UI 구성>도 2장에 이어 안드로이드에 대해 설명하고 있습니다. 안드로이드의 구성요소인 액티비티에 대해 설명하면서 UI를 어떻게 만들지, 버튼이나 화면을 어떻게 만드는지 배울 수 있습니다. 마찬가지로 안드로이드 스튜디오 화면 캡처와 결과 사진, 코드 부분의 캡처를 보여 주면서 상세히 설명해 주고 있습니다.

 

코드와 설명


<4장. 텐서플로 라이트 모델 개발>에서는 파이썬과 텐서플로를 이용해 딥러닝 모델을 어떻게 개발하는지 그리고 배포하는 방법도 알 수 있습니다. 딥러닝에 대한 개념도 알려 주고 있으며, 다층 퍼셉트론 신경망이 무엇인지, 합성곱은 어떻게 계산되는지 학습할 수 있습니다. 그리고 모델을 직접 개발해서 변환하는 방법과 기존에 학습된 모델을 통해, 즉 전이학습과정을 통해 모델을 변환해 사용하는 방법에 대해 알려 줍니다. 한 가지 방법이 아닌 여러 가지 방법을 통해 다양한 시각에서 코드를 작성하는 법을 배울 수 있습니다. 변환한 모델을 안드로이드 스튜디오에 배포하는 방법을 알려주며 4장은 끝이 납니다.


<5장. 텐서플로 라이트 모델을 이용한 안드로이드 앱 개발>에서는 4장에서 학습시킨 모델을 가져와 앱을 만드는 방법에 대해 다룹니다. 안드로이드 스튜디오와 자바 코드를 이용해 텐서플로 라이트 개발환경을 만들어 변환시킨 모델을 가져와 앱에서 추론하는 과정을 설명해 줍니다. 앱에서 숫자를 입력받으면 해당 숫자를 분류하는 앱을 만듭니다. 입력받은 이미지를 처리하는 과정까지 상세한 설명과 함께 필요한 지식을 알려 줍니다. 5장까지의 과정을 통해 모델을 만들어 변환해 앱을 통해 배포하는 방법의 과정을 마무리 합니다.

<6장. 프레임워크를 활용한 이미지 분류 앱 개발>에서는 ImageNet 데이터를 통해 훈련시킨 이전과 비교했을 때 조금 더 큰 모델을 사용하며, 텐서플로 서포트 라이브러리를 이용합니다. 앱의 갤러리에 저장된 사진을 불러와 모델의 입력으로 사용해 추론하는 과정을 다룹니다. 5장까지 배운 내용을 토대로 조금 더 실용적인 앱을 만듭니다. 이 과정에서 갤러리에서 사진은 어떻게 불러오는지 앱 화면은 어떻게 구성할 것인지 조금 복잡한 내용을 다루지만 그만큼 더 재미있고 활용가능한 앱을 만듭니다. 

6장 결과 앱 화면


<7장. 실시간 이미지 처리>에서는 6장과는 달리 카메라를 이용해 실시간으로 이미지를 딥러닝 모델로 처리하는 방법을 다룹니다. 안드로이드 기기의 카메라를 사용하기 위해 Camera2 API에 대해 설명하고, 카메라를 사용하기 위한 코드 설명을 상세히 해줍니다. 다소 복잡하지만 어려운 내용이지만 책을 천천히 따라가며 코드와 설명을 공부하면 이해할 수 있습니다. 또한 실시간 처리와 함께 실용적으로 사용할 수 있도록 비동기에 관해서도 다룹니다. 안드로이드 앱에서 쓰레드를 이용해 비동기로 카메라 이미지를 처리해 앱의 사용자가 끊김없이 사용할 수 있도록 구현합니다. 다소 어려울 수 있지만 이 과정을 통해 실제 서비스 가능한 앱을 만들어 볼 수 있습니다.

<8장. 텐서플로 라이트 모델의 성능 개선>에서는 안드로이드 앱에서 하드웨어를 이용해 모델의 추론 성능을 올리는 방법에 대해 다루며, <9장. 텐서플로 라이트 모델 최적화>에서는 모델을 학습시킬 때 모델을 경량화시켜 추론 성능을 향상시키는 방법에 대해 다룹니다. GPU delegate, NNAPI 등을 사용하는 방법에 대해 자세히 설명하고 있으며, 모델을 경량화시키는 양자화에 대해서도 다루고 있습니다. 이러한 방법을 적용해 실제로 얼마나 향상되는지 비교하는 방법도 알려 주면서, 어떻게 실제 모델을 최종적으로 결정할 때 활용할 수 있는지 배울 수 있습니다.

각 최적화 결과 비교 표

 

이 책은 안드로이드와 딥러닝을 이용해 실제 앱을 만드는 방법을 친절하고 자세히 코드를 꼼꼼히 들여다 보면서 알려 줍니다. 또한 앱의 성능을 향상시키기 위한 모든 방법을 제시해 주며 구체적으로 성능 측정 방법과 결과를 표로 정리해 주고 있습니다. 안드로이드 앱에서 카메라를 이용해 실시간 처리하는 부분이 어려울 수 있지만 그만큼 활용 가능성이 높은 앱을 실제로 만들어 봅니다.

반응형

댓글