이미지 AI 얼라이언스

이미지 AI 얼라이언스

생각을 현실로 표현해주는 비주얼 생성 AI 와 함께 더 나은 크리에이티브를 생각해보는 사람들의 모임

공개 50 멤버

가이드라인

["이미지 AI 관련 글 포스팅, 웨비나를 진행합니다","이미지 AI 관련 주제라면 어떤 게시글도 환영입니다","관련한 주제를 공지 내에 적어두었습니다","폭력 또는 선정적인 이미지, 공격적인 발언이 공유될 경우 강제 조치를 취하겠습니다","우리는 앞선 사람들입니다"]

이정민

이정민

😉 (진짜 무료) AI로 이미지 쉽게 편집하기

안녕하세요,

요즘 AI 이미지 생성에 관심이 많은 토니입니다!

벌써 두 차례에 걸쳐!

돈 한 푼 들이지 않고 이미지 AI를 가지고 노는 방법에 대해 공유해드렸습니다.

(1탄) 텍스트로 이미지 만들기 - 링크

(2탄) 이미지로 유사한 이미지 만들기 - 링크

오늘은 보다 실용적인 것을 안내해드리려고 하는데요.

보통 갖고 계신 이미지가 있을 것이라고 생각합니다. 이를테면 이런 모델 사진이요!

출처 : Unsplash

그런데 동일한 배경에 다른 인물을 넣어 여러 콘텐츠에 활용해보고 싶은데요.

하지만 비슷한 이미지를 얻기 위해 해당 장소에 모델과 같이 갈 수도 없는 노릇인데 어떻게 해야 할까요?

간단합니다. 사람만 생성하시면 됩니다.

바로 시작해보겠습니다.

준비물은 구글 계정 하나!

바로 링크로 접속해주세요. 클릭해주시면 아래 화면이 보이게 됩니다.

대충 읽고 화면을 아래로 쓱 내려주시면 재생 버튼 이 있습니다. 클릭해주세요!

1분 정도 영어로 쏼라쏼라 나오다가 파란색 글씨의 링크가 나오게 됩니다. 클릭해주세요!

해당 링크를 클릭하면 다음과 같은 화면이 나오게 됩니다.

정확히 세 가지만 필요합니다. 

하나는 편집하고자 하는 이미지를 넣어주세요.

두 번째로 편집하고 하는 영역을 칠해주세요.

마지막으로 해당 영역에 추가하기를 원하는 장면을 영어로 표현해주세요.

저는 일단 인물을 칠해주었습니다.

그리고 GPT에게 영어를 부탁했습니다.

바로 복사 후 텍스트 창에 붙여넣기 해줍니다.

모든 내용이 정해졌으면 이미지 생성하기 버튼을 눌러줍니다.

1분 정도 지나면 이미지가 나오게 됩니다.

꽤 그럴 듯 하지 않나요?

무료라서 편하게 사용할 수 있어 좋았지만!

저는 아쉬운 점이 하나 더 있었습니다.

1분 동안 기다려 세팅하고, 1분을 기다려 이미지 1장을 편집해야 한다는 점!

이미지를 더 높은 품질로 만들고 싶은 점!

한국어가 안되는 점!

그래서 저는 세계에서 가장 저렴하게 고품질의 이미지를 생성하고 편집하는 플라멜을 만들게 되었습니다.

플라멜은 대기 시간 없이, 10초 안에 4장의 이미지를 생성하는 초고속 이미지 생성 및 편집 도구인데요!

지금 테스트 기간이어서 하루 20장씩 무료로 고품질의 이미지를 만들 수 있습니다.

더 좋은 이미지 AI를 사용합니다.

물론 한국어로 사용할 수도 있고요.

궁금하시다면 아래 링크에 접속해 무료로 사용해보세요!

🔽🔽🔽

https://flamel.app

플라멜 Flamel v0.9

톤앤매너를 유지하는 가장 쉬운 디자인 방법

1
0
이정민

이정민

😉 (진짜 무료) AI로 비슷한 느낌의 이미지 만들기

안녕하세요,

요즘 AI 이미지 생성에 관심이 많은 토니입니다!

이전에 무료로! 텍스트로 이미지를 검색하듯이 만드는 방법에 대해 공유해드렸습니다.

오늘은 더 재밌는 것을 안내해드리려고 하는데요.

언스플래시에 되게 느낌 있는 이미지를 조금 더 나만의 것으로 만들어야 이미지 검색 효율이 높아지잖아요?

말씀드린 것처럼 검색한 이미지와 비슷하게 이미지를 만드는 사이트를 만들어봤습니다.

출처 : Unsplash

준비물은 구글 계정 하나!

바로 링크로 접속해주세요. 클릭해주시면 아래 화면이 보이게 됩니다.

대충 읽고 화면을 아래로 쓱 내려주시면 재생 버튼 이 있습니다. 클릭해주세요!

1분 정도 영어로 쏼라쏼라 나오다가 파란색 글씨의 링크가 나오게 됩니다. 클릭해주세요!

해당 링크를 클릭하면 다음과 같은 화면이 나오게 됩니다.

정확히 세 가지만 필요합니다. 

하나는 원하는 느낌의 이미지를 넣어주세요.

두 번째로 원하는 장면을 영어로 표현해주세요.

마지막 하나는 이미지 크기입니다.

여기서 주의할 점은 영어만 이해한다는 점입니다!

저는 일단 언스플래시에서 아래의 이미지 느낌을 살려보고 싶었습니다.

출처 : Unsplash pho to by Gabrielle Henderson

그리고 GPT에게 이 이미지를 설명해 달라고 요청했습니다.

바로 복사 후 텍스트 창에 붙여넣기 해줍니다.

그리고 이미지 사이즈를 4:3 비율로 만들고 싶어 1024x768 로 선택했습니다.

모든 내용이 정해졌으면 이미지 생성하기 버튼을 눌러줍니다.

1분 정도 지나면 이미지가 나오게 됩니다.

꽤 그럴 듯 하지 않나요?

무료라서 편하게 사용할 수 있어 좋았지만!

저는 아쉬운 점이 하나 더 있었습니다.

1분 동안 기다려 세팅하고, 2분을 기다려 이미지 1장을 생성해야 한다는 점!

이미지를 더 높은 품질로 만들고 싶은 점!

한국어가 안되는 점!

그래서 저는 세계에서 가장 저렴하게 고품질의 이미지를 생성하고 편집하는 플라멜을 만들게 되었습니다.

플라멜은 대기 시간 없이, 10초 안에 4장의 이미지를 생성하는 초고속 이미지 생성 및 편집 도구인데요!

지금 테스트 기간이어서 하루 20장씩 무료로 고품질의 이미지를 만들 수 있습니다.

더 좋은 이미지 AI를 사용합니다.

물론 한국어로 사용할 수도 있고요.

궁금하시다면 아래 링크에 접속해 무료로 사용해보세요!

🔽🔽🔽

https://flamel.app

플라멜 Flamel v0.9

톤앤매너를 유지하는 가장 쉬운 디자인 방법

1
0
이정민

이정민

😉 (진짜 무료) 플럭스로 AI 이미지 공짜로 사용하기

안녕하세요,

요즘 AI 이미지 생성에 관심이 많은 토니입니다!

주변에서 AI로 이미지 생성한다는데,

구매하려고 봤더니 제일 저렴한 플랜이 15,000원 ?!?

저한테만 비싼 거 아니죠??? 😭

그래서 제가 🙋‍♂️ 직접 무료로 이미지 생성할 수 있는 사이트를 만들어봤습니다.

준비물은 구글 계정 하나!

바로 링크로 접속해주세요. 클릭해주시면 아래 화면이 보이게 됩니다.

대충 읽고 화면을 아래로 쓱 내려주시면 재생 버튼 이 있습니다. 클릭해주세요!

1분 정도 영어로 쏼라쏼라 나오다가 파란색 글씨의 링크가 나오게 됩니다. 클릭해주세요!

해당 링크를 클릭하면 다음과 같은 화면이 나오게 됩니다.

정확히 두 가지만 필요합니다. 

하나는 원하는 장면을 영어로 표현해주세요.

나머지 하나는 이미지 크기입니다.

여기서 주의할 점은 영어만 이해한다는 점입니다!

저는 후드티 입은 한국인 남성이 "Flamel.app" 이라고 적힌 종이를 들고 있는 이미지를 만들고 싶었습니다.

그래서 GPT에게 영어를 부탁했습니다.

바로 복사 후 텍스트 창에 붙여넣기 해줍니다.

그리고 이미지 사이즈를 4:3 비율로 만들고 싶어 1024x768 로 선택했습니다.

모든 내용이 정해졌으면 이미지 생성하기 버튼을 눌러줍니다.

40초 정도 지나면 이미지가 나오게 됩니다.

꽤 그럴 듯 하지 않나요?

이게 가능했던 것은 가장 유명한 AI 이미지 생성 서비스인 미드저니와 거의 유사한 수준의 AI이기 때문입니다.

무료라서 편하게 사용할 수 있어 좋았지만!

저는 아쉬운 점이 하나 더 있었습니다.

1분 동안 기다려 세팅하고, 40초를 기다려 이미지 1장을 생성해야 한다는 점!

이미지를 더 높은 품질로 만들고 싶은 점!

한국어가 안되는 점!

그래서 저는 세계에서 가장 저렴하게 고품질의 이미지를 생성하고 편집하는 플라멜을 만들게 되었습니다.

플라멜은 대기 시간 없이, 10초 안에 4장의 이미지를 생성하는 초고속 이미지 생성 및 편집 도구인데요!

지금 테스트 기간이어서 하루 20장씩 무료로 고품질의 이미지를 만들 수 있습니다.

더 좋은 이미지 AI를 사용합니다.

물론 한국어로 사용할 수도 있고요.

궁금하시다면 아래 링크에 접속해 무료로 사용해보세요!

🔽🔽🔽

https://flamel.app

플라멜 Flamel v0.9

톤앤매너를 유지하는 가장 쉬운 디자인 방법

2
0
황현지

황현지

다음 AI 이미지 중 한국 전통 건축 양식을 따르고 있는 이미지는 무엇일까요?

[스모어톡의 딥테크 팁스 과제, “아시아향 이미지 생성형 AI 개발”의 의미]

Thumbnail-contents240904-linkedin.pngAI 디자인 어시스턴트, 플라멜에는 주기적으로 엄선된 컬렉션이 업로드 되고 있습니다. 드디어 선선한 바람이 불어오면서 어느새 추석이 한걸음 앞으로 다가왔기에 추석 컬렉션을 업로드 중입니다.

위의 이미지는 플라멜에서 ”매우 단순한 2D 그래픽 디자인, 하단에 전통 검은색 기와의 한국 지붕을 정면에서 본 모습 배치. 배경은 밤하늘 느낌의 보라색, 분홍색 그라데이션, 오른쪽 상단에 부분적으로 보이는 달이 따뜻한 빛을 던지고, 지붕 위에 몇 마리 새가 앉아 있어 평화로운 분위기.” 로 생성한 결과입니다.

생성을 마치고, 의문이 들었습니다.

과연 이 이미지들이 한국 전통 가옥의 지붕을 제대로 구현한 것일까?

그렇게 한중일 건축양식에 대한 조사에 돌입했습니다.

한중일의 전통적인 주택은 언뜻 유사하지만 명확한 차이를 가지고 있었습니다. 한국의 지붕은 대부분의 경우 부드러운 곡선미를 자랑한다고 합니다. 가로로 긴 형태의 지붕에서 가운데 길쭉한 가로선이 살짝 휘어있는 곡선의 형태인 것이죠. 또한, 지붕이 2단으로 나뉘면서 아래쪽도 살짝 더 휘어 지붕 끝이 부드럽게 올라가게 됩니다. 일본은 전체적으로 직선형이면서 단순하고 절제된 느낌이 나타납니다. 중국은 지붕 끝이 하늘을 향해 치솟은 날카로운 형태인 경우가 많다고 하네요.

말하자면 위의 이미지에서 1번이 일본, 2번이 한국, 4번이 중국과 가깝다고 볼 수 있습니다.

이렇게 스터디한 내용을 참고해서 더 높은 퀄리티의 새로운 리소스를 다음과 같이 구현했습니다.

추석리소스_최종_240903_워터마크.png이밖에 다양한 가을 컬렉션이 플라멜에 계속 업데이트 되고있으니 확인해보세요 🌝

이런 어려운 점, 글로벌 이미지 생성 AI 서비스에서도 마찬가지입니다.

추석 컬렉션을 만들면서 느낀 어려움은 이뿐만이 아닙니다. 사과와 배를 구현하려하는데, “한국 배” 스타일이 나타나지 않는다거나, 한국식으로 보자기를 묶은 선물을 구현하기 어렵다거나 하는 식입니다. 과일 상자에 가지런히 담겨 흰색 과일망에 하나씩 감싸져 있는 모습은 또 어떻게 표현할지 참 어렵기만 합니다.

배.png(플라멜로 " 심플한 흰색 테이블에 사과와 한국 배가 올라가 있는 모습"을 생성한 결과)

이러한 현상은 미드져니로 만들었을때도 마찬가지입니다. 어도비 파이어플라이를 사용하면, 한국 배의 색깔 정도는 구현되지만 배의 모양은 여전히 우리에게 익숙하지 않은 모습이네요.

배-미드져니.png배-파이어플라이.png(상-미드져니로 "korean pear"를 생성한 결과, 하-Adobe Firefly로 "korean pear"를 생성한 결과)

스모어톡은 이 문제를 해결하고 싶어요.

스모어톡은 올 하반기 딥테크 팁스 과제에 선정되어 3년간 15억을 지원받습니다.

당시 단 4인의 팀원으로 이루어낸 기록적 성과였는데요, 여기서 진행하는 스모어톡의 R&D 과제는 바로 “동아시아향 이미지 생성형 AI 모델 개발”입니다. 해당 과제로 바로 위에서 느낀 문제점을 해결하고자 합니다.

첫째, 우리나라 특화된 요소들이 정확하게 구현되도록 합니다.

  • 떡볶이, 라면, 과일과 같은 음식부터 시작해서 특정 장소와 행사가 그 예시입니다. 다음은 openAI의 Dall-E가 생성한 “추운 겨울, 따뜻한 마룻 바닥에서 라면 먹고 있는 한국 남자 아이” 모습입니다. 언뜻 라면 같지만, 자세히 보면 정체 모를 국수입니다. 아무리 바꿔달라고 요청해보아도 역부족입니다.

    달리-라면.png

둘째, 동아시아 내에서도 한/중/일의 문화를 구분하여 반영하고자 합니다.

  • 서양의 오리엔탈리즘을 풍자적으로 표현한 것으로 잘 알려진 LIM KIM의 Yellow라는 노래를 아시나요? 이 노래의 뮤비를 보면, 언뜻 동양풍이지만 국적 불명의 온갖 것들이 섞여 묘한 불쾌감을 느낄 수 있습니다. 현재의 이미지 생성형AI의 결과물이 바로 이런 느낌입니다. 아시아 안에서도 한중일의 차이를 우리는 느낄 수 있고, 이는 민감한 이슈로 종종 논란이 되기도 합니다. 앞으로 우리의 생활에 깊숙이 들어올 AI에서 이것은 반드시 해결되어야 하는 문제입니다.

    어도비-한복.jpg달리-명동.webp(상-Adobe Firefly로 "한복을 입고 귀엽게 인사 하는 4살 여자 아이"를 생성한 결과, 하-Dall-E로 " 서울 명동 거리, 식당이 즐비한 사진"을 생성한 결과)

셋째, 아시아에서 선호하는 스타일을 구현하고자 합니다.

  • 미국 여행을 가서 엽서 등 문구류가 있는 곳을 둘러보면, 매우 투박한 느낌의 일러스트들이 주를 이루고 있습니다. 보통의 한국인이라면 별로 선호하지 않는 그런 스타일입니다. 현재의 이미지 생성형AI는 이런 스타일의 일러스트에 더 특화되어 있습니다. 다음은 Dall-E가 생성한 “에펠탑 앞에서 돗자리에 누워 피크닉을 즐기는 사람들” 일러스트 이미지입니다. 어떤 느낌인지 감이 오시나요? 🧐

    달리-일러스트.webp반면 우리나라는 상당히 추상화되고, 귀여운 형태의 일러스트 스타일이 인기가 많습니다. 한국에서 인기가 많은 카카오톡 이모티콘 캐릭터를 보면 이해가 가실 것입니다. 이런 스타일은 한국 뿐만 아니라 일본, 대만 등의 지역에서도 많은 인기를 끌고있죠. 하지만 지금의 이미지 생성형AI는 아무리 추상화되고 귀여운 이미지를 만들려고 해도 반복적으로 다시 명확한 형태로 돌아가게 됩니다.

이 중요한 문제를 함께 고민하고 해결할 분들을 찾고 있어요.

이러한 문제는 단순히 다량의 데이터가 있다고해서 해결되는 문제는 아닙니다.

우선 실제 현실에 적용되기 위한 정확한 문제 정의가 필요합니다. 스모어톡은 한국에서 2년 간 이미지 생성형 AI에만 집중해 깊은 고민을 해왔습니다. 이미 50만건 이상의 유저 데이터를 확보하고 있고, 프로덕트를 통해 지속적으로 데이터를 축적하고 있습니다. 현장의 데이터를 기반으로 깊은 고민을 통해 문제를 정의하고, 연구를 설계합니다.

또한 '막대한 양의 데이터를 어떻게 분류하고 라벨링할 것이며, 모델을 어떻게 효율적으로 학습하고, 편리하게 사용할 것인가’는 현재의 AI 사회에서 최전선에 있는 생성형 AI 종합 예술이라고 할 수 있습니다. 스모어톡에는 데이터 구축, 멀티모달AI, 이미지 생성형AI를 전문으로 연구해 온 팀원들이 있습니다.

이 중요한 문제를 함께 풀어 나가는 종합 예술을 리딩하실 AI Lead, 이를 함께 구현해나가주실 AI engineer(예정), 그리고 최종적으로는 Product-Maket Fit을 찾아 MAU 100만의 프로덕트로 함께 성장시켜나가주실 Product Manager, Frontend Developer 직군을 채용하고 있습니다.

스모어톡은 적은 인원으로 빠르고 가볍게 운영되고 있습니다. 소수의 인원에게 막대한 권한과 책임이 주어지고, 적극적으로 성장을 지원합니다. 첫 공식 채용 관련 자세한 내용은 다음 채용 페이지를 참고 부탁드립니다.

마지막으로, 오늘이 백일인 너무 귀여운 조카 생각에 Adobe Firefly로 생성해본 “돌잔치에서 돌잡이를 하고 있는 1살짜리 한국 남자 아이” 이미지를 남기며 글을 마무리합니다 🪨😆

어도비-돌잡이.jpg

플라멜 Flamel v0.9

톤앤매너를 유지하는 가장 쉬운 디자인 방법

12
2
이정민

이정민

(Update) 플라멜에서 더 쉽게 이미지를 생성하세요 💡

image.png

안녕하세요,

가장 간편한 AI 이미지 어시스턴트, 플라멜(Flamel)을 만들고 있는 스모어톡 이정민입니다.

플라멜이 사용자 수 기준 3,000명을 돌파했습니다.

특히, 쿠팡, 우아한형제들, 야놀자, 쏘카, 에이블리 등 유명 스타트업 재직자 분들께서 사용해주시는 것을 보고 감사함을 많이 느끼고 있습니다.

이미지 생성 서비스를 더 이상 어렵지 않게 잘 사용하실 수 있는 것, 그것이 스모어톡의 비전이기 때문에 저희 팀은 이미지 생성 서비스 뿐만 아니라 AI 프로덕트 전반에 대한 UI/UX 를 고민하고 또 고민하고 있습니다.

그래서 이번에 더욱 편한 플라멜을 선보이게 되었습니다.

일단 기존 플라멜은 이런 문제가 있었습니다.

  1. 1번 칸에 이미지를 넣어야 하네. 그냥 아무 것이나 넣자. (UI 내 이미지, 스타일에 대한 부족한 안내)

  2. 이미지를 기반으로 아바타를 만들어줘. (UI 내 이미지 입력 기능 대한 부족한 안내)

  3. AI 는 ~를 만들어줘, ~를 생성해줘, ~를 바꿔줘 의 명령어가 필요할 것 같아. (UI 내 이미지 생성 시 프롬프트에 대한 부족한 가이드)

생성 AI를 보면 원하는 바대로 할 수 있는 것을 기대하지만, 사실 모든 상황에 맞추기에는 너무나 어렵습니다. 그리고 유저 인터뷰 후 텍스트로 편집하는 게 과연 편한가 라는 생각을 하게 되었습니다.

그래서 플라멜의 기능을 구분했습니다.

  1. 이미지 없이 텍스트로만 만들어도 괜찮아요.

image.png

  1. 프롬프트를 몰라도 AI 가 도와줄 거에요.

image.png

  1. 아이디어가 없으면 AI 에게 물어보세요.

image.png

  1. AI가 이미지를 표현해준 것을 바탕으로 살짝 바꿔서 생성하면 스타일을 반영한 이미지를 만들 수 있어요.

image.pngimage.png

  1. 이미지 생성 후 간편하게 편집해보세요.

image.pngimage.png

  1. 이미지를 더욱 선명하게 확인하세요.

image.png

그 동안 긴급 대응 포함해서 서버 배포만 200번을 넘게 한 것 같은데요. 앞으로도 플라멜 사용자 분들께서 훨씬 더 간편하게 사용할 수 있도록 많은 업데이트가 이루어질 예정입니다. 많은 관심 부탁드립니다.

기업용 스타일 구축에 관심 있는 분들도 언제든 연락 주시면 도움 드릴 수 있도록 하겠습니다.

플라멜이 궁금하시다면 아래 링크를 통해 무료로 사용해보세요.
⬇️⬇️⬇️⬇️⬇️
🧷 https://flamel.app

플라멜 Flamel v0.9

톤앤매너를 유지하는 가장 쉬운 디자인 방법

4
1
이정민

이정민

[Tip] 요즘 유행하는 이미지 생성 모델 'Flux' 무료로 사용하기 🫢 (코드 있음)

다운로드 (70).png

혹시 flux(플럭스)를 들어보셨나요?

flux 는 요즘 가장 유행하는 이미지 생성 모델입니다.

images.jpeg출처 : Black forest labs (Flux 개발사)

이미지 생성 서비스라고 하면 "미드저니, 달리 (그리고 플라멜) 는 들어본 것 같은데, 사실 실생활에서 써야 하나 모르겠어요.." 라고 하시는 분들이 계실 것 같습니다. 특히, 돈이 드니까 더 그런 생각이 들 수 있을 것 같은데요.

Portrait_female_Midjourney.jpg출처 : Redshark news

사실 이미지 모델은 이제 극강의 수준으로 올라왔습니다.

간단히 기술적으로 말씀드리면 flow matching 과 rectified flow, 그리고 transformer 기반의 모델링을 구현하면서 이 모든 것이 가능해졌는데요.

(사실 AI 는 이제 텍스트를 넘어, 이미지, 음성, 동영상 등 모든 모달리티를 하나의 공간에서 처리할 수 있도록 학습을 진행하고 있습니다.)

2022년 초 나온 달리 2부터 이미지 생성 모델의 가능성을 믿었던 저는 24년 중반에 나온 Flux 를 통해 이제는 완전히 새로운 세상에 들어왔다고 생각합니다.

그렇다면 이 모델... 도대체 뭔데 이렇게 대단하다고 이야기 하는 것인가.

를 해보려면 사실 사용해보아야 되잖아요.

일단 flux 는 크게 3가지 모델로 출시되었습니다.

  • flux-pro : API 로만 사용 가능 (즉, 플라멜 유료 버전에서 사용 가능)

    • 120 억개의 매개변수로 학습한 모델

  • flux-dev : 모델 공개, 단 상업적으로 사용 불가능 (즉, 상업적으로 사용하려면 플라멜 무료 버전에서 사용 가능)

    • flux-pro 를 Guidance Distillation 한 모델 (증류한 모델)

    • Guidance Distillation paper

  • flux-schnell : 모델 공개, 상업적으로 사용 가능

    • flux-pro 를 Latent Adversarial Diffusion Distillation 한 모델 (증류한 모델)

    • ADD paper

기술적인 건 그렇고 일단은 사용해보셔야 하잖아요?

두 가지 방식이 있습니다.

가장 쉬운 방법은 flamel.app 에 접속합니다.

  1. 이미지를 넣지 않고, 스타일 없음 혹은 제공하고 있는 스타일을 선택합니다.

(이미지 업로드에는 다른 자체 모델을 사용하고 있습니다. Flux 에 적용하려면 해당 개발사에 연락을 해야 해서 대기 중입니다. - 사실 그런 점 때문에 자체 모델 학습 준비중입니다.)

image.png

2. 예시로, 스타일 없음을 선택하고 "Flux dev" 라고 적힌 종이를 들고 있는 후드티 입은 한국인 남자, 사진 이라고 입력합니다.

image.png

3. 생성된 이미지 중 하나를 클릭하여 원하는 추가 작업을 진행 후 다운로드 합니다.

image.png

4. 결과는 다음 이미지와 같습니다.

_Flux dev_ 라고 적힌 종이를 들고 있는 후드티 입은 한국인 남자, 모델 사진-ai-generated-flamel-383855.png

무려 하루 20장을 무료로 생성하고 무제한으로 편집 (곧, 새로운 기능도 등장합니다) 할 수 있지만,

공짜로 더 하고 싶은 것이 사람 마음이잖아요. 저도 사실 돈만 많으면 더 무제한으로 풀고 싶지만... 그래도 저희도 성장해야 하니 대신 무료로 GPU 를 사용할 수 있는 서비스, 구글 colab 을 통해 사용하는 방법을 안내해드립니다.

참고로 여기부터는 코드입니다.

  1. 구글 코랩을 엽니다.

  2. 이미지를 생성할 수 있게 하는 기본 코드(라이브러리)와 학습된 AI(가중치)를 다운로드 합니다.

%cd /content
!git clone https://github.com/comfyanonymous/ComfyUI.git /content/ComfyUI
!git clone https://github.com/city96/ComfyUI-GGUF.git /content/ComfyUI/quantized

%cd /content/ComfyUI
!pip install -q torchsde==0.2.6 einops==0.8.0 diffusers==0.30.0 accelerate==0.33.0 xformers==0.0.27 gguf==0.9.1
!apt -y install -qq aria2

from huggingface_hub import hf_hub_download

# @markdown Select one of the models to download, select `fast` for best inference speed:
hf_hub_download(repo_id="city96/FLUX.1-dev-gguf", filename="flux1-dev-Q4_0.gguf", local_dir="/content/ComfyUI/models/unet")

!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/camenduru/FLUX.1-dev/resolve/main/ae.sft -d /content/ComfyUI/models/vae -o ae.sft
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/clip_l.safetensors -d /content/ComfyUI/models/clip -o clip_l.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp8_e4m3fn.safetensors -d /content/ComfyUI/models/clip -o t5xxl_fp8_e4m3fn.safetensors
  1. 학습된 AI 를 사용할 수 있게 설정합니다. (ComfyUI Backend 사용)

%cd /content/ComfyUI

import random
import torch
import numpy as np
from PIL import Image
import nodes
from nodes import NODE_CLASS_MAPPINGS
from comfy_extras import nodes_custom_sampler
from comfy import model_management

DualCLIPLoader = NODE_CLASS_MAPPINGS["DualCLIPLoader"]()
RandomNoise = nodes_custom_sampler.NODE_CLASS_MAPPINGS["RandomNoise"]()
BasicGuider = nodes_custom_sampler.NODE_CLASS_MAPPINGS["BasicGuider"]()
KSamplerSelect = nodes_custom_sampler.NODE_CLASS_MAPPINGS["KSamplerSelect"]()
BasicScheduler = nodes_custom_sampler.NODE_CLASS_MAPPINGS["BasicScheduler"]()
SamplerCustomAdvanced = nodes_custom_sampler.NODE_CLASS_MAPPINGS["SamplerCustomAdvanced"]()
VAELoader = NODE_CLASS_MAPPINGS["VAELoader"]()
VAEDecode = NODE_CLASS_MAPPINGS["VAEDecode"]()
EmptyLatentImage = NODE_CLASS_MAPPINGS["EmptyLatentImage"]()

with torch.inference_mode():
  clip = DualCLIPLoader.load_clip("t5xxl_fp8_e4m3fn.safetensors", "clip_l.safetensors", "flux")[0]
  vae = VAELoader.load_vae("ae.sft")[0]

# from quantized import nodes
from quantized.nodes import NODE_CLASS_MAPPINGS

UNETLoader = NODE_CLASS_MAPPINGS["UnetLoaderGGUF"]()
with torch.inference_mode(): 
  unet = UNETLoader.load_unet(unet_name)[0]

def closestNumber(n, m):
    q = int(n / m)
    n1 = m * q
    if (n * m) > 0:
        n2 = m * (q + 1)
    else:
        n2 = m * (q - 1)
    if abs(n - n1) < abs(n - n2):
        return n1
    return n2
  1. 이미지를 생성합니다. positive_prompt 에는 만들고 싶은 내용의 문장을, width, height 는 이미지의 사이즈를, seed 는 동일한 장면의 다른 이미지를 만들고 싶을 때 다른 숫자를 넣으면 이미지가 생성됩니다.

import time

with torch.inference_mode():
    positive_prompt = "A korean man with hoodie on is holding a sign written 'FLUX DEV', model photo"
    width = 1280
    height = 720
    seed = 0
    steps = 20
    sampler_name = "euler"
    scheduler = "simple"
    filename = "flux.png"

    print("SEED :", seed)
    start = time.time()
    cond, pooled = clip.encode_from_tokens(clip.tokenize(positive_prompt), return_pooled=True)
    cond = [[cond, {"pooled_output": pooled}]]
    noise = RandomNoise.get_noise(seed)[0]
    guider = BasicGuider.get_guider(unet, cond)[0]
    sampler = KSamplerSelect.get_sampler(sampler_name)[0]
    sigmas = BasicScheduler.get_sigmas(unet, scheduler, steps, 1.0)[0]
    latent_image = EmptyLatentImage.generate(closestNumber(width, 16), closestNumber(height, 16))[0]
    sample, sample_denoised = SamplerCustomAdvanced.sample(noise, guider, sampler, sigmas, latent_image)
    model_management.soft_empty_cache()
    decoded = VAEDecode.decode(vae, sample)[0].detach()
    print(f"Inference time : {str(time.time() - start)} secs")
    Image.fromarray(np.array(decoded*255, dtype=np.uint8)[0]).save(f"/content/{filename}")

Image.fromarray(np.array(decoded*255, dtype=np.uint8)[0])
  1. 그래서 나온 결과는? 기가 막힙니다.

다운로드 (70).png

물론 무료 GPU 는 사양이 낮기 때문에 빠른 이미지 생성을 위해 양자화된 모델을 사용했습니다.

더 다양한 모델을 사용하시기 위해서, 혹은 좀 더 지저분한 코드를 안 보면서 생성하시려면 제가 따로 몇 줄 더 추가해서 만든 코드를 전달 드리면 될 것 같은데요. 메일로 전달해드리겠습니다. 댓글로 남겨주세요!

image.pngimage.png

지난 번에 AI 모델 학습하는 코드를 드리겠다고 했는데 아직 못 드렸네요.

죄송합니다. 이것도 최대한 빨리 처리할 수 있도록 하겠습니다.

정신 없을 만큼 플라멜의 새로운 사용성을 보여드리기 위해 많은 준비했으니 계속 꾸준히 관심 가져주시면 감사드리겠습니다. 아마 내일? 새로운 모습의 플라멜로 업데이트 될 것 같아요.

이미지 AI 모델이 궁금하시다면 언제든 연락주세요!
bento.me/jyoung105

플라멜 Flamel v0.9

톤앤매너를 유지하는 가장 쉬운 디자인 방법

9
4
이정민

이정민

(Update) 플라멜에서 더 나은 이미지를 생성하세요 🫶

update.png

안녕하세요,

톤앤매너 유지 가능한 AI 이미지 생성 서비스, 플라멜(Flamel)을 만들고 있는 스모어톡 이정민입니다.

현재도 플라멜이 정말 많은 분께 사랑 받고 있습니다.

그 동안 이미지 생성 모델의 한계로 실제 사용하기에는 어려운 수준의 이미지가 많이 생성되고는 했는데요. 이번에 더 나은 품질의 이미지 모델로 업데이트하게 되었습니다.

image.png

플라멜이 궁금하시다면 아래 링크를 통해 무료로 사용해보세요.
⬇️⬇️⬇️⬇️⬇️
🧷 https://flamel.app

플라멜 Flamel v0.9

톤앤매너를 유지하는 가장 쉬운 디자인 방법

7
2
황현지

황현지

단 3주만에 국내 최초 경제지와 기사 이미지 생성 MOU를 이뤄낸 과정

스모어톡은 지난 4월 30일 서울경제와 MOU를 맺고 기사 이미지 자동 생성 기능을 제공하고 있다. 기사 본문을 그대로 넣으면 최적의 스타일과 장면의 이미지가 생성되는 방식이다. 이는 단 3주 만에 이루어낸 쾌거였다. 이 과정은 창업 관련 책 중에서도 감명깊게 읽었던 "아이디어 불패의 법칙"의 그것과 많이 닮아있었기에 이를 공유해보고자 한다.

글을 작성하기 앞서 우선 이는 감사히도 적극적으로 도와주신 분들이 계셨기에 가능했음을 밝힌다. 하지만 준비가 되어 있어야 기회를 잡을 수 있다는 것을 많이 느꼈던 경험이었다.

MOU 까지의 과정

MOU까지 D-20, 첫 연락

우리가 멤버십 기업으로 있는 AI양재허브에서 서울경제를 연결해주신다는 연락이왔다. 감사히도 AI양재허브에 속해있는 수많은 스타트업 중 서울경제 측에서 직접 협업할 만한 회사 5개를 추려 소개를 요청해주신 것이었다. 작년에 많은 기업들을 상대하며 B2B 소통에는 골든 타임이 있다는 것을 뼈저리게 느꼈었기에 빠르게 오프라인 미팅을 세팅하였다.

MOU까지 D-16, 첫 미팅

감사히도 우리 사무실에서 담당 부장님을 뵐 수 있었고, 현재 어떤 과정으로 기사 이미지가 사용되는지, 해당 workflow에 녹아들려면 어떻게 해야하는지에 대한 니즈 파악을 빠르게 진행했다. 언론사의 실무 구조에 대해서는 잘 알지 못했기에 바보같은 질문도 많았는데, 정말 자세히 설명해주셔 파악이 용이했다. 그 당시의 플라멜 기능으로는 현업에 사용하기에 매우 한계가 있는 점에 대한 피드백도 받았다.

MOU까지 D-15, 인간지능의 PoC 시작

플라멜의 기존 자동 프롬프트 튜닝 엔진은 유저가 “원하는 장면”을 입력하면 유저가 의도한 바를 생성하기 위해 프롬프트가 튜닝되는, 즉 유저의 의도에 수렴하는 구조였다. 이에 기사 내용 전체를 입력하여 AI의 상상력에 맞겨 알아서 추천되기를 바라고 사용한다면 유저 입장에서 실망스러운 것이 당연했다.

하지만 이는 우리가 자동 프롬프트 튜닝 엔진 개발 당시 이미 고민한 적이 있었던 안건이었다. 플라멜 클로즈 베타 당시 유저의 의도는 크게 2가지로 나뉜다는 것을 알았다.

1) 유저가 정확히 원하는 것이 있는, AI는 시키는 걸 최대한 잘하면 되는 케이스 하나, 2) 그리고 유저가 AI의 상상력을 극대화하여 알아서 적당한 것을 추천해주기를 바라는 케이스 하나.

플라멜에 적용된 것은 전자였으나, 후자에 대해서도 가능성을 미리 테스트했었기에 빠르게 구현 가능 할 것이라고 확신했다. 이에 인간지능의 POC를 시작했다.

아직 프로덕트에 연결되어있지 않은 신규 프롬프트 튜닝 모듈을 직접 사람이 진행하고, 결과값에 대한 텍스트로 이미지 생성은 플라멜을 사용하는 방식이었다. 이럴 경우 만족스러운 결과가 나왔을 때 단기간에 프로덕트에 바로 적용할 수 있었다. 다행히 일주일 만에 어느정도 만족스러운 결과를 얻을 수 있었다. 이를 프로덕트에 넣기 위한 수정 개발 과정을 거치고 바로 기업 계정에 세팅하여 단 5일 만에 실무자가 직접 테스트할 수 있도록 했다.

물 들어올 때 노 저을 수 있었던 비결

Do things that don't scale

이 과정이 내게는 Do things that don’t scale, 아이디어 불패의 법칙의 MVP 방식처럼 느껴졌다. 바로 개발을 하는 것이 아닌, 1) 니즈 파악을 위한 문을 만들어두고, 2) 사람이 한땀한땀 만들어 제공하며 반응을 확인하고, 3) 큰 니즈가 있는 것으로 판단되면 그때 개발하고 제공하는 방식이다. 우리의 상황에 대응해보자면 다음과 같다.

  • 우리 프로덕트에 아직 들어가있지는 않았지만 긴 글에 대한 이미지 생성이 가능함을 명시해두었다.

  • 우리의 능력을 보았을때 빠른 시일 내에 구현 후 실제 서비스에 넣는것이 가능하다고 생각되는 선에서 소개서를 전달하여 니즈를 파악한다.

  • 작업은 인간지능으로 직접 진행하고, 고객 피드백을 받는다. 매우 반복적이고 비효율적인 구조였지만 피드백에 즉각 대응할 수 있었다.

  • 정말 사용할 만한 퀄리티가 나오면 개발에 대한 기한을 설정하여 고객에게 양해를 구하고 서비스에 넣어 제공한다.

여기서 속도가 매우 중요하다. 피드백에 대응하고, 이를 실제 유저가 서비스할 때 까지의 시간을 최소화해야 물 들어올 때 노젓는 것(?)이 가능하다.

속도전이 가능했던 이유, 다년간 쌓아온 기술과 유연한 시스템 구조

이를 가능하게 한 플라멜의 정말 중요했던 포인트가 있으니, 바로 “매우 유연하고 효율적인 어드민 페이지”이다. 능력자 CTO @조현영 님 덕에 우리 서비스는 거의 자체적으로 comfyUI 같은, 모듈형 구조가 어드민으로 구현되어있다. 이에 다양한 파이프라인을 거치는 이미지 생성 과정을 아주 약간의 수정만 진행한다면 어드민을 통해 유저에게 제공할 수 있게끔 세팅 되어있다. 덕분에 실제 실무자 분들이 사용하기까지 개발에는 5일이 채 소요되지 않았다.

운도 정말 좋았지만 결국 다년간 쌓아온 LLM 기술과 이미지 생성을 위해 이미 했던 수많은 고민, 그리고 미래를 고려한 시스템 개발로 인해 성과 도출이 가능했다고 생각한다.

MOU, 그 후

Dall-E에 비해 5배 이상 사용량이 많은 플라멜(Flamel)

실무를 담당하시는 기자 분들이 사용할 수 있도록 바로 제공해드린 뒤, 플라멜은 서울경제 내 AI 이미지가 적용될 수 있는 분야 기사에서 꾸준히 사용되고 있다. 기자 분들이 chatGPT를 비교적 많이 사용하시다보니 기사 이미지로 Dall-E를 사용하는 경우를 심심치 않게 볼 수 있는데, 서울 경제에서는 OpenAI의 Dall-E보다 플라멜이 5배 이상 많이 사용되었다. 플라멜에서 기사 본문 내용을 그대로 넣고 자동으로 장면이 추천되어 생성되는 것이 호응을 얻고 있는 것으로 보인다.

기사 이미지의 중요성

글에서 이미지는 매우 중요한 역할을 한다. 썸네일이라면 글을 요약하여 표현함으로써 클릭을 유도한다. 글 안에 들어가는 이미지는 글에 대한 이해를 돕고, 적절한 환기로 집중력을 잃지 않게 도와주기도 한다.

기사 이미지에는 특정 인물의 얼굴 등 실사를 사용하는 것이 중요한 경우도 많지만, 그렇지 않은 경우도 많다. 지금까지 아쉬웠던 점은 후자의 경우에 크게 의미없는 천편일률적인 이미지들이 사용된다는 점이었다. 기사 작성 자체가 훨씬 중요하기 때문에 이미지에 많은 시간을 쓸 수 없는것이 당연하다. 빠르게 적절한 이미지 자료를 찾기도 어렵고, 매번 필요한 이미지를 요청하여 제작하기도 어렵다.

이에 이런 크게 의미 없는 기사 이미지들을 심심치 않게 봤을 것이다.

  • 어떤 사건이 벌어진 기사의 경우 수사기관 건물 또는 폴리스 라인 이미지

  • AI 관련한 기사의 경우 알고리즘 느낌이 나는 인포그래픽 이미지

  • 날씨 관련한 기사의 경우 거리에 사람들이 걸어가는 이미지

현재는 플라멜을 활용하여 이렇게 내용을 적절하게 표현한 이미지들이 사용되고 있다.

긴 글에 대한 자동 이미지 추천 생성 기능을 사용하고 싶다면?

이는 비단 기사만이 아니라, 다양한 글 콘텐츠에 유사하게 적용되고 있는 상황이다. 이를 이미지 생성 AI로 해결할 수 있다. 하지만 이미지 생성 모델은 원하는 장면을 텍스트로 입력하면 이를 구현해내는 방식이다. 정확히 원하는 이미지가 있다면 그대로 활용하면 되지만, 장면조차 모르거나 그런걸 생각할 시간이 없다면

여전히 무용지물이다. 즉, 긴 글에 어울리는 이미지를 자동 추천하여 생성하는 기능은 다른 파이프라인을 가져가야 한다.

스모어톡은 다년간의 LLM 기술을 통해 이러한 파이프라인을 최적화하였다. 해당 기능은 현재 일반 사용자는 사용할 수 없고 기업 고객에만 커스터마이즈하여 제공하고 있다. "긴 글에 대한 자동 이미지 추천 및 생성" 기능에 관심이 있다면 아래 링크를 통해 확인해보기 바란다.

[스모어톡]기사이미지자동제작_240530

Thumbnail

*해당 기능은 기업 고객에만 별도 제공 됩니다.
사용에 관심이 있으신 경우 댓글 또는 아래 링크를 통해 문의해주세요 :)

플라멜 Flamel v0.9

톤앤매너를 유지하는 가장 쉬운 디자인 방법

25
11
이정민

이정민

5초 안에 고품질 이미지 생성하는 방법 🤭

image.png5초 안에 알려드릴게요!

  1. Flamel.app 에 접속한다.

image.png

  1. 로그인 한다.

image.png

  1. 이미지를 만든다.

image.png

  1. 이미지 클릭 후 편집하기에서 디테일 살리기 버튼을 누른다.

image.png

  1. 고품질 이미지 완성

image.png

차이를 간단히 보면, 워우...

image.png

사용해보고 싶다면 바로 flamel.app 에서 사용해보세요!

플라멜 Flamel v0.9

톤앤매너를 유지하는 가장 쉬운 디자인 방법

6
0
이정민

이정민

(Teaser) 새로운 옷을 입은 플라멜 🧙

image.png

안녕하세요,

톤앤매너 유지 가능한 AI 이미지 생성 서비스, 플라멜(Flamel)을 만들고 있는 스모어톡 이정민입니다.

현재 플라멜이 정말 많은 분께 사랑 받고 있습니다.

(유료 결제를 해주신 많은 분들께도 감사의 말씀을 드립니다.. 😭)

물론 프롬프트 가이드라인이 없는 상태에서 아직 아쉬운 모습이 보이는 것도 있고, 이를 어떻게 해결해야 할 지 팀 내에서 치열하게 고민하고 프로덕트에 곧 담아낼 예정이기도 합니다.

그런 와중에,

조금은 산만해 보인 툴의 화면을 정제된 느낌의 새로운 화면으로 교체할 예정입니다.

이유는 저희가 이 툴을 글로벌 시장에도 SNS를 통해 과감하게 공개하기 위함인데요. 🚀

image.png이제는 사라진 플라멜의 첫 화면 모습..

스모어톡은 계속해서 사용자 분들과 소통하고 사용성을 개선하여 AI 디자인이 여기까지 할 수 있다, 그리고 창작자와의 공생이 여기까지 가능하다 라는 것을 보여주는 플라멜을 만들어보겠습니다.

플라멜 Flamel v0.9

톤앤매너를 유지하는 가장 쉬운 디자인 방법

6
1
이정민

이정민

[Renewal 2024] 스노우가 1년 동안 347억 번 AI 프로필 제작 방법 공유 📷

image.png출처: 서울경제 - 링크 (참고로, 스모어톡은 서울경제와 기사 이미지 제공 MOU를 맺었습니다)

작년 8월 저는 하나의 글을 디콰에 작성합니다.

이 글은 9개월 정도가 지난 시점에서 조회수 7,000+ 를 기록하며 상당한 파급 효과를 기록했습니다.

일단 아마 SEO가 가장 잘 된(?) 게시글이 되었습니다.

image.png

외모가 뛰어난 사람들 사이에서 예시 이미지를 만들기 위해 허겁지겁 찍은 저의 초췌한 모습이 공개되기도 했습니다.

image.png

이를 발판으로 저희 팀의 대표 서비스인 톤앤매너 유지 가능한 AI 이미지 생성 서비스, Flamel 과 더불어 내부적으로 고도화 한 해당 AI 아바타 API에 대해선 기업 공급 계약을 맺기도 했습니다. (얼굴 이미지 1장, 생성 시간 1분 이내)

image.png

그런 가운데,

이전에 올린 글에서 9월, 10월, 11월, 그리고 며칠 전 사용 방법에 대한 문의를 많이 주셨습니다.

'여전히 관심이 많으시구나' 를 생각하게 되었습니다.

하지만,

AI 학습 라이브러리가 그 동안 상당히 많이 발전되었는데 이전 글에서 내용을 수정해 전달해드리지는 못했습니다..

더군다나 해당 코드로 작업하기 위해선 무료 colab 의 작업 환경 기준 1시간 이상 소요되는 문제가 있었습니다.

Lora, Dreambooth, Textual Inversion in Stable Diffusion 1.5 | by  Antalpha.ai | Medium

간단히 이유에 대해 말씀드리면, 공유한 코드에서 활용한 파인튜닝(Fine-tuning) 방식인 Dreambooth 라고 하는 학습 방식은 AI 모델 전체 값을 수정하기 때문인데요.

이에 대비하여 LoRA 는 AI 모델의 일부 레이어 값만 수정하기 때문에 학습 시간도 짧고 결과 파일의 용량도 작습니다. 그에 대비하여 AI 아바타를 위한 학습 효과는 충분히 좋습니다.

AI 이미지 생성 서비스를 느낀 것은 오픈 소스를 제공 받을 수 있는 환경에서 기술적인 향상에 관한 점에서, 그리고 기술의 보급에 관한 점에서 많은 부분 기여하며 발전해야겠다는 생각을 했습니다.

그래서 AI 아바타 만드는 방법을 24년 버전으로 리뉴얼해서 공유해드리고자 합니다.

(단, 해당 파일은 학습 과정이 필요한 방식으로 위에 공유한 방식과는 다른 부분이 존재함을 미리 안내해드립니다.)

파일을 받는 방법은 간단합니다.

댓글에 이메일 남겨주시면 간단히 시도해볼 수 있는 AI 아바타 만들기 관련 주피터 노트북 파일(.ipynb) 을 메일로 전달해드리겠습니다!

(발신자가 tonylee@smoretalk.io 이므로 이외 계정의 이메일은 주의해서 확인해주세요.)

오픈된 라이브러리를 사용한 간단한 코드여서 이미 내용을 아는 분들께서는 흥미롭지 않을 수도 있는 점은 미리 고려해주세요.

image.png이미지: 코드 예시 파일 (편하게 사용하실 수 있도록 GUI 로 구성해보고 있습니다)

해당 파일이 사이드 또는 여러 프로젝트에서 도움이 될 수 있기를 기대합니다.


AI 이미지 생성 서비스에 대해 관심 있으신 분들은 언제나 커피챗 환영합니다! 편하게 연락 주세요.
(tonylee@smoretalk.io)

p.s. 1. Flamel 은 곧 업데이트 발표가 예정되어 있습니다. 많은 관심 부탁드러요.

p.s. 2. Diffusion 모델에 대한 기술적인 설명글을 작성 중입니다. 해당 글도 많은 관심 부탁드립니다.

p.s. 3. 스모어톡은 자체 이미지 생성 AI 모델 구축을 준비중입니다. 많은 관심 부탁드립니다.

플라멜 Flamel v0.1

프롬프트 엔지니어링이 필요 없는 가장 쉬운 검색형 이미지 생성 서비스

7
12
이정민

이정민

📢 진짜 같은 AI 프로필 무료로 만들어보세요

그림5.png(아바타 데모 운영을 종료했습니다. 신규 서버 구축으로 인해...)

안녕하세요,

AI 이미지 어시스턴트, 플라멜(Flamel)을 만들고 있는 이정민 입니다.

작년에 AI 프로필 관련 만드는 방법을 코드와 함께 공유해서 많은 분들께서 관심을 가져 주셨는데요.
(조회 수 6,000+)

오늘은 AI 바우처 공고 안내 말고 재밌는 AI 프로필 테스트 사이트를 팀 내에서 간단히 만들었어서 공유해보고자 합니다. (사실은 고객사 소개용입니다 ?!?!)

참고로 플라멜 은 이미지를 기반으로 쉽게 사용자가 원하는 이미지를 만들어내는 툴입니다.

이 때, 이미지를 기반으로 조정 가능한 요소는 정말 다양한데요.

그 중 인물(캐릭터) 고정에 대한 고도화도 저희 팀의 연구 분야 중 하나입니다.

많은 기업에서 요청을 주셨던 내용으로

"AI 프로필 하고 싶은데 방법이 없나요"

가 있어 플라멜 에 적용 예정인 기술을 따로 API 로 빼서 준비해보았습니다.

얼굴이 들어간 사진과 성별을 설정해서 넣어주시면 다음과 같이 실제감 있는 사진이 나오게 됩니다.

image (107).png참고로 테스트 사이트에선 아래 이미지의 비율과 구도로만 이미지가 생성됩니다.

그리고 생성에조금 시간이 걸릴 수 있는데 1분이 지나면 이미지가 나오니 걱정하지 마세요.

그림3.png
참고로 비용이 전혀 들지 않으니 직접 한번 들어가서 사용해보시면 좋을 것 같습니다.(서버를 내렸습니다)

AI 아바타 API에 관해 관심 있는 분들은 smoretalk_official@smoretalk.io 로 연락 주시면 감사드리겠습니다.

플라멜 Flamel v0.1

프롬프트 엔지니어링이 필요 없는 가장 쉬운 검색형 이미지 생성 서비스

19
10
William Jung

William Jung

이미지 출력 프롬프트 공유

image.png메이커들이 저마다의 프로덕트나 비즈니스를 만들고 그로 인해 점진적으로 풍요로워진 사회의 모습, 디즈니 스타일, 3D

generated_imageA vast blue sky dotted with hovering islands of gold, silver, and precious gems. Some islands are locked with giant intricate vaults, requiring a key or a special gesture to open. Ethereal beings flit between the islands, negotiating, bartering, and sometimes granting access to those who present a compelling case. From above, beams of celestial light occasionally shine down, blessing certain islands and causing the treasures to multiply

generated_imageA sprawling and diverse landscape divided into territories, each representing a different tribe or community. Each territory has its unique aesthetic, but intertwining paths and bridges connect them all. In the center, there's a monumental nexus point, a grand council ground where all tribes converge. Trees of different species, mountains of varying heights, and rivers with distinct colors symbolize the various skill sets, but they all meet and intertwine at the Harmonia Nexus, illustrating the unity amidst diversity.

image.pnggenerated_imageDark, mysterious waters under a perpetual twilight sky. Mist-covered islands are scattered around, with shadowy figures (potential customers) visible through the fog. Here and there, beams of light pierce the mist, revealing an island's true form, representing a successful engagement with a customer. Boats and ships of varying sizes navigate these waters, each carrying explorers with lanterns, maps, and tools, trying to unveil and connect with the veiled islands. 4k wallpaper,

generated_imageA constantly morphing realm where the ground might suddenly become transparent, revealing gears and cogs working underneath, or where floating orbs of light become tangible objects when touched. Innovative structures, machines, and devices are everywhere - some half-built, others in full operation. Inhabitants are seen brainstorming, sketching designs on the air itself, or collaborating with animated constructs of their own creation. The horizon is a kaleidoscope of colors, each shift signifying a new idea coming to life, 4k wallpaper,

generated_imagegenerated_imageA surreal floating landmass suspended in a pastel sky, each section having its unique magical biome - glowing forests, shimmering desert, ethereal waterfalls, and levitating mountains. Rainbow bridges connect these territories, and as travelers journey across, they're enveloped in a shimmering aura that harmonizes their differences. In the very center, an ancient tree pulses with a gentle light, its roots and branches intertwined with every land, signifying unity and alliance, 4k wallpaper,

generated_imagegenerated_imageHigh above, amidst the twilight canvas of a starlit sky, float crystalline citadels containing ethereal treasures. Celestial creatures, resembling both birds and stars, hold the keys to these citadels and are swayed only by enchanting melodies or tales of genuine ambition. Silver pathways, made of stardust, guide adventurers between citadels, and every once in a while, a shooting star grants its blessings, causing the treasures to sparkle even brighter, 4k wallpaper, dreamly,


세계관 만드는 것을 좋아해서 몇 개 만들어봤는데, 이미 잘하고 계신 분들 인사이트를 많이 참고했습니다!

10
2
이정민

이정민

[Tip] MZ 세대가 열광하는 인테리어, 10초 만에 하기 🏠

인테리어 디자인 변경 예시 (1).png출처: 우리집, 스모어톡 인테리어 변경 예시 결과물

🥲 휴 2주 만에 살아 돌아왔습니다... 이사 정말 힘드네요... (몸살도 났어요)

최근 들어서 가장 오래 글을 안 쓴 기간이었던 것 같습니다.

'왜 바빴는가' 라고 질문을 주신다면,

2주간 스모어톡은 이미지 어시스턴트, 플라멜 출시를 앞두고 최소한 대한민국에 파급력을 줄 수 있는 방식을 고민해 무언가를 준비하고 있었습니다. (여전히 잘 모르겠지만 일단 Go, 정말 커밍쑨...)

또한 도전! K-스타트업 2023 왕중왕전 준비(링크), Open Ko-llm Leaderboard 5위 등극(링크, 10/25 일자 1위) 등 오랜만에 저도 ML 엔지니어가 아닌 CSO(전략 담당) 로서 AI 최신 동향에 대해 다시 확인하는 시간을 가졌던 것 같습니다.

그리고 (제일 중요한) 마침 제가 직전 자취방 계약 만료로 이사를 했어야 했는데요.

와... 이사 정말 힘들더라고요...

그런데 또 막상 텅 빈 집을 보고 계약 후 여기를 무엇으로 채워야 할까를 고민하게 되었습니다.

image.png출처: 오늘의집 커뮤니티

사실 저와 같이 2·30 대로 대표되는 MZ세대 사이에서 '집 꾸미기'에 대한 관심이 높은 상황입니다. 광명 이케아에 찾아 갔을 때에도 정말 많은 청년들이 조립 가구를 둘러보고 있더라고요.

이유는 간단합니다.

어차피 월급으로는 집 마련하기 힘드니 인테리어라도 고급으로 해서 집을 꾸미자라는 것인데요.

대부분의 MZ세대(저 포함)는 자가가 아닌 전·월세를 들어 살고 있습니다. 그리고 '오늘의집' 의 주요 이용자는 25~34세, 현대리바트의 페이지뷰의 약 40%가 MZ세대인 것이 앞의 가설을 뒷받침하고 있다고 보여집니다.

그런데 인테리어는 공간 디자인의 특성에 따른 문제가 존재합니다.

  1. 각기 다른 공간에 맞추어야 합니다.

  2. 소유한(=제한된) 인테리어 자산을 기반으로 디자인 해야 합니다.

  3. 빠르게(!) 끝내야 합니다.

또한 당연하게도 디자인이기 때문에 시각적인 미학 또한 소비자의 구매를 이끌어내는 주요 요소이지만, 그만큼 많은 시안을 준비하기에는 여러 물리적인 어려움이 존재합니다.

인테리어 수요자 입장에서도 오프라인으로 직접 업체를 방문하여 견적을 내고, 2~3주를 소요해 시안을 제공받는 것은 당연히 불편했습니다. (중요! 물론 이 솔루션의 구매자는 인테리어 업체입니다)

그런데...

AI와 함께 10초 내로 4개 이상의 시안을 받아 볼 수 있게 되었습니다.

금방 시안을 만든다면, 고객을 설득하는 데 큰 효과가 있지 않을까요?

그래서 국내외에 해당 솔루션을 열심히 개발하는 기업이 존재합니다.

외국에서는,

한국에서는,

가 있습니다. (혹시 추가해야 할 기업은 알려주시면 수정하겠습니다)

오늘은 그 중 REimagine Home 에 대해 살펴보고, 기능에 대해 실제 코드로 구현해보겠습니다.

(빨리 직접 코드로 만들어보고 싶은 분께서는 아래로 스크롤 해주세요)

image.png출처: REimagineHome 홈페이지 메인

1. 사진 업로드

사진을 업로드 합니다.

image.png

2. 업로드 한 사진 한 번 더 확인

잘못된 구도로 촬영할 시 일부 회전할 수 있도록 한 번 더 확인합니다.

image.png

3. 생성 옵션 선택

간편하게 생성할 지 혹은 세부적인 조건을 조정하여 정확하게 생성할 지 선택하게 합니다.

image.png

4. 설정 기다리기 (중요💡)

대기 하는 시간 동안 전후 화면을 비교시켜주고, 하단에 어떤 입력 값을 넣는 지 보여줌으로써 사용자의 관심을 유도합니다. 좋은 방식인 것 같더라고요.

image.png

5. 생성하기

image.pngimage.png다음과 같이 두 가지 조건이 있습니다.

하나는 가구의 재배치를 의미하는 Furnishing, 다른 하나는 실내 구조의 일부를 변경하는 Architectural 입니다.

첫 번째, Furnishing 에서는 현재 이미지가 나타내는 장소가 구체적으로 어디인지(거실인지 부엌인지)에 대한 설명을 넣고, 인테리어 테마를 설정합니다. 다음으로 선호하는 색상 톤과 구체적인 지시 사항을 AI에게 안내합니다. (실제 인테리어 디자이너가 고객을 응대하는 과정과 유사하죠?)

두 번째, Architectural 에서는 현재 이미지의 천장, 벽, 바닥 중 변경을 원하는 것을 선택하여 자동으로 마스킹을 만들고, 선호하는 색상 톤과 구체적인 지시 사항을 AI에게 안내합니다.

image.png저의 경우 두 번째 옵션인 Architectural 에서 벽과 네이비 블루를 선택하여 생성한 결과는 다음과 같습니다.

생성을 다하니, 사이트에서는 이제 수고했으니 워터마크를 지우려면 돈을 내지 않겠나...? 라고 말을 합니다.

(저는 제가 만들기 때문에 돈을 안냅...)

과정이 꽤나 간단하지만, UX를 최적화 시켰다는 점이 주목할 만한 것 같습니다.

특히, 구역 별로 오토 마스킹을 해야 한다는 기술적인 설정을 둔 것도 재밌는 포인트라고 생각되었습니다.

실제 인테리어라는 것이 맨 처음 이사할 때를 제외하고는 일부만 변경하기 때문에 이러한 포인트에서 시장 조사가 잘 되었다고 판단했습니다.

그렇다면 직접 만들어 볼 수는 없을까요? 🤔(당연히 핵심이죠?)

이전에 안내해드린 서비스 내 Furnishing 을 구현해볼 예정이며 간단히 설명을 드리겠습니다.

해당 방법은 Embodied AI Foundation 에서 공개한 MiDaS (이미지 내 깊이 측정 모델) 과 Stable Diffusion 의 ControlNet (사전에 주어진 입력값을 통해 생성할 이미지의 형태를 고정) 기능을 활용합니다.

  1. 실내 사진 이미지를 준비합니다.

    • 아무거나 인테리어 디자인을 원하는 실내를 찍은 이미지 한 장을 준비합니다.

1452703299-gettyimages-464401381.jpg

  1. 구글 코랩 (GPU) 을 엽니다.

    • MiDaS 과 Stable Diffusion 을 사용하기 위해선 GPU 가 필요합니다.

    • 코랩은 클라우드 기반 Jupyter Notebook 환경입니다. 무료로도 사용 가능합니다. (다만 유료로 사용 가능한 V100 이상 부터 사용이 원활합니다)

    • 다음 코드를 입력해주세요.

  1. 라이브러리 세팅을 합니다.

라이브러리 설치

# Install libraries

!pip install -q git+https://github.com/huggingface/diffusers.git -U
!pip install controlnet_aux==0.0.7 # for conditioning models and detectors
!pip install -q transformers accelerate -U

# For xformers with correct torch version due to colab update (for memory efficiency)
!pip install -q torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchaudio==2.0.1+cu118 torchtext==0.15.1 torchdata==0.6.0 --extra-index-url https://download.pytorch.org/whl/cu118 -U
!pip install -q xformers==0.0.19 triton==2.0.0 -U

라이브러리 추가

# Set the Generator and the MiDaS Detector

import torch
import numpy as np
from PIL import Image
from controlnet_aux import MidasDetector
from diffusers import AutoencoderKL, DDIMScheduler, StableDiffusionXLAdapterPipeline, T2IAdapter, DiffusionPipeline
from diffusers.utils import load_image, make_image_grid

  1. AI 모델을 GPU 에 설정합니다.

여기에서 중요한 부분은 본 코드에서는 이미지 내 디테일한 표현을 강화하는 LoRA 가중치를 추가해주었기 때문에, 사용자 입력값인 prompt 앞에 'detail_' 을 추가해주어야 합니다.

# load adapter
adapter = T2IAdapter.from_pretrained(
    "TencentARC/t2i-adapter-depth-midas-sdxl-1.0", torch_dtype=torch.float16, variant="fp16"
).to("cuda")

# load scheduler
model_id = "stabilityai/stable-diffusion-xl-base-1.0" # Base model

ddim = DDIMScheduler(
    num_train_timesteps=1000,
    beta_start=0.00085,
    beta_end=0.012,
    beta_schedule="scaled_linear",
    clip_sample=False,
    set_alpha_to_one=False,
    steps_offset=1,
)

# load vae
vae = AutoencoderKL.from_pretrained(
    "madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16
)

# load base for sdxl
pipe = StableDiffusionXLAdapterPipeline.from_pretrained(
    model_id,
    vae=vae,
    adapter=adapter,
    scheduler=ddim,
    torch_dtype=torch.float16,
    variant="fp16",
    use_safetensors=True
).to("cuda")

# save memory and improve inference speed
pipe.enable_xformers_memory_efficient_attention()

# set lora for detailed image
pipe.load_lora_weights("jyoung105/detail-tweaker-XL-lora", weight_name="add-detail-xl.safetensors", adapter_name="detail")
#pipe.set_adapters("detail")

# load MidaS detector
midas_detector = MidasDetector.from_pretrained("lllyasviel/Annotators").to("cuda")

# load refiner for sdxl
refiner_id = "stabilityai/stable-diffusion-xl-refiner-1.0"
refiner = DiffusionPipeline.from_pretrained(
    refiner_id, vae=vae, torch_dtype=torch.float16, variant="fp16", use_safetensors=True)
refiner.to("cuda")

# save memory and improve inference speed
refiner.enable_xformers_memory_efficient_attention()

  1. 원래 이미지에서 MiDaS를 통해 Depth 이미지를 추출합니다.

image = load_image(url) #IMPORTANT! url is from your image
midas_image = midas_detector(image, detect_resolution=512, image_resolution=1024)
midas_image = np.array(midas_image)[:, :, ::-1]
midas_image = Image.fromarray(np.uint8(midas_image))

다운로드 (4).png

  1. 프롬프트 등 원하는 스타일의 이미지를 텍스트 형태로 입력합니다.

prompt = "detail_photo of a room with sofa, 4k, f1.5, highly detailed, high defintion"
negative_prompt = "wrong, anime, cartoon, graphic, text, painting, crayon, graphite, abstract, glitch, deformed, mutated, ugly, disfigured"
seed = 1234567890
generator = torch.Generator(device="cuda").manual_seed(seed)

latents = pipe(prompt=prompt,
               negative_prompt=negative_prompt,
               image=midas_image,
               num_inference_steps=40,
               adapter_conditioning_scale=0.9,
               adapter_conditioning_factor=1.1,
               guidance_scale=8,
               generator=generator,
               output_type="latent",
               cross_attention_kwargs={"scale": 1.5}
               ).images

images = refiner(
    prompt=prompt,
    negative_prompt=negative_prompt,
    guidance_scale=7.5,
    image=latents,
    generator=generator,).images

image = images[0]
image.save("/content/interior.png")

의 과정을 거치면 나오는 이미지들은 다음과 같습니다,

짜잔 🌟

다운로드 (2).png다행히 이번에는 개발하는 데 그렇게 오랜 시간이 걸리지는 않더라고요.

다만 아쉬운 점은 다음과 같습니다.

  • 아래 이미지에서 확인할 수 있듯이, 무엇이 무엇인지를 정확히 확인하지는 못한다. 이 때 필요한 것이 semantic segmentation (구역에 대한 의미를 부여하며 영역 분할).

인테리어 디자인 변경 예시.png정확한 촬영 장면 반영을 위해서는 추가 ControlNet 이 필요할 수도 있다.

  • 기업에서 사용하길 원하신다면, 본인만의 자산으로 사용 가능해야 하는데 생성 이미지는 무작위적으로 나온다. 이 때 필요한 것이 LoRA (파인튜닝) 또는 IP Adapter (해당 기술 관련 글)

*참고로 단순히 파인 튜닝을 한다고 결과물이 잘 나오는 것은 아닙니다. 상용화 수준을 원하신다면 기술력이 필요합니다.

같이 고민해보고 싶은 분들 또는 서비스하고 싶은데 AI 모델 관련 협업이 필요하시면 연락주세요!

인테리어 디자인 변경 예시 2.png오랜만에 이사를 하면서 관련해 실제 현장에서 AI를 사용해볼 수 있는 지점을 모색해 볼 수 있었습니다. 실제 현장에 이미지 생성 모델을 확산시키고자 하는 비전은 계속되며 다음 번에도 재밌는 아이디어로 찾아뵙겠습니다 :)


이정민 (스모어톡, tonylee@smoretalk.io)

플라멜 Flamel v0.1

프롬프트 엔지니어링이 필요 없는 가장 쉬운 검색형 이미지 생성 서비스

18
7
이정민

이정민

[Tip] 생각보다 트랙션 나오는 슬랙 이모지 사이트 👨‍💻

샘 알트먼 이모지 버전.png슬랙 이모지 만들기 AI와 함께 라면 어렵지 않아요 👋

여러분 다들 슬랙 사용하시나요?

슬랙(Slack)은 글로벌 1위 기업용 메신저로 22년도 기준 100대 기업 중 77 곳이 슬랙을 사용하고 있습니다.
사실 슬랙의 첫 시작은 게임(tiny spec)이었는데, 나중에 메신저로 피벗해서 큰 성공을 거두었습니다.

엔터테인먼트 기업으로 시작한 슬랙에 "일하는데 꼭 진지해야 되나?"라는 의구심에서 탄생한 슬랙 메신저의 정체성을 이루는 요소가 있습니다.

바로 이모지(Emoji) 입니다.

저희 회사 뿐만 아니라 다양한 스타트업, AI 커뮤니티의 슬랙을 보면 이모지를 정말 잘 사용하고 있는데요.

소통을 캐주얼하게 해준다는 점에서 큰 효과를 주는 것 같습니다.

그런데 남들 모두가 사용하는 이모지, 스타트업은 그런 거 안 좋아하잖아요.

차별화(?)를 위해 슬랙 이모지를 직접 만들거나 아니면 다른 홈페이지에서 가지고 오곤 합니다.

그래서 그런지 슬랙 이모지 사이트... 접속량이 꽤 있습니다. 세 개의 사이트를 살펴보면요.

  1. https://slackmojis.com/

image.png월간 방문 횟수 260K (23.09 기준)

  1. https://emoji.gg/

image.png

월간 방문 횟수 845K (23.09 기준)

  1. https://emoji-gen.ninja/ko/

image.png월간 방문 횟수 34K (23.09 기준)

오... 단순한데 많은 사람들의 관심을 이끌어 내었습니다.

그리고 이러한 관심을 잘 간파한 우리 오픈 소스 진영 내 한 개발자가 이모지의 창의성을 극대화한 서비스를 하나 들고 옵니다.

바로 https://emojis.sh/ 입니다.

우선 서비스 개발자의 말부터 들어 봅시다.

https://twitter.com/pondorasti/status/1709776270014443895

image.png런칭 24시간만에 160,000 개의 이모지 생성, 31,000명 방문...

현재 420,000 개의 이모지가 생성된 것으로 나오니 대략 80,000명이 방문했을 것으로 예측됩니다.

(물론 서비스 운영해보신 분들은 아시겠지만 열성 유저가 저 이모지의 대부분을 만들었을 수도 있습니다)

그런데 특이한 것이 보이죠?

바로 600개의 깃헙 스타입니다. 바로 오픈 소스로 홈페이지를 공유한 것인데요.

홈페이지를 봐야겠습니다.

image.png홈페이지는 정말 단순합니다. 이모지로 만들고 싶은 내용 입력 후 생성.

과정은 텍스트 필터링, 입력값에 어울리는 '이모지스러운' 이미지 생성, 배경 제거 의 순으로 진행되는 것으로 보입니다.

그리고 오른쪽 상단에는 깃헙 로고가 있는데 클릭하면 위 홈페이지의 전체 코드가 담긴 repo 로 연결됩니다.

이렇게 글로벌 레벨에서는 오픈 소스 생태계가 생각보다 정말 활발히 운영되고 있습니다.

그래서 저도 하나 공유를 드려볼까 하는데요. 슬랙 이모지 한 번 직접 만들어 봅시다.

sam altman with thumbs up _ios _2_clipdrop-background-removal.png저는 전 세계 3위, AI 분야 1위의 기업 가치를 자랑하는 오픈 AI 의 CEO 샘 알트먼이 참 대단한 사람이다 라고 생각합니다. 오픈 소스에 대척점에 서기는 했지만, Y Combinator 의 성공적인 운영에 이어 새로운 패러다임을 이끌어 나가고 있다는 점에서 존경스럽습니다.

그런 점에서 멋진 사람의 '따봉'이 좀 더 있어 보이는 것 같아(개인적인 생각) 저희 팀의 슬랙 이모지로도 알트먼의 따봉👍을 사용하기 시작했습니다.

슬랙 캡처.png

이런 샘 알트먼 이모지를 만들기 위해선,

  1. Colab 을 킵니다. 그리고 라이브러리를 다운 받습니다.

!pip install -U git+https://github.com/huggingface/diffusers.git
!pip install -U transformers accelerate xformers safetensors

  1. Stable Diffusion XL 을 세팅합니다. iOS emoji 의 파인튜닝 모델과 함께요.

import torch
from diffusers import AutoencoderKL, DDIMScheduler, StableDiffusionXLPipeline

# Set Scheduler
ddim = DDIMScheduler(
    num_train_timesteps=1000,
    beta_start=0.00085,
    beta_end=0.012,
    beta_schedule="scaled_linear",
    clip_sample=False,
    set_alpha_to_one=False,
    steps_offset=1,
)

# Set Decoder
vae = AutoencoderKL.from_pretrained(
    "madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16
)

model_id = "stabilityai/stable-diffusion-xl-base-1.0"

# Set Stable Diffusion
pipe = StableDiffusionXLPipeline.from_pretrained(
    model_id,
    vae=vae,
    scheduler=ddim,
    torch_dtype=torch.float16,
    variant="fp16",
    use_safetensors=True
).to("cuda")

# For efficient memory
pipe.enable_model_cpu_offload()
pipe.enable_xformers_memory_efficient_attention()

# IMPORTANT!!! Set LoRA of iOS emoji
pipe.load_lora_weights("camenduru/ios-emoji-xl", weight_name="ios_emoji_xl_v2_lora.safetensors")
pipe.fuse_lora(lora_scale=0.6)

  1. 입력값을 넣어 생성합니다.

prompt = "A TOK emoji of Sam Altman"
negative_prompt = "ugly, deformed, noisy, blurry, distorted, grainy, text, cropped"
generator = torch.Generator("cuda").manual_seed(42)
image = pipe(prompt=prompt, negative_prompt=negative_prompt, num_inference_steps=40, generator=generator)
image = image.images[0]

  1. 그 결과는 바로 다음과 같습니다.

sam altman _ios _pre.png좋은데 샘 알트먼이라고 하기에는 조금 애매합니다.

이럴 때는 IP-Adapter 를 사용해 참고할 만한 이미지를 일부 반영해 이미지를 생성해줍니다.

저는 샘 알트먼의 프로필 이미지를 참고하도록 사용했습니다.

from ip_adapter import IPAdapterXL

image_encoder_path = "/content/h94/sdxl_models/image_encoder" 
ip_ckpt = "/content/h94/sdxl_models/ip-adapter_sdxl.bin"  
ip_model = IPAdapterXL(pipe, image_encoder_path, ip_ckpt, device="cuda")

코드를 간략히 보면 이미지를 반영하는 image encoder 와 이미지를 생성하는 스테이블 디퓨전 모델에 반영되는 weight 값이 설정 되어야 함을 알 수 있습니다.

images = ip_model.generate(pil_image=profile_image, num_samples=1, num_inference_steps=50, seed=164710062023, prompt="A TOK emoji of a man with thumb up", negative_prompt="low quality, blurry, mutated", guidance_scale=7.5, scale=0.75)

profile_image 에 위 샘 알트먼의 프로필 이미지를 입력하고 기존과 동일하게 입력하여 이미지를 만들면 됩니다. 저는 '따봉을 주는' 샘 알트먼의 이모지가 필요했기 때문에 입력 값에 'with thumb up" 을 집어넣어 주었습니다.

그래서 나온 결과는 바로

sam altman with thumbs up _ios _2.png

위 이미지를 배경만 제거하면 슬랙 이모지에 사용할 수 있는 이미지가 만들어 지게 됩니다. 시도해 볼만 한가요?

당장은 코드 작업이 좀 불편한 분들이 계실 수도 있어서 저도,

  • Vercel 로 빠르게 웹페이지 배포 후 공개 (돈 많이 나갈 예정)

  • 특정 부위 묘사 잘하는 AI 모델 자체 개발 (새벽 남는 시간 데이터셋 모으는 중)

을 고민해 보고 있습니다.

스모어톡과 함께 이미지 AI를 기업 내에 도입하고 싶은 분들은 커피챗, 미팅 등으로 편하게 연락주세요 :)


이정민 (스모어톡, tonylee@smoretalk.io)

플라멜 Flamel v0.1

프롬프트 엔지니어링이 필요 없는 가장 쉬운 검색형 이미지 생성 서비스

17
4
이정민

이정민

[Tip] 90초면 모든 촬영이 끝, AI 패션 모델 만들기 (2)👗

👇👇👇 이제 직접 만들어 볼까요?

작업 예시 _1 (1).png출처: 무신사 스냅 (링크, 스냅 닉네임 zero_jean_), 스모어톡 의상 변경 예시 결과물

AI 패션 모델에 관한 전반적인 내용은 AI 패션 모델 만들기 1편 링크 를 확인해주세요

모델 의상 변경 예시.png

그럼 이제 만들어 봐야죠?

어도비 코리아의 블로그 글 [입문자들을 위한 패션 사진 촬영법](링크) 을 참고한 저의 작업 플로우는 아래와 같습니다. 여기에 세부적인 작업 과정이 추가가 될 것입니다.

작업 구조도.png

먼저 구도를 확보해야 합니다.

패션 사진은 단순히 촬영에 그치는 것이 아니라 사진에 스토리텔링을 담아야 합니다. (이걸 왜 패션 문외한인 제가 말씀드리는 지는 모르겠지만...)

저는 이미지 구도 확보를 목적으로 무신사 스냅(링크) 을 참고했습니다.

무신사 스냅은 트렌디한 패션 컨텐츠를 보여주는 무신사의 앱인앱(App-in-App) 형태 버티컬 SNS 입니다.

image.png

출처: 무신사 스냅 (김어몽 님, malko_bee 님)

아무래도 스트릿 패션과 관련한 구도를 잡기가 용이해 보입니다.

저는 무신사 스냅 구글 검색 후 나온 이미지 중에서 하나를 무작위로 선정했습니다.

바로 이 사진이죠.

모델 사진 _기본 (1).png

출처: 무신사 스냅 (링크, 스냅 닉네임 zero_jean_)

감각적인 이 사진을 활용해서 하는 작업은 먼저 자세를 추출합니다. (전체 코드는 아닙니다)

from controlnet_aux import OpenposeDetector

#set the detector
pose_detector = OpenposeDetector.from_pretrained("lllyasviel/Annotators").to("cuda") 

image_path = "/content/drive/MyDrive/{file_name}" #chcck file_name
image = load_image(image_path)

#detect posture
pose_image = pose_detector(image, detect_resolution=512, image_resolution=1024, include_face=True, include_hand=False)
pose_image = np.array(pose_image)[:, :, ::-1]
pose_image = Image.fromarray(np.uint8(pose_image))

그러면 아래와 같은 자세 이미지가 추출됩니다.

작업 구도 추출 _1 (1).png자세 이미지는 말 그대로 자세만 있기 때문에 실제 사람 같은 가상 모델의 이미지를 만들어야 할 거에요.

해당 이미지로 이미지를 생성하는 방법으로 Stable Diffusion 을 구성하는 모듈 중 U-Net 에 지속적으로 윤곽값을 설정해주는 ControlNet 을 사용합니다.

아래 코드 중 image=pose_image 가 바로 윤곽값을 설정해주는 문장입니다. (전체 코드는 아닙니다)

# Generate an image with ControlNet
prompt = "photo of beautiful girl, with pastel hair, blue jeans, in golden ratio, model pose, dslr, 8k, 4k, ultrarealistic, realistic, photorealistic, natural skin, textured skin"
negative_prompt = "wrong, deformed hands, mutated limbs, blurry, bad quality, nude, text"
seed = 2024

compel_base = Compel(tokenizer=[pipe.tokenizer, pipe.tokenizer_2] , text_encoder=[pipe.text_encoder, pipe.text_encoder_2], returned_embeddings_type=ReturnedEmbeddingsType.PENULTIMATE_HIDDEN_STATES_NON_NORMALIZED, requires_pooled=[False, True])
compel_refiner = Compel(tokenizer=refiner.tokenizer_2 , text_encoder=refiner.text_encoder_2, returned_embeddings_type=ReturnedEmbeddingsType.PENULTIMATE_HIDDEN_STATES_NON_NORMALIZED, requires_pooled=True)

high_noise_frac = 0.85

conditioning, pooled = compel_base(prompt)
conditioning_neg, pooled_neg = compel_base(negative_prompt) if negative_prompt is not None else (None, None)
generator = torch.Generator(device="cuda").manual_seed(seed)

latents = pipe(prompt_embeds=conditioning,
               pooled_prompt_embeds=pooled,
               negative_prompt_embeds=conditioning_neg,
               negative_pooled_prompt_embeds=pooled_neg,
               image=pose_image,
               num_inference_steps=40,
               adapter_conditioning_scale=0.9,
               adapter_conditioning_factor=1.1,
               guidance_scale=8,
               denoising_end=high_noise_frac,
               generator=generator,
               output_type="latent",
               cross_attention_kwargs={"scale": 1.}
               ).images

conditioning, pooled = compel_refiner(prompt)
conditioning_neg, pooled_neg = compel_refiner(negative_prompt) if negative_prompt is not None else (None, None)
generator = torch.Generator(device="cuda").manual_seed(seed)

images = refiner(
    prompt_embeds=conditioning,
    pooled_prompt_embeds=pooled,
    negative_prompt_embeds=conditioning_neg,
    negative_pooled_prompt_embeds=pooled_neg,
    guidance_scale=7.5,
    denoising_start=high_noise_frac,
    image=latents,
    generator=generator,).images

image = images[0]

저는 compel library 를 통해 텍스트 임베딩을 최적으로 조정하도록 했습니다.

굳이 사용 안 하셔도 되기는 합니다. 쉬운 코드는 추후에 수정해서 공유해드리겠습니다.

작업 구도 추출 _3 (1).png그렇게 일단 이미지 하나 완성했습니다.

다음으로 입고 있는 청자켓을 그대로 딴 마스킹 이미지가 필요합니다.

전체 이미지를 수정하는 것이 아니라 이미지 내 일부를 수정해야 하기 때문에, 수정이 필요한 영역을 지정하는 마스킹 이미지가 필요합니다.

필요한 영역의 마스킹 이미지를 생성하는 방법으로 자연어 기반 마스킹이 가능한 Grounded SAM 을 사용합니다. Grounding DINO 를 통한 자연어 기반 객체 인식, SAM 을 통한 객체 이미지 분할을 연결한 구조라고 이해하시면 될 것 같습니다.

세 가지 함수를 이용합니다. (전체 코드는 아닙니다)

# detect object using grounding DINO
def detect(image, text_prompt, model, box_threshold = 0.3, text_threshold = 0.25):
  boxes, logits, phrases = predict(
      model=model,
      image=image,
      caption=text_prompt,
      box_threshold=box_threshold,
      text_threshold=text_threshold
  )

  annotated_frame = annotate(image_source=image_source, boxes=boxes, logits=logits, phrases=phrases)
  annotated_frame = annotated_frame[...,::-1] # BGR to RGB
  return annotated_frame, boxes

# segment object with SAM
def segment(image, sam_model, boxes):
  sam_model.set_image(image)
  H, W, _ = image.shape
  boxes_xyxy = box_ops.box_cxcywh_to_xyxy(boxes) * torch.Tensor([W, H, W, H])

  transformed_boxes = sam_model.transform.apply_boxes_torch(boxes_xyxy.to(device), image.shape[:2])
  masks, _, _ = sam_model.predict_torch(
      point_coords = None,
      point_labels = None,
      boxes = transformed_boxes,
      multimask_output = False,
      )
  return masks.cpu()

# Make masking image based on the result of SAM
def draw_mask(mask, image, random_color=True):
    if random_color:
        color = np.concatenate([np.random.random(3), np.array([0.8])], axis=0)
    else:
        color = np.array([30/255, 144/255, 255/255, 0.6])
    h, w = mask.shape[-2:]
    mask_image = mask.reshape(h, w, 1) * color.reshape(1, 1, -1)

    annotated_frame_pil = Image.fromarray(image).convert("RGBA")
    mask_image_pil = Image.fromarray((mask_image.cpu().numpy() * 255).astype(np.uint8)).convert("RGBA")

    return np.array(Image.alpha_composite(annotated_frame_pil, mask_image_pil))

그러면 아래와 같이 'jacket' 을 입력했을 때 자켓의 이미지만 분할 되는 모습을 확인하실 수 있습니다.

작업 구도 마스킹 2 (1).png

그리고 마스킹 이미지를 만들어야 합니다.

mask = segmented_frame_masks[0][0].cpu().numpy()
image_mask_pil = Image.fromarray(mask)

(중요) 참고로 마스킹 이미지의 의미는 하얀색 부분이 수정하는 영역, 검은색 부분이 고정되는 영역입니다.

작업 구도 마스킹 3 (1).png그렇게 마스킹 이미지도 확보했습니다.

마지막으로 입고 있는 청자켓을 다른 자켓 이미지로 수정합니다.

저는 가상의 옷이 아니라 실제 가지고 있는 옷을 그대로 반영하는 것을 원하기 때문에, 기존의 이미지 입력 방식으로는 한계가 있습니다. 학습을 하자니 시간과 필요한 이미지가 많이 필요한 것이 문제입니다.

그래서 있는 옷 이미지를 그대로 집어 넣어주고자 이미지 방식의 프롬프팅 효율성을 극대화한 IP Adapter 를 사용합니다. (전체 코드는 아닙니다)

image_encoder_path = "/content/h94/sdxl_models/image_encoder"
ip_ckpt = "/content/h94/sdxl_models/ip-adapter_sdxl.bin"

ip_model2 = IPAdapterXL(pipe2, image_encoder_path, ip_ckpt, device="cuda")

# save the width and height
width, height = image_source_pil.size

# resize for inpainting
image_source_pil = image_source_pil.resize((1024, 1024))
image_mask_pil = image_mask_pil.resize((1024, 1024))

# Upload an image of clothes
new_clothes_image = Image.open("/content/drive/MyDrive/{image_file}")
new_clothes_image.resize((1024, 1024))

# Generate an image with IP Adapter
final_images = ip_model2.generate(pil_image=new_clothes_image, prompt="best quality", negative_prompt=negative_prompt, image=image_source_pil, mask_image=image_mask_pil, num_inference_steps=60, strength=0.95)
final_image = final_images[0].resize((width, height))

아래 이미지는 순서대로 코드 내 image_source_pil, image_mask_pil, final_image 입니다.

패딩 이미지는 코드 내 new_clothes_image 에 해당하고요.

작업 결과 (1).png

그래서 나온 이미지를 다시 크게 살펴보면,

작업 결과 2 (1).png

패딩 이미지가 꽤나 잘 반영된 이미지가 나오는 것을 확인할 수 있습니다.

사실 새로운 모델 이미지를 사용하지 않아도 됩니다.

첫 단계를 생략하고 진행하면 아래와 같은 이미지가 만들어집니다.

작업 결과 3 (1).png실제 이미지에서도 패딩 이미지가 잘 반영된 모습을 확인하실 수 있습니다.

다만 이미지 생성 모델을 통해 나온 이미지가 아닐 경우 이미지 내 일부를 수정하는 인페인팅 작업 과정에서 부자연스럽게 결과 이미지가 나올 수 있다는 점은 기억해 주셔야 할 것 같습니다. 현재 기준 어도비 파이어플라이의 제너레이티브필을 사용한 결과를 생각해보시면 쉬울 것 같습니다.

이번에는 사실 많은 코드를 공유해드리지는 못했습니다.

작성된 코드가 매우 길기 때문에 과정을 안내해드리고자 한 글이 다소 어지러워질 수 있다고 판단했기 때문입니다.

다만 궁금하시면 최대한 많이 질문 남겨주세요. 글 수정을 통해 반영하도록 하겠습니다.

그리고 이 방법이 사실 최선은 아니고,

구글에서 발표한 TryOnDiffusion (링크) 이 현재 기준으로 최고의 방법인데 안타깝게도 공개된 코드가 하나도 없습니다.

추석 연휴가 끝나기 전 팀이 필요한 업무를 다 마치면 한 번 스크래치를 만들어볼까 합니다. 스모어톡이 타겟하는 시장은 아니라서 시간 날 때 혼자 해보려고 합니다.

이미지 AI 모델이 궁금하시다면 언제든 연락주세요!
이정민 (스모어톡, tonylee@smoretalk.io)

플라멜 Flamel v0.1

프롬프트 엔지니어링이 필요 없는 가장 쉬운 검색형 이미지 생성 서비스

18
4
이정민

이정민

[예고편] 이미지 생성 모델, 그게 뭐냐? 🤔

diffusion.gif

made by 스모어톡

AI가 이미지를 생성한다고 합니다.

아바타도, 상품 이미지도, 패션 모델 사진도 만들 수도 있대요.
그런데 AI가 이미지를 생성하는 방식은 알고 계신가요?

앞으로 스모어톡이 설명해드리겠습니다. Coming Soon 🚀

이정민(스모어톡, tonylee@smoretalk.io)

p.s. GIF 만드는 방법

import matplotlib.pyplot as plt
import matplotlib.animation as animation

timesteps = 50

fig = plt.figure()
ims = []

for i in range(timesteps):
    im = plt.imshow(image_list[i]) #image_list: list of images from step 1 to 50
    ims.append([im])

animate = animation.ArtistAnimation(fig, ims, interval=400000, blit=True, repeat_delay=10000)
animate.save('diffusion.gif', fps=12)
plt.show()

플라멜 Flamel v0.1

프롬프트 엔지니어링이 필요 없는 가장 쉬운 검색형 이미지 생성 서비스

9
0
이정민

이정민

[Tip] 90초면 모든 촬영이 끝, AI 패션 모델 만들기 (1)👗

👇👇👇 아래 사진들의 공통점이 무엇인지 아시나요?

AI 모델.png출처: LF 패션 모델 나온 (왼쪽), Levi's 패션 모델 (오른쪽)

바로 실제 사람이 아닌 AI 패션 모델의 사진이라는 것입니다.

유통가에서는 이미 버추얼 휴먼(가상인간)의 도입을 서두르고 있습니다.

이유는 여러가지입니다.

그 중 하나는 모델도, 세트도, 사진작가도 필요 없어 패션 광고 소재에 다양성을 불어 넣어줄 수 있기 때문 이라고 생각합니다.

패션계에 AI 도입 사례는 대표적으로 2가지가 있어 보입니다.

첫 번째는, 썸네일에도 있는 리바이스(리바이 스트라우스)의 AI 패션 모델입니다.

지난 3월 생성 AI 패션 모델을 제작하는 디지털 패션 스튜디오 Lalaland.ai 와 협력해 진행한 사례입니다. AI 모델이 실제 고객의 역할을 보충함으로서 향상된 경험을 제공하기 위함이 이유였죠.

물론 모델의 일자리를 빼앗을 것이란 우려도 함께 튀어나왔습니다.

라라랜드.jpeg출처: 월스트리트저널 (링크)

두 번째는, AI 패션 위크(이하 'AFW') 입니다.

지난 4월 뉴욕에서 개최된 2023 AFW 에서는 기존의 패션 위크 문법을 완전히 부수었습니다. 지정된 시간대에 런웨이에서 실물 모델이 새로운 패션을 선보이던 이전과 달리 갖가지 이미지 생성 AI (주로 미드저니) 를 사용해 의상 컬렉션 이미지를 제작하여 제출했고, 온라인 전시 및 투표 후에 실제 제품 생산이 이루어졌죠. 기존 디자이너의 작업이나 레퍼런스에 의존하는 프롬프트를 사용하지 않고 진행되었다는 점에서 참신하기까지 했습니다.

본 행사에서는 디자이너가 수 많은 샘플을 만들어내는 데 필요한 리소스(시간, 비용)을 획기적으로 줄일 수 있다는 가능성을 탐색할 수 있었습니다.

출처: AI 패션 위크(링크)

그래서 결론은, 아이데이션에도 실제 캠페인 작업물에도 AI는 새로운 가능성을 주었다는 것입니다. 즉, 중소형 패션 기업이 대다수인 시장에서 AI는 해당 기업들에 더 넓은 기회의 장을 줄 수 있다는 것입니다.

해당 문제를 풀고자 하는 기업으로는 앞서 언급한 lalaland.ai 외에 외국에서는,

한국에서는,

가 있습니다. (혹시 추가해야 할 기업은 알려주시면 수정하겠습니다)

그 중 Booth.ai 내 Flatlay to Person 기능을 통해 AI 패션 모델을 만들기 위해선 무슨 작업이 필요한 지 확인해보겠습니다.

image.png(사실 기능이 정말 많아요. 다 필요한 것인지는 모르겠지만요...)

Flatlay to Person 은 바닥에 놓고 의상을 찍은 사진을 모델이 입고 촬영한 사진으로 변환해 생성해주는 기능입니다.

부스에이아이.png

크게 과정을 살펴보면 의상 종류 선택 - AI 모델 선택 - 동작/장면 묘사 - 기타 설정(네거티브 프롬프트, 의상 위치 설정) 순입니다.

그리고 위 내용대로 설정 시 만들어지는 이미지는 다음과 같습니다.

부스에이아이_결과.png(뭔가가 30초 이내로 나오기는 했습니다... 무료라 워터마크가 있습니다)

✅ 사실 여기서 이미지 AI 를 잘 아는 사람이라면, 3가지 기능을 사용한 것을 알 수 있습니다.

  • 인물을 묘사하는 것은 LoRA (가중치, weight)

  • 장면을 묘사하는 것은 프롬프트 (prompt), 장면에 넣지 말아야 하는 것은 네거티브 프롬프트 (negative prompt)

  • 의상의 크기를 조정하거나 위치를 조정하는 것은 아웃페인팅(Outpainting) 또는 컨트롤넷(ControlNet)

이 바로 그것이죠.

그렇다면 직접 만들어 볼 수는 없을까요? 🤔

Booth.ai 에서 모델 컷 1장을 생성하기 위해 필요했던 것은 다음과 같습니다.

image.png

그렇지만 저는 1) AI 모델에 제한을 두고 싶지 않았고, 2) 의상의 위치나 구도가 고정되면 부자연스러워 보일 것이라 생각했습니다. 그래서 다음과 같은 작업 과정을 거쳤습니다.

image.png즉,

  1. 우선 원하는 구도를 미리 확정합니다.

  2. 그리고 해당 구도와 원하는 장면 스타일에 맞추어 AI 모델이 들어간 사진을 제작합니다.

  3. 마지막으로 모델 컷에 활용할 의상을 입혀줍니다.

어떻게 보면 모델에 의상을 입혀주는 과정의 순서가 뒤로 밀린 것을 제외하고는 실제 작업 과정과 동일한 것이죠.

그리고 그 결과는 아래와 같습니다.

완성 예시_1.png완성 예시_2.png완성 예시_3.png

2편에서 실제 작업 과정 만을 담은 내용으로 돌아오겠습니다.

이미지 AI 모델이 궁금하시다면 언제든 연락주세요!
이정민 (스모어톡, tonylee@smoretalk.io)

플라멜 Flamel v0.1

프롬프트 엔지니어링이 필요 없는 가장 쉬운 검색형 이미지 생성 서비스

19
2
박종한

박종한

New Aesthetica Report #1 | 091123

image.png

일주일에 적으면 2회, 많으면 5회까지 제가 Design-tech에 대해 공부하고 생각한 것을 New Aesthetica Report 로 보내려고요! 응원해주시는 여러분 덕분에 큰 힘을 얻고 있습니다.

오늘의 Morning Study

제가 쓰는 노트 앱인 Reflect.app 에 Morning Solitary Study라는 노트를 만들었습니다. 오전에 PT 스케줄이 없으면 가장 일찍 출근해서 다들 잘 때(우리 팀은 늦게 자고 늦게 출근합니다) 말짱한 정신으로 공부하고 있습니다. 혼자 있을 때 아무래도 훨씬 집중해서 공부할 수 있거든요.

  • 오늘은 Design-tech 에 대한 굳어 있던 내 머릿속을 재활성화하는 시간. 디자인 전반과 디자인 테크에 대해 기존에 보던 웹사이트들을 오랜만에 들어가 보고, ‘예술 산업’, ‘인공지능과 디자인’등의 키워드로 DBpia에서 논문들을 인용순으로 다운받았다. 홍익대학교 감사합니다.

  • 이번 주 일주일의 목표는 이 사업에 대한 내 철학을 설명할 때 발생하는 비약을 제거하는 것이다. 미학과 기술에 대한 관점을 가지고 있는 사람이오나 여전히 19년도 1학년 시절의 아이디어에 머물러 있다. 부끄럽다!

  • 논문들을 와르르 받아서 Resourses 폴더 안의 0911 스터디 폴더에 넣고 1-인사이트 있음, 2-특정 포인트에서 인사이트 있음, 3-딱히 볼 필요 없음으로 분류하기 시작했다. 애플 기본 preview앱의 highlight 도구도 활용하고 있다. 논문 작성자의 소속과 상태에 따라 미학 관점으로 접근하는 사람, 미술 시장 관점으로 접근하는 사람, 비즈니스 관점으로 접근하는 사람, 그냥 졸업하고 싶은 사람 등 다양했다. 그래서 재밌다.

  • 이 토픽을 다루는 유망한 영문 저널은 어디인지 얼른 알아봐야 할 듯. 한국어로 쓰여있는 국내 학계는 매우 좁고 느리다(언어의 한계로 어쩔 수밖에 없다).

  • AI 디자인 툴의 디자인 업무 지원 방향성 제안(정은희, 최정민; 서울과기대 2022) 는 우리가 어떤 유틸리티를 제공하는 툴을 만들어야 하는지 고민하는 데 도움을 주었고, NFT 아트 - 예술계의 탈중앙화 흔적의 아우라(박대민; 선문대 2021)은 허구한 날 단토 언급하며 내가 만들고 싶은 디자인 시장에 대해 말하던 내가 생각을 정리할 수 있게 하는 기회를 주었다. 앞으로의 New Aesthetica Report에서 내용을 다룰 것이다.

오늘 한 생각들

  • 어제 저녁 한강에서 혼자 위스키 마시면서 청승떨다가 한 생각은

    • 나는 근 2년동안 스타트업 업계에 있으면서 ‘기쁨의 감각’을 키워왔다. 제품 만들기와 사업하기를 어떻게 하는 게 맞는 것인지, 어디에서 기쁨을 느끼고 어디에서 쎄함과 답답함을 느껴야 하는 지 하는… 좋은 직관을 만들어 나가고 있는 것 같다.

  • 그리다를 위한 디자인 커뮤니티를 만들어 나가는 과정에서 New Aesthetica 라는 브랜드를 최대한 활용하자.

  • 1년 안에 학술저널에 내 논문을 기고하는 것도 좋은 목표가 될 것 같다. 회사 이름으로.

⬇️ New Aesthetica 구독하기

4
0