paint-brush
Tạo A.I của riêng bạn Trình tạo hình ảnh với Khuếch tán tiềm ẩntừ tác giả@lanolinoil
3,835 lượt đọc
3,835 lượt đọc

Tạo A.I của riêng bạn Trình tạo hình ảnh với Khuếch tán tiềm ẩn

từ tác giả Lanolinoil9m2022/08/16
Read on Terminal Reader
Read this story w/o Javascript

dài quá đọc không nổi

Chạy lời nhắc văn bản thành hình ảnh của riêng bạn với CUDA, nhiều không gian đĩa và một lượng lớn bộ nhớ. Bạn cần một hệ thống Linux có thẻ hỗ trợ CUDA để làm việc này đến cuối cùng. Có thể có 2 kỹ thuật tạo hình ảnh với Khuếch tán tiềm ẩn. Chúng tôi sẽ cài đặt và xem xét cả mô hình txt-2img và txt2-img mà chúng tôi sẽ thiết lập. Mô hình RAD sử dụng cơ sở dữ liệu hình ảnh và xác định và nâng cấp nó thành một tham chiếu có thể định cấu hình. Điều này dường như có nghĩa là nó kém tốt hơn so với mục đích chung nhưng có thể được sử dụng với một tập hợp đào tạo cụ thể.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Tạo A.I của riêng bạn Trình tạo hình ảnh với Khuếch tán tiềm ẩn
Lanolinoil HackerNoon profile picture

DALL-E Homebrew

Trong bài đăng này, chúng tôi sẽ xem xét việc thiết lập với việc chạy trình tạo hình ảnh AI của riêng bạn. Bạn cần một hệ thống Linux có thẻ hỗ trợ CUDA để làm việc này đến cuối cùng. Tôi đã nhận được tập lệnh txt-2img cơ bản hoạt động trong Windows. Thật không may, đối với các mô hình khuếch tán tăng cường truy xuất được phát hành vào tháng 7, bạn cần scann để lập chỉ mục tập dữ liệu hoạt động, chỉ có sẵn trên Linux. WSL hoạt động tốt đối với tôi.


sư tử chó - mô hình rdm

sư tử chó - mô hình rdm

sư tử chó - mô hình rdm

sư tử chó - mô hình rdm

Dưới đây là đại khái những gì tôi thu thập được mà bạn sẽ cần:

  • Linux (WSL tốt)
  • 11.3 Đồ họa CUDA
  • = RAM 32 GB

  • Dung lượng ổ đĩa 50GB (~ 30GB không có tác vụ)
  • Thẻ dòng 3xxx (Tôi chỉ đoán ở đây. Tất cả điều này đang được thực hiện với 3090 FE)

Sự khuếch tán tiềm ẩn

Tôi ngẫu nhiên tình cờ gặp repo khuếch tán tiềm ẩn trong khi tôi đang duyệt các subreddits AI. Một vài bài viết đã đề cập đến nó và tôi không biết nó là gì nên tôi đã truy cập vào googling.


Tôi không phải là nhà khoa học máy tính, nhà toán học hay bất kỳ thứ gì được yêu cầu để thực sự hiểu những gì đang xảy ra ở đây. Bài báo về các mô hình RAD mới rất dễ hiểu và thú vị, nhưng tôi vẫn chưa thực hiện nhiều nghiên cứu ngoài vấn đề đó.

hình ảnh-20220807154208076

Chuyển văn bản thành hình ảnh so với RAD

Có thể có 2 kỹ thuật tạo hình ảnh với Khuếch tán tiềm ẩn. Chúng tôi sẽ cài đặt và xem xét cả hai.


Tôi tin rằng mô hình txt2-img mà chúng tôi sẽ thiết lập đầu tiên là mô hình chúng tôi đã quen với các công cụ tạo hình ảnh trực tuyến khác - nó tạo ra một clip hình ảnh có độ phân giải siêu thấp được cho là phù hợp nhanh chóng và làm giảm bớt và nâng cấp nó.


Mô hình RAD sử dụng cơ sở dữ liệu hình ảnh có thể định cấu hình làm tham chiếu VÀ thực hiện sự khuếch tán như chúng ta đã quen. Điều này có vẻ có nghĩa là nó kém tốt hơn như một trình tạo mục đích chung, nhưng có thể được sử dụng với một bộ đào tạo cụ thể mà bạn có thể tạo ra. Tôi sẽ thử điều này trong tương lai.


RAD cũng tạo ra hình ảnh 768X768 khá ấn tượng.

dưa đỏ khổng lồ ở bãi biển

Dưa đỏ khổng lồ ở bãi biển


Hướng dẫn cài đặt

Chuyển văn bản thành hình ảnh

  • Đảm bảo rằng bạn đã cài đặt CUDA 11.3conda hoạt động trong shell của bạn. Bạn có thể lấy Conda tại đây

  • (Lại) cài đặt Pytorch ngay bây giờ , kẻo sau này bạn sẽ rơi vào địa ngục phụ thuộc. Tôi đã làm điều này thông qua pip nhưng conda cũng có thể hoạt động.

  • Sao chép repo vào ổ đĩa có nhiều dung lượng trống

  • cd vào repo và chạy:

     conda env create -f environment.yaml conda activate ldm

    Điều này sẽ thiết lập môi trường ban đầu. Nếu bạn gặp lỗi với Pytorch sau đó và cần cài đặt lại nó, hãy quay lại môi trường.yaml và cài đặt lại bằng các phiên bản gói chính xác.

  • Tải xuống mô hình và bạn đã sẵn sàng để sử dụng miễn là tất cả các phụ thuộc đèn pin của bạn đều được thiết lập chính xác.

 mkdir -p models/ldm/text2img-large/ wget -O models/ldm/text2img-large/model.ckpt https://ommer-lab.com/files/latent-diffusion/nitro/txt2img-f8-large/model.ckpt

Bạn sẽ có thể lấy mẫu hình ảnh bây giờ bằng cách sử dụng:

 python scripts/txt2img.py --prompt "my cool image"

Đảm bảo thấy các tùy chọn bạn có thể đặt trong README.


Bạn có thể sử dụng tập lệnh bash này để chạy mọi thứ từ một trình bao dễ dàng hơn. Bạn có thể đưa cái này vào tệp ~/.bashrc của mình và mở lại trình bao của bạn. Đảm bảo thay đổi 3 đường dẫn để phù hợp với nhu cầu của bạn. Chúng ta sẽ xem xét PLMS sau.


 function txt2img() { if [ $# -eq 0 ]; then echo "Usage: diffuse '[prompt]' [--plms]" exit 1 fi cd /mnt/c/diffusion/latent-diffusion; conda activate ldm; if [ $2 = '--plms' ]; then python scripts/txt2img.py --prompt $1 --outdir '/mnt/g/My Drive/AI Image Tests/text2img' --plms --n_iter 4 --ddim_eta 0.0 else python scripts/txt2img.py --prompt $1 --outdir '/mnt/g/My Drive/AI Image Tests/text2img' --n_iter 4 --ddim_eta 0.0 fi }


Hình ảnh có kích thước 512X512 theo mặc định. Bạn có thể sử dụng This Jupiter Notebook để nâng cấp hình ảnh với kết quả khá tốt.

Xử lý sự cố

  • Nếu bạn gặp lỗi bộ nhớ CUDA khi chạy lệnh, hãy thử giảm kích thước lô. Sử dụng htop để khắc phục sự cố / xem mức sử dụng bộ nhớ.
  • Nếu sử dụng WSL, hãy đảm bảo rằng tất cả RAM của bạn đều có sẵn cho linux.
  • Nếu bạn gặp các lỗi liên quan đến đèn pin, có thể bạn cần cài đặt lại Pytorch. Điều này có thể sẽ gây ra các vấn đề khác với các gói. Kiểm tra môi trường.yaml và cài đặt thủ công các phiên bản gói chính xác bằng pip và / hoặc conda (Tôi đã làm cả hai và không chắc điều gì đã làm cho mọi thứ hoạt động)

hình ảnh-20220807155754576

hình ảnh-20220807155807229


RDM

Bạn có thể đọc thêm về RDM tại đây . Như đã nói trước đây, về cơ bản nó kết hợp cơ sở dữ liệu hình ảnh với mô tả Clip với quá trình khuếch tán hiện có, theo những gì tôi hiểu. Phần này mất nhiều thời gian hơn để chạy.


Lưu ý, mô hình này, đặc biệt là khi sử dụng đào tạo các tác phẩm tốt nhất trong việc tái tạo những thứ thực và có vẻ như không tốt lắm (chưa) và tạo ra những hình ảnh kỳ lạ mà chúng ta đã quen thuộc từ các mô hình khuếch tán.


  • Làm cho mô hình Text-to-Image hoạt động trước tiên

  • Cài đặt các gói mới và tải xuống mô hình đào tạo.

     pip install transformers==4.19.2 scann kornia==0.6.4 torchmetrics==0.6.0 pip install git+https://github.com/arogozhnikov/einops.git mkdir -p models/rdm/rdm768x768/ wget -O models/rdm/rdm768x768/model.ckpt https://ommer-lab.com/files/rdm/model.ckpt
  • Kiểm tra mọi thứ đang hoạt động cho đến nay với

     python scripts/knn2img.py --prompt "I'm a computer"
  • Nếu mọi thứ diễn ra tốt đẹp, bạn sẽ thấy một văn bản thành công trong trình bao của mình. Bây giờ chúng ta cần tải xuống tất cả các chỉ mục / mô hình hình ảnh. Bản zip của openimages là 11GB. Dữ liệu ArtBench khá nhỏ.

     mkdir -p data/rdm/retrieval_databases wget -O data/rdm/retrieval_databases/artbench.zip https://ommer-lab.com/files/rdm/artbench_databases.zip wget -O data/rdm/retrieval_databases/openimages.zip https://ommer-lab.com/files/rdm/openimages_database.zip unzip data/rdm/retrieval_databases/artbench.zip -d data/rdm/retrieval_databases/ unzip data/rdm/retrieval_databases/openimages.zip -d data/rdm/retrieval_databases/ mkdir -p data/rdm/searchers wget -O data/rdm/searchers/artbench.zip https://ommer-lab.com/files/rdm/artbench_searchers.zip unzip data/rdm/searchers/artbench.zip -d data/rdm/searchers


Chúng tôi đã sẵn sàng sử dụng các mô hình Artbench ngay bây giờ (hoạt động khá tốt trong thử nghiệm giới hạn của tôi), nhưng những gì chúng tôi thực sự muốn là sử dụng mô hình openimages khổng lồ làm tài liệu tham khảo của chúng tôi. Chúng tôi đã tải xuống dữ liệu, nhưng chúng tôi cần tạo chỉ mục.


Nếu bạn muốn kiểm tra cơ sở dữ liệu Artbench, hãy chạy

 python scripts/knn2img.py --prompt "A blue pig" --use_neighbors --knn 20 

hình ảnh-20220807155912575

hình ảnh-20220807155927854


Chỉ số hoạt động

Trừ khi bạn có một siêu máy tính, việc quản lý bộ nhớ khủng khiếp trong quá trình đa xử lý python (theo những gì tôi có thể nói) sẽ ngăn chúng tôi sử dụng 4 tệp mà chúng tôi đã giải nén bằng tập lệnh từ repo để lập chỉ mục chúng. Mọi thứ khác mà tôi đã thử, các quy trình sẽ hết bộ nhớ.


May mắn thay, chúng tôi chỉ cần nối các tệp. Bạn có thể xóa các tệp phần cũ sau đó nếu bạn muốn. Chúng ta cũng cần di chuyển các tập tin phần ra khỏi thư mục openimages.

 cd data/rdm/retrieval_databases/openimages/ cat 2000000x768_part1.npz 2000000x768_part2.npz 2000000x768_part3.npz 2000000x768_part4.npz > 2000000x768.npz mv 2000000x768_* ~/temp cd ../../../../

Bây giờ khi chúng tôi chạy tập lệnh đào tạo, chúng tôi sẽ không hết bộ nhớ. Tôi nghĩ rằng đây là một số vấn đề trong chức năng đa tệp của họ trong tập lệnh đào tạo.

 python scripts/train_searcher.py
  • Chúng tôi cần thay đổi kích thước hàng loạt trong scripts/knn2img.py để chúng tôi không hết bộ nhớ GPU. Bạn có thể cần giảm xuống 1, nhưng tôi đã có thể đặt thành 2 trên 3090.

  • Mở scripts/knn2img.py trong trình chỉnh sửa

  • Đi tới dòng 243 hoặc tìm “n_samples”

  • Thay đổi giá trị mặc định thành 1 hoặc 2 và lưu

  • Bạn cũng có thể thực hiện việc này bằng cách sử dụng tham số dòng lệnh, nhưng vì nó sẽ không bao giờ hoạt động đối với tôi, tôi muốn thay đổi giá trị mặc định. Lưu ý nếu bạn cập nhật repo trong tương lai, điều này có thể sẽ bị ghi đè.


Bây giờ chúng ta có thể tạo hình ảnh RDM bằng cách sử dụng cơ sở dữ liệu tác vụ:

 python scripts/knn2img.py --prompt "A blue pig" --database openimages --use_neighbors --knn 20


Đây là một tập lệnh ~/.bashrc để chạy nó một cách thuận tiện. Một lần nữa, hãy đảm bảo thay đổi 3 đường dẫn để phù hợp với nhu cầu của bạn:

 function diffuse() { if [ $# -eq 0 ]; then echo "Usage: diffuse '[prompt]' [--plms]" exit 1 fi cd /mnt/c/diffusion/latent-diffusion; conda activate ldm; if [ $2 = '--plms' ]; then python scripts/knn2img.py --database openimages --prompt $1 --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 --plms else python scripts/knn2img.py --database openimages --prompt $1 --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 fi }

Tăng tốc mọi thứ

Bạn cũng có thể chạy các lời nhắc hàng loạt bằng cách tạo một tệp (trong trường hợp này prompts.txt ) và trỏ tập lệnh tới nó bằng tham số –from –from-file như thế này

 python scripts/knn2img.py --database openimages --from-file ./prompts.txt --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20

mẫu prompts.txt

 prompt 1 prompt 2 prompt 3


Điều này sẽ tiết kiệm rất nhiều thời gian nếu bạn đang chạy nhiều truy vấn vì mô hình chỉ được tải một lần. Mô hình chuyển văn bản thành hình ảnh không có tùy chọn này.

xe thể thao trên sa mạc

xe thể thao trên sa mạc

xe thể thao trên sa mạc


Thử nghiệm ban đầu & PLMS

Dưới đây là một số kết quả ban đầu từ cả hai mô hình có bật và tắt PLMS. PLMS sẽ giúp mọi thứ chạy nhanh hơn. Hiện tại, chúng tôi sẽ không đo tốc độ tăng mà sẽ xem xét chất lượng / kết quả hình ảnh một cách chủ quan.

Vì mô hình RDM sẽ chỉ tạo 2 ảnh cùng một lúc cho hệ thống của tôi, tôi đã bao gồm cả hai ảnh thay vì lưới cho mô hình đó.

Tôi gần như chắc chắn sẽ thực hiện thử nghiệm cụ thể hơn trong tương lai và các mô hình này sẽ được đưa vào các bài viết so sánh trong tương lai.


Một ngôi nhà gỗ trên đồi, chụp ảnh phong cảnh

Chuyển văn bản thành hình ảnh

không có plms

với plms

hình ảnh-20220807150052836

hình ảnh-20220807153545252


RDM

không có plms

với plms

hình ảnh-20220807145854952

hình ảnh-20220807145920778

hình ảnh-20220807145911367

hình ảnh-20220807145931866


Dấu hiệu dừng màu tím


Chuyển văn bản thành hình ảnh

không có plms

với plms

hình ảnh-20220807154729984

hình ảnh-20220807153711466

RDM

không có plms

với plms

hình ảnh-20220807150500598

hình ảnh-20220807153000850

hình ảnh-20220807151421393

hình ảnh-20220807153013778


cáo den, nghệ thuật kỹ thuật số

Chuyển văn bản thành hình ảnh

không có plms

với plms

hình ảnh-20220807155228088

hình ảnh-20220807155634227


RDM

không có plms

với plms

hình ảnh-20220807151441359

hình ảnh-20220807152859265

hình ảnh-20220807152235267

hình ảnh-20220807152911615


chiến thắng trò chơi lớn, đoạt giải nhiếp ảnh

Chuyển văn bản thành hình ảnh

không có plms

với plms

hình ảnh-20220807160007336

hình ảnh-20220807160228471

RDM

không có plms

với plms

hình ảnh-20220807151456027

hình ảnh-20220807152928304

hình ảnh-20220807152216729

hình ảnh-20220807152940229


lái xe thể thao trong cồn cát

Chuyển văn bản thành hình ảnh

không có plms

với plms

hình ảnh-20220807160557241

hình ảnh-20220807160838768

RDM

không có plms

với plms

hình ảnh-20220807151401781

hình ảnh-20220807152825508

hình ảnh-20220807152200386

hình ảnh-20220807152839511


Một trình tạo hình ảnh để gọi cho riêng bạn

Và bạn đã có nó - không cần thêm tín dụng hoặc giới hạn hàng tháng, chỉ cần tạo hình ảnh AI thuần túy cho riêng bạn. Khi tôi tìm ra một số cài đặt điều chỉnh và tạo cơ sở dữ liệu đào tạo hình ảnh của riêng mình, chúng ta có thể sẽ nói về điều này một lần nữa.


Hy vọng rằng với một số điều chỉnh và các bản phát hành / mô hình mới, điều này sẽ tiến gần hơn đến yếu tố WOW mà DALL-E có.

gấu trúc mặc áo choàng đỏ


Cũng được xuất bản ở đây .