O mundo do aprendizado profundo está evoluindo rapidamente, e os modelos pré-treinados tornam-se cada vez mais cruciais para uma ampla gama de tarefas. O Keras, conhecido pela API fácil de usar e pelo foco na acessibilidade, sempre esteve na vanguarda desse movimento, com bibliotecas especializadas como o KerasNLP para modelos baseados em texto e o KerasCV para modelos de visão computacional.
No entanto, à medida que os modelos reduzem cada vez mais a distância entre as modalidades (considere os LLMs de chat avançados, com entradas de imagem ou tarefas de visão que utilizam codificadores de texto), manter esses domínios separados torna-se menos prático. A divisão entre PLN e CV pode dificultar o desenvolvimento e a implantação de modelos verdadeiramente multimodais, levando à redundância de esforços e à fragmentação da experiência do usuário.
Para lidar com isso, temos o prazer de anunciar uma grande evolução no ecossistema do Keras: o KerasHub, uma biblioteca unificada e abrangente para modelos pré-treinados que simplifica o acesso a arquiteturas de PLN e CV de ponta. O KerasHub é um repositório central no qual você pode explorar e utilizar facilmente modelos de última geração, como o BERT para análise de texto, juntamente com o EfficientNet para classificação de imagens, dentro de um único framework consistente e familiar do Keras.
Essa unificação não só simplifica a descoberta e o uso de modelos, como também promove um ecossistema mais coeso. Com o KerasHub, você pode utilizar recursos avançados, como publicação e compartilhamento fáceis de modelos, ajuste de LoRA para a adaptação eficiente de recursos, quantização para desempenho otimizado e treinamento multi-host robusto para lidar com conjuntos de dados em larga escala, todos aplicáveis em diversas modalidades. Isso marca um passo significativo para a democratização do acesso a ferramentas avançadas de IA e a aceleração do desenvolvimento de aplicativos multimodais inovadores.
Vamos começar instalando o KerasHub no sistema. A partir daí, você poderá explorar a extensa coleção de modelos prontamente disponíveis e diferentes implementações de arquiteturas populares. Assim, você poderá carregar e incorporar facilmente esses modelos pré-treinados em seus próprios projetos e ajustá-los para um desempenho ideal de acordo com seus requisitos específicos.
Para instalar a versão mais recente do KerasHub com o Keras 3, basta executar:
$ pip install --upgrade keras-hub
Agora, você pode começar a explorar os modelos disponíveis. A configuração padrão do ambiente para começar a trabalhar com o Keras 3 não muda em nada para começar a usar o 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
Agora, você pode começar a trabalhar com o KerasHub para acessar e usar os modelos disponíveis no ecossistema Keras 3. Veja alguns exemplos abaixo:
O Gemma é uma coleção de modelos abertos de ponta, porém acessíveis, desenvolvidos pelo Google. Com base na mesma pesquisa e tecnologia que estão por trás dos modelos Gemini, os modelos de base do Gemma se destacam em várias tarefas de geração de texto. Isso inclui respostas a perguntas, resumo de informações e raciocínio lógico. Além disso, eles podem ser personalizados para atender a necessidades específicas.
Neste exemplo, usamos o Keras e o KerasHub para carregar e começar a gerar conteúdo usando os parâmetros do Gemma2 2B. Para obter mais detalhes sobre as variantes do Gemma, confira o card de modelo do Gemma no Kaggle.
# 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)
O PaliGemma é um modelo aberto compacto que compreende imagens e texto. Inspirado no PaLI-3 e criado com base em componentes de código aberto, como o modelo de visão SigLIP e o modelo de linguagem Gemma, o PaliGemma é capaz de fornecer respostas detalhadas e perspicazes para perguntas sobre imagens. Isso permite uma compreensão mais profunda do conteúdo visual, habilitando recursos como geração de legendas para imagens e vídeos curtos, identificação de objetos e até mesmo leitura de textos dentro de imagens.
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,
}
)
Para obter mais detalhes sobre os modelos pré-treinados disponíveis no Keras 3, confira a lista de modelos no Keras no Kaggle.
Você também tem os modelos de visão computacional disponíveis para uso. Por exemplo: você pode usar o stability.ai Stable Diffusion 3 com o KerasHub:
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
Para obter mais detalhes sobre os modelos de visão computacional pré-treinados disponíveis no Keras 3, confira a lista de modelos no Keras.
A transição do KerasNLP para o KerasHub é um processo simples, que requer apenas a atualização das instruções de importação de keras_nlp
para keras_hub
.
Por exemplo, anteriormente, você importava o keras_nlp para usar um modelo BERT como mostrado abaixo:
import keras_nlp
# Load a BERT model
classifier = keras_nlp.models.BertClassifier.from_preset(
"bert_base_en_uncased",
num_classes=2,
)
Basta ajustar a importação para começar a usar o KerasHub:
import keras_hub
# Load a BERT model
classifier = keras_hub.models.BertClassifier.from_preset(
"bert_base_en_uncased",
num_classes=2,
)
A atualização para o KerasHub oferece os seguintes benefícios para os usuários do KerasCV:
No momento, os modelos KerasCV estão sendo portados para o KerasHub. Embora a maioria deles já esteja disponível, alguns ainda estão em andamento. Observe que o modelo Centerpillar não será portado. Você deverá poder usar qualquer modelo de visão no KerasHub com:
import keras_hub
# Load a model using preset
Model = keras_hub.models.<model_name>.from_preset('preset_name`)
# or load a custom model by specifying the backbone and preprocessor
Model = keras_hub.models.<model_name>(backbone=backbone, preprocessor=preprocessor)
O KerasHub introduz novos recursos interessantes para os desenvolvedores do KerasCV, oferecendo mais flexibilidade e recursos expandidos. Isso inclui:
Cada modelo é acompanhado por um pré-processador personalizado que lida com tarefas de rotina, incluindo redimensionamento, reescalonamento e muito mais, o que otimiza os fluxos de trabalho.
Antes disso, o pré-processamento de entradas era realizado manualmente, antes do fornecimento das entradas ao modelo.
# 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)
Atualmente, o pré-processamento dos modelos de tarefas está integrado dentro das predefinições estabelecidas. As entradas passam pelo pré-processamento, no qual as amostras de imagens são redimensionadas e reescalonadas dentro do pré-processador. O pré-processador é um componente intrínseco do modelo de tarefa, mas há a opção de utilizar um pré-processador personalizado.
classifier = keras_hub.models.ImageClassifier.from_preset('resnet_18_imagenet')
classifier.predict(inputs)
Semelhante às camadas de aumento, as funções loss anteriormente presentes no KerasCV agora estão disponíveis no Keras via keras.losses.<loss_function>
. Por exemplo, se você estiver usando a função FocalLoss:
import keras
import keras_cv
keras_cv.losses.FocalLoss(
alpha=0.25, gamma=2, from_logits=False, label_smoothing=0, **kwargs
)
Basta ajustar o código de definição da função loss para usar keras.losses
em vez de keras_cv.losses
:
import keras
keras.losses.FocalLoss(
alpha=0.25, gamma=2, from_logits=False, label_smoothing=0, **kwargs
)
Descubra o mundo do KerasHub hoje mesmo:
Participe da comunidade do Keras e desbloqueie o poder dos modelos de aprendizado profundo unificados, acessíveis e eficientes. O futuro da IA é multimodal, e o KerasHub é a sua porta de entrada para ele!