딥 러닝의 세계는 빠르게 진화하고 있으며 광범위한 작업에서 사전 훈련된 모델의 중요성이 점점 더 커지고 있습니다. 사용자 친화적인 API와 높은 접근성으로 알려진 Keras는 텍스트 기반 모델을 위한 KerasNLP 및 컴퓨터 비전 모델을 위한 KerasCV 같은 특화된 라이브러리로 이러한 변화를 주도해왔습니다.
그러나 텍스트 인코더를 활용하는 비전 작업이나 이미지 입력이 있는 강력한 채팅 LLM에서 알 수 있듯이, 모델이 모달리티 간의 경계를 점점 모호하게 만들면서 이러한 도메인을 개별적으로 유지하는 것은 실용성이 떨어집니다. NLP와 CV의 구분은 진정한 멀티모달 모델의 개발과 배포를 저해하여 불필요한 작업 중복과 일관성 없는 사용자 경험으로 이어질 수 있습니다.
이 문제 해결을 위해 Keras 생태계에서 큰 진전을 이루었음을 알려드리게 되어 매우 기쁩니다. 바로 KerasHub입니다. KerasHub는 사전 훈련된 모델을 위한 통합되고 포괄적인 라이브러리로서 최첨단 NLP 및 CV 아키텍처 모두에 대한 액세스를 간소화합니다. KerasHub는 일관되고 친숙한 Keras 프레임워크 내에서 이미지 분류를 위한 EfficientNet과 함께 텍스트 분석을 위한 BERT 같은 최첨단 모델을 원활하게 탐색하고 활용할 수 있는 중앙 저장소입니다.
이러한 통합은 모델 검색 및 사용을 단순화할 뿐만 아니라 보다 일관된 생태계를 조성합니다. KerasHub를 사용하면 손쉬운 모델 게시 및 공유, 리소스 효율적인 적응을 위한 LoRA 미세 조정, 최적화된 성능을 위한 양자화, 대규모 데이터 세트 처리를 위한 강력한 멀티 호스트 학습 등, 다양한 모달리티에 걸쳐 모두 적용할 수 있는 고급 기능을 활용할 수 있습니다. 이는 강력한 AI 도구에 대한 액세스를 대중화하고 혁신적인 멀티모달 애플리케이션 개발을 가속화하는 데 있어 진일보했음을 의미합니다.
먼저 시스템에 KerasHub를 설치하는 작업부터 시작하겠습니다. 그러면 바로 사용할 수 있는 모델로 구성된 광범위한 컬렉션과 인기 있는 아키텍처의 다양한 구현을 살펴볼 수 있습니다. 그런 다음 이처럼 사전 훈련된 모델을 쉽게 로드해서 여러분의 프로젝트에 통합하고 특정 요구 사항에 따라 최적의 성능을 발휘하도록 미세 조정할 준비가 됩니다.
Keras 3로 최신 KerasHub 버전을 설치하려면 다음을 실행하세요.
$ pip install --upgrade keras-hub
이제부터 사용 가능한 모델을 탐색할 수 있습니다. KerasHub 사용을 시작하기 위해서 Keras 3로 작업을 시작하기 위한 표준 환경 설정은 전혀 변경되지 않습니다.
import os
# 사용하려는 Keras 3 백엔드 정의 - "jax", "tensorflow" 또는 "torch"
os.environ["KERAS_BACKEND"] = "jax"
# Keras 3 및 KerasHub 모듈 가져오기
import keras
import keras_hub
이제 KerasHub로 시작해서 Keras 3 생태계에서 이용 가능한 모델에 액세스해 사용할 준비가 되었습니다. 아래 예시를 참고하세요.
Gemma는 Google이 개발한 최첨단이면서도 접근성이 높은 개방형 모델 컬렉션입니다. Gemini 모델에 사용된 것과 동일한 연구 및 기술을 활용하는 Gemma의 기본 모델들은 다양한 텍스트 생성 작업에 탁월한 성능을 자랑합니다. 질문에 답하고 정보를 요약하고 논리적 추론에 참여하는 작업 등이 이에 포함됩니다. 또한 특정 요구 사항을 해결할 수 있도록 맞춤 설정도 가능합니다.
이 예시에서는 Gemma2 2B 매개변수를 사용하는 콘텐츠를 로드 및 생성하기 위해 Keras와 KerasHub를 사용합니다. Gemma 변이에 대한 자세한 내용은 Kaggle의 Gemma 모델 카드를 참조하세요.
# Kaggle 모델에서 Gemma 2 2B 사전 설정 로드
gemma_lm = keras_hub.models.GemmaCausalLM.from_preset("gemma_2b_en")
# Gemma 2 2B로 콘텐츠 생성 시작
gemma_lm.generate("Keras is a", max_length=32)
PaliGemma는 이미지와 텍스트를 모두 이해하는 콤팩트하고 개방적인 모델입니다. PaLI-3에서 영감을 받고 SigLIP 비전 모델, Gemma 언어 모델 등의 오픈소스 구성요소를 기반으로 개발된 PaliGemma는 이미지에 대한 질문에 자세하고 유용한 답변을 제공할 수 있습니다. 이를 통해 이미지와 짧은 동영상에 대한 자막 생성, 객체 식별, 이미지 내 텍스트 읽기 등의 기능을 사용하여 시각적 콘텐츠를 더 깊이 이해할 수 있습니다.
import os
# 사용하려는 Keras 3 백엔드 정의 - "jax", "tensorflow" 또는 "torch"
os.environ["KERAS_BACKEND"] = "jax"
# Keras 3 및 KerasHub 모듈 가져오기
import keras
import keras_hub
from keras.utils import get_file, load_img, img_to_array
# 224x224 이미지로 세부 조정된 PaliGemma 3B 가져오기
pali_gemma_lm = keras_hub.models.PaliGemmaCausalLM.from_preset(
"pali_gemma_3b_mix_224"
)
# 테스트 이미지를 다운로드하고 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))
# 이미지에 대한 질문으로 프롬프트 만들기
prompt = 'answer where is the cow standing?'
# PaliGemma로 콘텐츠 생성
output = pali_gemma_lm.generate(
inputs={
"images": img,
"prompts": prompt,
}
)
Keras 3에서 제공되는 사전 훈련된 모델에 대한 자세한 내용은 Kaggle에서 Keras의 모델 목록을 확인하세요.
사용 가능한 컴퓨터 비전 모델도 있습니다. 예를 들어 stability.ai Stable Diffusion 3를 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",
)
# SD3로 이미지 생성
image = text_to_image.generate(
"photograph of an astronaut riding a horse, detailed, 8k",
)
# 생성된 이미지 표시
img = array_to_img(image)
img
Keras 3에서 제공되는 사전 훈련된 컴퓨터 비전 모델에 대한 자세한 내용은 Keras의 모델 목록을 확인하세요.
KerasNLP에서 KerasHub로 전환하는 과정은 간단합니다. keras_nlp
에서 keras_hub
로의 가져오기 문을 업데이트만 하면 됩니다.
예: 아래와 같은 BERT 모델을 사용하려고 keras_nlp를 가져오는 경우 이전에는 다음 문을 사용했습니다.
import keras_nlp
# BERT 모델 로드
classifier = keras_nlp.models.BertClassifier.from_preset(
"bert_base_en_uncased",
num_classes=2,
)
가져오기를 조정하면 KerasHub를 사용할 준비가 됩니다.
import keras_hub
# BERT 모델 로드
classifier = keras_hub.models.BertClassifier.from_preset(
"bert_base_en_uncased",
num_classes=2,
)
현재 KerasCV 사용자라면 KerasHub로 업데이트 시 다음과 같은 이점이 있습니다.
KerasCV 모델은 현재 KerasHub로 이식 중입니다. 대부분의 모델은 이미 사용 가능하지만 일부 소수의 모델은 아직 진행 중입니다. Centerpillar 모델은 이식되지 않을 예정임을 양지해 주십시오. KerasHub에서 다음 문으로 모든 비전 모델을 사용할 수 있을 것입니다.
import keras_hub
# 사전 설정을 사용하여 모델을 로드하거나
Model = keras_hub.models.<model_name>.from_preset('preset_name`)
# 백본 및 전처리기를 지정하여 사용자 설정 모델 로드
Model = keras_hub.models.<model_name>(backbone=backbone, preprocessor=preprocessor)
더 큰 유연성 및 확장된 기능과 더불어 KerasHub는 KerasCV 개발자를 위해 다음을 포함한 흥미진진하고 새로운 여러 기능을 도입합니다.
각 모델에는 크기 조정과 재조정 등 루틴 작업을 처리하는 맞춤형 전처리기가 함께 제공되어 워크플로를 간소화합니다.
이 기능이 나오기 전에는 입력 전처리를 수동으로 수행한 후 모델에 입력값을 제공했습니다.
# 전처리 입력의 예
def preprocess_inputs(image, label):
# 입력값에 대해 크기를 조정하거나 더 많은 전처리 수행
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.losses.<loss_function>
을 통해 Keras에서 사용할 수 있습니다. 예를 들어, 현재 FocalLoss 함수를 사용 중이라면 다음 문을 사용하세요.
import keras
import keras_cv
keras_cv.losses.FocalLoss(
alpha=0.25, gamma=2, from_logits=False, label_smoothing=0, **kwargs
)
keras_cv.losses
대신 keras.losses
를 사용하도록 손실 함수 정의 코드를 조정하기만 하면 됩니다.
import keras
keras.losses.FocalLoss(
alpha=0.25, gamma=2, from_logits=False, label_smoothing=0, **kwargs
)
지금 바로 KerasHub의 세계로 들어오세요.
Keras 커뮤니티에 가입하여 통합적이고 접근성이 높으며 효율적인 딥 러닝 모델의 힘을 활용하세요. AI의 미래는 멀티모달이며 KerasHub가 그 미래로 가는 관문입니다!