๐Ÿ™ˆTensorFlow Lite๊ฐ€ ๋ญ์•ผ๐Ÿ™‰!!

k-sanaยท2021๋…„ 6์›” 21์ผ
3

AI and Android

๋ชฉ๋ก ๋ณด๊ธฐ
1/2
post-thumbnail

๋™๊ธฐ ๐Ÿค”

ํ‰์†Œ๊ฐ™์ด ํ•™๊ต์—์„œ ์ˆ˜์—…์„ ๋“ค์œผ๋ฉด์„œ ์‚ด๊ณ ์žˆ๋˜ ์–ด๋Š๋‚ , ์—ฌ๋ฆ„๋ฐค ๋ชจ๊ธฐ๊ฐ™์ด ์งœ์ฆ๋‚˜๋Š” ๊ฒƒ์ด ๋‚˜์—๊ฒŒ ์ฐพ์•„์™€ ๋ฒ„๋ ธ๋‹ค. ๋ฐ”๋กœ ์ˆ˜ํ–‰ํ‰๊ฐ€์ด๋‹ค. ์„ฑ์ ์„ ๊ทธ๋ฆฌ ์ค‘์š”ํ•˜๊ฒŒ ์—ฌ๊ธฐ์ง€๋Š” ์•Š์ง€๋งŒ ํ”„๋กœ์ ํŠธํ˜• ์ˆ˜ํ–‰ํ‰๊ฐ€์˜€๊ธฐ๋•Œ๋ฌธ์— ๋Šฅ๋ ฅ ์ฆ์ง„์„ ์œ„ํ•ด์„œ, ํ•˜์ง€๋งŒ ์—ด์‹ฌํžˆํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ๋‹ค์งํ•œ ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” ์„ ์ƒ๋‹˜์˜ ๋ˆˆ ๋ฐ–์— ๋‚˜๊ณ  ์‹ถ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค..

๊ทธ๋ž˜์„œ ๊ฒฐ๊ตญ ์šฐ๋ฆฌ์กฐ๋Š” ์ธ๊ณต์ง€๋Šฅ์„ ๊ณ๋“ค์ธ ์†Œ์œ„ 'ํ‚ฌ๋งํƒ€์ž„์šฉ'์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์•ฑ์„ ๋งŒ๋“ค๊ธฐ๋กœ ํ•˜์˜€๋‹ค. AI์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋Š” ์ค‘ ์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์—๊ฒŒ๋Š” ํ•ด๋ณผ๋งŒํ•œ ๋„์ „์ด์—ˆ๊ณ  ๊ณต๋ถ€์˜€๋‹ค. ์›น back-end์™€ model์„ ์—ฐ๋™ํ•ด ๋ณธ์ ์€ ์žˆ์–ด๋„ Android app์—์„œ๋Š” ์ฒ˜์Œ์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

model ๊นŒ์ง„ ์–ด์ฐŒ์–ด์ฐŒ ๋งŒ๋“ค์—ˆ์–ด๋„ model์„ Android studio์— ์—ฐ๊ฒฐํ•  ๋ฐฉ๋ฒ•์„ ์ฐพ์ง€๋ชปํ•ด์„œ ํ•ด๋งค๋˜ ์™€์ค‘์—... app์„ ๋งŒ๋“ค๋•Œ ์–ธ์–ด๋Š” Java๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— DL4J๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ ์ฒ˜์Œ์œผ๋กœ TensorFlow Lite๋ผ๋Š” ๊ฒƒ์„ ๋“ค์–ด๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค.

TensorFlow Lite ๐Ÿ’ป

TensorFlow...๋Š” ๋งŽ์ด ๋“ค์–ด๋ณด๊ณ  ์ต์ˆ™ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ๊ธฐ๊ณ„ ํ•™์Šต ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์–‘๋Œ€ ์‚ฐ๋งฅ ์ค‘ ํ•˜๋‚˜๋กœ ๊ผฝํžˆ๋Š” TensorFlow, ๋‚˜๋„ ์ฒ˜์Œ ๊ธฐ๊ณ„ ํ•™์Šต์„ ๊ณต๋ถ€ํ•  ๋•Œ ์‚ฌ์šฉํ•˜์˜€์ง€๋งŒ ์ดˆ๋ณด์ž์˜€๋˜ ๊ทธ ๋‹น์‹œ Session error๋ผ๋Š” ๋ฒฝ์— ๋ง‰ํ˜€์„œ TensorFlow๋ฅผ ๋งŽ์ด ์“ฐ์ง€ ์•Š์•˜์—ˆ๋‹ค. ์„œ๋ก ์ด ๊ธธ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.
๊ทธ๋ž˜์„œ TensorFlow Lite๊ฐ€ ๋Œ€์ฒด ๋ญ๋ƒ๊ณ !! ๐Ÿ˜ก

TensorFlow Lite๊ฐ€ ๋ญ๋ƒ๋ฉด~ ๐Ÿ˜…

๊ฐ„๋‹จํ•˜๋‹ค. TensorFlow Lite๋Š” ๋ชจ๋ฐ”์ผ, ์ž„๋ฒ ๋””๋“œ ๋ฐ IoT ๊ธฐ๊ธฐ์—์„œ TensorFlow ๋ชจ๋ธ์„ ๋ณ€ํ™˜ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ~~๋“  ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. ๊ทธ๋Ÿผ ๊ทธ๋ƒฅ TensorFlow๋ฅผ ์“ฐ๋ฉด๋˜์ง€ ์ด ๊ฒƒ์„ ์™œ ์‚ฌ์šฉํ•˜๋ƒ?? ๋ฐ”๋กœ Lite๋ผ๋Š” ์ด๋ฆ„์—์„œ ์œ ์ถ”ํ•ด๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด TensorFlow๋กœ ๋งŒ๋“  model์„ ์ปดํ“จํŒ… ๋ฐ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ œํ•œ์ ์ธ ๋ชจ๋ฐ”์ผ/๊ธฐํƒ€ ์ž„๋ฒ ๋””๋“œ ๊ธฐ๊ธฐ์—์„œ ํšจ์œจ์ ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฒฝ๋Ÿ‰ํ™” ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. model์„ ๋ณ€ํ™˜ํ•˜๋ฉด ํŒŒ์ผ์˜ ํฌ๊ธฐ๋Š” ์ค„์–ด๋“ค์ง€๋งŒ model์˜ ์ •ํ™•๋„์—๋„ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.

๐Ÿ“Œ ํ•˜์ง€๋งŒ TensorFlow Lite๋Š” Tensorflow์˜ ์—ฐ์‚ฐ ์ค‘ ์ผ๋ถ€๋งŒ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋ชจ๋ธ์„ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๊ณ  ํ•œ๋‹ค.
์ฐธ๊ณ  : TensorFlow Lite ๋ณ€ํ™˜ ๋ถˆ๊ฐ€๋Šฅ

TensorFlow Lite ๋ณ€ํ™˜

๊ธฐ๋ณธ์ ์ธ TensorFlow Lite์˜ ๋ณ€ํ™˜ ๋ฐฉ๋ฒ•์€ ์ด๋ ‡๋‹ค.

import tensorflow as tf 

converter = tf.lite.TFLiteConverter.from_keras_model(์ €์žฅํ•œ ๋ชจ๋ธ)
tflite_model = converter.convert() # ๋ณ€ํ™˜
open("๋ณ€ํ™˜๋œ ๋ชจ๋ธ.tflite", "wb").write(tflite_model) # ๋ณ€ํ™˜๋œ ๋ชจ๋ธ ์ €์žฅ

์ •๋ฆฌ ๐Ÿ˜‰

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” TensorFlow Lite๊ฐ€ ๋ฌด์—‡์ธ์ง€์™€ ๋ณ€ํ™˜์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค. ๋‹ค์Œ ๊ธ€์—์„œ๋Š” Android studio์—์„œ ์‹คํ–‰์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ง์ ‘ ์‹คํ–‰์„ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ๊ทธ๋Ÿผ ๋ชจ๋‘ Bamboo๐ŸŽ!!

profile
I'm bamboo.

0๊ฐœ์˜ ๋Œ“๊ธ€