https://www.youtube.com/watch?v=3seWxHGnDqM&list=PLQY2H8rRoyvzuJw20FG82Lgm2SZjTdIXU&index=3


문제를 해결하기 위해 모델을 탐색하는 것이 매우 어렵고 힘든 작업인 것은 모두 알고 있을 것입니다.

엄청나게 쏟아지고 있는 모델 중에서 적절한 모델을 찾기란 매우 어렵습니다.

 

적절한 모델을 찾았다면, 깃허브나 모델의 세부 사항을 통해 적용하는 단계로 넘어가죠. 이 과정에서 우리는 제일 먼저 pre-trained 모델을 찾을지도 모릅니다.
이러한 pre-trained 모델은 운이 좋게도 깃허브 저장소에서 다운받을 수 있거나 다른 곳에서 접근할 수도 있습니다.

이때 사용하는 모델에 대한 의심은 우리를 떠나가질 않습니다.

  • 안전한 방법인가?
  • 최신 버전인가?
  • 어떻게 사용하는가?

이를 위해 텐서플로우에서는 TensorFlow Hub를 제공합니다.

TensorFlow Hub는 우리가 원하는 모델을 쉽게 찾을 수 있도록 도와주는 공간입니다.
또, 다양한 분야에서의 모델을 제공하죠.

  • 이미지
  • 텍스트
  • 비디오
  • 오디오

이미지를 예로 들면, 분류, 탐지, 변형, 생성에 적합한 pre-trained 모델을 제공하고 있습니다.
또, 텍스트에서는 우리가 흔히 아는 Bert를 포함해서 AlBert, 다양한 Encoder와 Embedding을 제공합니다.

TensorFlow Hub를 사용하면 다양한 디바이스(TF Lite, TF .JS etc.)에서 쉽게 transfer learning을 수행할 수 있습니다.
이를 위해 무려 1,000개가 넘는 모델을 제공합니다. 간단한 데모뿐만 아니라 code snippet까지 제공합니다.

사용하는 방법도 매우 쉽습니다. TensorFlow Hub에서 우리의 문제에 적합한 키워드로 검색만 하면 됩니다. 또, 다음 그림과 같이 CoLab과 연동해서 바로 사용해볼 수 있도록 준비가 되어 있습니다.(설치할 필요도 없어요)


style transfer에서 허브 사용해보기

import tensorflow_hub as hub
hub_handle = 'https://tfhub.dev/google/magenta/arbitrary-image-stylization-v1-256/1'
hub_module = hub.load(hub_handle)
stylized_image = hub_module(tf.constant(content_image), tf.constant(style_image))[0]
tensor_to_image(stylized_image)

허브에 존재하는 모델 링크를 통해 바로 사용할 수 있습니다.

 

Text Classification에서 허브 사용해보기

텍스트 분야에서는 여러 가지 용어를 숫자로 표현할 수 있는 임베딩이 매우 중요한 역할을 수행합니다. 하지만 이를 위해서는 많은 시간과 데이터가 투자되어야 하죠.
TensorFlow Hub를 사용하면 코드 한줄로 임베딩을 불러와서 사용할 수 있습니다.

import tensorflow as tf
import tensorflow_hub as hub

embedding = "https://tfhub.dev/google/tf2-preview/gnews-swive1-20dim/1"
hub_layer = hub.KerasLayer(embedding, input_shape=[], dtype = tf.string, trainable=True)

model = tf.keras.Sequential()
model.add(hub_layer)
model.add(tf.keras.layers.Dense(16, activation = 'relu'))
model.add(tf.keras.layers.Dense(1, activation = 'sigmoid'))

두 가지 예제에서 볼 수 있듯이, 그저 불러서 사용하기만 하면 됩니다. 설치나 기타 과정이 필요하지 않습니다.(매우 편리하죠?)

추가로...

  • TensorFlow Hub는 우리가 모델을 좀 더 쉽게 찾을 수 있도록 검색에서 필터 기능을 제공합니다.
  • TensorFlow Lite에서는 metadata를 수월하게 볼 수 있도록 하고, 연동하기 쉽도록 해두었습니다.
  • TensorFlow JS에서는 face and hand tracking 모델을 추가하고, web app를 위한 text model을 제공합니다.