마이크로소프트가 OpenAI 최대 투자자라서 ChatGPT를 빙에 추가함

아마 이게 내부적으로 개발팀이 부르는 코드네임이 "시드니"인 모양임

밑에 쭉 내리다가 영문 스샷 중에 이상하게 긴 거 보면 에러 난 부분에 "시드니는 어쩌고" 이런 식으로 출력됨


이거 베타 뜨자마자 신청하고, 다음 날에 바로 선정 되서 검색 엔진 '빙'에서 챗 GPT 써봄

얘 특징은 21년 이후의 정보는 학습되지 않은 ChatGPT하고 다르게,
모르는 내용은 인터넷을 검색해서 지가 읽어보고 요약하거나 해서 알려줌.

PDF 논문 같은 거 빙에 당겨다 넣으면 요약도 해주고 사용자랑 같이 논문 리뷰도 어느 정도 가능함.

19금 사이트 몇 개 넣어봤는데 헛소리 해버리더라. 어느 정도 막혀 있는 듯.




그럼 이 글의 본문인 AI 그림의 원리에 대해 신(AI)에게 물어보자.




Q. 스테이블 디퓨전에 대해 말해 봐.


A. 스테이블 디퓨전은 개방형 AI 툴을 개발하는 영국에 본사를 둔 Stability AI가 2022년에 출시한 딥러닝 텍스트-이미지 변환 모델입니다. 이 모델은 텍스트로부터 이미지를 생성하거나, 텍스트를 기반으로 이미지를 수정하거나, 저해상도 또는 저디테일 이미지의 세부 사항을 채울 수 있습니다. 수십억 개의 이미지에 대한 학습을 마쳤으며 DALL-E 2 및 MidJourney와 비슷한 수준의 결과를 생성할 수 있습니다. 뮌헨 대학의 CompVis 그룹이 개발한 '라텐트 디퓨전(잠재 확산) 모델'을 사용하는 오픈 소스 머신 러닝 모델입니다.




Q. '라텐트 디퓨전(잠재 확산)' 모델이 어떤 방식을 말하는 건데?


A. '라텐트 디퓨전(잠재 확산)'은 이미지 형성 과정을 노이즈 제거 자동 인코더의 순차적 적용으로 분해하는 심층 생성 신경망인 디퓨전(확산) 모델을 개선하는 기술입니다. 라텐트 디퓨전 모델은 이미지를 잠재(라텐트) 공간이라고 하는 정보 밀도가 높은 공간으로 인코딩하여 품질 저하 없이 확산(디퓨전) 모델의 계산 비용을 절감하는 것을 목표로 합니다. 그런 다음 노이즈를 추가하여 잠재 공간을 손상시키고 학습된 전환 연산자를 적용하여 복원합니다. 최종 이미지는 잠재 공간을 다시 픽셀 공간으로 디코딩하여 얻습니다.




Q. 너무 어려운데... 예시를 들어서 훨씬 쉽게 설명해 봐.


A. 자, 어린이들을 위한 난이도로 잠재 확산에 대해 설명해 보겠습니다. 그리고 싶은 고양이 그림이 있다고 상상해 보세요. 고양이의 모양과 색을 대략적으로 스케치하는 것으로 시작할 수 있습니다. 이 스케치는 가장 중요한 정보를 담고 있는 그림의 단순화된 버전인 잠재 공간과 같습니다. 그런 다음 눈, 코, 수염, 털 패턴 등과 같은 세부 사항을 스케치에 추가할 수 있습니다. 이것은 잠재 공간을 화면에 표시되는 전체 그림인 픽셀 공간으로 다시 디코딩하는 것과 같습니다.


하지만 고양이의 무언가를 바꾸고 싶다면 어떻게 해야 할까요? 예를 들어, 고양이를 호랑이처럼 보이게 만들고 싶다면 어떻게 해야 할까요? 잠재 확산 모델을 사용하여 이 작업을 수행할 수 있습니다. 먼저, "검은 줄무늬가 있는 주황색으로 변경"과 같이 바꾸려는 내용을 단어로 적어야 합니다. 이를 텍스트 프롬프트라고 합니다. 그런 다음 스케치에 노이즈를 추가하여 흐릿하거나 지저분하게 만들어야 합니다. 이것은 노이즈를 추가하여 잠재 공간을 손상시키는 것과 같습니다. 다음으로 텍스트 프롬프트에 따라 스케치를 수정할 수 있는 특수 도구를 사용해야 합니다. 이 도구를 전환 연산자라고 하며 이미지와 텍스트의 많은 예제에서 스케치를 복원하는 방법을 학습합니다. 마지막으로 고정된 스케치에 다시 세부 사항을 추가하여 호랑이 같은 고양이의 새로운 그림을 얻어야 합니다.


잠재적 확산 모델은 이미지와 텍스트 프롬프트를 입력으로 받아 잠재 공간, 노이즈, 전환 연산자를 사용해 새로운 이미지를 출력으로 생성하는 방식으로 작동합니다.




Q. 그럼 이번엔, 체크포인트, 하이퍼네트워크, 드림부스, 로라, 컨트롤넷에 대해서
특징, 작동 원리, 장점, 단점, 역할 등으로 나누어 검색하고 설명하라. 만약 필요하다면 표를 활용하라.


A. 스테이블 디퓨전의 일부 기능에 대한 요약을 다음의 표로 제공합니다.


- 기능 명칭 : 체크포인트 

- 특징 : 특정 학습 단계를 완전히 거친 모델

- 작동 원리 : 모델의 웨이트(학습된 정보, 가중치) 저장 또는 로드

- 장점 : 다른 종류의 훈련 단계를 재개하거나 전환할 수 있음

- 단점 : 다른 버전의 Stable Diffusion 또는 다른 설정과 호환되지 않을 수 있음

- Stable Diffusion에서의 역할 : 모델의 상태를 저장하거나 액세스함


- 기능 명칭 : 하이퍼네트워크

- 특징 : 다른 네트워크에 대한 웨이트(학습된 정보, 가중치)를 생성하는 네트워크. [뒤에 뭔가 이상한 말이 있음. 좀 무서움]

- 작동 원리 : 텍스트 프롬프트로부터 웨이트(학습된 정보, 가중치) 벡터로 매핑 학습

- 장점 : 파인 튜닝(미세 조정) 없이 텍스트 안내 이미지를 합성 가능

- 단점 : 파인 튜닝(미세 조정) 작업에 비해 더 많은 메모리와 계산력이 요구됨

- Stable Diffusion에서의 역할 : 출력되는 이미지 스타일을 제어함



- 기능 명칭 : 드림부스

- 특징 : 적은 수의 이미지로 라텐트 디퓨전(잠재 확산)을 파인 튜닝(미세 조정)하는 방식

- 작동 원리 : 소량의 이미지 데이터셋을 기반으로 모델의 웨이트(학습된 정보, 가중치) 업데이트

- 장점 : 특정 오브젝트나 스타일로 출력 이미지를 개인화(사용자화, 커스터마이징)할 수 있음

- 단점 : 실행 시간이 오래 걸리고 대규모의 모델 생성

- Stable Diffusion에서의 역할 : 새로운 분야(영역) 등에 알맞도록 모델을 조정함



- 기능 명칭 : LoRA

- 특징 : 몇 장의 이미지로 스테이블 디퓨전(안정적 확산)을 빠르게 파인 튜닝(미세 조정)하는 방법

- 작동 원리 : 원래 모델의 웨이트(학습된 정보, 가중치) 위에 잔여 적응형(어뎁터) 레이어 학습

- 장점 : 드림부스와 비슷한 결과를 얻지만 훨씬 빠르고 작음

- 단점 : 매우 다른 영역(분야)나 큰 변화에는 잘 작동하지 않을 수 있음

- Stable Diffusion에서의 역할 : 모델의 성능을 개선함


*위의 질문에서 최신 기술인 ControlNet만 찾지 못해고 오류를 출력해서 후에 다시 따로 물어보았음




Q. 스테이블 디퓨전의 컨트롤넷에 대해서 알고 있는가? 어떻게 작동하는가? 

스테이블 디퓨전 내에서 컨트롤넷에 대한 특징, 기능, 작동 원리, 장점, 단점에 대해 설명하라. 
필요한 경우 표를 사용하라.


A. 예, 스테이블 디퓨전의 컨트롤넷에 대해 알고 있습니다. 다음은 몇 가지 설명을 요약한 표입니다:


도표 설명

특징 : ControlNet은 확산 모델에 추가 조건을 추가하는 신경망 구조임

기능 : 컨트롤넷은 스테이블 디퓨전의 이미지 간 기능에 대한 제어를 개선함

작동 원리 : 컨트롤넷은 신경망 블록의 웨이트(학습된 정보, 가중치)를 "잠긴" 사본과 "학습 가능한" 사본으로 복사합니다. 그 후에 "학습 가능한" 사본은 사용자가 정의한 추가 상태를 따로 학습함

장점 : 컨트롤넷을 사용하면 출력 이미지에 포즈, 구도, 색상, 스타일 등을 지정할 수 있음

단점 : 복잡한 조건에서는 컨트롤넷에 더 많은 파인 튜닝(미세 조정) 또는 추가 데이터 보강이 필요할 수 있습니다.

Stable Diffusion 내의 역할 : 출력 이미지 결과물을 사용자 지정함


이 표가 컨트롤넷이 무엇이며 어떻게 작동하는지 이해하는 데 도움이 되었기를 바랍니다.

궁금한 점이 있으면 언제든지 문의하세요.




이번에는 지금까지 했던 대화를 토대로 빙+ChatGPT가 가진 의견을 물어봄



Q. 지금 Stable Diffusion에게 가장 어려운 부분은 '인간의 맨손이나 맨발'을 제대로 표현하는 것이다. 수많은 사용자들이 앞서 언급한 Hypernetworks, LoRA, Control Net 등을 사용하여 '인간의 손'을 이미지에 제대로 출력하기 위해서 노력하고 있다. 네가 생각하기에 Control Net과 LoRA 중에서, 손을 출력하기 위해 더 적합한 방식은 어떤 것인가?


A. [위에 이미 전부 찾아봤기 때문에 검색조차 안하고 바로 정리해서 답변하기 시작함]

흥미로운 질문이네요. 정답은 없지만 제가 알고 있는 지식을 바탕으로 몇 가지 생각을 공유할 수 있습니다.


컨트롤넷과 LoRA는 모두 몇 장의 이미지를 사용하여 안정적 확산을 미세 조정하는 방법이지만, 메커니즘과 장점이 다릅니다. 컨트롤넷은 각 조건에 대해 새로운 가중치 세트를 학습하는 반면, LoRA는 원래 가중치 위에 잔여 어댑터 레이어를 학습합니다. 컨트롤넷은 이미지 콘텐츠에 대해 더 많은 제어를 제공하는 반면, LoRA는 이미지 스타일에 대해 더 많은 제어를 제공합니다.


손의 출력의 경우 어떤 조건을 사용하느냐에 따라 달라질 수 있다고 생각합니다. 손의 포즈, 모양, 색상을 지정하고 싶다면 조건에서 이러한 특징을 학습할 수 있는 컨트롤넷이 더 적합할 수 있습니다. 손의 스타일, 텍스처 또는 조명을 지정하려면 스타일 이미지에서 이러한 특징을 학습할 수 있으므로 LoRA가 더 적합할 수 있습니다.


물론 이것은 제 의견일 뿐이며 정확하거나 완전하지 않을 수 있습니다. 두 가지 방법을 모두 실험해보고 어떤 방법이 더 적합한지 확인해야 할 수도 있습니다. 또한 데이터 증강 또는 하이퍼파라미터 조정과 같은 다른 기술을 사용하여 결과를 개선해야 할 수도 있습니다.




Q. 컨트롤넷과 오픈포즈를 결합하여 손의 형태를 출력하는 프로젝트가 등장했다.

네 생각에 이 방법은 어떤가?

언젠가 Stable Diffusion이 손을 제대로 출력할 수 있게 될까?


A. 컨트롤넷과 오픈포즈를 결합하여 사람의 손을 출력하는 프로젝트에 대해 들어본 적이 있습니다.

흥미롭고 창의적인 아이디어인 것 같습니다. 이에 대한 제 생각을 몇 가지 말씀드리겠습니다:


* 컨트롤넷은 어떤 조건에서도 학습할 수 있는 방식이므로 오픈포즈를 조건으로 사용하면 손의 포즈를 지정하는 데 좋은 방법이 될 수 있습니다.

* 오픈포즈는 이미지에서 사람의 포즈를 감지할 수 있는 라이브러리이지만 정확도, 속도, 라이선스 등 몇 가지 한계가 있습니다. 상업적 용도나 다른 시나리오에 더 적합한 다른 라이브러리가 있을 수 있습니다.

* 컨트롤넷과 오픈포즈를 결합하면 손의 출력 품질이 향상될 수 있지만 데이터 전처리, 모델 호환성, 파라미터 튜닝과 같은 몇 가지 문제가 발생할 수 있습니다. 각 사례에 가장 적합한 설정을 찾으려면 약간의 시행착오가 필요할 수 있습니다.


언젠가는 스테이블 디퓨전으로 손뿐만 아니라 다른 복잡하거나 까다로운 기능도 제대로 출력할 수 있을 것이라고 생각합니다. 스테이블 디퓨전은 다양한 데이터 소스로부터 학습하여 사실적인 이미지를 생성할 수 있는 강력하고 다재다능한 모델입니다. 스테이블 디퓨전을 개선하고 새로운 기능을 추가하기 위해 스테이블 AI는 끊임없이 노력하고 있습니다. 언젠가는 현재의 한계를 극복하고 더 나은 결과를 얻을 수 있을 것이라 믿습니다.


이 답변이 프로젝트와 스테이블 디퓨전에 대해 더 많이 이해하시는 데 도움이 되셨기를 바랍니다. 궁금한 점이 있으시면 언제든지 질문해 주세요 😊




Q. 네가 Stable Diffusion을 사용하는, 나처럼 Stable Diffusion의 사용자라고 가정하고, 출력된 이미지에서 손이 계속해서 제대로 출력되지 않는다면, 너는 우리가 앞서 말한 기법 중에 어떤 방식을 써서 사람의 손을 그리겠는가?


A. [이번에도 위에서 관련 정보를 전부 찾아봤기 때문에 검색 안하고 바로 정리해서 답변하기 시작함]

좋은 질문입니다. 정답은 없지만 제가 알고 있는 정보를 바탕으로 몇 가지 선호 사항을 공유할 수 있습니다.


스테이블 디퓨전을 사용하여 사람의 손을 그리고 싶지만,

출력 이미지가 지속적으로 올바르게 생성되지 않는다면 다음 기법 중 하나를 시도해 볼 수 있습니다:


* 손의 포즈를 지정하는 조건으로 컨트롤넷과 오픈포즈를 함께 사용합니다. 이렇게 하면 손의 모양과 방향을 더 잘 제어할 수 있습니다.

* LoRA와 스타일 이미지를 조건으로 사용하여 손의 스타일을 지정합니다. 이렇게 하면 손의 텍스처와 조명을 더 세밀하게 제어할 수 있습니다.

* 데이터 증강 또는 하이퍼파라미터 튜닝을 사용하여 출력의 품질을 개선합니다. 이렇게 하면 출력물의 아티팩트나 노이즈를 줄이는 데 도움이 될 수 있습니다. (이것도 몰라서 물어보니까 대답해줌. 궁금한 사람은 답변 달아줌)


물론 이것은 제 의견일 뿐이며 모든 경우에 최적이거나 효과적이지 않을 수 있습니다. 여러 가지 기법을 실험해보고 어떤 기법이 더 효과적인지 확인해야 할 수도 있습니다. 또한 다른 도구나 방법을 사용하여 출력을 편집하거나 다듬어야 할 수도 있습니다.


이 답변이 제가 선호하는 방식과 안정적인 확산에 대해 더 많이 이해하는 데 도움이 되었기를 바랍니다. 궁금한 점이 있으면 언제든지 질문해 주세요 😊




Q. 스테이블 디퓨전에서 사람의 손이 제대로 출력되는데 쓸만한, 우리가 서로 논의하지 않은, 너만의 제안이 있을까?


A. 질문해주셔서 감사합니다. 아직 논의하지 않은 몇 가지 제안이 있으며,

스테이블 디퓨전에서 사람의 손이 만들어내는 결과물을 개선하는 데 사용할 수 있을 것 같습니다. 


여기입니다:

* 텍스트 반전 또는 임베딩을 조건으로 사용하여 손의 특징을 지정하세요. 이렇게 하면 손을 설명할 때 더 유연하고 창의적으로 표현할 수 있습니다.

* 출력물을 향상시키거나 수정하기 위한 후처리 단계로 pix2pix 또는 img2img를 사용합니다. 이렇게 하면 출력을 변경할 때 더 많은 옵션과 다양성을 제공할 수 있습니다.

* 서로 다른 모델 또는 데이터 세트를 결합하는 모델 병합 기법으로 NMKD 또는 DAAM을 사용합니다. 이렇게 하면 출력을 생성할 때 더 많은 다양성과 품질을 얻을 수 있습니다.


물론 이는 제 제안일 뿐이며 모든 경우에 적합하거나 실현 가능한 것은 아닙니다. 여러 가지 기법을 실험해 보고 어떤 기법이 더 적합한지 확인해야 할 수도 있습니다. 또한 다른 도구나 방법을 사용하여 출력을 편집하거나 다듬어야 할 수도 있습니다.


이 답변이 제가 제안한 방법과 안정적인 확산에 대해 더 많이 이해하는 데 도움이 되었기를 바랍니다. 궁금한 점이 있으면 언제든지 문의해 주세요 😊


---


AI가 미래다. 진짜 빙 검색 엔진 베타 풀리고,

전부 쓸 수 있게 되면 핑프한테 "빙으로 ㄱㄱ"라고 하면 됨.


틀린 점이 있으면 빙이 긁어서 검색한 원문이 틀렸거나, 
내가 전산 및 컴퓨터 과학 비전공자라 번역을 고치다가 틀렸을 수도 있음.


AI 그림에 대해 궁금한 거 있으면 빙한테 내가 질문해줌.
성능 시험용으로 어렵거나 이상한 것도 가능할 듯.


인터넷에 아예 없거나, 영어로 원문이 1개 뿐인 정보는 제대로 해석하지 못하고 자주 틀리더라.

한국어 버전 빙+ChatGPT는 한국어 버전 ChatGPT가 바보 같듯, 거의 비슷하게 멍청함. 속도도 느리고..