패션 디자이너에게 Generative AI를 이용한 작업 혁신 알려주기- Part 3
Tags: aws, bedrock, genai
Published: 2024-01-24 03:14:48

지난 [Part 2](https://dev.to/aws-builders/paesyeon-dijaineoege-saengseonghyeong-aireul-iyonghan-jageob-hyeogsin-alryeojugi-part-2-mpm)에서는 드디어 친구에게 Bedrock Image Playground를 이용하여 이미지 생성이 가능하도록 알려주었습니다. 주말 동안 사용해본 친구는 아래와 같은 피드백을 주었습니다.

> - 사무실에서 새로운 제품 디자인이나 컨셉 회의때 이미지 생성을 사용하면 큰 도움이 될 것이다. 번거롭고 긴 시제품 제작이나 그래픽 작업이 필요 없거나 단축 된다.
> - 내가 원하는 이미지 생성이 쉽지만은 않다. 가끔 괴상한 이미지가 나와서 당혹스러울때도 있다.
> - 빨간 가방을 노랑 가방으로 바꾸는게 가능한가?
> - 화면에서 지원하는 기능들에 대해 좀 더 설명해 달라.

친구와 함께 하나씩 해결해보기로 하였습니다.
우선 아직 모르는 기능이나 설정들이 있으므로 좀 더 사용해보면서 정리합니다.

이번에는 SDXL 모델을 사용해보기로 합니다.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b23hz82pgnqah0dinfge.png)

Titan Image Generator 모델보다 SDXL 모델의 설정이 훨씬 간단하네요.
너무 간단하면 커스터마이징이 안되거나 기능이 떨어질수도...
Seed 값은 12345로 고정해둡니다. 세미나에서 Seed 값이 랜덤으로 바뀌면 같은 설정과 같은 프롬프트라도 다른 이미지가 생성되고, Seed 값을 고정하면 같은 이미지가 생성된다고 들었습니다.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fs70ifwyh84mpf67ripw.png)

오! 이번에는 그림 같은 깔끔한 가방 이미지가 생성되었습니다. 모델이 다르니까 결과물도 확실히 다릅니다.

SDXL 모델의 설정값에 대한 정보를 [여기](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/model-parameters-diffusion.html)에서 볼 수 있습니다.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s8d1ili7rdakbpclfsh6.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j0zl3kp3os0h65x23m0p.png)

이전에 사용했던 "woman medel with red backpack on runway" 프롬프트를 사용해 봅니다. 정말 흥미롭네요. 런웨이를 잘 표현했고, 등에 매는 백팩이 아닌 손에 가방을 들고 있습니다.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/itao8w92khrb7x7jtoe7.png)

이번에는 Prompt strength 설정을 30으로 변경했습니다. 이미지가 괴상하게 나오는군요.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/phthv1g6cfy148xvhnth.png)

이번에는 Prompt strength 설정을 5로 변경했습니다. 으악! 사람 목이 돌아가 있습니다. 좀 무섭네요.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rrr683o9a6514re4djib.png)

이번에는 Generation step을 100으로 설정해봤습니다. 다른 이미지가 생성되고 가방을 등에 매고 있습니다.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tln53a0dbbtomusct3cr.png)

이번에는 Generation step을 10으로 줄여봤습니다. 푸하핫! 이거 침흘리고 있는거 맞죠? ㅋㅋㅋ

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h14hdn0yh54a8lolt8p1.png)

다시 설정들을 원복하고 다시 생성해봤습니다. 잉? Seed 값을 고정해도 살짝 다른 이미지가 생성되네요??? 그리고 얼굴 왼쪽 부분이 이상하게 보입니다.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qwlhj6wexb40hnfbs37v.png)

두 모델의 결과물을 한번에 보면 비교가 쉽네요. 같은 프롬프트라도 전혀 다른 결과물이 나오므로 적절한 모델을 사용하는게 의미 있어 보입니다.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zo4hch48ew19ff5ux528.png)

Bedrock은 API를 사용하는거라도 처음에 알고 시작했는데, 그동안 Playground만 사용하고 있었네요. 물론 친구는 개발자나 엔지니어가 아닌 디자이너이므로 Playground를 사용하는게 좋은 선택이겠네요. 
하지만 저는 Bedrock API가 궁금했습니다. 여기 저기 둘러보다 찾았습니다!

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mopvesbh6lf9laf1266c.png)

Copy를 클릭해서 가져왔습니다. 화면의 설정값들이 아래처럼 요청되는군요.

```
aws bedrock-runtime invoke-model \
--model-id amazon.titan-image-generator-v1 \
--body "{\"textToImageParams\":{\"text\":\"woman medel with red backpack on runway\"},\"taskType\":\"TEXT_IMAGE\",\"imageGenerationConfig\":{\"cfgScale\":8,\"seed\":12345,\"quality\":\"standard\",\"width\":512,\"height\":512,\"numberOfImages\":4}}" \
--cli-binary-format raw-in-base64-out \
--region us-east-1 \
invoke-model-output.txt
```

옆에 있던 친구도 제가 하는 과정들을 지켜보며 대충 이해가 간다는듯이 고개를 끄덕입니다. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/51imqwebi6qppubld2t1.png)


저는 위의 요청을 서울 리전의 CloudShell에서 실행해봤습니다. 응답 결과가 base64 인코딩된 텍스트 파일로 만들어진게 보입니다.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/82h711civrovsu5iwmvu.png)

Bedrock API에 대해서는 [여기](https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/using-api.html) 링크를 참고하시고...

Part 3 는 여기에서 마무리하고, 다음 Part 4에서는 친구와 함께 Prompt 에 대해 다뤄 볼 예정입니다.