01-25 00:02
벤치마킹
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 가족소고기외식
- 사진에서 글자추출
- 싱가폴중학교수학문제
- 영통외식
- 아이혼자다녀옴
- 오트눈썰매장
- 푸르지오포레피스
- 커피
- 커피쏟음
- 양양솔비치세프스키친
- 영통역소고기
- 홍시스무디
- 검색완료
- 사진문자추출하기
- 종이캐리어
- 고마워다음
- 양양솔비치아침
- 양양솔비치조식
- 당근마켓중고차
- 주차넉넉
- 결항전문
- DFS
- 양양솔비치 뷔페
- 영통칠프로칠백식당
- 결항
- 사진문자추출
- 에어아시아
- 파이썬
- 중학교입학수학문제
- 편도수술
Archives
- Today
- Total
너와나의 관심사
안드로이드 on device learning 본문
안드로이드 단말의 성능이 향상되면서 요즘 관심있게 보고 있는 on device learning for android .
데모와 on device learning model generation 을 위한 tip을 정리
1. 안드로이드 단말 내에서 학습할 model 생성
-tensorflow keras API 를 활용해서 생성 (tensorflow 공식 예제)
예전 tensorflow 예제가 더 구체적이며 practical 로 소개
mobileNetv2 avg pooling 입력 대신 FC layer 를 추가하는 형태
모델 구성은 Fully connected layer 를 추가하는 방법은 각자 디자인 가능
(7x7x 1280 ) -> 32 output
32 x 4 , 총 4개의 output 을 softmax 하는 모델로 구성
import tensorflow as tf
from tensorflow.keras import layers
from tensorflow.keras.regularizers import l2
from tfltransfer import bases
from tfltransfer import heads
from tfltransfer import optimizers
from tfltransfer.tflite_transfer_converter import TFLiteTransferConverter
import tensorflow.keras.backend as K
DEFAULT_BATCH_SIZE = 32
input_size = 224
output_size = 5
DEFAULT_INPUT_SIZE = 64
DEFAULT_BATCH_SIZE = 16
LEARNING_RATE = 0.001
def test_mobilenet_v2_saved_model():
input_size = DEFAULT_INPUT_SIZE
output_size = 4
base = bases.MobileNetV2Base(image_size=input_size)
head_model = tf.keras.Sequential([
layers.Flatten(input_shape=(7, 7, 1280)),
layers.Dropout(0.25),
layers.Dense(
units=32,
activation='relu',
kernel_regularizer=l2(0.01),
bias_regularizer=l2(0.01)),
layers.Dropout(0.25),
layers.Dense(
units=32,
activation='relu',
kernel_regularizer=l2(0.01),
bias_regularizer=l2(0.01)),
layers.Dense(
units=4,
activation='softmax',
kernel_regularizer=l2(0.01),
bias_regularizer=l2(0.01)),
])
head_model.compile(loss="categorical_crossentropy", optimizer="sgd")
converter = TFLiteTransferConverter(
output_size, base, heads.KerasModelHead(head_model),
optimizers.SGD(LEARNING_RATE), DEFAULT_BATCH_SIZE)
models = converter.convert_and_save('custom_keras_on_device_model')
models = converter._convert()
test_mobilenet_v2_saved_model()
이렇게 생성된 모델을 android tensorflow personalization 으로 동작 시키면 에러가 발생
그래서 gradle 파일에 아래 tf-ops 을 추가
implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly-SNAPSHOT'
implementation 'org.tensorflow:tensorflow-lite-select-tf-ops:0.0.0-nightly-SNAPSHOT'
결론은 FC layer 2 개는 trainable 한 layer 로 weight , bias 업데이트
'머신러닝 > 딥러닝' 카테고리의 다른 글
Keras saved_model.h5 모델 로딩하기 (0) | 2023.01.31 |
---|---|
Keras model 로딩해서 layer 변경하기 (0) | 2022.02.08 |
Keras 로 학습된 모델로 객체생성(compile) 하고 싶다면 (0) | 2022.02.06 |
tensorflow keras 로 모델 training save (ModelSave 활용) (0) | 2022.02.06 |
Comments