Công cụ AI

Hướng dẫn sử dụng ControlNet v1.1 từ A-Z

Xem thêm:

ControlNet là một mô hình Stable Diffusion cho phép sao chép cấu trúc các bộ phận hoặc tư thế của con người từ một hình ảnh tham chiếu.

Người dùng đã có kinh nghiệm dùng Stable Diffusion biết rằng việc tạo ra cấu trúc các bộ phận theo mong muốn là không hề dễ. Các hình ảnh tạo ra có phần ngẫu nhiên. Bạn chỉ có thể trông chờ may mắn khi tạo số lượng ảnh lớn và chọn một hình bạn thích.

Với ControlNet, người dùng Stable Diffusion cuối cùng đã có cách để kiểm soát vị trí và diện mạo của các chủ thể một cách chính xác!

Trong bài viết này, bạn sẽ tìm hiểu mọi thông tin về ControlNet.

  • ControlNet là gì
  • Cách cài đặt ControlNet trên Windows, Mac và Google Colab
  • Các thiết lập và một số ứng dụng phổ biến.

Cập nhật:

  • Ngày 15 tháng 8 năm 2023: Thêm preprocessors (preprocessor) dw_openpose_full.

ControlNet là một mô hình mạng thần kinh để điều khiển các mô hình Stable Diffusion. Có thể sử dụng ControlNet với bất kỳ mô hình Stable Diffusion nào.

Cách sử dụng mô hình Stable Diffusion cơ bản nhất là chuyển đổi văn bản thành hình ảnh. Sử dụng các “prompt” như “câu lệnh” để điều chỉnh quá trình tạo ra hình ảnh sao cho phù hợp với prompt.

ControlNet bổ sung thêm một “câu lệnh” nữa để kiểm soát quá trình tạo ảnh. Có hai cách ControlNet có thể can thiệp vào hình ảnh: (1) xác định các đường viền và (2) xác định tư thế người trong ảnh.

Ví dụ về xác định đường viền

Như minh họa dưới đây, ControlNet nhận thêm một hình ảnh đầu vào và xác định các đường viền trong ảnh bằng bộ xác định đường viền Canny. Một hình ảnh chứa các đường viền đã xác định được lưu trữ dưới dạng “bản đồ control”. Nó được đưa vào mô hình ControlNet để bổ sung thêm cho việc tạo ảnh bằng prompt.

Stable Diffusion ControlNet model workflow.

Quá trình trích xuất thông tin cụ thể (đường viền trong trường hợp này) từ hình ảnh đầu vào được gọi là “đánh dấu” (annotation) (trong bài nghiên cứu) hoặc “preprocessors” (preprocessing) (trong ControlNet extension).

Ví dụ về xác định tư thế người trong ảnh

Ngoài xác định đường viền, việc preprocessors hình ảnh còn dùng một mô hình xác định các điểm chínhOpenpose để xác dáng hoặc các tư thế của người trong ảnh như vị trí của tay, chân và đầu. Xem ví dụ dưới đây.

Hình ảnh đầu vào được sử dụng Openpose đánh dấu để xác định tư thế người trong ảnh.

Dưới đây là quy trình ControlNet sử dụng OpenPose. Các điểm chính được xác định từ hình ảnh đầu vào bằng cách sử dụng OpenPose và được lưu trữ dưới dạng một bản đồ control chứa các vị trí của các điểm chính. Sau đó, bản đồ này được đưa vào Stable Diffusion dưới dạng câu lệnh bổ sung cho prompt. Hình ảnh được tạo ra dựa trên câu lệnh này.

Sự khác biệt giữa việc sử dụng Canny edge detection và Openpose là gì? Bộ xác định đường viền Canny tìm đường viền của chủ thể và của ảnh background. Nó có xu hướng thể hiện cảnh quan một cách trung thực hơn. Bạn có thể thấy người đàn ông nhảy múa đã trở thành một người phụ nữ, nhưng đường viền và kiểu tóc vẫn được giữ nguyên.

OpenPose chỉ xác định các điểm chính của con người như vị trí của đầu, cánh tay, v.v. Hình ảnh được tạo ra một cách phóng khoáng hơn nhưng vẫn tuân theo tư thế ban đầu.

Ví dụ trên đã tạo ra một người phụ nữ nhảy lên với chân trái hướng sang một bên, khác với hình ảnh gốc và ví dụ Canny Edge. Lý do là khí xác định các điểm chính của chủ thể, OpenPose không quan tâm tới hướng của chân.

Cài đặt Stable Diffusion ControlNet

(Hướng dẫn được cập nhật cho ControlNet v1.1)

Hay tìm hiểu cách cài đặt ControlNet trong AUTOMATIC1111, một giao diện người dùng Stable Diffusion phổ biến và đầy đủ tính năng (và miễn phí!). Chúng ta sẽ dùng extension nàyđể sử dụng ControlNet.

Nếu bạn đã cài đặt ControlNet, bạn có thể bỏ qua phần hướng dẫn cách cài đặt dưới đây.

Cài đặt ControlNet trong Google Colab

Sử dụng ControlNet trong Colab Stable Diffusion notebook 1-click trong Hướng dẫn Nhanh của chúng tôi.

Trong phần Extensions của Colab notebook , chọn ControlNet.

Nhấn nút Play để bắt đầu AUTOMATIC1111. Thế là xong!

Cài đặt ControlNet trên máy tính Windows hoặc Mac

Bạn có thể sử dụng ControlNet với AUTOMATIC1111 trên Windows PC hoặc Mac. Làm theo hướng dẫn trong các bài viết này để cài đặt AUTOMATIC1111 nếu bạn chưa biết cách làm.

Nếu bạn đã cài đặt AUTOMATIC1111, hãy luôn cập nhật phần mềm.

Cài đặt extension ControlNet (Windows/Mac)

  1. Truy cập trang Extensions.
  2. Chọn tab Install from URL.
  3. Đặt URL sau vào trường URL for extension’s repository.
https://github.com/Mikubill/sd-webui-controlnet

Nhấp vào nút Install.

  1. Chờ đợi thông báo xác nhận extension đã được cài đặt.
  2. Khởi động lại AUTOMATIC1111.
  3. Truy cập trang ControlNet models.
  4. Tải xuống tất cả các tệp mô hình (tên tệp kết thúc bằng .pth).

(Nếu bạn không muốn tải xuống tất cả, bạn có thể tải xuống các mô hình openposecanny, đó là những mô hình được dùng nhiều nhất.)

  1. Đặt tệp mô hình vào thư mục models của extension ControlNet.
stable-diffusion-webui\extensions\sd-webui-controlnet\models

Khởi động lại AUTOMATIC1111 webui.

Nếu extension được cài đặt thành công, bạn sẽ thấy một mục mới trong tab txt2img được gọi là ControlNet. Nó nằm ngay phía trên menu thả xuống Script.

Điều này cho thấy việc cài đặt extension đã thành công.

Cài đặt T2I adapters

T2I adapters là các mô hình mạng thần kinh để cung cấp thêm khả năng điều chỉnh cho việc tạo hình ảnh của các mô hình diffusion. Chúng tương tự như ControlNet nhưng có thiết kế khác nhau.

T2I adapters model (source).

Extension ControlNet của A1111 có thể sử dụng T2I adapters. Bạn cần tải xuống các mô hình ở đây. Tải xuống các mô hình có tên tệp như t2iadapter_XXXXX.pth

Các chức năng của nhiều T2I adapters trùng lắp với các mô hình ControlNet. Tôi chỉ sẽ đề cập đến hai mô hình sau đây.

Đặt chúng vào thư mục mô hình của ControlNet.

stable-diffusion-webui\extensions\sd-webui-controlnet\models

Cập nhật extension ControlNet

ControlNet là một extension đã trải qua quá trình phát triển nhanh chóng nên cần thường xuyên được cập nhật bản mới nhất.

Cập nhật chỉ cần thiết nếu bạn chạy AUTOMATIC1111 cục bộ trên Windows hoặc Mac. Colab notebook trên web luôn chạy phiên bản mới nhất của ControlNet extension.

Để kiểm tra xem phiên bản ControlNet của bạn có được cập nhật bản mới nhất hay không, hãy so sánh số phiên bản của bạn trong phần ControlNet trên trang txt2img với số phiên bản mới nhất.

Tùy chọn 1: Cập nhật từ giao diện Web-UI

Cách đơn giản nhất để cập nhật extension ControlNet là sử dụng giao diện người dùng AUTOMATIC1111.

  1. Truy cập trang Extensions.
  2. Trong tab Installed, nhấp vào Check for updates.
  3. Chờ đợi thông báo xác nhận.
  4. Đóng hoàn toàn và khởi động lại AUTOMATIC1111 Web-UI.

Tùy chọn 2: Dòng lệnh cmd

Nếu bạn quen dùng dòng lệnh, bạn có thể sử dụng tùy chọn này để cập nhật ControlNet, để kiểm soát hoàn toàn hoạt động của Web-UI.

Bước 1: Mở Ứng dụng Terminal (Mac) hoặc Ứng dụng PowerShell (Windows).

Bước 2: Di chuyển đến thư mục extension ControlNet. (hoặc nơi bạn đã cài đặt)

cd stable-diffusion-webui/extensions/sd-webui-controlnet

Bước 3: Cập nhật extension bằng cách chạy lệnh sau.

git pull

Sử dụng ControlNet – ví dụ đơn giản

Sau khi cài đặt ControlNet xong, hãy xem qua một ví dụ đơn giản về cách sử dụng! Giải thích chi tiết về từng cài đặt sẽ trình bày trong phần sau.

Bạn phải hoàn thành việc cài đặt extension ControlNet thì mới chuyển sang phần này. Bạn có thể kiểm tra xem có thấy ControlNet như hình bên dưới không.

Nhấp vào dấu mũi hướng xuống bên phải để mở rộng bảng điều khiển ControlNet. Nó hiển thị toàn bộ phần của các nút điều khiển và một bảng vẽ hình.

Tôi sẽ sử dụng hình ảnh sau để hương dẫn bạn cách sử dụng ControlNet. Bạn có thể tải xuống hình ảnh bằng cách sử dụng nút tải xuống để làm theo hướng dẫn.

Tải ảnh

Cài đặt Text-to-image

ControlNet cần được sử dụng với một mô hình Stable Diffusion. Trong menu thả xuống Stable Diffusion checkpoint, chọn mô hình bạn muốn sử dụng với ControlNet. Chọn v1-5-pruned-emaonly.ckpt để sử dụng mô hình cơ bản v1.5.

Trong tab txt2image, viết một prompt và (không bắt buộc) một negative prompt cho ControlNet. Tôi sẽ sử dụng các prompt sau.

Prompt:

full-body, một phụ nữ trẻ, nhấn mạnh trên tóc, nhảy múa bên ngoài một nhà hàng, mắt nâu, mặc quần jeans (full-body, a young female, highlights in hair, dancing outside a restaurant, brown eyes, wearing jeans)

Negative prompt:

biến dạng, xấu xí, tệ, chưa trưởng thành (disfigured, ugly, bad, immature)

Đặt image size cho hình ảnh. Tôi đặt chiều rộng 512 và chiều cao 776 cho hình ảnh minh họa của tôi. Lưu ý rằng kích thước hình ảnh được đặt trong phần txt2img, KHÔNG phải trong phần ControlNet.

Giao diện người dùng trông như sau.

Thiết lập cho ControlNet

Bây giờ chúng ta hãy chuyển sang bảng điều khiển ControlNet.

Trước tiên, tải một hình ảnh lên bảng vẽ hình.

Tích vào Enable checkbox.

Bạn cần chọn một preprocessor và một model. Preprocessor chỉ là một tên khác cho công cụ đánh dấu (annotator) đã được đề cập ở trên, như công cụ xác định các điểm chính OpenPose. Hãy chọn openpose làm Preprocessor.

Mô hình ControlNet đã chọn phải phù hợp với preprocessor. Đối với OpenPose, bạn nên chọn control_openpose-fp16 làm model.

Bảng điều khiển ControlNet trông như sau.

Xong rồi. Bây giờ nhấn Generate để bắt đầu tạo hình ảnh trong ControlNet.

Bạn sẽ thấy hình ảnh được tạo ra bắt chước tư thế của người trong hình ảnh đầu vào. Hình ảnh cuối cùng do preprocessor tạo ra. Trong ảnh là các điểm chính đã được xác định.

Khi hoàn thành, hãy bỏ chọn Enable để tắt extension ControlNet.

Đây là hướng dẫn cơ bản về cách sử dụng ControlNet!

Phần tiếp theo là để biết

  • Hiện có các bộ preprocessors (Có rất nhiều!)
  • Cách cài đặt ControlNet

Các preprocessors và các mô hình

Bước đầu tiên của việc sử dụng ControlNet là chọn một preprocessor. Nên bật xem trước (Preview) để biết preprocessor đang làm gì. Sau khi hoàn tất quá trình preprocessors, hình ảnh gốc sẽ bị loại bỏ và chỉ còn hình ảnh đã được preprocessors là được sử dụng cho ControlNet.

Để bật xem trước:

  1. Chọn Allow Preview.
  2. Chọn Pixel Perfect (không bắt buộc). ControlNet sẽ sử dụng tthông tin về chiều cao và chiều rộng của hình ảnh trong prompt để để tạo hình ảnh preprocessors.
  3. Nhấp vào biểu tượng vụ nổ cạnh menu thả xuống Preprocessor.

Một số mô hình Control có thể ảnh hưởng nhiều đến hình ảnh. Giảm Control Weight nếu bạn thấy có vấn đề về màu sắc hoặc các hiện tượng khác.

Chọn mô hình phù hợp

Sau khi chọn một preprocessor, bạn phải chọn mô hình phù hợp.

Dễ dàng nhận biết mô hình phù hợp để sử dụng trong v1.1. Bạn chỉ cần chọn mô hình có chung tên với preprocessor.

Ví dụ:

preprocessorMô hình
depth_xxxxcontrol_xxxx_depth
lineart_xxxxcontrol_xxxx_lineart
openpose_xxxxcontrol_xxxx_openpose

OpenPose

Có nhiều preprocessor OpenPose.

OpenPose xác định các điểm chính của người trong ảnh như vị trí của đầu, vai, tay, v.v. Nó sao chép các tư thế của người trong ảnh nhưng không sao chép các chi tiết khác như trang phục, kiểu tóc và ảnh nền.

Tất cả các preprocessor openpose cần được sử dụng với mô hình openpose trong menu Model của ControlNet.

Các preprocessor OpenPose gồm:

  • OpenPose: mắt, mũi, mắt, cổ, vai, khuỷu tay, cổ tay, đầu gối và mắt cá chân.
  • OpenPose_face: OpenPose + chi tiết khuôn mặt
  • OpenPose_hand: OpenPose + tay và ngón tay
  • OpenPose_faceonly: chỉ chi tiết khuôn mặt
  • OpenPose_full: Tất cả các preprocessor trên
  • dw_openPose_full: Phiên bản nâng cao của OpenPose_full

OpenPose

OpenPose là preprocessor OpenPose cơ bản xác định vị trí của mắt, mũi, mắt, cổ, vai, khuỷu tay, cổ tay, đầu gối và mắt cá chân.

OpenPose


OpenPose_face

OpenPose_face thực hiện tất cả những gì preprocessor OpenPose làm nhưng xác định thêm chi tiết khuôn mặt.

OpenPose_face

Ảnh mẫu

OpenPose_faceonly

OpenPose_faceonly chỉ xác định khuôn mặt mà không xác định các điểm chính khác. Điều này hữu ích để sao chép chỉ khuôn mặt mà không sao chép các điểm chính khác.

OpenPose_faceonly


Trong ảnh bên dưới, chỉ sao chép dáng khuôn mặt, dáng của cơ thể không được sao chép

OpenPose_faceonly

OpenPose_hand

OpenPose_hand xác định các điểm chính giống như OpenPose và tay và ngón tay.

OpenPose_hand

Ảnh mẫu

OpenPose_hand

OpenPose_full

OpenPose full xác định tất cả các điểm như openPose face và openPose hand.

dw_openpose_full

DWPose là một thuật toán xác định tư thế mới dựa trên bài báo nghiên cứu Effective Whole-body Pose Estimation with Two-stages Distillation. Nó thực hiện cùng nhiệm vụ như OpenPose Full nhưng làm tốt hơn. Bạn nên sử dụng dw_openpose_full thay vì openpose_full.

Hãy cập nhật ControlNet nếu bạn không thấy dw_openpose_full trong menu preprocessor.

Hình ảnh tham khảo cho OpenPose và DW OpenPose.

DW OpenPose xác định tay và ngón tay tốt hơn.

Tile resample

Mô hình Tile resample được sử dụng để thêm chi tiết vào hình ảnh. Thường được sử dụng cùng với một upscaler để phóng to hình ảnh trong lúc tạo ảnh.

Xem phương pháp ControlNet Tile Upscaling.

Reference

Reference là một tập hợp các preprocessor mới cho phép bạn tạo ra các hình ảnh tương tự với hình ảnh tham chiếu. Các hình ảnh vẫn sẽ bị ảnh hưởng bởi mô hình Stable Diffusion và prompt.

Các preprocessor Reference KHÔNG sử dụng mô hình Control. Bạn chỉ cần chọn preprocessor nhưng không cần chọn mô hình. (menu thả xuống của mô hình sẽ bị ẩn sau khi đã chọn reference preprocessor.)

Có 3 loại reference preprocessor.

  1. Reference adain: Chuyển đổi phong cách thông qua Adaptive Instance Normalization. (nguồn)
  2. Reference only: Liên kết hình ảnh tham chiếu trực tiếp với các attention layers.
  3. Reference adain+attn: Kết hợp của hai bước trên.

Hãy chọn một trong các reference preprocessor này để thử tạo ảnh.

Dưới đây là một ví dụ.

Reference image (Input)

Ảnh tham chiếu đầu vào
Sử dụng CLIP interrogator để đoán prompt.

một người phụ nữ có tóc màu hồng và mặc bộ đồ robot, với phong cách khoa học viễn tưởng, nghệ thuật Artgerm, cyberpunk, retrofuturism (a woman with pink hair and a robot suit on, with a sci – fi, Artgerm, cyberpunk style, cyberpunk art, retrofuturism)

biến dạng, xấu xí, tệ, chưa trưởng thành (disfigured, ugly, bad, immature)

Mô hình: Protogen v2.2

Reference adain

Reference adain

Reference only

Reference only

Reference adain+attn

Reference adain+attn

Nếu buộc phải chọn thì tôi cho rằng reference-only làm việc tốt nhất.

Các hình ảnh trên đều thuộc chế độ cân bằng (balance mode). Tôi không thấy sự khác biệt lớn khi thay đổi style fidelity.

Canny

Canny edge detector là một công cụ xác định đường viền đa năng. Nó trích xuất các đường viền của một hình ảnh. Nó làm tốt việc giữ nguyên cấu trúc ban đầu của hình ảnh.

Hãy chọn canny trong cả menu thả xuống PreprocessorModel để sử dụng.

Canny edge detector

Các hình ảnh được tạo ra sẽ tuân theo các đường viền.

Canny edge detector

Depth

Bộ preprocessor Depth dự đoán độ sâu từ hình ảnh tham chiếu.

  • Depth Midas: Một bộ ước lượng độ sâu cổ điển. Cũng được sử dụng trong mô hình depth-to-image chính thức v2.
  • Depth Leres: Cung cấp nhiều chi tiết hơn nhưng cũng có xu hướng hiển thị phông nền.
  • Depth Leres++: Cung cấp thêm nhiều chi tiết hơn nữa.
  • Zoe: Mức độ chi tiết nằm giữa Midas và Leres.

Hình ảnh tham chiếu:

Reference image for ControlNet

Bản đồ độ sâu:

Bản đồ độ sâu: Depth Map

Prompt và negative prompt:

một người phụ nữ retrofuturism (a woman retrofuturism)

biến dạng, xấu xí, tệ, chưa trưởng thành (disfigured, ugly, bad, immature)

Bạn có thể thấy hình ảnh được tạo ra tuân theo bản đồ độ sâu (Zoe).

Text-to-image with Depth Zoe

Text-to-image với Depth Zoe.

So sánh với Leres++ cho nhiều chi tiết hơn:

Text-to-image with Depth Leres

Text-to-image với Depth Leres.

Line Art

Line Art tạo ra đường viền của hình ảnh thành một bản vẽ phác thảo

Có một số Line Art preprocessor.

  • Line art anime: Đường viền phong cách Anime
  • Line art anime denoise: Đường viền phong cách Anime với ít chi tiết hơn.
  • Line art realistic: Đường viền phong cách thực tế.
  • Line art coarse: Đường viền phong cách thực tế với độ dày lớn hơn.

Sử dụng cùng với mô hình control lineart.

Các hình ảnh dưới đây được tạo ra với Control Weight setting là 0.7.

Line Art Anime

Line Art Anime

Line Art Anime Denoise

Line Art Anime Denoise

Line Art Realistic

Line Art Realistic

Line Art Coarse

Line Art Coarse

MLSD

M-LSD (Mobile Line Segment Detection) là một công cụ xác định đường thẳng. Dùng để trích xuất đường viền với các đường viền thẳng như thiết kế nội thất, tòa nhà, cảnh đường phố, khung ảnh và đường viền giấy.

Các đường cong sẽ bị bỏ qua.

MLSD

Normal maps

Normal maps xác định hướng của một bề mặt. Đối với ControlNet, đó là một hình ảnh có hướng của bề mặt cho mỗi pixel. Thay vì giá trị màu sắc, các pixel của hình ảnh đại diện cho hướng đối diện của bề mặt.

Việc sử dụng normal maps tương tự như bản đồ độ sâu. Chúng được sử dụng để ghi lại cấu trúc 3D của hình ảnh tham chiếu.

Có các preprocessor normal maps sau:

  • Normal Midas: Ước lượng normal maps từ bản đồ độ sâu Midas.
  • Normal Bae: Ước lượng normal maps bằng phương pháp normal uncertainty method được đề xuất bởi Bae et al.

Normal Midas

Giống như bản đồ độ sâu Midas, normal maps Midas dùng để tách đối tượng khỏi phông nền.

normal maps Midas

Normal Bae

Normal maps Bae có xu hướng hiển thị chi tiết cả ở phông nền sau và phía trước.

Normal maps Bae

Scribbles

Preprocessor Scribble chuyển một hình ảnh thành một bức vẽ tay.

  • Scribble HED: Holistically-Nested Edge Detection (HED) là một công cụ xác định đường viền tốt để tạo ra các đường viền giống như mắt người cảm nhận. Theo tác giả của ControlNet, HED thích hợp để tô màu lại và thay đổi phong cách một hình ảnh.
  • Scribble Pidinet: Pixel Difference network (Pidinet) xác định đường cong và các đường viền thẳng. Kết quả của nó tương tự như HED nhưng thường cho ra các đường viền nét hơn và với ít chi tiết hơn.
  • Scribble xdog: Extended Difference of Gaussian (XDoG) là một phương pháp xác định đường viền. Quan trọng là điều chỉnh ngưỡng xDoG và quan sát kết quả của preprocessor.

Tất cả các preprocessor này nên được sử dụng với mô hình điều khiển scribble.

Scribble HED

HED tạo ra các đường viền thô.

HED tạo ra các đường viền thô.

Scribble Pidinet

Pidinet có xu hướng tạo ra các đường viền thô với ít chi tiết, phù hợp để sao chép đường viền mà không có chi tiết li ti.

Scribble Pidinet

Scribble xDoG

Mức độ chi tiết có thể điều chỉnh bằng cách điều chỉnh ngưỡng xDoG, điều này khiến xDoG trở thành một preprocessor linh hoạt để tạo ra các bức vẽ tay.

Segmentation

Preprocessor Segmentation gắn nhãn cho các đối tượng loại xuất hiện trong hình ảnh tham chiếu.

Dưới đây là một ví dụ về preprocessor Segmentation.

Các tòa nhà, bầu trời, cây cối, người và vỉa hè được gắn nhãn bằng các màu khác nhau.

Bạn có thể tìm thấy các danh mục đối tượng và màu sắc trong bản đồ màu tại đây cho ufade20k và ofade20k.

Có một số tùy chọn về segmentation:

  • ufade20k: Segmentation UniFormer (uf) được huấn luyện trên tập dữ liệu ADE20K.
  • ofade20k: Segmentation OneFormer (of) được huấn luyện trên tập dữ liệu ADE20K.
  • ofcoco: Segmentation OneFormer được huấn luyện trên tập dữ liệu COCO.

Lưu ý rằng các bản đồ màu của ADE20K và COCO segmentation khác nhau.

Bạn có thể sử dụng các preprocessor segmentation để chuyển đổi vị trí và hình dạng của các đối tượng.

Dưới đây là sử dụng các preprocessor này với cùng một prompt và seed.

Thành phố tương lai, cây, tòa nhà, cyberpunk (Futuristic city, tree, buildings, cyberpunk)

UniFormer ADE20k (ufade20k)

Uniformer gắn nhãn mọi thứ một cách chính xác trong ví dụ này.

OneFormer ADE20k (ofade20k)

OneFormer có một chút nhiễu trong trường hợp này, nhưng không ảnh hưởng đến hình ảnh cuối cùng.

OneFormer COCO (ofcoco)

OneFormer COCO thực hiện tương tự, nhưng một số nhãn bị sai.

Segmentation là một kỹ thuật rất hay. Bạn có thể tiếp tục điều chỉnh bản đồ segmentation để đặt các đối tượng ở vị trí chính xác. Sử dụng bản đồ màu cho ADE20k.

Shuffle

Shuffle là preprocessor làm đảo lộn hình ảnh đầu vào. Hãy xem Shuffle hoạt động như thế nào.

Cùng với mô hình điều khiển Shuffle, preprocessor Shuffle có thể được sử dụng để chuyển đổi tông màu của hình ảnh tham chiếu.

Hình ảnh đầu vào:

Input image

preprocessor Shuffle:

Shuffle preprocessor

Khác với các preprocessor khác, preprocessor Shuffle cho kết quả ngẫu nhiên. Nó sẽ bị ảnh hưởng bởi giá trị seed của bạn.

Sử dụng preprocessor Shuffle với mô hình điều khiển Shuffle. Mô hình điều khiển Shuffle có thể được sử dụng cùng hoặc không có preprocessor Shuffle.

Hình ảnh dưới đây là với preprocessor Shuffle ControlNet và mô hình Shuffle (Cùng prompt như phần trước). Tông màu sắc xấp xỉ theo hình ảnh tham chiếu.

Shuffle ControlNet

Hình ảnh dưới đây chỉ dùng mô hình điều khiển Shuffle (preprocessor: None). Cấu trúc hình ảnh gần giống với ban đầu. Sắc thái màu sắc tương tự với Shuffle.

Shuffle ControlNet

Lưu ý cho bạn là hình ảnh dưới đây là dùng prompt giống hệt nhưng tắt ControlNet. Sắc thái màu sắc khác biệt đáng kể.

Without ControlNet

Color grid T2I adapter

Preprocessor Color grid T2I adapter thu nhỏ hình ảnh tham chiếu thành 64 lần nhỏ hơn và sau đó phóng to lại kích thước ban đầu. Hiệu ứng tạo ra là một ô bàn cờ thể hiện màu trung bình
của các ô xung quanh.

Hình ảnh tham chiếu ban đầu:

Reference image for ControlNet

Được preprocessors với t2ia_color_grid:

Color grid T2I adapter

Hình ảnh đã được preprocessors sau đó có thể được sử dụng với mô hình điều khiển T2I color adapter (t2iadapter_color).

Việc tạo ra hình ảnh sẽ tuân theo một phần tông màu của không gian.

Một phòng khách hiện đại (A modern living room)

Generated image

Hãy tăng giá trị ControlNet để nó tuân theo chính xác hơn.

Bạn cũng có thể sử dụng preprocessor None cho mô hình T2I color này.

Theo ý kiến của tôi, nó khá giống image-to-image.

Clip vision style T2I adapter

t2ia_style_clipvision chuyển đổi hình ảnh tham chiếu thành Clip Vision embedding. Embedding này chứa thông tin phong phú về nội dung và phong cách của hình ảnh.

Bạn cần sử dụng mô hình Control t2iadapter_style_XXXX.

Hãy xem phong cách này được copy tuyệt vời chưa:

Hình ảnh tham chiếu:

Hình ảnh tham chiếu cho ControlNet

preprocessor T2I – Clip Vision:

cô gái trong phim khoa học viễn tưởng (sci-fi girl)

Dưới đây là kết quả tạo ra nếu bạn tắt ControlNet.

Chức năng này khá giống Reference ControlNet, nhưng tôi đánh giá cao hơn T2IA Clip Vision.

ControlNet Inpainting

ControlNet inpainting cho phép bạn sử dụng giá trị denoising strength cao trong quá trình inpainting để tạo ra các biến thể lớn mà không làm mất tính nhất quán chung của bức tranh.

Ví dụ, tôi đã sử dụng prompt tạo ảnh người theo phong cách hiện thực.

Mô hình: HenmixReal v4

ảnh của một phụ nữ trẻ, tóc nổi bật, ngồi ngoài nhà hàng, mặc váy, ánh sáng viền, ánh sáng phòng studio, nhìn vào camera, máy ảnh DSLR, chất lượng siêu cao, nét sắc, nét sắc tuyệt đối, độ sâu trường ảnh, hạt phim, Fujifilm XT3, rõ ràng như pha lê, 8K UHD, mắt bóng bẩy chi tiết cao, da chi tiết cao, lỗ chân lông da (photo of young woman, highlight hair, sitting outside restaurant, wearing dress, rim lighting, studio lighting, looking at the camera, dslr, ultra quality, sharp focus, tack sharp, dof, film grain, Fujifilm XT3, crystal clear, 8K UHD, highly detailed glossy eyes, high detailed skin, skin pores)

Negative prompt

biến dạng, xấu xí, tệ, chưa trưởng thành, hoạt hình, anime, 3D, vẽ, đen trắng (disfigured, ugly, bad, immature, cartoon, anime, 3d, painting, b&w)

Tôi có hình ảnh này và muốn tái tạo lại khuôn mặt bằng phương pháp inpainting.

inpainting.

Nếu tôi dùng inpainting khuôn mặt với giá trị denoising strength cao (> 0.4), kết quả tổng thể có thể không nhất quán. Dưới đây là các hình ảnh có denoising strength 1.

inpainting with denoising strength 1.

ControlNet Inpainting là giải pháp cho bạn.

Để sử dụng ControlNet inpainting:

  1. Tốt nhất là sử dụng cùng mô hình tạo ra hình ảnh. Sau khi tạo ra một hình ảnh trên trang txt2img, nhấp vào Gửi đến Inpaint để gửi hình ảnh đến tab Inpaint trên trang Img2img.
  2. Sử dụng công cụ cọ vẽ (paintbrush tool) để tạo mặt nạ trên khu vực bạn muốn vẽ lại. Xem hướng dẫn cho người mới bắt đầu về inpainting nếu bạn chưa quen.
ControlNet inpainting
  1. Đặt Inpaint area thành Only masked. (dùng Whole picture cũng được)
  2. Đặt giá trị denoising strength denoising strength là 1. (Thường không đặt giá trị này cao như vậy nếu không có ControlNet.)
  3. Đặt các thông số sau trong phần ControlNet. Bạn không cần tải lên hình ảnh tham chiếu.

Enable: Yes

PreprocessorInpaint_global_harmonious

Model: ControlNet

ControlNet inpainting: Settings
  1. Nhấn Generate để bắt đầu inpainting.

Bây giờ tôi có các khuôn mặt mới nhất quán với hình ảnh tổng thể, ngay cả khi giá trị denoising strength là tối đa (1)!


Hiện tại, có 3 preprocessors inpainting:

  • Inpaint_global_harmonious: Cải thiện tính nhất quán chung và cho phép bạn sử dụng denoising strength cao.
  • Inpaint_only: Không thay đổi khu vực không có mặt nạ. Nó giống như Inpaint_global_harmonious trong AUTOMATIC1111.
  • Inpaint_only+lama: Xử lý hình ảnh cùng với mô hình lama. Nó có xu hướng tạo ra kết quả rõ nét hơn và có thể dùng để xóa đối tượng.


Inpaint+lama model xóa đối tượng. Prompt để trống.

Giải thích tất cả các cài đặt ControlNet

Bạn sẽ thấy có rất nhiều cài đặt trong extension ControlNet! Khi bạn sử dụng lần đầu, có thể hơi quá tải thông tin, nhưng hãy tìm hiểu từng cài đặt một cách chi tiết.

Đây sẽ là một cuộc khám phá sâu. Nếu cần, bạn có thể nghỉ chút và đi vệ sinh…

Các control đầu vào

Canvas vẽ (Image Canvas): Bạn có thể kéo và thả ảnh đầu vào vào đây. Bạn cũng có thể nhấp vào canvas và sử dụng trình duyệt tệp để chọn một tệp . Ảnh đầu vào sẽ được xử lý bởi preprocessors đã chọn trong menu Preprocessor. Một bản đồ control sẽ được tạo ra.

Biểu tượng viết (Write icon): Tạo một canvas mới với một hình ảnh màu trắng hoàn toàn thay vì tải lên một ảnh tham chiếu. Đây là cách để tạo ảnh mới hoàn toàn.

Biểu tượng máy ảnh (Camera icon): Chụp ảnh bằng camera của thiết bị và sử dụng ảnh đó làm ảnh đầu vào. Bạn sẽ cần cấp quyền cho trình duyệt để truy cập vào camera.

Lựa chọn mô hình

Enable: Bật hoặc tắt ControlNet.

Low VRAM: Dành cho GPU có VRAM ít hơn 8GB. Đây là một tính năng thử nghiệm. Hãy kiểm tra xem bạn có hết bộ nhớ GPU không, hoặc muốn tăng số lượng ảnh được xử lý.

Allow Preview (Cho phép xem trước): Chọn mục này để bật cửa sổ xem trước ở cạnh ảnh tham chiếu. Tôi khuyến nghị bạn chọn tùy chọn này. Sử dụng biểu tượng vụ nổ cạnh menu preprocessors để xem trước hiệu ứng của preprocessors.

Preprocessors: preprocessors (được gọi là bộ đánh dấu annotator trong bài nghiên cứu) để tiền xử lý ảnh đầu vào, ví dụ xác định đường viền, độ sâu và normal maps. None sử dụng ảnh đầu vào làm bản đồ control.

Mô hình: Mô hình dùng trong ControlNet. Nếu bạn đã chọn một preprocessor, bạn nên chọn mô hình tương ứng. Mô hình ControlNet được sử dụng cùng với mô hình Stable Diffusion được chọn ở góc bên trên giao diện người dùng AUTOMATIC1111.

Control Weight – Trọng số điều khiển

Dưới các menu preprocessors và mô hình, bạn sẽ thấy ba thanh trượt để điều chỉnh hiệu ứng Control: ontrol WeightStarting và ending Control Steps.

Tôi sẽ sử dụng hình ảnh sau để minh họa hiệu ứng của trọng số điều khiển. Đó là hình ảnh của một cô gái đang ngồi.

Nhưng trong prompt, tôi sẽ yêu cầu tạo ra một người phụ nữ đang đứng.

Toàn bộ cơ thể, một phụ nữ trẻ, nhấn mạnh tóc, đứng bên ngoài nhà hàng, mắt màu xanh dương, mặc váy, ánh sáng bên hông (full body, a young female, highlights in hair, standing outside restaurant, blue eyes, wearing a dress, side light)

Weight: Trọng số của bản đồ control so với sức nặng của prompt. Nó tương tự như keyword weight (trọng số từ khóa) trong câu prompt nhưng áp dụng cho bản đồ control.

Các hình ảnh sau được tạo ra bằng cách sử dụng preprocessors ControlNet OpenPose và với mô hình OpenPose.

Weight 1

Weight 0.5

Weight 0.3

Weight 0.1

Như bạn có thể thấy, Controlnet weight điều khiển mức độ ControlNet yêu cầu ảnh tuân theo bản đồ control nhiều hơn hay ít hơn so với prompt. Trọng số càng thấp thì ControlNet càng ít bắt ảnh tuân theo bản đồ control.

Starting ControlNet step: Bước ControlNet áp dụng lần đầu. 0 có nghĩa là bước đầu tiên.

Ending ControlNet step: Bước ControlNet kết thúc. 1 có nghĩa là bước cuối cùng.

Hãy giữ giá trị starting step cố định ở 0 và thay đổi ending step của ControlNet để xem điều gì xảy ra.

Ending ControlNet step: 1

Ending ControlNet step: 0.3

Ending ControlNet step: 0.2

Ending ControlNet step: 0.1

Vì các bước ban đầu thiết lập bố cục tổng thể (bộ lấy mẫu loại bỏ tối đa lượng nhiễu trong mỗi bước), tư thế được thiết lập ngay cả khi bạn chỉ áp dụng ControlNet cho 20% số bước lấy mẫu đầu tiên.

Ngược lại, thay đổi ending ControlNet step (bước kết thúc ControlNet) có tác động nhỏ hơn vì bố cục tổng thể đã được xác lập trong các bước đầu tiên.

Control Mode – Chế độ điều khiển

Balanced: (Cân bằng): ControlNet được áp dụng cho cả conditioning (điều kiện) và unconditoning (không điều kiện) trong một bước lấy mẫu. Đây là chế độ hoạt động thông thường.

My prompt is more important: (Câu prompt của tôi quan trọng hơn): Hiệu ứng của ControlNet dần giảm qua các trường hợp U-Net injections (Có 13 trường hợp trong một bước lấy mẫu). Hiệu ứng tạo ra là câu prompt của bạn có ảnh hưởng hơn ControlNet.

ControlNet is more important (ControlNet quan trọng hơn): Tắt ControlNet trên unconditoning. Giá trị CFG scale cũng có tác dụng một bộ kích tăng hiệu ứng của ControlNet.

Đừng lo lắng nếu bạn không hiểu rõ cách chúng hoạt động thế nào. Tên của các option này mô tả rõ xác hiệu ứng.

Resize mode – Chế độ thay đổi kích thước

Chế độ thay đổi quản lý cách xử lý khi kích thước của ảnh đầu vào hoặc bản đồ control khác với kích thước của các hình ảnh được tạo ra. Bạn không cần phải lo lắng về các tùy chọn này nếu chúng có cùng tỷ lệ khung hình.

Tôi sẽ demo hiệu ứng của các chế độ thay đổi kích thước bằng cách đặt text-to-image để tạo ra một hình ảnh ngang, trong khi ảnh đầu vào/bản đồ control là hình ảnh dọc.

Just Resize (Chỉ thay đổi kích thước): Thay đổi chiều rộng và chiều cao của bản đồ control một cách độc lập để vừa với canvas ảnh. Điều này sẽ thay đổi tỷ lệ khung hình của bản đồ control.

Cô gái bây giờ cần nghiêng về phía trước để vẫn ở trong canvas. Bạn có thể tạo ra một số hiệu ứng thú vị với chế độ này.

Control map

Hình ảnh được tạo ra

Just Resize thay đổi kích thước của bản đồ control để vừa với canvas ảnh.

Crop and Resize: (Cắt và thay đổi kích thước): Thay đổi tỉ lệ canvas để nằm trong bản đồ control. Cắt nhỏ bản đồ control để nó có cùng kích thước với canvas.

Bởi vì bản đồ control bị cắt ở phía trên và phía dưới, cô gái của chúng ta cũng bị cắt.

Bản đồ control

Hình ảnh được tạo ra

Crop and Resize: làm cho canvas vừa với bản đồ control và cắt nhỏ bản đồ control.

Resize and fill: (Thay đổi kích thước và điền): Làm cho toàn bộ bản đồ control vừa với canvas. Mở rộng bản đồ control với các giá trị trống để nó có cùng kích thước với canvas.

So với ảnh gốc đầu vào, có nhiều không gian hơn ở hai bên hơn.

Bản đồ control

Hình ảnh được tạo ra

Resize and fill: Làm cho toàn bộ bản đồ control vừa với canvas và mở rộng bản đồ control.

OK, bây giờ (hy vọng là) bạn đã biết tất cả các cài đặt. Hãy khám phá một số ý tưởng để sử dụng ControlNet.

Sử dụng Nhiều ControlNet

Bạn có thể sử dụng ControlNet nhiều lần để tạo hình ảnh. Hãy xem qua một ví dụ.

Mô hình: Protogen v2.2

**Prompt:

Một phi hành gia ngồi, hành tinh ngoài hành tinh (An astronaut sitting, alien planet)

Negative prompt:

biến dạng, biến dạng, xấu xí (disfigured, deformed, ugly)

Prompt này tạo ra các hình ảnh với nhiều bố cục khác nhau.

Giả sử tôi muốn kiểm soát bố cục của phi hành gia và nền một cách riêng biệt. Chúng ta có thể sử dụng nhiều (trong trường hợp này là 2) ControlNet để thực hiện điều này.

Tôi sẽ sử dụng hình ảnh tham chiếu này để cố định tư thế của phi hành gia.

Cài đặt cho ControlNet 0:

  • Enable: Yes
  • Preprocessor: OpenPose
  • Model: control_xxxx_openpose
  • Resize mode: Resize and Refill (Vì ảnh tham chiếu gốc của tôi là hình ảnh dọc)

Tôi sẽ sử dụng hình ảnh tham chiếu bên dưới cho nền.

Các mô hình depth (độ sâu) rất phù hợp cho mục đích này. Bạn nên thử nghiệm xem mô hình và cài đặt độ sâu nào cho ra bản đồ độ sâu bạn muốn dùng.

Cài đặt cho ControlNet 1:

  • Enable: Yes
  • Control Weight: 0.45
  • Preprocessor: depth_zeo
  • Model: control_XXXX_depth
  • Resize mode: Crop and resize

Bây giờ tôi có thể kiểm soát cấu trúc của chủ thể và nền một cách riêng biệt.

Mẹo:

  • Điều chỉnhControlNet weights nếu một vài weights không hoạt động.
  • Chú ý đến chế độ thay đổi kích thước nếu bạn có hình ảnh tham chiếu có kích thước khác với kích thước của hình ảnh đầu ra.

Một số ý tưởng sử dụng ControlNet

Sao chép tư thế con người

Có lẽ ứng dụng phổ biến nhất của ControlNet là sao chép tư thế con người do từ trước đến nay thường rất khó để kiểm soát tư thế. Ảnh đầu vào có thể là một hình ảnh được tạo ra bởi Stable Diffusion, hoặc có thể được chụp từ một máy ảnh.

Mô hình OpenPose

Để sử dụng ControlNet để sao chép tư thế con người, làm theo hướng dẫn để bật ControlNet trong AUTOMATIC1111. Sử dụng các cài đặt sau đây.

preprocessors: openpose

Mô hình: control_…_openpose

Hãy xem một số ví dụ.

Ví dụ 1: Sao chép tư thế từ một hình ảnh

Là một ví dụ cơ bản, hãy sao chép tư thế từ hình ảnh sau của một người phụ nữ ngắm lá.

Ảnh đầu vào

Sử dụng các mô hình và prompt khác nhau, bạn có thể thay đổi nội dung một cách đáng kể nhưng vẫn giữ nguyên tư thế.

Mô hình Dreamlike Photoreal

Mô hình Anything v3

Mô hình DreamShaper

Mô hình Anything v3

Ví dụ 2: Remix một cảnh phim

Bạn có thể thay đổi lại cảnh nhảy nổi tiếng trong phim Pulp Fiction thành một buổi tập yoga trong công viên.

Việc này sử dụng ControlNet với mô hình DreamShaper.

Prompt: ảnh phụ nữ tập yoga, ngoài trời trong công viên (photo of women doing yoga, outside in a park). Negative prompt: biến dạng, xấu xí, tệ, chưa trưởng thành (disfigured, ugly, bad, immature)

Cũng prompt này nhưng sử dụng mô hình Inkpunk Diffusion. (Bạn sẽ cần thêm từ khóa kích hoạt nvinkpunk vào prompt)

Prompt giống như mô hình ink punk diffusion.

Tạo hiệu ứng cho hình ảnh với ControlNet

Sử dụng prompts

Dưới đây là một số ví dụ dùng mô hình v1.5 nhưng sử dụng các prompts khác nhau để tạo ra các hiệu ứng khác nhau. ControlNet được sử dụng với các preprocessor khác nhau. Tốt nhất là thử nghiệm và xem xét xem phương pháp nào cho kết quả tốt nhất.
![[Pasted image 20230911221628.png]]
Hình ảnh Pixel Art, Canny
![[Pasted image 20230911221642.png]]
Hình ảnh 3D rendering, Canny
![[Pasted image 20230911221656.png]]
Hình ảnh đen trắng, HED
![[Pasted image 20230911221708.png]]

Hình ảnh màu nước, Bình thường

Sử dụng các từ khóa trong prompt để tạo hiệu ứng cho hình ảnh với ControlNet.

Sử dụng các mô hình

Bạn cũng có thể sử dụng các mô hình để tạo hiệu ứng cho hình ảnh. Dưới đây là các hình ảnh được tạo ra bằng cách sử dụng prompt “Painting of Beethoven” với các mô hình Anythingv3, DreamShaper và OpenJourney.
![[Pasted image 20230911221804.png]]

Hình ảnh từ mô hình Anything v3
![[Pasted image 20230911221822.png]]

Hình ảnh từ mô hình DreamShaper
![[Pasted image 20230911221832.png]]
Hình ảnh từ mô hình OpenJourney
![[Pasted image 20230911221842.png]]
Hình ảnh từ mô hình Inkpunk Diffusion

Điều khiển tư thế với Magic Pose

Đôi khi bạn không thể tìm thấy một hình ảnh với tư thế chính xác mà bạn muốn. Bạn có thể tạo tư thế tùy chỉnh của riêng bạn bằng cách sử dụng các công cụ phần mềm như Magic Poser.

Bước 1: Truy cập vào trang web Magic Poser.
![[Pasted image 20230911222011.png]]

Bước 2: Di chuyển các điểm chính của mô hình để tùy chỉnh tư thế.

Bước 3: Nhấn Xem trước. Chụp màn hình của mô hình. Bạn sẽ nhận được một hình ảnh giống như hình dưới đây.
![[Pasted image 20230911222047.png]]
Tư thế người từ Magic Poser.

Bước 4: Sử dụng mô hình OpenPose ControlNet. Chọn mô hình và prompt mà bạn muốn để tạo ra hình ảnh.

Dưới đây là một số hình ảnh được tạo ra bằng mô hình 1.5 và mô hình DreamShaper. Tư thế đã được sao chép tốt trong tất cả các trường hợp.
![[Pasted image 20230911222109.png]]
Hình ảnh 1
![[Pasted image 20230911222123.png]]
Hình ảnh 2
![[Pasted image 20230911222134.png]]
Hình ảnh 3

Ý tưởng thiết kế nội thất

Bạn có thể sử dụng mô hình MLSD của Stable Diffusion ControlNet để tạo ra ý tưởng thiết kế nội thất. Dưới đây là các thiết lập của ControlNet.

Preprocessor: mlsd

Model: mlsd

Bắt đầu với bất kỳ hình ảnh thiết kế nội thất nào. Hãy sử dụng hình ảnh dưới đây làm ví dụ.![[Pasted image 20230911222213.png]]

Hình ảnh đầu vào cho thiết kế nội thất.

Prompt:

phòng khách giành giải thưởng (award winning living room)

Mô hình: Stable Diffusion v1.5

Dưới đây là một ý tưởng thiết kế được tạo ra.
![[Pasted image 20230911222235.png]]

Bạn cũng có thể sử dụng mô hình độ sâu. Thay vì các đường thẳng, nó sẽ tập trung duy trì thông tin độ sâu.

Preprocessor: Depth Midas

Model: Depth

Hình ảnh được tạo ra:
![[Pasted image 20230911222343.png]]

Sự khác biệt giữa mô hình độ sâu Stable Diffusion và ControlNet

Stability AI, công ty tạo ra Stable Diffusion, đã phát hành một mô hình depth-to-image. Nó có nhiều điểm tương đồng với ControlNet, nhưng cũng có những khác biệt quan trọng.

Hãy trước tiên nói về điểm tương đồng.

  1. Cả hai đều là các mô hình Stable Diffusion…
  2. Cả hai đều sử dụng hai conditionings (một hình ảnh được preprocessors và prompt văn bản).
  3. Cả hai đều sử dụng MiDAS để ước tính bản đồ độ sâu.

Các khác biệt là

  1. Mô hình depth-to-image là một mô hình v2. ControlNet có thể được sử dụng với bất kỳ mô hình v1 hoặc v2 nào. Điểm này rất quan trọng vì mô hình v2 khó sử dụng. Mọi người gặp khó khăn trong việc tạo ra hình ảnh tốt. Việc ControlNet có thể sử dụng bất kỳ mô hình v1 nào không chỉ mở ra khả năng điều kiện độ sâu cho mô hình cơ bản v1.5, mà còn hàng ngàn mô hình đặc biệt được phát hành bởi cộng đồng.
  2. ControlNet linh hoạt hơn. Ngoài độ sâu, nó cũng có thể áp đặt việc xác định đường viền, xác định tư thế và những điều tương tự.
  3. Bản đồ độ sâu của ControlNet có độ phân giải cao hơn so với depth-to-image.

ControlNet hoạt động như thế nào?

Hướng dẫn này sẽ không hoàn chỉnh nếu không giải thích cách ControlNet hoạt động.

ControlNet hoạt động bằng cách gắn các mô-đun mạng có thể huấn luyện vào các phần khác nhau của U-Net (bộ dự đoán nhiễu) của Mô hình Stable Diffusion. Trọng số của mô hình Stable Diffusion được khóa để chúng không thay đổi trong quá trình huấn luyện. Chỉ có các mô-đun gắn vào là được sửa đổi trong quá trình huấn luyện.

Sơ đồ mô hình từ bài báo nghiên cứu tóm tắt khá rõ ràng. Ban đầu, trọng số của mô-đun mạng gắn vào đều bằng không, làm cho mô hình mới có thể tận dụng mô hình đã được huấn luyện và đã khóa.
![[Pasted image 20230911222757.png]]

Trong quá trình huấn luyện, hai conditionings được cung cấp cùng với mỗi hình ảnh huấn luyện. (1) Prompt văn bản và (2) bản đồ control như các điểm chính OpenPose hoặc đường viền Canny. Mô hình ControlNet học cách tạo ra hình ảnh dựa trên hai đầu vào này.

Mỗi phương pháp điều khiển được huấn luyện độc lập.

Hoàng Dũng AI

AI Trainer and Automation Specialist | Passionate about Empowering Individuals with AI Skills.