본문 바로가기

IT/개발

DALLI-E 모델을 이용한 이미지 수정 및 유사이미지 만들기(chatGPT, OpenAI API)

반응형

 

DALLI-E 모델 설명 참조 

https://yongeekd01.tistory.com/144

 

chatGPT, OpenAI API, DALLI-E 모델을 이용한 이미지 생성 기초

1.1 Image Models 1.1.1 DALL-E 모델 설명 DALL-E는 자연어로 된 설명을 바탕으로 사실적인 이미지와 예술 작품을 만들 수 있는 인공지능 시스템 - dall-e-3 DALL-E : 3 2023년 11월에 출시된 최신 DALL-E 모델 - DALL-E

yongeekd01.tistory.com

 

1.1     이미지 수정

1.1.1  API 설명

기능 :

원본 이미지와 마스크 이미지, 프롬프트가 주어지면 편집된 이미지 또는 확장된 이미지를 생성

 

사용법 :

Request

client.images.edit(

  image=open("otter.png", "rb"),

  mask=open("mask.png", "rb"),

  prompt="A cute baby sea otter wearing a beret",

  n=2,

  size="1024x1024"

)

 

Response

{

  "created": 1589478378,

  "data": [

    {

      "url": "https://..."

    },

    {

      "url": "https://..."

    }

  ]

}

 

파라메터 :

 

-       image : 수정할 이미지. 4MB 미만의 정사각형 PNG 파일. 마스크를 제공하지 않으면 이미지에 투명도가 있어야 하며, 이 투명도가 마스크로 사용됨

-       prompt : 원하는 이미지에 대한 텍스트 설명입니다. 최대 길이는 1000

-       mask : 완전히 투명한 영역(: 알파가 0인 경우)이 이미지를 편집할 위치를 나타내는 추가 이미지. 4MB 미만의 PNG 파일. 이미지와 크기 동일

 

 

 

1.1.2  입력 이미지 수정해보기 (MASK 이미지 이용)

 원본 이미지와 동일한 크기의 이미지의 일부를 mask (png 투명 레이어 이용) 하여 입력으로 사용 

프롬프트는 현재 한글이 지원되지 않고 있는것같음. 이상하게 표시됨

 

 

 

 

from openai import OpenAI

client = OpenAI()

 

#현재 영문 prompt 지원된다.

#원본은 alpha 없어도 되지만 mask alpha 포함하여야한다.

response = client.images.edit(

  model="dall-e-2",

  image=open("dog.png", "rb"),  

  mask=open("dog_mask.png", "rb"),

  prompt="The dog is wearing a large cowboy hat",  

  n=1,

  size="1024x1024"

) 

 

image_url = response.data[0].url

print(image_url)

 

import requests

 

save_path = "dog_editing.png"

response = requests.get(image_url, stream=True)

if response.status_code == 200:

    with open(save_path, 'wb') as file:

        for chunk in response.iter_content(chunk_size=128):

            file.write(chunk)

    print(f"이미지 다운로드 완료: {save_path}")

else:

    print(f"이미지 다운로드 실패. HTTP 상태 코드: {response.status_code}")

 

#생성된 이미지

 

 

 

2.1     이미지 변형(variation)

 

2.1.1  API 설명

 

기능 :

주어진 이미지를 유사하게 변형ㅋ`

 

사용법 :

Request

response = client.images.create_variation(

  image=open("image_edit_original.png", "rb"),

  n=2,

  size="1024x1024"

)

 

Response

{

  "created": 1589478378,

  "data": [

    {

      "url": "https://..."

    },

    {

      "url": "https://..."

    }

  ]

}

 

파라메터 :

 

 

2.1.2  입력 이미지를 이용하여 여러가지로 변형 해보기 

 3개의 변형 이미지를 생성 (n=3)

 

from openai import OpenAI

client = OpenAI()

 

#주어진 이미지를 3개로 변형해본다.  

response = client.images.create_variation(

  model="dall-e-2",

  image=open("dog.png", "rb"),    

  n=3,

  size="1024x1024"

)

 

 

 

import requests

 

#이미지 저장

for n, data in enumerate(response.data) :

    print(data.url)

   

    save_path = f"dog_variation_{n}.png"

    response = requests.get(data.url, stream=True)

    if response.status_code == 200:

        with open(save_path, 'wb') as file:

            for chunk in response.iter_content(chunk_size=128):

                file.write(chunk)

        print(f"이미지 다운로드 완료: {save_path}")

    else:

        print(f"이미지 다운로드 실패. HTTP 상태 코드: {response.status_code}")

 

   

반응형