[00:00]
어제 OpenAI가
[00:02]
API에 GPT 이미지 모델 1을 추가한 것을 보았습니다.
[00:06]
이것은 ChatGPT에 있는 이미지 모델로
[00:08]
바로 지브리 스튜디오 스타일의
[00:09]
바이럴 트렌드를 만든 그 모델입니다.
[00:12]
오늘 한번 사용해보면 좋겠다고 생각했죠.
[00:14]
API와 코드를 어떻게 설정하는지 살펴보고
[00:17]
제가 만든 꽤 멋진 앱도
[00:19]
지금 보여드리려고 합니다.
[00:20]
보시다시피 비용이 좀 있지만
[00:23]
몇 번 실행해봤는데 그렇게 나쁘지 않았어요.
[00:26]
왜냐하면 보시다시피 5달러 40센트 정도인데
[00:28]
물론 원하는 품질을 선택할 수 있고
[00:32]
이것이 토큰 수에 영향을 미칩니다.
[00:34]
그래서 얼마나 지불할지
[00:36]
직접 결정할 수 있어요.
[00:38]
그래서 그렇게 나쁘진 않습니다.
[00:40]
물론 이것은 텍스트이고
[00:43]
이미지 입력과 출력 모두 가능합니다.
[00:46]
정말 멋지죠. 우리는
[00:48]
이미지 편집, 이미지 생성,
[00:50]
그리고 인페인팅이 있는데
[00:52]
이것이 제가 처음 만들어보고 싶었던 앱입니다.
[00:55]
그래서 바로 만들어봤어요.
[00:57]
어떻게 작동하는지 보여드리겠습니다.
[00:59]
네, OpenAI 이미지는 사용하지 않을 건데
[01:01]
나중에 그것도 시도해볼 거예요.
[01:03]
지금은 앱을 열어보겠습니다.
[01:05]
여기 우리가 가지고 있는 이미지를 설정했습니다.
[01:08]
자, 실행해 보겠습니다.
[01:11]
이것은 인페인팅 원리를 기반으로 합니다.
[01:14]
ChatGPT에는 없었지만
[01:16]
여기서는 아주 쉽게 만들 수 있죠.
[01:18]
자, 브러시 크기를 선택하고
[01:21]
여기 멋진 여성이 있네요.
[01:24]
목걸이가 마음에 들지 않아서
[01:26]
제거해보겠습니다.
[01:29]
여기 텍스트도 지워보죠.
[01:31]
팔에 문신을 넣어보면 좋겠어요.
[01:34]
자, 한번 추가해보죠.
[01:37]
여기 인페인팅을 해보겠습니다.
[01:40]
이제 프롬프트를 입력해야 하는데
[01:42]
프롬프트를 작성할 수 있습니다.
[01:44]
'목걸이를 제거하고,
[01:46]
팔에 호랑이 문신을 추가하고,
[01:49]
자연스럽게 만들고,
[01:50]
마이크의 텍스트를 제거해주세요.'
[01:51]
이제 이 마스크를 저장하겠습니다.
[01:54]
저장됐고, 이제 편집을 적용하면 됩니다.
[01:57]
네, 그게 다예요.
[01:59]
원본 이미지를 볼 수 있게
[02:01]
이미지도 추가했고
[02:03]
생성된 이미지도 볼 수 있습니다.
[02:07]
잠시만 기다려주세요.
[02:09]
1-2분 정도 걸린다고 하지만
[02:12]
제 경험상 매우 빨랐어요.
[02:14]
이제 보겠습니다.
[02:15]
응답이 오면 다시 보여드리죠.
[02:18]
자, 보시면 꽤 좋아보이죠?
[02:19]
확대해서 보시면
[02:21]
거의 동일한 인물이에요.
[02:23]
멋진 문신이 생겼고
[02:26]
꽤 잘 나왔죠?
[02:27]
호랑이가 자연스럽게 보입니다.
[02:29]
회색 톤으로 잘 표현됐고요.
[02:33]
텍스트도 완벽하게 제거됐고
[02:36]
목걸이도 깔끔하게 지워졌네요.
[02:38]
피부톤이 약간 변한 것을 볼 수 있는데
[02:41]
이건 따로 지정하지 않았지만
[02:43]
괜찮은 것 같습니다.
[02:47]
이제 원한다면
[02:50]
캔버스를 지우고
[02:52]
다시 시작할 수 있습니다.
[02:55]
하지만 다른 이미지를 시도해보고 싶어서
[02:57]
OpenAI 로고로 한번 해보겠습니다.
[03:00]
자, 이렇게 해보겠습니다.
[03:02]
여기 로고가 있는데요,
[03:04]
제가 시도해보고 싶은 것이 있습니다.
[03:08]
이 부분을 제거해보도록 하겠습니다.
[03:12]
여기 이름을 변경해보겠습니다.
[03:15]
'Closed AI'라는 텍스트를 시도해보고
[03:18]
배경은 그대로 유지하고 싶습니다.
[03:21]
이 마스크를 저장하고
[03:24]
편집을 적용해보겠습니다.
[03:26]
여기서 했던 것처럼 같은 폰트가 유지되는지 보고 싶네요.
[03:29]
OpenAI 폰트가 유지되어야 할 텐데요.
[03:32]
좋네요, 잘 됐습니다.
[03:34]
이게 원본이고,
[03:36]
이게 새로운 버전입니다.
[03:38]
정확히 같은 폰트가 적용되었죠.
[03:40]
아주 잘 됐습니다.
[03:42]
여기 간격도 꽤 좋아 보이네요.
[03:43]
투명 배경이 적용되었지만,
[03:46]
'Closed AI'로 잘 나왔네요. 꽤 좋아 보입니다.
[03:49]
네, 정말 만족스럽네요.
[03:51]
이 앱을 단 몇 분 만에 만들었는데,
[03:54]
설정하기도 매우 간단했습니다.
[03:57]
이런 인페인팅 기능을
[03:59]
OpenAI가 왜 직접 제공하지 않는지 모르겠네요.
[04:02]
매우 강력한 기능인데 말이죠.
[04:05]
자, 이게 앱입니다.
[04:07]
나중에 한 번 더 시도해보고,
[04:08]
여러분도 시도해볼 수 있도록
[04:10]
코드를 공유하도록 하겠습니다.
[04:12]
이제 모델로 돌아가서
[04:15]
API에서 어떻게 요청을 하는지
[04:17]
살펴보겠습니다. 이전과는 좀 다릅니다.
[04:19]
알겠죠?
[04:21]
자, 보시면
[04:22]
문서의 이미지 생성 부분에서
[04:24]
GPT-Image-1 모델을
[04:26]
참조하고 있는 것을 확인할 수 있습니다.
[04:30]
오늘은 파이썬을 사용할 건데요,
[04:32]
간단한 예제를 보여드리겠습니다.
[04:34]
이게 필요한 전부입니다.
[04:36]
20줄의 코드면 됩니다.
[04:38]
간단한 텍스트 프롬프트만 입력하고,
[04:40]
이걸 client.image.generate에
[04:41]
전달하기만 하면 됩니다.
[04:44]
모델을 GPT-Image-1으로 설정하고,
[04:46]
파일을 저장할 위치를 지정할 수 있습니다.
[04:49]
이걸 복사해서
[04:50]
붙여넣기만 하면 됩니다.
[04:53]
자, 이제 이미지를 만들어보겠습니다.
[04:56]
음... 좋습니다.
[04:58]
누군가의 컴퓨터에 있는 이미지나
[05:01]
보여주기 부끄러운 이미지를 만들어보죠.
[05:04]
이름은 IMG
[05:06]
01356이라고 하겠습니다.
[05:08]
그리고 여기 프롬프트를 입력하겠습니다.
[05:11]
뭔가 생각해보죠.
[05:12]
자, 한번 시도해보겠습니다.
[05:14]
보여주기 부끄러운 이미지.
[05:17]
포토리얼리스틱하게요.
[05:20]
랜덤한 이미지를 만들어보죠.
[05:22]
어떤 결과가 나올지 봅시다.
[05:24]
이미지를 저장할 때는
[05:27]
image1356.png로 저장하겠습니다.
[05:30]
어떤 결과가 나올지 모르지만,
[05:32]
19줄의 코드로 GPT-Image-1을 사용해
[05:35]
이미지를 생성할 수 있다는 것을
[05:38]
보여드리고 싶었습니다. 매우 간단하죠.
[05:40]
이를 통해 많은 것을 할 수 있습니다.
[05:42]
오늘 아침에 제가 만든 것처럼
[05:44]
앱을 만들 수도 있죠.
[05:46]
아, 안전 제한에
[05:49]
걸렸네요.
[05:50]
음... 다시 시도해보죠.
[05:54]
조금 다르게 해보겠습니다.
[05:55]
보여주기 부끄러운
[05:57]
제 방 이미지를 한번 시도해보죠.
[06:00]
네, 저는 API에서는 생성할 수 있는 이미지가
[06:01]
꽤 엄격하게 제한될 것이라고 예상했어요.
[06:05]
API로 제공되는 만큼 이런 제한이 필요했겠죠.
[06:08]
아마도 이렇게 설정해야 했을 거예요.
[06:10]
그리고 한 가지 더 아쉬운 점이 있는데,
[06:12]
이것은 꽤 큰 단점이에요.
[06:14]
영상 마지막에 보여드리도록 하겠습니다.
[06:16]
자, 이제 이미지가 나왔네요.
[06:17]
한번 볼까요?
[06:19]
어, 방이 정말 지저분하네요, 그렇죠?
[06:23]
와우. 음, 꽤 잘 나왔네요.
[06:26]
한 가지 더 테스트를 해볼까요?
[06:29]
좀 부끄러울 수도 있지만 보여드리겠습니다.
[06:31]
제 아침 루틴을 한번 시도해볼게요.
[06:34]
어떤 결과가 나올지 모르겠네요.
[06:36]
자, 한번 확인해볼까요? 아침 루틴에서 부끄러운 게
[06:39]
뭐가 있나요?
[06:41]
그냥 이를 닦고 있는 모습이네요.
[06:43]
이 정도면 괜찮네요. 자, OpenAI로 돌아가보면
[06:46]
이미지를 결합할 수도 있다는 걸 알 수 있어요.
[06:48]
저도 한번 시도해보고 싶었는데,
[06:50]
코드도 30줄 정도밖에 안 되네요.
[06:52]
자, 이걸 설정해보고
[06:55]
네 개의 이미지를 사용해볼까요?
[06:58]
그런 식으로 해보죠.
[07:00]
모든 것을 함께 결합해볼 수 있는지 보겠습니다.
[07:02]
자, 어떻게 되는지 한번 보죠.
[07:04]
멀티 이미지를 복사하겠습니다.
[07:07]
자, 선물 바구니네요. 이걸
[07:12]
multi-image.png로 저장할게요.
[07:15]
여기 더 많은 이미지들이 있는데
[07:17]
이것들을 함께 결합할 수 있어요.
[07:20]
프롬프트를 사용해서 말이죠.
[07:22]
자, 이미지들을 찾았어요.
[07:23]
여자 이미지, 지저분한 방 이미지를 사용할 거예요.
[07:26]
여기 찰리의 이미지도 있네요. 스트리머인데,
[07:29]
그리고 OpenAI 로고도 사용할 거예요.
[07:31]
프롬프트는 이렇게 작성할게요.
[07:33]
'지저분한 방에서 친구와 함께 스트리밍하는 여성의 사진.
[07:36]
벽에는 AI 기업 OpenAI의
[07:38]
포스터가 있다'라고 해보겠습니다.
[07:41]
아직 시도해보지 않았어요.
[07:43]
한번 해보고, 안 되면
[07:44]
조정해보도록 하죠.
[07:47]
자, Python
[07:50]
multi-image.py를 실행해볼게요.
[07:53]
어떻게 될지 모르지만
[07:54]
한번 시도해보고 모든 게 잘 결합되는지 보죠.
[07:57]
잘 되면 정말 놀라울 것 같아요.
[08:00]
솔직히 말이에요. 자,
[08:02]
이제 보시죠. 멀티
[08:04]
이미지네요. 와우, 보세요.
[08:07]
정말 잘 됐네요. 이미지를 열어볼까요?
[08:10]
됐나요? 네, 보세요. 여기 스트리밍하는 여성이 있고,
[08:13]
지저분한 방도 있고,
[08:15]
이미지들이 잘 겹쳐져 있어요.
[08:17]
배경에는 OpenAI 포스터도 있고요.
[08:19]
이게 말이 되나요? 찰리는
[08:22]
잘 안 나온 것 같긴 한데,
[08:24]
얼굴이 좀 바뀌었네요.
[08:26]
하지만 불평할 수는 없을 것 같아요.
[08:28]
얼마나 잘 나왔는지 보세요.
[08:30]
그리고 여성이 여기서 그의 포즈를 따라 하고 있어요.
[08:34]
이유는 모르겠지만, 정말 멋지네요.
[08:37]
이건 지금까지 만들어진 이미지 모델 중
[08:39]
유연성 측면에서
[08:41]
가장 뛰어난 것 같아요.
[08:43]
Mid Journey나 다른 것들은
[08:45]
이런 기능들이 없다면
[08:48]
다시는 사용하지 않을 것 같네요.
[08:50]
네, 이렇게 멀티 이미지가
[08:53]
거의 완벽하게 작동했습니다.
[08:56]
재미있었으니 한 번 더 해볼까요?
[08:58]
자, 보시면
[09:00]
다음 단계를 보면,
[09:01]
이것은 페인팅 작업인데,
[09:03]
제게는 좀 더 복잡했습니다.
[09:06]
실제로 Claude 3.7의 도움을 받아야 했어요.
[09:09]
이전에 이걸 사용해본 적이 없어서
[09:11]
Pillow와 다른 라이브러리를
[09:14]
사용해서 이미지 위에 마스크를 만들었습니다.
[09:17]
마스크된 이미지를 저장하면
[09:20]
어떻게 보이는지 보여드릴 수 있어요.
[09:21]
여기로 돌아가보면
[09:23]
이게 우리가 만든 소녀의 마스크입니다.
[09:25]
여기가 팔이고, 목걸이와 마이크가 있었고
[09:27]
OpenAI 부분은 제거했습니다.
[09:29]
이것이 우리가 만든 것으로
[09:32]
실제로 이미지 위에 오버레이하여
[09:35]
이 효과를 생성하는 겁니다.
[09:36]
입력을 제거하거나 추가하거나
[09:39]
출력을 할 수 있죠.
[09:43]
이 코드를 공유할 예정인데
[09:46]
아래 링크에서 확인하실 수 있습니다.
[09:49]
오늘이나 내일 업로드할 예정이에요.
[09:51]
마스킹을 직접 해보고 싶으시다면,
[09:53]
실제로 가지고 놀기에 꽤 재미있습니다.
[09:56]
한 가지 더 조합해보고 싶은데요.
[10:01]
이제 이것의 단점에 대해
[10:03]
말씀드리려고 합니다.
[10:06]
그리고 이제 거의 끝나갑니다.
[10:08]
자, 이 이미지가 있죠?
[10:10]
여기 있는 차를 람보르기니나
[10:13]
다른 차로 바꿔보고 싶습니다.
[10:16]
어떻게 되는지 한번 보죠.
[10:18]
다시 실행해보겠습니다.
[10:20]
두 이미지를 합성해서
[10:22]
이 차를 람보르기니로 바꿔보겠습니다.
[10:28]
프롬프트는 간단하게
[10:31]
'도로를 달리는 람보르기니'로 했는데
[10:33]
잘 안되면 바꿔볼게요.
[10:35]
자, 한번 보시죠.
[10:36]
완성됐네요. 람보르기니입니다.
[10:39]
멋지죠? 약간 그림 같긴 한데
[10:43]
'포토리얼리스틱'을
[10:44]
추가했어야 했나봐요. 하지만 그래도
[10:47]
꽤 괜찮아 보입니다. 이게 원본이고,
[10:51]
이렇게 변했네요.
[10:55]
꽤 만족스럽습니다.
[10:58]
정말 멋지네요.
[10:59]
GPT 이미지 원 모델을 사용해서
[11:01]
뭔가를 만들어보고 싶어요.
[11:04]
다른 아이디어들도 많이 있는데
[11:06]
꽤 흥미로울 것 같아요.
[11:08]
앞으로 이것을 비디오 모델과
[11:10]
결합해볼 계획입니다.
[11:12]
하지만 한 가지 불편한 점이 있는데,
[11:14]
이 모델을 사용하려면
[11:17]
인증이 필요합니다.
[11:18]
계정 인증을 해야
[11:21]
GPT3 이미지 모델에 접근할 수 있어요.
[11:25]
어떻게 해야 하냐면
[11:27]
신분증이 필요하고
[11:30]
다른 조직은 인증이 되어 있지 않아요.
[11:35]
안내를 따라하면 되는데
[11:37]
신분증을 제출하고 나면
[11:39]
사용할 수 있게 됩니다.
[11:42]
30분 정도밖에 안 걸렸어요.
[11:45]
인증하기 싫으시다면
[11:47]
좀 아쉬울 수 있죠. 이해합니다.
[11:49]
하지만 저는 사용하고 싶어서
[11:51]
그냥 했습니다. 덕분에
[11:54]
이렇게 멋진 앱을 만들었죠.
[11:55]
가치가 있었다고 생각하고
[11:57]
더 실험해볼 예정입니다.
[11:59]
마지막으로 오늘 얼마나
[12:02]
GPT 이미지 원에
[12:04]
비용을 썼는지 확인해보죠.
[12:07]
오늘 2달러, 거의 3달러 정도 썼고
[12:11]
20-30개 정도의 이미지를 만들었어요.
[12:15]
그렇게 비싸지는 않네요.
[12:17]
좀 더 실험해봐야
[12:20]
정확히 알 수 있을 것 같아요.
[12:22]
이렇게 새로운 모델을 사용한
[12:25]
이미지 생성 소개였습니다.
[12:28]
정말 재미있었고
[12:29]
앞으로도 더 많이 작업해볼 예정입니다.
[12:32]
즐겁게 보셨길 바라고
[12:34]
여러분만의 앱을 만드는데
[12:36]
영감이 되었길 바랍니다.
[12:38]
시청해주셔서 감사합니다.
[12:40]
내일 아침에 다시
[12:42]
영상으로 찾아뵙겠습니다.