머신러닝, 딥러닝, 텐서플로우 등 많이 들어는 봤지만 어떻게 시작해야 할지 모르시는 분들이 많으실 텐데,
이번에도'한빛미디어, 나는 리뷰어다'를 통해 도서를 지원받게 되었고, 리뷰를 남겨보도록 하겠습니다.
아래부터 '텐서플로우' 대신 '텐서플로'로 표시하도록 하겠습니다'
본 도서는 총 9개의 파트로 구성되어있습니다.
- 파트1: 안드로이드와 텐서플로 라이트 입문
- 파트2: 처음 만드는 안드로이드 앱
- 파트3: 안드로이드 앱 UI 구성
- 파트4: 텐서플로 라이트 모델 개발
- 파트5: 텐서플로 라이트 모델을 이용한 안드로이드 앱 개발
- 파트6: 프레임워크를 활용한 이미지 분류 앱 개발
- 파트7: 실시간 이미지 처리
- 파트8: 텐서플로 라이트 모델의 성능 개선
- 파트9: 텐서플로 라이트 모델 최적화
파트1) 안드로이드와 텐서플로 라이트 입문
첫 번째 파트에서는 안드로이드와 텐서플로 라이트에 대한 기초적인 소개로 만납니다.
주 내용은 안드로이드/텐서플로 라이트 환경 구축이라 생각이 들지만, 생각보다 많은 설명이 제공되고 있습니다.
앞 내용만 보면 '안드로이드 개발 도서인가?'라는 생각이 들 정도로 자세하게 설명하고 있습니다.
다시 말하면, 안드로이드 개발을 처음 하는 사람이라도 이해하고 따라올 수 있도록 안내되고 있습니다.
Activity Lifecycle, Intent, Service 등 생각보다 자세하게 설명되었습니다.
안드로이드 스튜디오 설치 및 환경 변수 설정, 그리고 파이썬은 물론 주피터 노트북 설치, 아나콘다 가상 환경 설정 등 기초에 충실하게 설명되어 있습니다.
파트2) 처음 만드는 안드로이드 앱
두 번째 파트에서는 안드로이드 개발 구조적인 내용이 담겨있습니다.
프로젝트 구조부터, Android Manifest, res 구성, Gradle, 빌드 프로세스, AVD 설정 등 안드로이드 개발에 있어 알고 넘어가야 할 부분은 모두 설명하고 있습니다.
더도 말고 덜도 말고 딱 필요한 구성만 설명하고 있어 깔끔하였습니다.
파트3) 안드로이드 앱 UI 구성
그다음 이어지는 내용으로는 안드로이드 UI입니다.
화면을 만드는 데 있어 필요한 레이아웃부터
LinearLayout, RelativeLayout, ConstraintLayout
화면에 배치할 위젯은 물론
TextView, EditText, Button, Spinner, Toggle/Radio ...
클릭 이벤트 처리 및 액티비티 실행, LogCat 등 딱 안드로이드에서 사용하는 기초적인 부분을 설명하고 있습니다.
추가로 마지막에는 Thread까지 설명하고 있어 이 부분은 과한 게 아닌가 싶었는데,
뒤의 '실시간 이미지 처리' 부분에서 비동기 작업을 위해 미리 설명을 하였던 것이었습니다.
파트4) 텐서플로 라이트 모델 개발
이전까지는 안드로이드 개발이었다면, 이제부터는 딥러닝의 세계로 들어갑니다.
'모델 개발 시 워크플로'에 대한 설명과 텐서플로 라이트 모델에 대한 기본적인 설명과 함께
MNIST 데이터셋을 통해 손글씨 분류 모델을 만들어보고,
ImageNet 데이터로 학습된 MobileNet V2 모델을 이용하여 임의 이미지 제공 시 어떤 형태인지 추론, 케라스 변환 등
여러분들이 생각하시던 딥러닝에 대한 내용이 시작됩니다.
여기서부터 난이도가 상승한 기분이었지만, 코드와 함께 파라미터(인자 값) 하나하나 설명을 하고 있어
시간을 가지고 읽다 보니 어느 정도 이해하고 넘어갈 수 있었던 것 같습니다.
파트5) 텐서플로 라이트 모델을 이용한 안드로이드 앱 개발
어느 정도 안드로이드 개발과 딥러닝에 대한 기술을 이해하셨다면,
이제 본격적인 딥러닝 앱을 만들기 시작합니다.
처음 만드는 앱은 손글씨 분석이며, 여기서 사용되는 기술은 앞서 작업/설명한 내용들입니다.
- AndroidDraw 라이브러리
- 파트4에서 만든 다층 퍼셉트론 모델을 변환한 텐서프로 라이트 모델
안드로이드에서 AndroidDraw 라이브러리를 통해 숫자를 그리면,
우리가 만든 텐서프로 라이트 모델을 통해 추론한 숫자를 알려주는 앱이 뚝딱 탄생합니다.
처음에는 정확도가 낮지만,
마찬가지로 파트4에서 만든 합성공 신경망 모델로 바꾸어 정확도가 높아지는 것을 확인할 수 있습니다.
즉 어떤 모델을 사용하느냐에 따라 정확도가 나뉜다는 것을 알 수 있게 되었습니다.
파트6) 프레임워크를 활용한 이미지 분류 앱 개발
이전 파트에서 손글씨 숫자를 인식하는 앱을 만들었다면, 이 파트에서는 이미지를 분류하는 앱을 만들며,
마찬가지로 파트4에서 사전 학습 모델인 MobileNet V2를 사용합니다.
갤러리에서 이미지를 불러오거나 카메라를 통해 받은 이미지를 추론하여 결과를 내놓기에
본 파트에서는 네이티브 코드가 많이 작성됩니다.
대신 그만큼 재미있는 시도를 많이 할 수 있으며, 완성된 앱으로 밖의 사물을 촬영하여 이미지 추론 결과를 확인할 수 도 있습니다.
파트7) 실시간 이미지 처리
동일하게 이미지를 분류하지만 다른 점이 있다면,
이전 파트에서는 갤러리 또는 카메라로 촬영한 정적 이미지를 분석했지만 이번에는 실시간으로 카메라를 통해 받아온 이미지를 추론하여 표시합니다.
파트6에서 사용하였던 로직에서 갤러리/카메라를 Camera2 API로 교체하여 실시간으로 처리하도록 변경합니다.
여기서 권한과 비동기에 대해 추가적인 설명이 제공되고 있습니다.
최종 결과물로는 실시간으로 이미지를 추론하여 결과를 표시합니다.
파트8) 텐서플로 라이트 모델의 성능 개선
여러 딥러닝 앱을 만들어보았다면 개선도 해봐야겠죠
현재 딥러닝의 성능을 분석하고 어떻게 개선하는지 안내합니다.
간단하게 CPU 계산을 GPU로 바꾸는 등 다양한 방법을 소개하고 있습니다.
파트9) 텐서플로 라이트 모델 최적화
데이터셋으로 딥러닝을 통해 학습 모델을 만들었고, 해당 모델을 최종적으로 안드로이드 앱으로 이식하였습니다.
모바일은 아무래도 PC보다 성능이 부족하기에 제한적인 리소스를 가지고 있습니다.
마지막 파트에서는 양자화 적용 방법과 각 양자화 모델에 따른 성능(소요 시간)과 정확도를 비교함으로써
최종적으로 모바일에 맞는 딥러닝 앱을 구현하면서 모든 파트가 끝나게 됩니다.
마치며
안드로이드 개발 내용까지는 매우 쉽게 이해하였으나,
파트4 딥러닝 내용이 시작되면서 난이도가 상승한 느낌이었습니다.
하지만 코드와 함께 자세한 설명이 덧붙여져 있어,
누구나 따라만 한다면 나만의 딥러닝 앱을 만들 수 있을 것이라 생각합니다.
딥러닝 기술을 활용하여 안드로이드 앱을 만들어보고 싶다면, 본 도서를 읽는 것을 추천드립니다.
'도서 리뷰' 카테고리의 다른 글
초보자도 한 권으로 마스터하는 게임 개발, '레트로의 유니티 게임 프로그래밍 에센스 개정판' (0) | 2022.03.05 |
---|---|
잘 읽히는 보고서를 원한다면, '보고서 작성 실무 강의' (0) | 2021.12.26 |
팀 생산성을 높여주는 21가지 도구와 서비스, '모던 스타트업' (0) | 2021.07.25 |
SQL, 한 권이면 충분한 '소문난 명강의 : 김상형의 SQL 정복' (0) | 2021.06.20 |
초보자부터 숙련자까지 배우는 '이것이 C#이다' (0) | 2021.02.21 |
상상하는 것을 소프트웨어로 구현하는 것을 좋아하는 청년
게시글이 마음에 드시나요? [ 공감❤️ ] 눌러주시면 큰 힘이 됩니다!