Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Keras

Kerasは、ニューラルネットワークの構築と学習に使う高水準のPython APIです。Keras 3以降は、同じコードをJAX、TensorFlow、PyTorchで実行できます。

Kerasは、ニューラルネットワークの構築と学習に使うオープンソースの高水準Python APIです。François Cholletが、ディープラーニングの実験をすばやく記述できるように、2015年3月に公開しました。モデルはレイヤーを積み重ねた構造またはグラフであり、compileでオプティマイザー、損失関数、メトリクスを設定し、fitで学習ループを実行します。KerasはTensorFlowの公式高水準APIとなり、2023年11月に公開されたKeras 3では、Kerasのインポート時に選択したJAX、TensorFlow、PyTorchのいずれでも、同じモデルコードを実行できます。短く読みやすいコードのため、教育、プロトタイピング、Kaggleコンペティションに加え、画像分類や自然言語処理の本番モデルでもよく選ばれます。

Kerasの仕組み#

Kerasモデルは、Dense、Conv2D、LSTM、MultiHeadAttentionなどのレイヤーで構成され、それぞれが独自の重みを保持します。レイヤーを組み立てる方法は3つあります。単純な積み重ねにはSequential API、分岐や共有レイヤー、複数入力を含むグラフにはFunctional API、順伝播を完全に制御するにはkeras.Modelのサブクラス化を使います。コンパイル済みモデルはfitで学習し、バッチ処理、誤差逆伝播、メトリクス、検証データ、チェックポイントや早期停止のためのコールバックを処理します。その後、evaluateとpredictで新しいデータを評価します。次のコードは、Kerasに付属するMNISTデータセットを使って、小規模な数字分類器を学習します。

import os

os.environ["KERAS_BACKEND"] = "torch"  # or "jax" or "tensorflow", set before importing Keras

import keras

# MNIST handwritten digits, with pixels scaled to [0, 1]
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

# Define the model as a stack of layers
model = keras.Sequential(
    [
        keras.Input(shape=(28, 28)),
        keras.layers.Flatten(),
        keras.layers.Dense(128, activation="relu"),
        keras.layers.Dense(10, activation="softmax"),
    ]
)

# Configure training, then train and evaluate
model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"])
model.fit(x_train, y_train, epochs=2, batch_size=64, verbose=0)
loss, accuracy = model.evaluate(x_test, y_test, verbose=0)
print(f"Test accuracy: {accuracy:.3f}")

2回のエポック後、テスト精度は約0.96になります。また、"torch"を"jax"または"tensorflow"に変更すると、他の行を編集せずに同じモデルを別のフレームワークで実行できます。

Keras 3とそのバックエンド#

Kerasは当初、Theano、TensorFlow、CNTKなど複数のエンジン上で動作していました。2019年9月に公開されたKeras 2.3が最後のマルチバックエンド版で、その後、開発はTensorFlow内のtf.kerasへ移行しました。Keras 3ではバックエンドの独立性が復活しました。レイヤーとモデルは、各バックエンドが実装するNumPy形式の演算セットkeras.opsに基づいて記述されるため、.keras形式で保存したモデルを、どのバックエンドでも再読み込みして学習できます。PyTorchバックエンドでは、Kerasモデルはtorch.nn.Moduleでもあり、カスタムPyTorch学習ループで利用できます。また、Keras 3.8以降では推論専用のOpenVINOバックエンドにより、Intelハードウェア上で学習済みモデルを実行できます。

TensorFlow 2.16以降、TensorFlowをインストールするとKeras 3もインストールされます。引き続きKeras 2が必要なコードでは、別のtf_kerasパッケージを使用します。モデル変換ツールもKerasを対象にしています。Ultralytics YOLOがYOLO26をTensorFlow SavedModelにエクスポートする際、onnx2tfコンバーターはONNXグラフからPyTorchネットワークをレイヤー単位でKerasモデルとして再構築してから保存します。

KerasHubの事前学習済みモデル#

KerasHubは、画像向けResNet、テキスト向けBERT、Gemmaなどの大規模言語モデルを含む、人気アーキテクチャのKeras 3実装と事前学習済みチェックポイントを提供します。プリセット名を指定すると、転移学習にすぐ使えるモデルを読み込めます。keras_hub.models.ImageClassifier.from_preset("resnet_50_imagenet")はImageNetで学習済みの分類器を返し、上記と同じfit呼び出しによるファインチューニングで新しいデータセットに適応させます。他のKeras 3モデルと同様に、KerasHubモデルも3つの学習バックエンドすべてで動作します。

KerasとTensorFlow、PyTorchの比較#

  • TensorFlow: 独自のランタイム、コンパイラー、TensorFlow ServingやLiteRTなどのデプロイツールを備えたフルフレームワークです。多くのTensorFlowユーザーはKeras APIでモデルを記述し、TensorFlowはKerasコードを実行するエンジンの1つです。
  • PyTorch: ユーザーが通常は自分で学習ループを記述するか、PyTorch Lightningなどのライブラリを使うフレームワークです。Kerasはfitを通じてループを提供し、バックエンドとしてPyTorchも利用できるため、両者は相互排他的ではありません。
  • JAX: 微分、XLAコンパイル、ベクトル化のための、組み合わせ可能な関数変換を提供するGoogleのライブラリです。JAXにはレイヤーや学習用APIが組み込まれておらず、KerasはJAX上でそれらを利用する方法の1つです。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう