Quá trình học tăng cường mà OpenAI sử dụng để cải thiện mô hình đã ngầm làm giảm hành vi tiêu cực từ các tương tác tích cực của con người.
Trong bài viết này, các tác giả áp dụng một cách tiếp cận thực tế mới: sử dụng các tương tác tiêu cực giữa con người với nhau (tức là cố tình chọn những hình ảnh chất lượng thấp) để ngầm tăng cường hành vi tích cực.
Với Dreambooth LoRA, về cơ bản không cần phải chuẩn bị nhiều dữ liệu đầu vào như việc đào tạo một mô hình ngôn ngữ lớn để đạt được mục tiêu này.
"Bánh mì kẹp thịt hình người ngoài hành tinh ()" với các mức tối ưu hóa khác nhau
Tác giả giới thiệu hai tính năng cốt lõi được phát hành bởi Stable Diffusion XL 1.0: nhắc trọng số từ và đào tạo và lý luận Dreambooth LoRA, đồng thời kết hợp phương pháp Textual Inversion (đảo ngược văn bản) để huấn luyện Lora, giúp Lora thông minh hơn và dễ sử dụng hơn.
Thông tin về tác giả: Max Woolf (@minimaxir) là nhà khoa học dữ liệu tại BuzzFeed, làm việc trên các công cụ AI/ML và nhiều dự án nguồn mở khác nhau.
Liên kết gốc:
Sau đây là nội dung bài viết, do Founder Park biên tập.
SDXL giới thiệu ngắn gọn
Tháng trước, Stability AI đã phát hành Stable Diffusion XL 1.0 (SDXL) và biến nó thành nguồn mở, cho phép người dùng truy cập mà không cần bất kỳ quyền đặc biệt nào.
Ví dụ về đầu ra SDXL 1.0
SDXL thực tế là hai mô hình: một mô hình cơ sở và một mô hình tinh chỉnh tùy chọn có thể nâng cao đáng kể khả năng thể hiện chi tiết mà không cần tăng tốc độ.
So sánh chất lượng tương đối giữa các mô hình của các phiên bản Khuếch tán ổn định khác nhau
Nhận thấy sự cải thiện đáng kể về chất lượng sau khi sử dụng mô hình mỏng
Tính năng SDXL 1.0
Điều đáng chú ý là phiên bản này (SDXL 1.0) là một trong những mô hình nguồn mở đầu tiên có thể tạo hình ảnh có độ phân giải 1024x1024 mà không cần các biện pháp đặc biệt và hình ảnh được tạo ra chi tiết hơn.
Thư viện Python khuếch tán của Hugging Face hiện hỗ trợ đầy đủ mô hình với một số tối ưu hóa hiệu suất.
Đồng thời, bộ khuếch tán cũng triển khai hỗ trợ cho hai tính năng mới: trọng số từ nhanh chóng và đào tạo và suy luận Dreambooth LoRA. Vì vậy, tôi dự định dùng thử (bạn có thể xem mã demo SDXL trong bộ khuếch tán ở cuối bài viết).
Hỗ trợ tính trọng số từ nhanh chóng cho bộ khuếch tán tận dụng thư viện Python có tên là bắt buộc phải tính trọng số theo cách toán học hơn. Bạn có thể thêm bất kỳ số + hoặc - nào vào một từ nhất định để tăng hoặc giảm "tầm quan trọng" của nó trong việc nhúng văn bản vị trí được tạo và do đó ảnh hưởng đến đầu ra cuối cùng.
Theo nguyên tắc tương tự, bạn cũng có thể gói các cụm từ: ví dụ: nếu bạn định tạo "phong cảnh San Francisco của Salvador Dali, sơn dầu trên canvas" và nó tạo ra một bức ảnh thực tế về San Francisco, thì bạn có thể đóng khung loại hình nghệ thuật đó và trở thành Nhập "Phong cảnh San Francisco của Salvador Dali, (dầu trên canvas)+++", hãy để Khuếch tán ổn định mang lại hiệu quả như mong đợi.
Chuẩn bị môi trường
Tôi đã kích hoạt một máy ảo đám mây, cung cấp cho nó GPU Nvidia L4 tầm trung mới (0,24 USD/giờ đối với phiên bản Spot trên Google Cloud Platform) và bắt đầu hoạt động.
Với một GPU L4, mất khoảng 22 giây để tạo ra mỗi hình ảnh 1024x1024; và không giống như chế độ Khuếch tán ổn định trước đây, giờ đây GPU tầm trung chỉ có thể tạo một hình ảnh mỗi lần vì mức sử dụng GPU của nó đã đầy, vì vậy bạn chỉ cần có phải kiên nhẫn hơn. Việc giảm độ phân giải có thể tăng tốc quá trình xây dựng, nhưng tôi thực sự khuyên bạn không nên làm vậy vì kết quả sẽ rất tệ.
** Một chút cấu hình được cá nhân hóa **
Trong các thử nghiệm của tôi, nó khắc phục hầu hết các vấn đề về từ nhắc nhở được đưa ra sau Stable Diffusion 2.0, đặc biệt là với các giá trị hướng dẫn không phân loại cao hơn được đặt (guideing_scale mặc định là 7.5; tôi muốn thay đổi nó thành 13 )
Hướng dẫn_scale là 13 cho tất cả các ví dụ được tạo bởi mô hình LoRA trong bài viết này.
Bắt đầu 丨 Khám phá LoRA
Bản cập nhật quan trọng nhất của SDXL 1.0 thực sự là hỗ trợ Dreambooth LoRA, cho phép chúng tôi tùy chỉnh mô hình Khuếch tán ổn định.
Dreambooth là một kỹ thuật để tinh chỉnh Khuếch tán ổn định dựa trên một tập hợp rất nhỏ hình ảnh nguồn và từ khóa kích hoạt, để "khái niệm" trong những hình ảnh đó có thể được sử dụng trong các ngữ cảnh khác được cung cấp từ khóa.
Sơ đồ nguyên lý làm việc của Dreambooth
Ưu điểm của LoRA: "mô hình nhỏ" dành riêng cho từng miền
Khi tự đào tạo Stable Diffusion, ngay cả một mô hình nhỏ cũng cần nhiều giờ đào tạo trên nhiều GPU đắt tiền.
Đây là lúc LoRA phát huy tác dụng: nó đào tạo một tập hợp con nhỏ của mô hình tầm nhìn để chỉ cần một GPU giá rẻ cho ra kết quả sau 10 phút và chất lượng của mô hình cuối cùng + LoRA có thể so sánh với một mô hình được tinh chỉnh hoàn toàn (Nói chung, khi mọi người đề cập đến việc tinh chỉnh Khuếch tán ổn định, họ thường đề cập đến việc tạo LoRA).
LoRA đã được đào tạo là một tệp nhị phân nhỏ, độc lập, có thể dễ dàng chia sẻ với người khác hoặc tải lên kho lưu trữ như Civitai.
Một nhược điểm nhỏ của LoRA là mỗi lần chỉ có thể hoạt động một LoRA: chúng ta có thể kết hợp nhiều LoRA để kết hợp các ưu điểm của chúng, nhưng thực tế thì không đơn giản như vậy.
Đảo ngược văn bản Trận chiến thực tế: Đảo ngược văn bản
Trước khi LoRA khuếch tán ổn định trở nên phổ biến rộng rãi, có một phương pháp gọi là đảo ngược văn bản, cho phép bộ mã hóa văn bản tìm hiểu các khái niệm, nhưng phải mất nhiều giờ để đào tạo và kết quả có thể rất tệ.
Tôi đã đào tạo cách đảo ngược văn bản trong một bài đăng trên blog trước đó: Âm thanh xấu xí (Sonic) và vì nó không có trong tập dữ liệu nguồn cho Khuếch tán ổn định nên kết quả là duy nhất. Các kết quả được tạo ra như sau, với các kết quả khác nhau.
(Xấu xí) Sonic, nhưng xấu kinh khủng
Lần này, tôi nghĩ việc sử dụng Ugly Sonic để huấn luyện LoRA sẽ là một trường hợp tốt để kiểm tra tiềm năng của SDXL.
Tình cờ là Hugging Face cung cấp tập lệnh train_dreambooth_lora_sdxl.py, tập lệnh này có thể sử dụng mô hình cơ bản SDXL để huấn luyện LoRA; tập lệnh này vẫn chưa có sẵn, nhưng tôi đã điều chỉnh các tham số một chút.
Không quá lời khi nói rằng những hình ảnh Ugly Sonic do LoRA đã qua đào tạo tạo ra dưới nhiều lời nhắc khác nhau trông đẹp hơn và có tổ chức hơn.
Sonic, nhưng lần này có răng
Nâng cao 丨 Đảo ngược văn bản chuyên sâu
Sau thành công của thử nghiệm này, tôi quyết định làm lại một thử nghiệm khác mà tôi đã thực hiện trước đó với tính năng đảo ngược văn bản: bằng cách thêm sai từ gợi ý để tạo ra hình ảnh đẹp hơn.
Phương pháp lần này là huấn luyện LoRA với một số hình ảnh chất lượng thấp bị méo nghiêm trọng và từ gợi ý đưa ra bị sai, tôi hy vọng LoRA có thể coi sai là "dấu nhắc tiêu cực" và tránh tình trạng này, tạo ra hình ảnh ít bị biến dạng hơn.
Tôi đã viết Jupyter Notebook và sử dụng SDXL để tự mình tạo ra nhiều hình ảnh tổng hợp "sai", lần này cũng sử dụng nhiều trọng số gợi ý khác nhau để tạo ra các trường hợp rõ ràng hơn về hình ảnh không thành công, chẳng hạn như tay bị mờ (mờ) và tay xấu (vẽ sai)) .
Trớ trêu thay, chúng ta cần sử dụng SDXL để tạo ra những hình ảnh bị lỗi có độ phân giải cao.
Trên đây là một số ví dụ tổng hợp hình ảnh sai
Nó vô tình kết hợp các yếu tố của bìa album punk rock từ những năm 2000
Tôi đã huấn luyện LoRA này và tải nó vào mô hình cơ sở Stable Diffusion XL (LoRA không cần thiết để tinh chỉnh mô hình) và viết Jupyter Notebook để so sánh kết quả đầu ra sau đây cho các từ nhắc nhở đã cho:
Mô hình cơ sở + đường dẫn không có LoRA. (cơ bản)
Không có đường dẫn LoRA, sử dụng sai làm gợi ý phủ định (thêm gợi ý phủ định)
Sử dụng quy trình của LoRA, sử dụng sai làm gợi ý tiêu cực (mục tiêu lý tưởng)
Hạt giống của mỗi kết quả được tạo ra đều giống nhau, do đó, bố cục của ba bức ảnh đầu ra phải giống nhau và sự khác biệt giữa tác động của các gợi ý tiêu cực sai và LoRA cũng như quy trình mô hình cơ bản phải rất rõ ràng.
Trường hợp thử nghiệm SDXL 0.9
Hãy sử dụng SDXL 0.9 để minh họa lời nhắc đơn giản để bắt đầu thử nghiệm:
「Một con sói ở Công viên Quốc gia Yosemite, chụp ảnh phim tài liệu về thiên nhiên lạnh lẽo」
Nhìn kỹ vào bức ảnh trên, không khó để nhận ra rằng gợi ý sai về mô hình cơ sở sẽ thêm một số chiếc lá và chiều sâu cho khu rừng nền, nhưng LoRA lại bổ sung thêm nhiều thứ: ánh sáng và bóng tối mạnh mẽ hơn, những chiếc lá chi tiết hơn và những thay đổi đối với cách nhìn của những con sói. Góc camera trông thú vị hơn.
Sau đó, tôi thêm "cận cảnh cực kỳ (rất cận cảnh)" vào từ gợi ý và sau khi sử dụng lại các hạt giống trước đó, tôi có được các góc nhìn cận cảnh khác nhau của những con sói trong bố cục ảnh tương tự.
* 「Cận cảnh cực kỳ cận cảnh về một con sói ở Công viên Quốc gia Yosemite, chụp ảnh phim tài liệu về thiên nhiên lạnh lẽo」*
Tại thời điểm này, kết cấu và độ rõ nét của LoRA tốt hơn nhiều so với các mẫu khác và hình ảnh sống động hơn. Tuy nhiên, hãy lưu ý rằng chỉ cần thêm một từ gợi ý sai sẽ làm thay đổi quan điểm.
Một trường hợp thử nghiệm hay khác là chụp ảnh đồ ăn và những bức ảnh chụp đồ ăn kỳ lạ mà tôi tạo bằng DALL-E 2 đặc biệt tốt. SDXL + LoRA sai có thể tạo ra những chiếc bánh mì kẹp thịt phi Euclid trông kỳ lạ với một số trọng số gợi ý không?
* 「một chiếc bánh hamburger cỡ lớn thơm ngon (có hình dạng năm chiều của người ngoài hành tinh)++++, chụp ảnh món ăn chuyên nghiệp」*
"Một chiếc burger cỡ lớn thơm ngon (hình học ngoài hành tinh 5D)++++, chụp ảnh món ăn chuyên nghiệp"
Câu trả lời là không thể, kể cả khi chỉnh sửa từ nhắc nhiều lần. Tuy nhiên, kết quả đầu ra rất thú vị: SDXL cơ sở dường như hiểu phần "người ngoài hành tinh" của lời nhắc theo nghĩa đen hơn tôi nghĩ (và đặt cho nó một chiếc mũ quả dưa dễ thương!), nhưng LoRA hoạt động tốt hơn. Anh ấy hiểu ý nghĩa của các gợi ý một cách rõ ràng và đã làm ra một chiếc burger "ngoài hành tinh" khó ăn cho con người, phong cách hình ảnh cũng tỏa sáng hơn.
Điều gì sẽ xảy ra với người họa sĩ? Liệu LoRA có thể giải quyết sai vấn đề khét tiếng là trí tuệ nhân tạo không vẽ được tay? Và chúng tôi cũng đưa nhiều ví dụ như vậy vào dữ liệu huấn luyện của LoRA. Hãy thay đổi lời nhắc mà tôi đã sử dụng khi lần đầu thử Stable Diffusion 2.0 để vẽ Tổng thống Taylor Swift:
* 「Tổng thống Hoa Kỳ Taylor Swift (ký giấy)++++, ảnh do Associated Press chụp」*
"Tổng thống Hoa Kỳ Taylor Swift (ký văn bản)++++, ảnh của AP"
Hãy nhìn vào cánh tay phải của Taylor: mô hình SDXL mặc định cho kết quả điên rồ và nếu sai thì nó thực sự tệ hơn, nhưng trong LoRA, nó đã được sửa! Sự phân lớp màu sắc của LoRA tốt hơn nhiều, với chiếc áo khoác của cô trở thành màu trắng nổi bật hơn thay vì màu vàng và trắng. Nhưng vẫn không thể nhìn kỹ bàn tay của cô ấy: vẽ nhân vật bằng SDXL 1.0 vẫn còn cồng kềnh và không đáng tin cậy!
Bây giờ kết luận đã rõ ràng, đầu ra của sai + LoRA trong mỗi trường hợp thú vị hơn đầu ra của việc chỉ thêm các tín hiệu tiêu cực sai, vì vậy chúng tôi chỉ so sánh đầu ra cơ bản và đầu ra LoRA bên dưới. Dưới đây là ví dụ về mô hình cơ sở so với LoRA sai:
* 「Con người thực tế Shrek viết blog tại máy tính, bức ảnh siêu thực đoạt giải thưởng cho hội chợ trang điểm」*
*(Người thực tế Shrek viết blog trên máy trạm, những bức ảnh siêu thực đoạt giải từ Vanity Fair) - LoRA vẽ tay và chiếu sáng đẹp hơn. Trang phục chi tiết hơn và hình nền thú vị hơn. *
* 「Pizza pepperoni hình trái tim, nhiếp ảnh đồ ăn chuyên nghiệp siêu thực từng đoạt giải thưởng」*
(pizza pepperoni hình trái tim, chụp ảnh món ăn chuyên nghiệp cực kỳ chân thực, từng đoạt giải thưởng) - pepperoni chi tiết hơn, bong bóng nóng, ít pepperoni dư thừa trên các cạnh của pizza, lớp vỏ trông cứng hơn
LoRA có lỗi có sẵn ở đây, nhưng tôi không thể đảm bảo hiệu suất của nó trên các giao diện không phải là bộ khuếch tán.
Tất cả các Notebook được sử dụng để tạo ra những hình ảnh này đều nằm trong kho GitHub này, bao gồm cả SDXL 1.0 + mẫu tinh chỉnh tiêu chuẩn + Notebook LoRA Colab bị sai, bạn có thể chạy Notebook này trên GPU T4 miễn phí. Nếu bạn muốn xem phiên bản có độ phân giải cao hơn của hình ảnh được tạo ra được sử dụng trong bài viết này, bạn có thể truy cập mã nguồn của bài viết.
Sai Cái quái gì đang xảy ra vậy?
LoRA sai Thủ thuật này chỉ cải thiện chất lượng và độ rõ nét của hình ảnh được tạo ra, nhưng LoRA dường như khiến SDXL hoạt động thông minh hơn và phản ánh nhiều hơn tinh thần của lời nhắc.
Ở cấp độ kỹ thuật, tín hiệu âm này đặt vùng không gian tiềm ẩn trong đó sự khuếch tán tạo ra hình ảnh; vùng này giống nhau đối với cả mô hình cơ sở sai và LoRA.
Trực giác của tôi là LoRA định hình lại vùng không mong muốn này trong không gian tiềm ẩn chiều cao khổng lồ để giống với vùng bắt đầu hơn, do đó xác suất kết quả tạo ra bình thường chạm vào vùng này trở nên nhỏ hơn và chất lượng cũng thấp hơn. (Tham khảo quy trình thay đổi của Alien Burger ở trên)
Đào tạo SDXL bằng hình ảnh chất lượng thấp để cải thiện về mặt kỹ thuật là một hình thức học tăng cường với phản hồi của con người (RLHF): cách tiếp cận này cũng là con đường dẫn đến thành công của ChatGPT. Quá trình học tăng cường được OpenAI sử dụng để cải thiện mô hình nhằm giảm thiểu ngầm hành vi tiêu cực từ tương tác tích cực của người dùng, trong khi ở đây tôi đang sử dụng tương tác tiêu cực của người dùng (tức là cố tình chọn hình ảnh chất lượng thấp) để ngầm tăng cường hành vi tích cực.
Nhưng với Dreambooth LoRA, về cơ bản bạn không cần phải chuẩn bị nhiều dữ liệu đầu vào như việc đào tạo một mô hình ngôn ngữ lớn.
Tiềm năng của "LoRA âm" vẫn còn rất lớn: các tham số tạo tập dữ liệu tổng hợp của tôi còn rất nhiều chỗ cần cải thiện và LoRA cũng có thể được huấn luyện trong thời gian dài hơn. Nhưng tôi rất hài lòng với kết quả cho đến nay và muốn thực hiện nhiều thử nghiệm hơn với LoRA âm, chẳng hạn như hợp nhất với các LoRA khác để xem liệu nó có thể cải thiện LoRA sau hay không (đặc biệt là sai LoRA + Ugly Sonic LoRA!)
Đính kèm: Bản demo SDXL trong bộ khuếch tán
ngọn đuốc nhập khẩu
từ bộ khuếch tán nhập DiffusionPipeline, AutoencodingKL
người tinh chỉnh = DiffusionPipeline.from_pretrain(
"ổn định/ổn định-khuếch tán-xl-tinh chế-1.0",
văn bản_encode_2=base.text_encoding_2,
chân=cơ sở.leg,
ngọn đuốc_dtype=đuốc.float16,
iant="fp16",
sử dụng_safetensors=Đúng,
)
_ = người tinh chế.to("cuda")
tạo bằng cả hai mô hình (hỗn hợp các chuyên gia)
cao_noise_frac = 0,8
= "một phi hành gia cưỡi ngựa"
phủ định_ = "mờ, xấu tay"
hình ảnh = cơ sở (
=,
âm_=âm_,
khử nhiễu_end=cao_noise_frac,
đầu ra_type="tiềm ẩn",
) .hình ảnh
hình ảnh = người tinh chế(
=,
âm_=âm_,
khử nhiễu_start=high_noise_frac,
hình ảnh=hình ảnh,
) .hình ảnh [0]
Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
Những bức ảnh xấu do AI tạo ra thực chất có thể "tinh chỉnh mô hình" ngược?
Bản gốc: Max Woolf
**Nguồn:**Người sáng lập Park
Quá trình học tăng cường mà OpenAI sử dụng để cải thiện mô hình đã ngầm làm giảm hành vi tiêu cực từ các tương tác tích cực của con người.
Trong bài viết này, các tác giả áp dụng một cách tiếp cận thực tế mới: sử dụng các tương tác tiêu cực giữa con người với nhau (tức là cố tình chọn những hình ảnh chất lượng thấp) để ngầm tăng cường hành vi tích cực.
Với Dreambooth LoRA, về cơ bản không cần phải chuẩn bị nhiều dữ liệu đầu vào như việc đào tạo một mô hình ngôn ngữ lớn để đạt được mục tiêu này.
Tác giả giới thiệu hai tính năng cốt lõi được phát hành bởi Stable Diffusion XL 1.0: nhắc trọng số từ và đào tạo và lý luận Dreambooth LoRA, đồng thời kết hợp phương pháp Textual Inversion (đảo ngược văn bản) để huấn luyện Lora, giúp Lora thông minh hơn và dễ sử dụng hơn.
Thông tin về tác giả: Max Woolf (@minimaxir) là nhà khoa học dữ liệu tại BuzzFeed, làm việc trên các công cụ AI/ML và nhiều dự án nguồn mở khác nhau.
Liên kết gốc:
Sau đây là nội dung bài viết, do Founder Park biên tập.
SDXL giới thiệu ngắn gọn
Tháng trước, Stability AI đã phát hành Stable Diffusion XL 1.0 (SDXL) và biến nó thành nguồn mở, cho phép người dùng truy cập mà không cần bất kỳ quyền đặc biệt nào.
SDXL thực tế là hai mô hình: một mô hình cơ sở và một mô hình tinh chỉnh tùy chọn có thể nâng cao đáng kể khả năng thể hiện chi tiết mà không cần tăng tốc độ.
Nhận thấy sự cải thiện đáng kể về chất lượng sau khi sử dụng mô hình mỏng
Tính năng SDXL 1.0
Điều đáng chú ý là phiên bản này (SDXL 1.0) là một trong những mô hình nguồn mở đầu tiên có thể tạo hình ảnh có độ phân giải 1024x1024 mà không cần các biện pháp đặc biệt và hình ảnh được tạo ra chi tiết hơn.
Thư viện Python khuếch tán của Hugging Face hiện hỗ trợ đầy đủ mô hình với một số tối ưu hóa hiệu suất.
Đồng thời, bộ khuếch tán cũng triển khai hỗ trợ cho hai tính năng mới: trọng số từ nhanh chóng và đào tạo và suy luận Dreambooth LoRA. Vì vậy, tôi dự định dùng thử (bạn có thể xem mã demo SDXL trong bộ khuếch tán ở cuối bài viết).
Hỗ trợ tính trọng số từ nhanh chóng cho bộ khuếch tán tận dụng thư viện Python có tên là bắt buộc phải tính trọng số theo cách toán học hơn. Bạn có thể thêm bất kỳ số + hoặc - nào vào một từ nhất định để tăng hoặc giảm "tầm quan trọng" của nó trong việc nhúng văn bản vị trí được tạo và do đó ảnh hưởng đến đầu ra cuối cùng.
Theo nguyên tắc tương tự, bạn cũng có thể gói các cụm từ: ví dụ: nếu bạn định tạo "phong cảnh San Francisco của Salvador Dali, sơn dầu trên canvas" và nó tạo ra một bức ảnh thực tế về San Francisco, thì bạn có thể đóng khung loại hình nghệ thuật đó và trở thành Nhập "Phong cảnh San Francisco của Salvador Dali, (dầu trên canvas)+++", hãy để Khuếch tán ổn định mang lại hiệu quả như mong đợi.
Chuẩn bị môi trường
Tôi đã kích hoạt một máy ảo đám mây, cung cấp cho nó GPU Nvidia L4 tầm trung mới (0,24 USD/giờ đối với phiên bản Spot trên Google Cloud Platform) và bắt đầu hoạt động.
Với một GPU L4, mất khoảng 22 giây để tạo ra mỗi hình ảnh 1024x1024; và không giống như chế độ Khuếch tán ổn định trước đây, giờ đây GPU tầm trung chỉ có thể tạo một hình ảnh mỗi lần vì mức sử dụng GPU của nó đã đầy, vì vậy bạn chỉ cần có phải kiên nhẫn hơn. Việc giảm độ phân giải có thể tăng tốc quá trình xây dựng, nhưng tôi thực sự khuyên bạn không nên làm vậy vì kết quả sẽ rất tệ.
** Một chút cấu hình được cá nhân hóa **
Trong các thử nghiệm của tôi, nó khắc phục hầu hết các vấn đề về từ nhắc nhở được đưa ra sau Stable Diffusion 2.0, đặc biệt là với các giá trị hướng dẫn không phân loại cao hơn được đặt (guideing_scale mặc định là 7.5; tôi muốn thay đổi nó thành 13 )
Hướng dẫn_scale là 13 cho tất cả các ví dụ được tạo bởi mô hình LoRA trong bài viết này.
Bắt đầu 丨 Khám phá LoRA
Bản cập nhật quan trọng nhất của SDXL 1.0 thực sự là hỗ trợ Dreambooth LoRA, cho phép chúng tôi tùy chỉnh mô hình Khuếch tán ổn định.
Dreambooth là một kỹ thuật để tinh chỉnh Khuếch tán ổn định dựa trên một tập hợp rất nhỏ hình ảnh nguồn và từ khóa kích hoạt, để "khái niệm" trong những hình ảnh đó có thể được sử dụng trong các ngữ cảnh khác được cung cấp từ khóa.
Ưu điểm của LoRA: "mô hình nhỏ" dành riêng cho từng miền
Khi tự đào tạo Stable Diffusion, ngay cả một mô hình nhỏ cũng cần nhiều giờ đào tạo trên nhiều GPU đắt tiền.
Đây là lúc LoRA phát huy tác dụng: nó đào tạo một tập hợp con nhỏ của mô hình tầm nhìn để chỉ cần một GPU giá rẻ cho ra kết quả sau 10 phút và chất lượng của mô hình cuối cùng + LoRA có thể so sánh với một mô hình được tinh chỉnh hoàn toàn (Nói chung, khi mọi người đề cập đến việc tinh chỉnh Khuếch tán ổn định, họ thường đề cập đến việc tạo LoRA).
LoRA đã được đào tạo là một tệp nhị phân nhỏ, độc lập, có thể dễ dàng chia sẻ với người khác hoặc tải lên kho lưu trữ như Civitai.
Một nhược điểm nhỏ của LoRA là mỗi lần chỉ có thể hoạt động một LoRA: chúng ta có thể kết hợp nhiều LoRA để kết hợp các ưu điểm của chúng, nhưng thực tế thì không đơn giản như vậy.
Đảo ngược văn bản Trận chiến thực tế: Đảo ngược văn bản
Trước khi LoRA khuếch tán ổn định trở nên phổ biến rộng rãi, có một phương pháp gọi là đảo ngược văn bản, cho phép bộ mã hóa văn bản tìm hiểu các khái niệm, nhưng phải mất nhiều giờ để đào tạo và kết quả có thể rất tệ.
Tôi đã đào tạo cách đảo ngược văn bản trong một bài đăng trên blog trước đó: Âm thanh xấu xí (Sonic) và vì nó không có trong tập dữ liệu nguồn cho Khuếch tán ổn định nên kết quả là duy nhất. Các kết quả được tạo ra như sau, với các kết quả khác nhau.
Lần này, tôi nghĩ việc sử dụng Ugly Sonic để huấn luyện LoRA sẽ là một trường hợp tốt để kiểm tra tiềm năng của SDXL.
Tình cờ là Hugging Face cung cấp tập lệnh train_dreambooth_lora_sdxl.py, tập lệnh này có thể sử dụng mô hình cơ bản SDXL để huấn luyện LoRA; tập lệnh này vẫn chưa có sẵn, nhưng tôi đã điều chỉnh các tham số một chút.
Không quá lời khi nói rằng những hình ảnh Ugly Sonic do LoRA đã qua đào tạo tạo ra dưới nhiều lời nhắc khác nhau trông đẹp hơn và có tổ chức hơn.
Nâng cao 丨 Đảo ngược văn bản chuyên sâu
Sau thành công của thử nghiệm này, tôi quyết định làm lại một thử nghiệm khác mà tôi đã thực hiện trước đó với tính năng đảo ngược văn bản: bằng cách thêm sai từ gợi ý để tạo ra hình ảnh đẹp hơn.
Phương pháp lần này là huấn luyện LoRA với một số hình ảnh chất lượng thấp bị méo nghiêm trọng và từ gợi ý đưa ra bị sai, tôi hy vọng LoRA có thể coi sai là "dấu nhắc tiêu cực" và tránh tình trạng này, tạo ra hình ảnh ít bị biến dạng hơn.
Tôi đã viết Jupyter Notebook và sử dụng SDXL để tự mình tạo ra nhiều hình ảnh tổng hợp "sai", lần này cũng sử dụng nhiều trọng số gợi ý khác nhau để tạo ra các trường hợp rõ ràng hơn về hình ảnh không thành công, chẳng hạn như tay bị mờ (mờ) và tay xấu (vẽ sai)) .
Trớ trêu thay, chúng ta cần sử dụng SDXL để tạo ra những hình ảnh bị lỗi có độ phân giải cao.
Trên đây là một số ví dụ tổng hợp hình ảnh sai
Nó vô tình kết hợp các yếu tố của bìa album punk rock từ những năm 2000
Tôi đã huấn luyện LoRA này và tải nó vào mô hình cơ sở Stable Diffusion XL (LoRA không cần thiết để tinh chỉnh mô hình) và viết Jupyter Notebook để so sánh kết quả đầu ra sau đây cho các từ nhắc nhở đã cho:
Mô hình cơ sở + đường dẫn không có LoRA. (cơ bản)
Không có đường dẫn LoRA, sử dụng sai làm gợi ý phủ định (thêm gợi ý phủ định)
Sử dụng quy trình của LoRA, sử dụng sai làm gợi ý tiêu cực (mục tiêu lý tưởng)
Hạt giống của mỗi kết quả được tạo ra đều giống nhau, do đó, bố cục của ba bức ảnh đầu ra phải giống nhau và sự khác biệt giữa tác động của các gợi ý tiêu cực sai và LoRA cũng như quy trình mô hình cơ bản phải rất rõ ràng.
Trường hợp thử nghiệm SDXL 0.9
Hãy sử dụng SDXL 0.9 để minh họa lời nhắc đơn giản để bắt đầu thử nghiệm:
「Một con sói ở Công viên Quốc gia Yosemite, chụp ảnh phim tài liệu về thiên nhiên lạnh lẽo」
Nhìn kỹ vào bức ảnh trên, không khó để nhận ra rằng gợi ý sai về mô hình cơ sở sẽ thêm một số chiếc lá và chiều sâu cho khu rừng nền, nhưng LoRA lại bổ sung thêm nhiều thứ: ánh sáng và bóng tối mạnh mẽ hơn, những chiếc lá chi tiết hơn và những thay đổi đối với cách nhìn của những con sói. Góc camera trông thú vị hơn.
Sau đó, tôi thêm "cận cảnh cực kỳ (rất cận cảnh)" vào từ gợi ý và sau khi sử dụng lại các hạt giống trước đó, tôi có được các góc nhìn cận cảnh khác nhau của những con sói trong bố cục ảnh tương tự.
Tại thời điểm này, kết cấu và độ rõ nét của LoRA tốt hơn nhiều so với các mẫu khác và hình ảnh sống động hơn. Tuy nhiên, hãy lưu ý rằng chỉ cần thêm một từ gợi ý sai sẽ làm thay đổi quan điểm.
Một trường hợp thử nghiệm hay khác là chụp ảnh đồ ăn và những bức ảnh chụp đồ ăn kỳ lạ mà tôi tạo bằng DALL-E 2 đặc biệt tốt. SDXL + LoRA sai có thể tạo ra những chiếc bánh mì kẹp thịt phi Euclid trông kỳ lạ với một số trọng số gợi ý không?
"Một chiếc burger cỡ lớn thơm ngon (hình học ngoài hành tinh 5D)++++, chụp ảnh món ăn chuyên nghiệp"
Câu trả lời là không thể, kể cả khi chỉnh sửa từ nhắc nhiều lần. Tuy nhiên, kết quả đầu ra rất thú vị: SDXL cơ sở dường như hiểu phần "người ngoài hành tinh" của lời nhắc theo nghĩa đen hơn tôi nghĩ (và đặt cho nó một chiếc mũ quả dưa dễ thương!), nhưng LoRA hoạt động tốt hơn. Anh ấy hiểu ý nghĩa của các gợi ý một cách rõ ràng và đã làm ra một chiếc burger "ngoài hành tinh" khó ăn cho con người, phong cách hình ảnh cũng tỏa sáng hơn.
Điều gì sẽ xảy ra với người họa sĩ? Liệu LoRA có thể giải quyết sai vấn đề khét tiếng là trí tuệ nhân tạo không vẽ được tay? Và chúng tôi cũng đưa nhiều ví dụ như vậy vào dữ liệu huấn luyện của LoRA. Hãy thay đổi lời nhắc mà tôi đã sử dụng khi lần đầu thử Stable Diffusion 2.0 để vẽ Tổng thống Taylor Swift:
"Tổng thống Hoa Kỳ Taylor Swift (ký văn bản)++++, ảnh của AP"
Hãy nhìn vào cánh tay phải của Taylor: mô hình SDXL mặc định cho kết quả điên rồ và nếu sai thì nó thực sự tệ hơn, nhưng trong LoRA, nó đã được sửa! Sự phân lớp màu sắc của LoRA tốt hơn nhiều, với chiếc áo khoác của cô trở thành màu trắng nổi bật hơn thay vì màu vàng và trắng. Nhưng vẫn không thể nhìn kỹ bàn tay của cô ấy: vẽ nhân vật bằng SDXL 1.0 vẫn còn cồng kềnh và không đáng tin cậy!
Bây giờ kết luận đã rõ ràng, đầu ra của sai + LoRA trong mỗi trường hợp thú vị hơn đầu ra của việc chỉ thêm các tín hiệu tiêu cực sai, vì vậy chúng tôi chỉ so sánh đầu ra cơ bản và đầu ra LoRA bên dưới. Dưới đây là ví dụ về mô hình cơ sở so với LoRA sai:
*(Người thực tế Shrek viết blog trên máy trạm, những bức ảnh siêu thực đoạt giải từ Vanity Fair) - LoRA vẽ tay và chiếu sáng đẹp hơn. Trang phục chi tiết hơn và hình nền thú vị hơn. *
(pizza pepperoni hình trái tim, chụp ảnh món ăn chuyên nghiệp cực kỳ chân thực, từng đoạt giải thưởng) - pepperoni chi tiết hơn, bong bóng nóng, ít pepperoni dư thừa trên các cạnh của pizza, lớp vỏ trông cứng hơn
LoRA có lỗi có sẵn ở đây, nhưng tôi không thể đảm bảo hiệu suất của nó trên các giao diện không phải là bộ khuếch tán.
Tất cả các Notebook được sử dụng để tạo ra những hình ảnh này đều nằm trong kho GitHub này, bao gồm cả SDXL 1.0 + mẫu tinh chỉnh tiêu chuẩn + Notebook LoRA Colab bị sai, bạn có thể chạy Notebook này trên GPU T4 miễn phí. Nếu bạn muốn xem phiên bản có độ phân giải cao hơn của hình ảnh được tạo ra được sử dụng trong bài viết này, bạn có thể truy cập mã nguồn của bài viết.
Sai Cái quái gì đang xảy ra vậy?
LoRA sai Thủ thuật này chỉ cải thiện chất lượng và độ rõ nét của hình ảnh được tạo ra, nhưng LoRA dường như khiến SDXL hoạt động thông minh hơn và phản ánh nhiều hơn tinh thần của lời nhắc.
Ở cấp độ kỹ thuật, tín hiệu âm này đặt vùng không gian tiềm ẩn trong đó sự khuếch tán tạo ra hình ảnh; vùng này giống nhau đối với cả mô hình cơ sở sai và LoRA.
Trực giác của tôi là LoRA định hình lại vùng không mong muốn này trong không gian tiềm ẩn chiều cao khổng lồ để giống với vùng bắt đầu hơn, do đó xác suất kết quả tạo ra bình thường chạm vào vùng này trở nên nhỏ hơn và chất lượng cũng thấp hơn. (Tham khảo quy trình thay đổi của Alien Burger ở trên)
Đào tạo SDXL bằng hình ảnh chất lượng thấp để cải thiện về mặt kỹ thuật là một hình thức học tăng cường với phản hồi của con người (RLHF): cách tiếp cận này cũng là con đường dẫn đến thành công của ChatGPT. Quá trình học tăng cường được OpenAI sử dụng để cải thiện mô hình nhằm giảm thiểu ngầm hành vi tiêu cực từ tương tác tích cực của người dùng, trong khi ở đây tôi đang sử dụng tương tác tiêu cực của người dùng (tức là cố tình chọn hình ảnh chất lượng thấp) để ngầm tăng cường hành vi tích cực.
Nhưng với Dreambooth LoRA, về cơ bản bạn không cần phải chuẩn bị nhiều dữ liệu đầu vào như việc đào tạo một mô hình ngôn ngữ lớn.
Tiềm năng của "LoRA âm" vẫn còn rất lớn: các tham số tạo tập dữ liệu tổng hợp của tôi còn rất nhiều chỗ cần cải thiện và LoRA cũng có thể được huấn luyện trong thời gian dài hơn. Nhưng tôi rất hài lòng với kết quả cho đến nay và muốn thực hiện nhiều thử nghiệm hơn với LoRA âm, chẳng hạn như hợp nhất với các LoRA khác để xem liệu nó có thể cải thiện LoRA sau hay không (đặc biệt là sai LoRA + Ugly Sonic LoRA!)
Đính kèm: Bản demo SDXL trong bộ khuếch tán
ngọn đuốc nhập khẩu
từ bộ khuếch tán nhập DiffusionPipeline, AutoencodingKL
cơ sở tải SDXL và bộ lọc
vae = AutoencodingKL.from_pretrain("madebyollin/sdxl-vae-fp16-fix",
torch_dtype=torch.float16)
base = DiffusionPipeline.from_pretrain(
"ổn định/ổn định-khuếch tán-xl-base-1.0",
bàn chân = bàn chân,
ngọn đuốc_dtype=đuốc.float16,
iant="fp16",
sử dụng_safetensors=Đúng,
)
_ = base.to("cuda")
người tinh chỉnh = DiffusionPipeline.from_pretrain(
"ổn định/ổn định-khuếch tán-xl-tinh chế-1.0",
văn bản_encode_2=base.text_encoding_2,
chân=cơ sở.leg,
ngọn đuốc_dtype=đuốc.float16,
iant="fp16",
sử dụng_safetensors=Đúng,
)
_ = người tinh chế.to("cuda")
tạo bằng cả hai mô hình (hỗn hợp các chuyên gia)
cao_noise_frac = 0,8
= "một phi hành gia cưỡi ngựa"
phủ định_ = "mờ, xấu tay"
hình ảnh = cơ sở (
=,
âm_=âm_,
khử nhiễu_end=cao_noise_frac,
đầu ra_type="tiềm ẩn",
) .hình ảnh
hình ảnh = người tinh chế(
=,
âm_=âm_,
khử nhiễu_start=high_noise_frac,
hình ảnh=hình ảnh,
) .hình ảnh [0]