Study Programming/Google AI기초공부(with CloudSkillBoost)

[Imagen 4/4] Build a Multi-Modal GenAI Application: Challenge Lab (멀티모달 생성형 AI 애플리케이션 빌드: 챌린지 실습)

네모메모 2025. 9. 19. 15:59
반응형

 

Build a Multi-Modal GenAI Application: Challenge Lab

(멀티모달 생성형 AI 애플리케이션 빌드: 챌린지 실습)

 

 

 

 


 

Challenge scenario

시나리오:

AI 기반 꽃다발 디자인 회사의 개발자입니다. 고객이 꿈꾸는 꽃다발을 설명하면, 시스템은 고객의 승인을 위해 사실적인 이미지를 생성합니다. 사용자 경험을 더욱 향상시키기 위해 최첨단 이미지 분석 기능을 통합하여 생성된 꽃다발에 대한 설명적 요약을 제공합니다. (...생략...)

 


 

작업 1) generate_bouquet_image(prompt)이름의 Python 함수 추가

   - 이 함수는 제공된 prompt를 사용하여 imagen-3.0-generate-002 모델을 호출하고 이미지를 생성하여 로컬에 저장

   - "Create an image containing a bouquet of 2 sunflowers and 3 roses" (해바라기 2송이와 장미 3송이로 이루어진 꽃다발이 포함된 이미지를 만들어 줘)라는 프롬프트를 사용

 

 

1. 파일 생성

2. 요구하는 generate_bouquet_image(prompt) 메소드 작성합니다.

=> 실습 1번에서 사용된 코드를 이용하여 작성합니다.

import vertexai
from vertexai.preview.vision_models import ImageGenerationModel

def generate_bouquet_image(
    prompt: str
) -> vertexai.preview.vision_models.ImageGenerationResponse:

    project_id='${실습 시작 시 제공된 ProjectID 입력}'
    location='${실습 시작 시 제공된 Location 입력}'
    output_file='image.jpeg'

    vertexai.init(project=project_id, location=location)

    model = ImageGenerationModel.from_pretrained("imagen-3.0-generate-002")

    images = model.generate_images(
        prompt=prompt,
        # Optional parameters
        number_of_images=1,
        seed=1,
        add_watermark=False,
    )

    images[0].save(location=output_file)

    return images

generate_bouquet_image(
    prompt='Create an image containing a bouquet of 2 sunflowers and 3 roses',
)

 

 

 

3. (주의) 왠지 모르겠지만 터미널 창을 보면 경로가 /home/student 로 되어 있으므로 여기에 파일 저장해야 합니다.   

      -> 대략 task1.py 로 저장

 

4. 터미널 창에 아래 명령어 실행

/usr/bin/python3 task1.py

 

ㄴ> 생성된 이미지 

 

 

 

 


 

작업 2) analyze_bouquet_image(image_path) 라는 Python 함수 추가

   - 이 함수는 이미지 경로를 입력으로 가져오고 텍스트 프롬프트를 사용하여 전달된 이미지를 기반으로 생일 축하 메시지를 생성하여 gemini-2.0-flash-001 모델로 보냄

   -  대답이 생성되는 즉시 얻을 수 있도록 프롬프트 요청에 스트리밍을 사용 설정

 

 

1. 파일 생성

2. 요구하는 analyze_bouquet_image(image_path) 메소드 작성합니다.

=> 실습 3번Doc를 참고하여 사용된 코드를 이용하여 작성합니다. (주의 : genai로 파라미터 다름)

from google import genai
from google.genai.types import HttpOptions, Part

def analyze_bouquet_image(image_path):
    
    client = genai.Client(
    vertexai=True,
    project='${실습 시작 시 제공된 ProjectID 입력}',
    location='${실습 시작 시 제공된 Location 입력}',
    http_options=HttpOptions(api_version="v1")
)

    with open(image_path, 'rb') as f:
        image_bytes = f.read()

    for chunk in client.models.generate_content_stream(
        model='gemini-2.0-flash-001',
        contents=[
            'What is this image about?',
            Part.from_bytes(data=image_bytes, mime_type="image/jpeg"),
        ],
    ):
        print(chunk.text, end='')

analyze_bouquet_image('image.jpeg')

 

 

3. (주의) 왠지 모르겠지만 터미널 창을 보면 경로가 /home/student 로 되어 있으므로 여기에 파일 저장해야 합니다.   

      -> 대략 task2.py 로 저장

 

4. 터미널 창에 아래 명령어 실행

/usr/bin/python3 task2.py

 

ㄴ> 응답 결과 

The image shows a bouquet of flowers. The bouquet contains sunflowers with bright yellow petals and dark centers, as well as red and light pink roses. The arrangement appears to be well lit.
해석) 이 이미지는 꽃다발을 보여줍니다. 꽃다발에는 밝은 노란색 꽃잎과 어두운 중앙을 가진 해바라기, 그리고 빨간색과 연분홍색 장미가 들어 있습니다. 조명이 밝은 것으로 보입니다.

 

 

 

 


출처

https://www.cloudskillsboost.google/course_templates/1076/labs/584321

 

Introduction to Building Real-World AI Applications with Gemini and Imagen - 멀티모달 생성형 AI 애플리케이션 빌드

이 챌린지 실습에서는 생성형 AI 모델을 통합하여 이미지 생성기 앱과 이미지에 대해 질문하고 유용한 텍스트 기반 대답을 받을 수 있는 앱을 빌드하기 위한 Google의 Vertex AI SDK에 대한 이해도를

www.cloudskillsboost.google

 

 

 

 

 

 

 

반응형