Controlnet là ứng dụng vô cùng độc đáo của Stable Diffusion mà hiện tại chưa một AI tạo ảnh nào có thể làm tương tự.
Controlnet cho phép đưa thêm các “điều kiện” vào model Stable Diffusion ngoài các điều kiện có sẵn như prompt, để kiểm soát (control) tốt hơn kết quả đầu ra. Dữ liệu của controlnet được đào tạo và dùng song song với các model của Stable Diffusion.
Giao diện của controlnet
Trong phạm vi bài viết, chúng ta sẽ tìm hiểu qua các chức năng cơ bản của controlnet và các model controlnet phổ thông hay được sử dụng
Các chức năng cơ bản
Image Canvas: thả ảnh mẫu vào bên ô bên trái, chọn bộ xử lý (preprocessor), nội dung của controlnet sẽ hiện ra ở “preprocessor preview”

Open new canvas: Tạo ra một mẫu trắng để vẽ lên chuyên dùng cho Sketch
Enable Webcam: cho phép lấy mẫu từ ảnh chụp từ thiết bị
Mirror Webcam: đảo ngược ảnh qua gương
Send dImensions to stable diffusion: Kích cỡ của ảnh đưa vào sẽ được gửi lên Height - Width của SD
Enable : Có bật ControlNet hay không.
VRAM thấp : Dành cho GPU có VRAM dưới 8GB. Đây là một tính năng thử nghiệm. Kiểm tra xem bạn có hết bộ nhớ GPU hay không hoặc muốn tăng số lượng hình ảnh được xử lý.
Allow Preview : Chọn tùy chọn này để bật cửa sổ xem trước bên cạnh hình ảnh tham chiếu. Tôi khuyên bạn nên chọn tùy chọn này. Sử dụng biểu tượng vụ nổ
bên cạnh menu thả xuống Bộ tiền xử lý để xem trước hiệu ứng của bộ tiền xử lý.
Bộ tiền xử lý : Bộ tiền xử lý (được gọi là bộ chú thích trong bài nghiên cứu) để xử lý trước hình ảnh đầu vào, chẳng hạn như phát hiện các cạnh, độ sâu và bản đồ thông thường. Không sử dụng hình ảnh đầu vào làm bản đồ điều khiển.
Model : Mô hình ControlNet để sử dụng. Nếu bạn đã chọn bộ tiền xử lý, thông thường bạn sẽ chọn mô hình tương ứng.
Control Weight: Giống weight của lora, giá trị càng tiến đến 1 thì Controlnet càng mạnh
Starting / Ending Control Step: Tác động của controlnet vào giai đoạn nào của quá trình tạo ảnh
Preprocessor Resolution: Giá trị trả ra của resolution bộ tiền xử lý. Mặc định HED giá trị là 512, Depth là 384. Ví dụ bức ảnh đầu vào có kích thước 768 x 640 và Preprocessor Resolution để 512, thì map tạo ra sẽ có kích thứo 640 x 512. Giá trị càng cao sẽ càng chính xác nhưng tiêu tốn VRAM.
Riêng model Canny có thêm
Các giá trị dưới ngưỡng thấp luôn bị loại bỏ
Các giá trị trên ngưỡng cao luôn được giữ nguyên
Các giá trị ở giữa hai ngưỡng có thể được giữ lại hoặc có thể bị loại bỏ tùy thuộc vào các quy tắc và phép toán khác nhau.
Từ trái qua phải : Canny default, Canny với low threshold, Canny với high threshold, Canny với khoảng lớn giữa low và high threshold
Control Mode: Các bạn chỉ cần hiểu mặc định điều kiện đưa vào là prompt và controlnet có sức mạnh ngang nhau, control mode thay đổi điều đó.
Resize mode:
Just Resize: Thay đổi kích thước của controlmap 1 cách độc lập để vừa khung ảnh. Điều này thay đổi aspect ratio của controlmap
Crop and Resize: Đặt khung bức ảnh bên trong controlmap, crop controlmap về cùng aspect ratio với ảnh
Resize and fill: Đặt controlmap vào khung ảnh, mở rộng controlmap bằng các giá trị rỗng miễn là kích thước vừa với khung ảnh.
Vậy là cơ bản xong các chức năng cơ bản của controlnet
Controlnet model
Canny
Canny trích xuất các nét của ảnh, rất phù hợp để sử dụng trong giữ lại bố cục
Đây là model hay được sử dụng, giữ lại cả đường cong và thẳng, tủy theo threshold mà tùy chọn
Ghi chú: Canny lấy lại các hình dáng của nhân vật

Bộ xử lý đoán độ sâu trường ảnh.
Độ sâu Midas : Công cụ ước tính độ sâu cổ điển. Cũng được sử dụng trong mô hình [độ sâu hình ảnh] v2 chính thức .
Depth Leres : Thêm chi tiết nhưng cũng có xu hướng hiển thị nền.
Độ sâu Leres++ : Thậm chí nhiều chi tiết hơn.
Zoe : Mức độ chi tiết nằm giữa Midas và Leres.
Ghi chú: bức đầu là input, bức thứ 2 là depth map và bức thứ ba là ảnh tạo ra. Có thể hiểu depth map là khi các khoảng map càng có màu trắng hơn thì bức mảng đó trong bức ảnh sẽ gần hơn, và càng đen thì càng xa hơn.
Line Art
Chuyển bức ảnh thành các đường vẽ đơn giản như 1 bức tranh
Line art anime : Đường nét mang phong cách anime
Line art anime denoise : Các đường nét mang phong cách anime với ít chi tiết hơn.
Line art hiện thực : Đường nét theo phong cách hiện thực.
Line art thô : Những đường nét mang phong cách hiện thực với trọng lượng nặng hơn.
Ghi chú: các đường line được vẽ lại bởi input rất giống các nét vẽ
MLSD
Chỉ lấy các đường thằng, bỏ quá các loại đường khác, ứng dụng cao trong kiến trúc, nhà cửa, nội thất hoặc cơ khí, máy móc
Ghi chú: các đường thẳng là điểm cốt lõi để tạo nên hình dạng phòng ngủ này

Sử dụng các pixel ảnh để tạo lại control map. Ứng dụng lớn trong 3D
Openpose
Nhận biết cơ thể con người và các đặc điểm nhận dạng
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 + bàn tay và ngón tay
OpenPose_faceonly : chỉ chi tiết khuôn mặt
OpenPose_full : Tất cả những điều trên
dw_openPose_full : Phiên bản nâng cao của OpenPose_full
Ghi chú: Openpose sẽ xác định được tay chân, mắt mũi, đầu để vẽ lại hình “khung xương”
Bạn có thể thay đổi tư thế dáng người với openpose editor. Ứng dụng này thay đổi vị trí các khớp, khuôn mặt, các ngón tay chân.
Ghi chú: trường hợp khung xương chưa theo ý mình, hãy edit openpose rồi gửi lại controlnet
Softedge
Ngược lại MLSD, softedge chỉ lấy các đường mềm mại
Scribble/Sketch
Biến bức ảnh bình thường thành bức ảnh có nét vẽ nguệch ngoạc.
Ghi chú: từ một hình thu không giống ai có thể tạo ra hình ảnh vô cùng đẹp
Chúc mọi người thành công!
*Bài viết có tham khảo hình ảnh từ trang chủ github của các model nêu trên.