深度學習領域正在迅速發展,在處理各種類型的任務中,預訓練模型變得越來越重要。Keras 以其用戶友好型 API 和對易用性的重視而聞名,始終處于這一動向的前沿。Keras 擁有專用的內容庫,如用于文本模型的 KerasNLP 和用于計算機視覺模型的 KerasCV。
然而,隨著模型使各模態之間的界限越來越模糊(想象一下強大的聊天 LLM 具有圖像輸入功能或是在視覺任務中利用文本編碼器),維持這些獨立的領域變得不那么實際。NLP 和 CV 之間的區別可能會阻礙真正多模態模型的發展和部署,從而導致冗余的工作和碎片化的用戶體驗。
為了解決這個問題,我們很高興地宣布 Keras 生態系統迎來重大變革:隆重推出 KerasHub,一個統一、全面的預訓練模型庫,簡化了對前沿 NLP 和 CV 架構的訪問。KerasHub 是一個中央存儲庫,您可以在穩定且熟悉的 Keras 框架內無縫探索和使用最先進的模型,例如用于文本分析的 BERT 以及用于圖像分類的 EfficientNet。
KerasHub https://keras.io/keras_hub/
統一的開發者體驗
這種統一不僅簡化了對模型的探索和使用,還有助于打造更具凝聚力的生態系統。通過 KerasHub,您可以利用高級功能,例如輕松的發布和共享模型、用于優化資源效率的 LoRA 微調、用于優化性能的量化,以及用于處理大規模數據集的強大多主機訓練,所有這些功能都適用于各種模態。這標志著在普及強大的 AI 工具以及加速開發創新型多模態應用方面邁出了重要一步。
KerasHub 入門步驟
首先在您的系統上安裝 KerasHub,您可以在其中探索大量現成的模型和主流架構的不同實現方式。然后,您就可以輕松地將這些預訓練的模型加載并整合到自己的項目中,并根據您的具體需求對其進行微調,以獲得最佳性能。
現成的模型 https://keras.io/api/keras_hub/models/
安裝 KerasHub
要安裝帶有 Keras 3 的 KerasHub 最新版本,只需運行以下代碼:
$ pip install --upgrade keras-hub現在,您可以開始探索可用的模型。使用 Keras 3 開始工作的標準環境設置在開始使用 KerasHub 時并不需要任何改變:
import os # Define the Keras 3 backend you want to use - "jax", "tensorflow" or "torch" os.environ["KERAS_BACKEND"] = "jax" # Import Keras 3 and KerasHub modules import keras import keras_hub
通過 KerasHub 使用
計算機視覺和自然語言模型
現在,您可以通過 KerasHub 訪問和使用 Keras 3 生態系統中的模型。以下是一些示例:
Gemma
Gemma 是由 Google 開發的一系列前沿且易于使用的開放模型。依托于與 Gemini 模型相同的研究和技術,Gemma 的基礎模型在各種文本生成任務中表現出色,包括回答問題、總結信息以及進行邏輯推理。此外,您還可以針對特定需求自定義模型。
Gemma https://ai.google.dev/gemma/docs/base
在此示例中,您可以使用 Keras 和 KerasHub 加載并開始使用 Gemma 2 2B 參數生成內容。有關 Gemma 變體的更多詳細信息,請查看 Kaggle 上的 Gemma 模型卡。
# Load Gemma 2 2B preset from Kaggle models gemma_lm = keras_hub.models.GemmaCausalLM.from_preset("gemma_2b_en") # Start generating contents with Gemma 2 2B gemma_lm.generate("Keras is a", max_length=32)
Gemma 模型卡 https://www.kaggle.com/models/google/gemma/
PaliGemma
PaliGemma 是一款緊湊型的開放模型,可以理解圖像和文本。PaliGemma 從 PaLI-3 中汲取靈感,以 SigLIP 視覺模型和 Gemma 語言模型等開源組件為基礎,可以針對有關圖像的問題提供詳細且富有洞察力的答案。因此,該模型可以更深入地了解視覺內容,從而實現諸多功能,例如為圖像和短視頻生成描述、識別對象甚至理解圖像中的文本。
import os # Define the Keras 3 backend you want to use - "jax", "tensorflow" or "torch" os.environ["KERAS_BACKEND"] = "jax" # Import Keras 3 and KerasHub modules import keras import keras_hub from keras.utils import get_file, load_img, img_to_array # Import PaliGemma 3B fine tuned with 224x224 images pali_gemma_lm = keras_hub.models.PaliGemmaCausalLM.from_preset( "pali_gemma_3b_mix_224" ) # Download a test image and prepare it for usage with KerasHub url = 'https://storage.googleapis.com/keras-cv/models/paligemma/cow_beach_1.png' img_path = get_file(origin=url) img = img_to_array(load_img(image_path)) # Create the prompt with the question about the image prompt = 'answer where is the cow standing?' # Generate the contents with PaliGemma output = pali_gemma_lm.generate( inputs={ "images": img, "prompts": prompt, } )
PaliGemma https://ai.google.dev/gemma/docs/paligemma
PaLI-3 https://arxiv.org/abs/2310.09199
SigLIP 視覺模型 https://arxiv.org/abs/2303.15343
Gemma 語言模型 https://arxiv.org/abs/2403.08295
有關 Keras 3 上可用的預訓練模型的更多詳細信息,請在 Kaggle 上查看 Keras 中的模型列表。
Kaggle 上查看 Keras 中的模型列表 https://www.kaggle.com/organizations/keras/models
Stability.ai Stable Diffusion 3
您也可以使用計算機視覺模型。例如,您可以通過 KerasHub 使用 stability.ai Stable Diffusion 3:
from PIL import Image from keras.utils import array_to_img from keras_hub.models import StableDiffusion3TextToImage text_to_image = StableDiffusion3TextToImage.from_preset( "stable_diffusion_3_medium", height=1024, width=1024, dtype="float16", ) # Generate images with SD3 image = text_to_image.generate( "photograph of an astronaut riding a horse, detailed, 8k", ) # Display the generated image img = array_to_img(image) img
Stable Diffusion 3 https://stability.ai/news/stable-diffusion-3
有關 Keras 3 上可用的預訓練計算機視覺模型的更多詳細信息,請查看 Keras 中的模型列表。
Keras 中的模型列表 https://keras.io/api/keras_hub/models/
對于 KerasNLP 開發者而言,
有哪些變化?
從 KerasNLP 到 KerasHub 的過渡是一個簡單的過程。只需要將 import 語句從 keras_nlp 更新為 keras_hub。
示例: 以前,您可能需要導入 keras_nlp 才能使用 BERT 模型,如下所示
import keras_nlp # Load a BERT model classifier = keras_nlp.models.BertClassifier.from_preset( "bert_base_en_uncased", num_classes=2, )現在,您只需調整 import,即可使用 KerasHub:
import keras_hub # Load a BERT model classifier = keras_hub.models.BertClassifier.from_preset( "bert_base_en_uncased", num_classes=2, )
對于 KerasCV 開發者而言,
有哪些變化?
如果您當前是 KerasCV 用戶,更新到 KerasHub 能夠為您帶來以下好處:
簡化模型加載:KerasHub 為加載模型提供了統一的 API,如果您同時使用 KerasCV 和 KerasNLP,這可以簡化您的代碼。
框架靈活性:如果您有興趣探索 JAX 或 PyTorch 等不同框架,KerasHub 可以讓您更輕松地將這些框架與 KerasCV 和 KerasNLP 模型結合起來使用。
集中式存儲庫:借助 KerasHub 的統一模型存儲庫,您可以更輕松地查找和訪問模型,未來還可以在其中添加新架構。
如何使我的代碼適配 KerasHub?
模型
目前,我們正在將 KerasCV 模型遷移到 KerasHub。雖然大多數模型已經可用,但有些仍在遷移中。請注意,Centerpillar 模型不會被遷移。您應該能夠在 KerasHub 使用任何視覺模型,方法如下:
import keras_hub # Load a model using preset Model = keras_hub.models..from_preset('preset_name`) # or load a custom model by specifying the backbone and preprocessor Model=keras_hub.models. (backbone=backbone,preprocessor=preprocessor)
Centerpillar https://www.kaggle.com/models/keras/centerpillar
KerasHub 為 KerasCV 開發者帶來了激動人心的新功能,提供了更高的靈活性和擴展能力。其中包括:
內置預處理
每個模型都配備了一個定制的預處理器,用于處理包括調整大小、重新縮放等常規任務,從而簡化您的工作流程。 在此之前,預處理輸入是在向模型提供輸入之前手動執行的。
# Preprocess inputs for example def preprocess_inputs(image, label): # Resize rescale or do more preprocessing on inputs return preprocessed_inputs backbone = keras_cv.models.ResNet50V2Backbone.from_preset( "resnet50_v2_imagenet", ) model = keras_cv.models.ImageClassifier( backbone=backbone, num_classes=4, ) output = model(preprocessed_input)目前,任務模型的預處理已集成到現成的預設中。預處理器會對輸入進行預處理,對樣本圖像進行大小調整和重新縮放。預處理器是任務模型的內在組件。盡管如此,開發者還是可以選擇使用個性化的預處理器。
classifier = keras_hub.models.ImageClassifier.from_preset('resnet_18_imagenet') classifier.predict(inputs)
損失函數
與增強層類似,以前 KerasCV 中的損失函數現在可在 Keras 中通過 keras.losses.
import keras import keras_cv keras_cv.losses.FocalLoss( alpha=0.25, gamma=2, from_logits=False, label_smoothing=0, **kwargs )
FocalLoss 函數 https://keras.io/api/keras_cv/losses/focal_loss/
您只需調整損失函數定義代碼,使用 keras.losses 而不是 keras_cv.losses:
import keras keras.losses.FocalLoss( alpha=0.25, gamma=2, from_logits=False, label_smoothing=0, **kwargs )
-
模型
+關注
關注
1文章
3226瀏覽量
48807 -
深度學習
+關注
關注
73文章
5500瀏覽量
121111 -
nlp
+關注
關注
1文章
488瀏覽量
22033
原文標題:Keras Hub,您的一站式預訓練模型庫
文章出處:【微信號:Google_Developers,微信公眾號:谷歌開發者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論