Anifusion-SD

Dec 23 2022
TL;DR Đây là một mô hình giống như Khuếch tán ổn định mới (được tinh chỉnh từ SD2) cho hình ảnh anime, hỗ trợ độ phân giải 768x768 và vượt trội hơn đáng kể so với một số mô hình anime phổ biến theo đánh giá của chúng tôi. Điểm kiểm tra được công khai (hướng dẫn cài đặt), bản demo có sẵn trong một thời gian.

TL; DR

Đây là một mẫu mới giống như Ổn định-Khuếch tán (được tinh chỉnh từ SD2) dành cho hình ảnh anime, hỗ trợ độ phân giải 768x768 và vượt trội đáng kể so với một số mẫu anime phổ biến theo đánh giá của chúng tôi. Điểm kiểm tra được công khai ( hướng dẫn cài đặt ), bản demo có sẵn trong một thời gian.

  • giới thiệu
  • Bối cảnh
    - Các mô hình khuếch tán
    - Phổ biến tiềm ẩn - Phổ biến ổn định - Phổ biến Waifu
    - Phổ biến ổn định 2

  • Mô hình của chúng tôi: đào tạo
    - Điều hòa
    - Các vấn đề kỹ thuật và tối ưu hóa
    - Cập nhật bộ đào tạo
    - Đào tạo độ phân giải cao hơn
    - Thay đổi lấy mẫu
  • Kết quả
  • So sánh với các mô hình anime khác
  • Thảo luận
  • Người giới thiệu
  • con trỏ

Sau các thử nghiệm của tôi với việc đào tạo các mô hình khuếch tán từ đầu, nhiều người đã chỉ ra rằng có một loạt các phiên bản Khuếch tán ổn định được tinh chỉnh trên các bộ dữ liệu giống nhau/tương tự. Đặc biệt:

  • Khuếch tán Waifu : nó đang sử dụng một tập hợp con dữ liệu tương đối nhỏ và chỉ cung cấp lời nhắc thẻ vào CLIP để điều chỉnh), mà không có bất kỳ sửa đổi mã nào đối với Khuếch tán ổn định ban đầu (đây là vấn đề của IMO). Tuy nhiên, nó dường như là mô hình phổ biến anime phổ biến nhất vào lúc này. Nó đã phát hành trạm kiểm soát cho công chúng, không giống như mô hình tiếp theo;
  • NovelAI : điều này được thực hiện bởi một công ty thực sự, không phải bởi các nhà nghiên cứu/kỹ sư độc lập. Họ không phát hành mô hình nhưng cung cấp giao diện trả phí cho mô hình đó. Rõ ràng, cũng có một số kịch tính với điểm kiểm tra và mã của họ bị rò rỉ, từ đó có vẻ như họ đã có một số sửa đổi nhỏ đối với Bản khuếch tán ổn định ban đầu;
  • Anything-v3 : cái này xuất hiện muộn hơn một chút, không có nhiều thông tin về mô hình, nhưng nó bị nghi ngờ là đã được hoàn thiện từ WaifuDiffusion (ít nhất, nó sử dụng các phép biến đổi nhanh tương tự trước khi đưa nó vào CLIP). Nó tạo ra những hình ảnh rất chi tiết và đẹp mắt, nhưng không trung thực lắm với lời nhắc. Không gian đầu ra của nó rất nhỏ (thiếu đa dạng, tất cả các hình ảnh đều có cùng kiểu và tương tự nhau) và gợi nhớ đến các mô hình GAN trước khi khuếch tán. Không giống như các mô hình khác, mô hình này cũng không có khả năng tạo NSFW — vì vậy có lẽ nó có được bằng cách hoàn thiện một tập dữ liệu nhỏ gồm các hình ảnh chất lượng cao của một nghệ sĩ.

Tuy nhiên, trước sự phong phú của các mô hình trong lĩnh vực này, lúc đầu, tôi quyết định không bận tâm đến việc tham gia và để quá trình diễn ra. Nhưng bây giờ, Stable Diffusion 2 đã được phát hành và vẫn chưa có tiến triển rõ ràng nào trong các mô hình anime. Vì vậy, tôi đã quyết định dùng thử — trong bài đăng này, tôi đang mô tả cách tôi tinh chỉnh Ổn định Khuếch tán 2 bằng chất dưỡng ẩm nhắc tùy chỉnh và hiển thị kết quả. Tất nhiên, tôi cũng xuất bản mô hình này — theo một vài gợi ý mà tôi đã thử, nó tốt hơn các mô hình được liệt kê ở trên. Một vài phần tiếp theo tập trung vào các chi tiết kỹ thuật, nếu bạn không quan tâm, bạn có thể bỏ qua trực tiếp Kết quả .

Lý lịch

Để hiểu điều gì đang xảy ra và điều gì đã thay đổi, trước tiên chúng ta hãy có một cái nhìn tổng quan ngắn gọn về các mô hình hiện có.

mô hình khuếch tán

Tôi sẽ không đi vào chi tiết về các mô hình khuếch tán, đã có rất nhiều đánh giá tốt về nó trên internet rồi. Đối với mục đích của chúng tôi, chỉ cần biết rằng ý tưởng là phân tách quá trình tạo ảnh thành một chuỗi các bước “khử nhiễu” là đủ. Trong quá trình đào tạo, xương sống của mô hình (trong trường hợp hình ảnh — thường là UNet) được cung cấp một hình ảnh bị hỏng và bước khử nhiễu, đồng thời đang cố gắng hoàn tác một bước bị hỏng. Trong quá trình suy luận, chúng tôi bắt đầu từ một tiếng ồn ngẫu nhiên và áp dụng liên tục đường trục để “hoàn tác” tất cả các bước tham nhũng tưởng tượng. Toán học chính xác đằng sau điều này cần phải chính xác. Tại thời điểm suy luận, hầu hết các mô hình khuếch tán hiện đại đều sửa đổi quy trình để giảm số bước lấy mẫu (điều này được kích hoạt bởi một người nào đó nhận thấy rằng quy trình này giống một cách đáng ngờ với việc giải phương trình vi phân ngẫu nhiên bằng phương pháp số và đã áp dụng bộ giải DE thông minh hơn thay thế).

khuếch tán tiềm ẩn

Đây được cho là ý tưởng quan trọng nhất, được sử dụng trong hầu hết các mô hình khuếch tán mở. Các công ty như Google hoặc OpenAI có đủ khả năng để đào tạo và sử dụng các mô hình khuếch tán trong không gian pixel gốc vì họ có rất nhiều phần cứng. Nhưng đối với một người bình thường, việc đào tạo (hoặc thậm chí chạy) UNet trong không gian 512x512 pixel là rất tốn kém. Ý tưởng là huấn luyện bộ mã hóa tự động nén hình ảnh từ không gian 512x512x3 ban đầu thành không gian tiềm ẩn (trong trường hợp Khuếch tán ổn định — 64x64x4). Bộ mã hóa tự động được đào tạo dưới dạng VAE với quy trình chuẩn hóa dựa trên KL, để giữ cho không gian tiềm ẩn “đẹp”.

Sau đó, mô hình thực hiện khuếch tán trong không gian 64x64x4 này, rõ ràng là hiệu quả hơn nhiều. Nhược điểm là VAE không hoàn hảo và một số thông tin bị mất trong khi nén hình ảnh. Nhưng trong thực tế, nó hoạt động rất tốt.

FWIW, có thể có các phương pháp thay thế, ví dụ: Imagen tạo hình ảnh có chiều thấp trong không gian pixel, sau đó nâng cấp dần lên. Tuy nhiên, điều này không phù hợp với mô hình mà chúng tôi đang mô tả trong bài viết này.

khuếch tán ổn định

Đây là một bước đột phá xã hội hơn là một bước đột phá kỹ thuật. Mô hình này là một mô hình khuếch tán tiềm ẩn “vanilla”, được đào tạo trên LAION và không giống như hầu hết các mô hình tạo hình ảnh trước đó, nó đã được phát hành ra công chúng. Điều này làm cho công nghệ có sẵn cho nhiều đối tượng không quen thuộc với Machine Learning, tạo ra nhiều sáng tạo, thảo luận và mọi người tinh chỉnh nó trên nhiều bộ dữ liệu khác nhau (ví dụ: các mô hình anime được đề cập ở trên).

Một lựa chọn thú vị trong kiến ​​trúc rất phù hợp với chúng ta là mô hình đang thực hiện điều hòa như thế nào. Thông thường, các mô hình được đào tạo ở cả hai chế độ “không điều kiện” ( UNet(corrupted image) ~ image ) và có điều kiện ( UNet(corrupted image, condition) ~ image ) và hướng dẫn không phân loại được sử dụng khi lấy mẫu: thay vì sử dụng UNet ( hình ảnh bị hỏng , điều kiện ) khi tạo hình ảnh, nó sử dụng C * UNet ( hình ảnh bị hỏng, điều kiện ) ( C — 1) * UNet ( hình ảnh bị hỏng ) và Ccao hơn đáng kể so với 1 (ví dụ: 7). Điều này không trực quan lắm, nhưng cải thiện đáng kể cả chất lượng hình ảnh và độ trung thực nhanh chóng của hình ảnh được tạo.

Điều liên quan đến chúng tôi là làm thế nào để đạt được điều kiện . Trong Khuếch tán ổn định, họ sử dụng lớp mã hóa văn bản ẩn cuối cùng của mô hình CLIP . Nó bị đóng băng, tức là độ dốc không được lan truyền ngược tới nó trong quá trình đào tạo. Nó có thể được coi là một mô hình mã hóa ngôn ngữ, với một số hương vị thứ cấp của hình ảnh thiên về việc hiểu ngôn ngữ theo hướng hiểu bằng hình ảnh.

khuếch tán waifu

Đây là một Khuếch tán ổn định được tinh chỉnh trên hình ảnh anime. Có vẻ như họ đã sử dụng một tập hợp con của Danbooru2021 (hoặc thứ gì đó tương tự) làm tập huấn luyện của họ. Họ đã sử dụng Stable Diffusion như vốn có mà không có bất kỳ sửa đổi nào đối với mã (mặc dù vậy, họ đã tinh chỉnh phần giải mã của VAE để làm cho nó hoạt động tốt hơn một chút với hình ảnh anime).

Kết quả là, họ cũng sử dụng CLIP làm công cụ điều chỉnh, cung cấp cho nó một chuỗi có thẻ làm lời nhắc. Tôi đoán nó hoạt động khá kém, vì chúng cũng xử lý trước các thẻ (ví dụ: thay thế dấu gạch dưới bằng dấu cách). Nhưng ngay cả với điều đó, có vẻ như sự hiểu biết của CLIP về lời nhắc là chưa tối ưu.

Khuếch tán ổn định 2

Đây là bản phát hành gia tăng giúp đào tạo lại mô hình (có cùng kích thước) từ đầu và cũng thay thế bộ điều chỉnh bằng OpenCLIP . Nó cũng có một số tính năng bổ sung thú vị, như img2img dựa trên độ sâu và mô hình có độ phân giải cao hơn (768x768 pixel).

Mô hình của chúng tôi: đào tạo

Mục tiêu là hoàn thiện Stable Diffusion 2 trên các hình ảnh anime, thay thế bộ mã hóa bằng một mô hình tùy chỉnh dành riêng cho bộ thẻ làm đầu vào, trái ngược với ngôn ngữ tự nhiên của CLIP. Bên cạnh khả năng điều hòa tốt hơn, điều này cũng sẽ cho phép kỹ thuật tăng cường nhanh chóng từ Anifusion , giúp ích rất nhiều cho chất lượng và sự đa dạng ở đó.

Điều hòa

Chúng tôi sử dụng phương pháp tương tự như trong Anifusion: mô hình điều hòa là một máy biến áp có kích thước BERT không có phần nhúng theo vị trí (để nắm bắt tính đối xứng của lời nhắc thẻ: thứ tự của các thẻ không quan trọng). Chúng tôi chỉ thay thế chất điều hòa, giữ nguyên phần chú ý chéo của đường trục khuếch tán.

Một câu hỏi quan trọng ở đây là làm thế nào để khởi tạo biến áp trọng số. Bắt đầu từ bộ điều hòa chưa được đào tạo và UNet được đào tạo và đào tạo chúng cùng nhau có thể dẫn đến quá trình đào tạo phá hủy hoặc làm suy giảm đáng kể các trọng số UNet. May mắn thay, không khó để khắc phục điều này: chúng ta có thể đóng băng UNet và chỉ chạy đào tạo cho phần máy biến áp trong một thời gian.

Các vấn đề kỹ thuật và tối ưu hóa

Để đào tạo hiệu quả, điều quan trọng là phải ép kích thước lô vào RAM video càng cao càng tốt (ví dụ: vì chi phí áp dụng logic trình tối ưu hóa chỉ được trả một lần cho mỗi đợt). Về cơ bản có hai hướng ở đây.

thay đổi đường ống

Mã đào tạo SD chuẩn chạy bộ mã hóa VAE trực tuyến, phân tích cú pháp hình ảnh thô và mã hóa nó. Đây là kết quả treo thấp nhất cần loại bỏ: trọng lượng VAE tiêu thụ VRAM, các biến trung gian từ việc áp dụng bộ mã hóa này cũng tiêu thụ VRAM, quá trình mã hóa cần có thời gian. Đặc biệt, nếu chúng tôi thực hiện nhiều lần chuyển dữ liệu, sẽ không có nghĩa là phải trả chi phí mã hóa cùng một hình ảnh nhiều lần.

May mắn thay, phần này rất dễ tối ưu hóa: chúng tôi chỉ mã hóa trước tất cả các hình ảnh trong tập huấn luyện. Lợi ích bổ sung là tập huấn luyện thu được nhỏ hơn nhiều (về kích thước đĩa) so với hình ảnh 512x512 ban đầu trong không gian pixel.

Một cách khác để tiết kiệm một chút VRAM là tắt EMA. Đường trung bình động hàm mũ là một thủ thuật để cải thiện một chút chất lượng của mô hình bằng cách (đại khái) lấy trung bình các trọng số từ một loạt các điểm kiểm tra cuối cùng và không lưu trữ EMA là một cách dễ dàng để sử dụng ít VRAM hơn mà không làm ảnh hưởng nhiều đến mô hình kết quả.

Thay đổi đào tạo

Một cách phổ biến để tăng tốc độ đào tạo và tiết kiệm VRAM là sử dụng độ chính xác thấp hơn: thay vì fp32 thông thường (số dấu phẩy động 32 bit), hãy sử dụng fp16 hoặc bf16 (các biến thể của số dấu phẩy động 16 bit) hoặc độ chính xác hỗn hợp (thực hiện một số thao tác trong fp16).

Tôi đã thử nó, và nó thực sự giúp cải thiện hiệu suất, nhưng nó quá nguy hiểm. Đặc biệt, tại một thời điểm, tôi đã thêm “with torch.autocast():” (độ chính xác hỗn hợp) để thu hút sự chú ý và sau đó lãng phí khá nhiều thời gian để tìm hiểu lý do tại sao mô hình lại dần phân kỳ theo thời gian.

Do đó, tôi quyết định rằng sẽ an toàn hơn nếu không áp dụng các tối ưu hóa kiểu này cho mô hình, vì việc đào tạo đã khá hiệu quả.

Cập nhật tập huấn luyện

Trong Anifusion, một phiên bản cũ hơn của tập dữ liệu Danbooru đã được sử dụng, vì vậy tôi quyết định rằng đây là thời điểm tốt để cập nhật nó, đồng thời mở rộng kích thước của tập huấn luyện và tập hợp các thẻ được hỗ trợ trong lời nhắc. Tuy nhiên, có một số vấn đề phức tạp: (1) phiên bản mới của tập dữ liệu không phải là tập dữ liệu thay thế đơn giản của phiên bản trước đó và (2) tôi đã quyết định thực hiện nó trong khi mô hình đang được đào tạo, vì vậy một số công việc bổ sung để chuyển đổi phiên bản hiện có trạm kiểm soát là cần thiết.

Sự khác biệt về tập dữ liệu

Đây là một vấn đề nhỏ, nhưng sau khi tải xuống siêu dữ liệu cho phiên bản bộ dữ liệu mới, tôi nhận thấy rằng một loạt hình ảnh (một vài phần trăm) đã biến mất. Một số thẻ lọt vào top 2,5k trước đây cũng biến mất (bao gồm một số thẻ phổ biến nhất), hơn nữa, các hình ảnh bị xóa khớp với các thẻ đã xóa.

Kiểm tra thêm cho thấy rằng tất cả các thẻ biến mất đều khớp với mẫu “NSFW có tua rua” (một số trong số chúng có tua rua đến mức tôi thậm chí còn không biết những thứ như vậy tồn tại…). Nó hơi không nhất quán, vì các thẻ và hình ảnh tương tự về bản chất khác được giữ nguyên. Tôi đoán rằng người duy trì bộ dữ liệu hoặc trang web lưu trữ hình ảnh nguồn đã triển khai nó như một cách hack nhanh để giải quyết một số lo ngại về PR. Dù sao đi nữa, tôi chỉ kết hợp các bộ dữ liệu cũ và mới, thu được khoảng 2 triệu hình ảnh để đào tạo. Ngoài ra, tôi đã lấy mẫu 800.000 hình ảnh có độ phân giải ≥ 786x768 trong số chúng để tinh chỉnh mô hình có độ phân giải cao hơn sau này.

Mở rộng bộ thẻ

Phần này thực sự là loại không tầm thường. Tại thời điểm bộ dữ liệu mới được tạo ra, mô hình đã được đào tạo trong một thời gian khá dài, có một máy biến áp điều hòa được hội tụ tốt, lấy lời nhắc từ các thẻ 2,5k hàng đầu làm đầu vào. Đối với phiên bản mới hơn, thay vào đó, tôi quyết định sử dụng các thẻ top-12k. Làm thế nào để thêm chúng vào mô hình?

Cái cần nâng cấp là bảng nhúng của biến áp (từ 2500x1024 lên 12000x1024). Một cách tiếp cận ngây thơ là khởi tạo ngẫu nhiên các nhúng mới và huấn luyện mô hình trong một thời gian với UNet đã đóng băng, chỉ cập nhật biến áp. Nhưng điều này (1) lãng phí thời gian và tính toán, (2) nhàm chán. Chúng ta có thể khởi tạo chúng tốt hơn không?

Hãy xem những thông tin có sẵn cho chúng tôi. Chúng tôi đã đào tạo 2,5k lần nhúng và các lần nhúng cho các thẻ mới sẽ hơi giống với chúng. Nhưng với cái nào? Một ý tưởng ngây thơ là sử dụng phần nhúng của các thẻ tương tự về mặt ngữ nghĩa. Nhưng làm thế nào để chúng ta có được sự giống nhau về ngữ nghĩa? Word2vec cổ điển rất tốt về điều đó, vì vậy chúng tôi chỉ có thể lấy các bộ thẻ và đào tạo các nhúng word2vec trên chúng. Dưới đây là hình ảnh trực quan của t-SNE về kết quả (các điểm tối tương ứng với các thẻ NSFW, để những người không muốn nhìn vào chúng có thể dễ dàng bỏ qua chúng): liên kết tương tác .

Hãy cùng xem hình ảnh trực quan tương tự cho 2,5k lượt nhúng được đào tạo từ biến áp: liên kết tương tác .

Vì vậy, nó không thực sự giống nhau và tập trung nhiều vào hình thức bên ngoài hơn là ngữ nghĩa. Tuy nhiên, nó phải đủ gần để chúng tôi có thể tính toán các lần nhúng ban đầu cho các thẻ mới như sau: lấy các hàng xóm gần nhất trong không gian word2vec từ các thẻ 2,5k hàng đầu và tổng hợp các lần nhúng máy biến áp của chúng. Trên thực tế, chúng tôi thậm chí có thể cải thiện nó một chút: đào tạo một NN nhỏ biến đổi word2vec sao cho tập hợp hàng xóm gần nhất khớp với nhúng thực trên 2,5 nghìn cái đầu tiên và áp dụng nó cho các thẻ còn lại.

Với điều này, chúng tôi có được khởi tạo hợp lý cho các nhúng mới, sửa đổi điểm kiểm tra mới nhất và tiếp tục đào tạo về dữ liệu mới như hiện tại.

Đào tạo độ phân giải cao hơn

Stable Diffusion 2 có phiên bản tạo ra hình ảnh có kích thước 768x768 (tức là lớn hơn 2,25 lần so với 512x512), có một số thuộc tính thú vị (ví dụ: nó có vẻ xử lý việc vẽ bằng ngón tay tốt hơn phiên bản có độ phân giải thấp hơn). Vì vậy, chúng tôi quyết định làm điều tương tự với mô hình của mình. Đặc biệt, chúng tôi có hai giai đoạn đào tạo:

  • Độ phân giải thấp: đào tạo trên hình ảnh 512x512 (không gian tiềm ẩn 64x64x4), với kích thước lô 11, tỷ lệ học tập 5e-6, cho 1 triệu bước;
  • Độ phân giải cao: tiếp tục từ giai đoạn trước, đào tạo trên hình ảnh 768x768 (không gian tiềm ẩn 96x96x4), với kích thước lô 5, tốc độ học 5e-6, 80 nghìn bước.

thay đổi lấy mẫu

Trong Anifusion , lời nhắc tăng cường với một mô hình riêng biệt đã cải thiện đáng kể kết quả. Theo trực giác, việc lấy mẫu nội dung trong không gian khái niệm rời rạc sẽ dễ dàng hơn, trái ngược với không gian liên tục tiềm ẩn bên trong quá trình khuếch tán.

Ở đây, chúng tôi áp dụng kỹ thuật tương tự, đào tạo lại máy biến áp tăng cường nhanh chóng trên tập huấn luyện mới. Chúng tôi quan sát thấy hiệu ứng tương tự — chất lượng và tính đa dạng của mẫu tăng lên đáng kể khi tăng nhanh, đặc biệt đối với các lời nhắc ngắn.

Kết quả

Có vẻ như mô hình 768x768 tạo ra hình ảnh tốt hơn so với mô hình 512x512 và không chỉ vì độ phân giải: tính nhất quán tổng thể của hình ảnh và (đặc biệt) các chi tiết giải phẫu của ký tự tốt hơn. Tuy nhiên, có vẻ như độ trung thực nhanh chóng kém hơn một chút (mặc dù tôi không có bất kỳ phép đo thích hợp nào, chỉ là ấn tượng của tôi).

Một điều cần lưu ý là so với Anifusion, mô hình này dường như thiên về hình ảnh NSFW/đặc sắc hơn. Một số nguyên nhân có thể là do tăng cường nhanh chóng, nhưng phần UNet cũng phải chịu trách nhiệm. Tôi không chắc tại sao nó lại xảy ra (các thay đổi trong tập huấn luyện khá nhỏ; có thể kích thước/bắt đầu từ Khuếch tán ổn định gây ra điều này?).

Chúng ta hãy xem qua từng bước các loại hình ảnh khác nhau.

chân dung

Đây là trường hợp sử dụng đơn giản nhất và chân dung anime đã được tạo thành công ngay cả trong thời đại GAN. Vì vậy, không có gì ngạc nhiên khi mô hình không gặp khó khăn gì với điều này (một số ví dụ bên dưới).

Ký tự đơn, thẻ phổ biến

Đây là một bài kiểm tra khó hơn và đúng như dự đoán, đôi khi người ta có thể nhận được những hình ảnh xấu (hiếm khi). Một kiểu thất bại phổ biến là giải phẫu kém - một cánh tay hoặc chân bổ sung. Và tất nhiên, ngón tay là một thách thức khá lớn đối với người mẫu.

Ký tự đơn, thẻ đuôi

Ở đây, chúng tôi đang thử nghiệm các thẻ ít phổ biến hơn, cụ thể là những thẻ được thêm vào ở giai đoạn đào tạo sau này (xem bên trên để biết thêm chi tiết). Chúng dường như hoạt động khá tốt, mặc dù không hoàn hảo. Một số ví dụ dưới đây. Nói chung, có vẻ như các thẻ ký tự dễ dàng hơn đối với mô hình so với các thẻ khái niệm.

Các thẻ mới được thêm vào, từ trái sang phải: “lion” (không rõ ràng, có thể cô ấy đang cưỡi nó), “facepalm” (không hoạt động), “venti_(genshin_impact)” (đã hoạt động)

Tương tác nhân vật

Cuối cùng, chúng ta đang nhận được một cái gì đó thú vị. Anifusion ban đầu không hoạt động tốt khi các nhân vật tương tác. Mô hình mới có tốt hơn không?

Nhiều ký tự đứng cạnh nhau có vẻ ổn:

Các hành động đơn giản cũng phần nào hoạt động:

Từ trái qua phải: “kiss”, “holding_hands”, “ôm”

Tương tác với các đối tượng cũng ít nhiều tốt:

Trái sang phải: “holding_gun”, “riding”, “holding_food”

Tuy nhiên, nếu chúng ta cố gắng chỉ định các tương tác phức tạp, nó thường tạo ra nỗi kinh hoàng về cơ thể (tôi sẽ không đăng những bức ảnh này ở đây, vì chúng có thể gây khó chịu). Tại sao chuyện này đang xảy ra? Tôi suy đoán rằng điều này là do lời nhắc chỉ là tập hợp các thẻ và không chỉ định đủ chính xác các tương tác. Điều khiến các mô hình khuếch tán tạo ra hình ảnh tốt ngay từ đầu là hướng dẫn không cần phân loại: việc nhấn mạnh quá mức các lời nhắc đã cải thiện đáng kể chất lượng so với lấy mẫu không nhắc, bởi vì việc lấy mẫu các khái niệm phức tạp bên trong quá trình khuếch tán rất khó. Vì vậy, chúng tôi có thể mong đợi rằng bất cứ điều gì được chỉ định rõ ràng trong lời nhắc sẽ được tạo ra một cách độc đáo, nhưng sự mơ hồ sẽ được giải quyết theo cách không mấy hay ho. Lời nhắc bằng ngôn ngữ tự nhiên có thể tốt hơn theo nghĩa này.

FWIW, trong các nhận xét cho bài đăng gốc của Anifusion trên reddit, Gwern đã đề xuất sử dụng BLIP để tạo lời nhắc bằng ngôn ngữ tự nhiên từ các hình ảnh; Tôi thực sự đã thử nó và chất lượng của lời nhắc cực kỳ thấp, vì vậy nó không dễ dàng như vậy.

phong cách

Trong Bản khuếch tán ổn định ban đầu, mọi người đã tìm thấy nhiều cách để chỉ định phong cách cho mô hình, chủ yếu bằng cách thêm tên của một số nghệ sĩ. Điều tương tự có xảy ra với mô hình anime không?

Dùng thử — nó hoạt động rất tốt (đây là một lợi thế so với AnythingV3). Dưới đây là các ví dụ trong các phong cách ngẫu nhiên khác nhau.

So sánh với các mô hình anime khác

Chúng tôi không so sánh với AnythingV3, vì nó không thực sự tôn trọng lời nhắc, tạo ra những hình ảnh tương tự cho bất kỳ thứ gì đẹp đẽ (như tên gợi ý). Điều này để lại WaifuDiffusion và NovelAI. Chúng tôi đã quyết định không so sánh với NovelAI, vì điều đó sẽ yêu cầu sử dụng điểm kiểm tra bị rò rỉ và tốt hơn hết là tránh xa bộ phim đó. Điều này để lại cho chúng tôi WaifuDiffusion.

Một điều cần lưu ý là việc so sánh trên các lời nhắc ngắn sẽ quá bất công đối với WaifuDiffusion: nó không bao gồm tính năng tăng nhanh (không giống như Anifusion), mang lại kết quả rất kém trên các lời nhắc ngắn. Vì vậy, chúng tôi thực hiện hai phép so sánh khác nhau để thay thế. Trong một, chúng tôi lấy mẫu các tập hợp thẻ từ tập dữ liệu gốc, loại bỏ hiệu quả phần bổ sung nhanh chóng khỏi phần xem xét và chỉ so sánh phần phổ biến. Trong mô hình thứ hai, chúng tôi xây dựng một số lời nhắc kích thước trung bình theo cách thủ công và đánh giá cả hai mô hình trên chúng (điều này bao gồm tác động của việc tăng cường nhắc nhở).

Bộ thẻ từ tập dữ liệu

Chúng tôi lấy mẫu 97 bộ thẻ từ tập dữ liệu (thống nhất, lọc theo hình ảnh được xếp hạng “an toàn”). Đối với Anifusion, chúng tôi xử lý trước chúng bằng cách thêm “rating_s, score_perc_100,adjusted_score_perc_100” vào lời nhắc. Đối với WaifuDiffusion, chúng tôi xử lý trước chúng bằng cách thay thế dấu gạch dưới bằng dấu cách. Trong cả hai trường hợp, chúng tôi sử dụng lấy mẫu DDIM với 50 bước và thang hướng dẫn không phân loại 9.

Sau khi có được một số xếp hạng của con người (với các mặt lật ngẫu nhiên để so sánh), chúng tôi thu được các kết quả sau so với Waifu:

  • Anifusion tốt hơn: 30%
  • Waifu tốt hơn: 24%
  • Gần giống nhau: 46%

Một kiểu lỗi mà tôi nhận thấy ở Waifu: nó thường tạo ra một số hình ảnh phụ thay vì hình ảnh đầy đủ, cắt bớt phần đầu của nhân vật. Một mô hình thất bại của Anifusion là một NSFW không có chủ ý (và có liên quan - giải phẫu xấu; vì lý do nào đó, hình ảnh càng gần với NSFW, mô hình càng có giải phẫu xấu).

Lưu ý bên lề: tại đây bạn có thể tìm thấy kết quả AnythingV3 cho cùng một lời nhắc. Kết quả có vẻ tốt, nhưng người ta có thể hiểu tại sao tôi ngần ngại đưa nó vào so sánh: tất cả các hình ảnh trông giống hệt nhau, thiếu tính đa dạng nghiêm trọng, nghĩa là mô hình có không gian đầu ra nhỏ hơn nhiều.

Vì vậy, với lấy mẫu trong phân phối, nó không tốt hơn nhiều. Nhưng nếu chúng ta sử dụng phiên bản highres của mô hình thì sao?

  • Anifusion tốt hơn: 41%
  • Waifu tốt hơn: 13%
  • Gần giống nhau: 46%

Người ta có thể nhận thấy rằng có một số lượng không nhỏ "gần giống nhau". Hầu hết các ví dụ này đều là cả hai mô hình đều tốt như nhau, nhưng có một số ví dụ mà cả hai mô hình đều tệ khủng khiếp (bằng cách nào đó chúng có mối tương quan với nhau ở điểm này).

Lời nhắc cỡ trung bình thủ công

Chúng tôi sử dụng quá trình tiền xử lý nhanh tương tự như được mô tả trong phần trước. Chúng tôi chuẩn bị thủ công 33 lời nhắc có kích thước trung bình hợp lý (tất nhiên vì chúng được chuẩn bị bởi một người nên chúng có thể không đại diện cho toàn bộ phân phối).

Ở đây, kết quả rất khác nhau:

  • Anifusion tốt hơn: 73%
  • Waifu tốt hơn: 9%
  • Gần như nhau: 18%

Như chúng ta có thể thấy, tăng cường nhanh chóng tạo ra sự khác biệt. Điều gì xảy ra khi chúng tôi sử dụng mô hình có độ phân giải cao? Kết quả khá giống nhau ( dữ liệu thô ):

  • Anifusion tốt hơn: 73%
  • Waifu tốt hơn: 3%
  • Gần như nhau: 24%

Khả năng tiếp cận cho giáo dân

Một quan sát thú vị là ngay cả sau một triệu minibatch đào tạo, mô hình vẫn tiếp tục được cải thiện. Không rõ liệu mô hình có nhớ bất cứ điều gì từ điểm kiểm tra Khuếch tán ổn định ban đầu sau rất nhiều bước hay không. Có lẽ bộ dữ liệu anime đủ dễ dàng để người ta có thể huấn luyện các mô hình khuếch tán có kích thước SD từ đầu trên phần cứng hàng hóa mà không cần khởi động nóng từ SD hiện có? Đây là một hướng cần nghiên cứu: nếu đúng như vậy, việc thử các kiến ​​trúc mới cho các cá nhân sẽ trở nên dễ dàng hơn mà không cần phải chi hàng triệu đô la cho máy tính, như trường hợp đào tạo dựa trên LAION.

Cải thiện chất lượng hơn nữa

Thật thú vị khi xem mô hình hiện tại có thể đi được bao xa, vì vậy tôi muốn hoàn thiện nó thêm một chút, có thể sử dụng tập dữ liệu đầy đủ, thay vì tập hợp con 2M. Nhưng tôi nghi ngờ rằng yếu tố hạn chế là chất lượng tập dữ liệu, không phải số lượng tinh chỉnh (nghĩa là để cải thiện chất lượng mô hình, người ta chỉ cần cung cấp hình ảnh chất lượng cao hơn hoặc thêm một mã định danh đặc biệt vào bộ điều chỉnh giúp mô hình để phân biệt hình ảnh đẹp hơn và xấu hơn). Theo hiểu biết của tôi, không có mô hình đáng tin cậy nào như thế này cho anime (đối với hình ảnh chung, mọi người sử dụng tập hợp con “thẩm mỹ” của LAION). Mặc dù có một số mô hình tạo ra kết quả tuyệt vời trông khác với mô hình này hoặc WaifuDiffusion (ví dụ: mô hình anime của Midjorney, chỉ có ở dạng hình ảnh do họ chọn), vì vậy điều này có thể khả thi.

Điều quan trọng cần lưu ý là việc tạo độ phân giải cao hơn sẽ cải thiện chất lượng ở các khía cạnh khác ngoài độ phân giải - ví dụ: “bàn tay AI” khét tiếng trở nên tốt hơn. Tôi tự hỏi liệu việc tăng thêm lên 1024x1024 có mang lại nhiều cải tiến hơn không. Một cái gì đó để thử có thể là sử dụng khuếch tán theo tầng (ví dụ: Imagen ) trong không gian tiềm ẩn (ví dụ: 64x64 -> 128x128 -> 256x256 trong không gian tiềm ẩn, mang lại 2048x2048 trong không gian ban đầu).

khả năng sử dụng

Một mối quan tâm với những gì tôi đang phát hành là nó là một bằng chứng về khái niệm. Mã của mô hình khác với SD, vì vậy nó không thực sự tương thích với hầu hết các công cụ (đặc biệt là phần mã thông báo nhắc). Vì vậy, mặc dù mẫu này trông đẹp hơn các mẫu anime hiện có khác, nhưng tính dễ sử dụng không tuyệt vời bằng. Một giải pháp tiềm năng cho nó sẽ là cộng đồng (hoặc tôi, nếu tôi có thời gian) tích hợp nó đúng cách với các công cụ hiện có hoặc làm cho nó tương thích với SD ở cấp độ giao diện.

Người giới thiệu

  • Khuếch tán ổn định 2
  • Khuếch tán tiềm ẩn
  • Bộ dữ liệu Danbooru2021
  • Hướng dẫn đưa lên web UI
  • Điểm kiểm tra mô hình (ôm mặt): 512x512 , 768x768 , bộ tăng nhanh
  • SD Github repo được điều chỉnh cho mô hình
  • Bản trình diễn 768x768 —được giới hạn ở “xếp hạng: An toàn”, tôi sẽ duy trì nó chạy trong một thời gian, nhưng cuối cùng tôi sẽ không duy trì nó nữa