opendream 은 레이어링, 비파괴 편집, 이식성, 작성하기 쉬운 확장 등 매우 필요하고 친숙한 기능을 Stable Diffusion 워크플로우에 제공합니다. 데모 비디오를 확인해 보세요.
sh ./run_ opendream .sh
실행하세요. ~30초 후에 opendream 시스템의 프런트엔드와 백엔드가 모두 실행되어야 합니다. 확산 모델은 이미지 생성 및 조작 분야에서 강력한 도구로 등장했습니다. 이러한 모델은 상당한 이점을 제공하지만 본질적인 복잡성으로 인해 블랙박스로 간주되는 경우가 많습니다. 현재의 확산 이미지 생성 생태계는 일회성 이미지 조작 작업을 통해 이러한 모델(text2img, in-painting, pix2pix 등)을 제어할 수 있는 도구로 정의됩니다.
예를 들어, Automatic1111, Midjourney 및 Stability.AI의 DreamStudio와 같은 인기 있는 인터페이스는 파괴적인 편집만 지원합니다. 각 편집은 이전 이미지를 "소비"합니다. 즉, 사용자는 쉽게 이전 이미지를 기반으로 구축하거나 동일한 이미지에 대해 여러 실험을 실행할 수 없으므로 창의적인 탐색 옵션이 제한됩니다.
비파괴 편집은 원본 이미지 데이터를 보존하면서 사용자가 이전 작업을 덮어쓰지 않고도 조정 및 수정할 수 있도록 하는 이미지 조작 방법입니다. 이 접근 방식은 실험을 용이하게 하고 레이어와 마스크를 사용하여 편집 프로세스를 더 효과적으로 제어할 수 있게 해줍니다. 레이어를 삭제하면 그 이후의 모든 레이어도 삭제됩니다. 이는 현재 캔버스에 있는 모든 레이어가 다른 기존 레이어의 산물임을 보장합니다. 또한 이를 통해 워크플로우를 결정론적으로 "재생"할 수 있습니다.
Photoshop과 마찬가지로 opendream 기본적으로 비파괴 편집을 지원합니다. 여기에서 Photoshop의 비파괴 편집 원칙에 대해 자세히 알아보세요.
사용자는 현재 작업 흐름을 나중에 열거나 공동 작업자와 공유할 수 있는 휴대용 파일 형식으로 저장할 수도 있습니다. 이 맥락에서 "상태"는 현재 모든 레이어와 해당 레이어가 생성된 방법을 설명하는 JSON 파일입니다.
오픈 소스 생태계가 이러한 모델과 도구를 중심으로 번창함에 따라 확장성도 주요 관심사가 되었습니다. Automatic1111은 확장 기능을 제공하지만 프로그래밍, 사용 및 설치가 어려운 경우가 많습니다. Adobe Photoshop과 같은 응용 프로그램만큼 모든 기능을 갖춘 것은 아닙니다.
ControlNet과 같은 Stable Diffusion의 새로운 기능이 출시되면 사용자는 과부하와 시간을 최소화하면서 이를 예술적 작업 흐름에 원활하게 통합할 수 있어야 합니다.
opendream 하면 Python 함수를 작성하는 것만큼 간단하게 새로운 확산 기능을 작성하고 사용할 수 있습니다. 방법을 알아보려면 계속 읽어보세요.
처음부터 opendream 핵심 시스템에 포함된 두 가지 주요 기본 작업인 dream
및 mask_and_inpaint
지원합니다. 이 저장소에는 instruct_pix2pix
, controlnet_canny
, controlnet_openpose
및 sam
(Segment Anything)에 대한 확장이 제공됩니다.
모든 이미지 조작 로직은 확장으로 쉽게 작성할 수 있습니다. 확장 기능을 사용하면 특정 작업의 작동 방식을 결정할 수도 있습니다. 예를 들어 dream
작업을 재정의하여 대신 OpenAI의 DALL-E를 사용하거나 AWS 또는 Replicate와 같은 서비스에서 서버리스 엔드포인트를 호출할 수 있습니다. Baseten을 사용한 예는 다음과 같습니다.
확장 프로그램을 로드하는 방법에는 두 가지가 있습니다.
opendream /extensions
폴더에 추가합니다. 자신만의 확장 기능을 작성하는 방법은 다음과 같습니다.다음은 현재 지원되는 확장 프로그램의 샘플입니다. 링크를 사용하여 웹 UI를 통해 특정 확장을 설치할 수 있습니다.
확대 | 링크 |
---|---|
OpenAI의 DALL-E | 파일 |
서버리스 안정적인 확산 | 파일 |
Pix2Pix에게 지시하기 | 파일 |
ControlNet 캐니 | 파일 |
ControlNet Openpose | 파일 |
무엇이든 분할하세요 | 파일 |
포토샵GPT | 요점 |
확장 프로그램에는 요구 사항 requirements.txt
파일에 포함해야 하는 자체 요구 사항이 있을 수 있습니다. 예를 들어 DALL-E 확장을 사용하려면 openai
추가해야 합니다.
유용한 확장 기능을 만들었다면 마음껏 PR해 보세요!
사용자는 다음과 같이 자신만의 확장 기능을 작성할 수 있습니다.
opendream /extensions
폴더에 새 Python 파일을 만듭니다.@ opendream .define_op
데코레이터를 사용하여 메소드를 작성합니다. 이 데코레이터는 이 메소드를 opendream 백엔드에 등록합니다.이 방법에는 몇 가지 요구 사항이 있습니다.
str
, int
, float
, Layer
, MaskLayer
또는 ImageLayer
입니다.Layer
또는 Layer
객체 목록뿐입니다. opendream Stanford CS 348K의 일부로 Varun Shenoy, Eric Lou, Shashank Rammoorthy 및 Rahul Shiv에 의해 구축되었습니다.
필요하거나 유용하다고 생각되는 기여를 자유롭게 제공해 주세요. 이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다.