ํ์๊ฐ์ด ํ๊ต์์ ์์ ์ ๋ค์ผ๋ฉด์ ์ด๊ณ ์๋ ์ด๋๋ , ์ฌ๋ฆ๋ฐค ๋ชจ๊ธฐ๊ฐ์ด ์ง์ฆ๋๋ ๊ฒ์ด ๋์๊ฒ ์ฐพ์์ ๋ฒ๋ ธ๋ค. ๋ฐ๋ก ์ํํ๊ฐ์ด๋ค. ์ฑ์ ์ ๊ทธ๋ฆฌ ์ค์ํ๊ฒ ์ฌ๊ธฐ์ง๋ ์์ง๋ง ํ๋ก์ ํธํ ์ํํ๊ฐ์๊ธฐ๋๋ฌธ์ ๋ฅ๋ ฅ ์ฆ์ง์ ์ํด์, ํ์ง๋ง ์ด์ฌํํด์ผ๊ฒ ๋ค๊ณ ๋ค์งํ ๊ฐ์ฅ ํฐ ์ด์ ๋ ์ ์๋์ ๋ ๋ฐ์ ๋๊ณ ์ถ์ง ์์๊ธฐ ๋๋ฌธ์ด์๋ค..
๊ทธ๋์ ๊ฒฐ๊ตญ ์ฐ๋ฆฌ์กฐ๋ ์ธ๊ณต์ง๋ฅ์ ๊ณ๋ค์ธ ์์ 'ํฌ๋งํ์์ฉ'์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ฑ์ ๋ง๋ค๊ธฐ๋ก ํ์๋ค. AI์ ๋ํด ๊ณต๋ถํ๋ ์ค ์ด์๊ธฐ ๋๋ฌธ์ ๋์๊ฒ๋ ํด๋ณผ๋งํ ๋์ ์ด์๊ณ ๊ณต๋ถ์๋ค. ์น back-end์ model์ ์ฐ๋ํด ๋ณธ์ ์ ์์ด๋ Android app์์๋ ์ฒ์์ด์๊ธฐ ๋๋ฌธ์ด๋ค.
model ๊น์ง ์ด์ฐ์ด์ฐ ๋ง๋ค์์ด๋ model์ Android studio์ ์ฐ๊ฒฐํ ๋ฐฉ๋ฒ์ ์ฐพ์ง๋ชปํด์ ํด๋งค๋ ์์ค์... app์ ๋ง๋ค๋ ์ธ์ด๋ Java๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ DL4J๊ฐ์ ํ๋ ์์ํฌ๋ฅผ ์ฐพ์๋ณด๋ค๊ฐ ์ฒ์์ผ๋ก TensorFlow Lite๋ผ๋ ๊ฒ์ ๋ค์ด๋ณด๊ฒ ๋์๋ค.
TensorFlow...๋ ๋ง์ด ๋ค์ด๋ณด๊ณ ์ต์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ๊ธฐ๊ณ ํ์ต ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ ์ฐ๋งฅ ์ค ํ๋๋ก ๊ผฝํ๋ TensorFlow, ๋๋ ์ฒ์ ๊ธฐ๊ณ ํ์ต์ ๊ณต๋ถํ ๋ ์ฌ์ฉํ์์ง๋ง ์ด๋ณด์์๋ ๊ทธ ๋น์ Session error๋ผ๋ ๋ฒฝ์ ๋งํ์ TensorFlow๋ฅผ ๋ง์ด ์ฐ์ง ์์์๋ค. ์๋ก ์ด ๊ธธ์๋ ๊ฒ ๊ฐ๋ค.
๊ทธ๋์ TensorFlow Lite๊ฐ ๋์ฒด ๋ญ๋๊ณ !! ๐ก
๊ฐ๋จํ๋ค. TensorFlow Lite๋ ๋ชจ๋ฐ์ผ, ์๋ฒ ๋๋ ๋ฐ IoT ๊ธฐ๊ธฐ์์ TensorFlow ๋ชจ๋ธ์ ๋ณํํ๊ณ ์คํํ๋ ๋ฐ ํ์ํ ๋ชจ~~๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ ํ๋ ์์ํฌ์ด๋ค. ๊ทธ๋ผ ๊ทธ๋ฅ TensorFlow๋ฅผ ์ฐ๋ฉด๋์ง ์ด ๊ฒ์ ์ ์ฌ์ฉํ๋?? ๋ฐ๋ก Lite๋ผ๋ ์ด๋ฆ์์ ์ ์ถํด๋ณผ ์ ์๋ฏ์ด TensorFlow๋ก ๋ง๋ model์ ์ปดํจํ ๋ฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ํ์ ์ธ ๋ชจ๋ฐ์ผ/๊ธฐํ ์๋ฒ ๋๋ ๊ธฐ๊ธฐ์์ ํจ์จ์ ์ผ๋ก ์คํํ ์ ์๋๋ก ๊ฒฝ๋ํ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. model์ ๋ณํํ๋ฉด ํ์ผ์ ํฌ๊ธฐ๋ ์ค์ด๋ค์ง๋ง model์ ์ ํ๋์๋ ์ํฅ์ ์ฃผ์ง ์๋๋ค๊ณ ํ๋ค.
๐ ํ์ง๋ง TensorFlow Lite๋ Tensorflow์ ์ฐ์ฐ ์ค ์ผ๋ถ๋ง์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋ชจ๋ธ์ ๋ณํํ ์ ์๋ ๊ฒ์ ์๋๋ผ๊ณ ํ๋ค.
์ฐธ๊ณ : 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๐!!