20
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

EfficientNetを最速で試す方法

TL;DR

はじめに

「EfficientNet」については素晴らしい記事がありますのでこちらをご覧ください。
Qiita - 2019年最強の画像認識モデルEfficientNet解説

今回の記事はEfficientNetを最速で試す方法を紹介することに重きをおきます。

早速デモを動かしてみる

動かすデモのGoogleColabratoryは用意しておきましたのでこちらをお使いください。

GoogleColabratory - transfer_learning_EfficientNet

上記GoogleColabratoryより肝になるコード、モデルの定義部分だけ抽出してみました。これだけでEfficientNetを利用できるようになります。
あとの学習部分をどうするか気になる方は上のデモを動かしてみてください。

EfficientNet.py
import tensorflow as tf
import tensorflow_hub as hub
from tensorflow.keras import layers

# クラス数はデータに合わせて適当に変えてください
num_classes = 10

# URLはこちらのページ https://tfhub.dev/google/collections/efficientnet/1
# 末尾に記載されているURLから使いたいモデル(B0-B7)までのどれかを選んでください
# 今回はB0を使います
feature_extractor_url = "https://tfhub.dev/google/efficientnet/b0/feature-vector/1"

# width/heightについてはB0は(224, 224)が推奨とされているのでそうしています
# 推奨のwidth/heightについてはこちらのページをご覧ください https://tfhub.dev/google/collections/efficientnet/1
feature_extractor_layer = hub.KerasLayer(feature_extractor_url,
                                         input_shape=(224,224,3))
# 学習済み重みは固定
feature_extractor_layer.trainable = False

# Keras functional APIで動くかなと試したのですがうまく動かず
# 公式Tutorialに倣って以下の通りにしています
model = tf.keras.Sequential([
  feature_extractor_layer,
  layers.Dense(num_classes, activation='softmax')
])

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
20
Help us understand the problem. What are the problem?