ControlNet là gì và cách sử dụng nó trong Stable Diffusion

ControlNet là gì và cách sử dụng nó trong Stable Diffusion

Bạn đã quen thuộc với việc tạo ảnh bằng công nghệ AI với các công cụ như DALL E-2, Midjourney hay Stable Diffusion. Bạn cũng đã nghe đến thuận ngữ ControlNet, nhưng bạn đã biết nó là gì và cách áp dụng hiểu quả trong việc tạo ảnh AI. Hãy cùng xem bài viết này của AIChatGPT.vn để hiểu rõ hơn về ControlNet.

Giới thiệu

ControlNet là một thuật toán trong mô hình Stable Diffusion có thể sao chép bố cục và tư thế của con người. Nó dùng để tạo ra tư thế, hình dáng chính xác mà người dùng mong muốn. ControlNet mạnh mẽ và linh hoạt, cho phép bạn sử dụng nó với bất kỳ Stable Diffusion Model nào. Trong bài đăng này, bạn sẽ tìm hiểu mọi thứ bạn cần về ControlNet: Nó là gì, cách cài đặt và sử dụng nó, ý nghĩa của từng thông số cài đặt và một số trường hợp sử dụng phổ biến.

ControlNet là gì?

ControlNet là một mô hình Stable Diffusion đã được tùy chỉnh. Thông thường các công cụ tạo ảnh AI sẽ dùng thuật toán text-to-image, sử dụng các câu lệnh mô tả Prompt bằng văn bản sau đó thực hiện quá trình tạo ảnh. Còn với ControlNet nó sẽ thêm nhiều điều kiện hơn trước khi tạo ra bức ảnh AI. Ví dụ như phát hiện ra tư thế con người và phát hiện các cạnh của chủ thể.

ControlNet phát hiện cạnh Canny

Quy trình xử lý của ControlNet phát hiện cạnh là nó sẽ lấy một hình ảnh đầu vào bổ sung và phát hiện các đường viền của nó bằng cách sử dụng bộ phát hiện cạnh Canny. Các cạnh được phát hiện sẽ lưu dưới dạng bản đồ điều khiển và sau đó được đưa vào mô hình ControlNet dưới dạng điều kiện bổ sung bên cạnh lời nhắc văn bản.

Candy ControlNet in Stable Diffusion

ControlNet tạo ra tư thế con người OpenPose

Tương tự bộ xử lý phát hiện cạnh, ControlNet tạo tư thế con người sẽ phát hiện và trích xuất các điểm chính trong tư thế ảnh đầu vào như tay, chân và đầu. Các điểm chính được trích xuất từ ​​hình ảnh đầu vào bằng ControlNet OpenPose sẽ được lưu dưới dạng bản đồ kiểm soát. Sau đó, nó được đưa vào Stable Diffusion như một điều kiện bổ sung cùng với lời nhắc văn bản.

OpenPose ControlNet in Stable Diffusion

ControlNet Canny vs Openpose

Sự khác biệt giữa việc sử dụng phát hiện cạnh Canny và Openpose là gì? Bộ phát hiện cạnh Canny trích xuất các cạnh của đối tượng và hậu cảnh giống nhau. Nó có xu hướng dịch cảnh 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 phụ nữ nhưng đường nét và kiểu tóc thì tương tự nhau.

Trong khi đó, OpenPose chỉ phát hiện các điểm chính để tạo hình ảnh tự do hơn nhưng theo tư thế ban đầu. Trong ví dụ trên, nó tạo ra một người phụ nữ nhảy lên với chân trái chỉ sang một bên, khác với hình ảnh ban đầu và hình ảnh trong ví dụ Canny edge. Lý do là tính năng phát hiện điểm chính của OpenPose không chỉ hướng của bàn chân.

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

ControlNet hoạt động bằng cách gắn các mô-đun mạng có thể đào tạo 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. Các trọng số của Stable Diffusion Model được khóa để chúng không thay đổi trong quá trình đào tạo. Chỉ các mô-đun đính kèm được sửa đổi trong quá trình đào tạo.

Trong quá trình đào tạo, hai điều kiện được cung cấp cùng với mỗi hình ảnh đào tạo. (1) lời nhắc văn bản và (2) chú thích chẳng hạn như các điểm chính OpenPose hoặc các cạnh Canny. Bằng cách này, mô hình ControlNet có thể học cách tạo hình ảnh dựa trên hai đầu vào này.

ControlNet in Stable Diffusion

Các ControlNet model phổ biến

Bộ nhận dạng tư thế OpenPose

OpenPose phát hiện các điểm chính của con người như vị trí của đầu, vai, tay, v.v. Nó rất hữu ích để sao chép tư thế của con người chứ không phải các chi tiết khác như trang phục, kiểu tóc và bối cảnh.

OpenPose ControlNet in Stable Diffusion-2

Bộ phát hiện cạnh Canny

Canny là bộ phát hiện cạnh được sử dụng cho nhiều mục đích chung. Nó trích xuất các phác thảo của một hình ảnh. Nó rất hữu ích để giữ lại bố cục của ảnh gốc.

Candy Edge ControlNet in Stable Diffusion

Bộ nhận dạng đường thẳng Straight line

ControlNet có thể được sử dụng với M-LSD (Mobile Line Segment Detection), một bộ dò tìm đường thẳng nhanh. Nó rất hữu ích để trích xuất các đường viền có cạnh thẳng như thiết kế nội thất, tòa nhà, cảnh đường phố, khung ảnh và các cạnh giấy.

M-LSD ControlNet in Stable Diffusion

Bộ phát hiện cạnh HED

HED (Holistally-Nested Edge Detection) là một công cụ phát hiện cạnh rất tốt trong việc tạo ra các đường viền giống như một người thực. Theo các tác giả của ControlNet, HED phù hợp để tô màu lại và sắp xếp lại hình ảnh.

ControlNet Scribbles

Với ControlNet Scribbles có thể biến các thứ bạn vẽ nguệch ngoạc, trù tượng thành hình ảnh!

ControlNet Scribbles in Stable Diffusion

Xem thêm nhiều ControlNet model khác tại đây

Hướng dẫn cài đặt ControlNet trong Stable Diffusion

Để cài đặt ControlNet trong Stable Diffusion bạn cần sử dụng tiện ích mở rộng sd-webui-controlnet. Đây là cách nhanh nhất và dễ dàng.

Cài đặt ControlNet trong Google Colab

Đối với các bản Stable Diffusion Colab việc cài đặt ControlNet đơn giản, bạn không cần phải làm gì nhiều vì tiện ích này đã được tích hợp sẵn. Một số bản chưa tích hợp ControlNet, trước khi thực hiện quá trình chạy câu lệnh hãy tìm đến mục Extensions và đánh dấu chọn vào ô ControlNet.

Nếu bạn chưa biết cách sử dụng hãy đọc bài Hướng dẫn chi tiết cài đặt và sử dụng Stable Diffusion trên Google Colab

Cài đặt ControlNet trên Windows PC hoặc Mac

Cài đặt controlnet

Nếu bạn tự chạy Stable Diffusion trên máy tính của mình, hãy thực hiện theo các bước sau để có thể cài đặt thêm công cụ ControlNet.

  • Bước 1: Trong giao diện GUI của ST hãy đi đến Tab “Extensions“.
  • Bước 2: Mở tab “Install from URL” trong mục Extensions.
  • Nhập URL: https://github.com/Mikubill/sd-webui-controlnet của tiện ích mở rộng sd-webui-controlnet vào ô “URL for extension’s git repository”.
  • Nhấn nút “Install“.
  • Tải lại hoặc khởi động lại giao diện GUI của SD.
  • Nếu cài đặt thành công, trong tab txt2img kéo xuống dưới bạn sẽ thấy mục có tên là ControlNet.

Nâng cấp gradio nếu xảy ra bất kỳ sự cố giao diện người dùng nào bằng lệnh: pip install gradio==3.16.2

Thêm các mô hình ControlNet vào Stable Diffusion

Để sử dụng ControlNet bạn cần tải xuống các tệp mô hình được đào tạo sẵn (thường có đuôi .pt, .pth, .ckpt hoặc .safetensors) và chép nó vào thư mục “stable-diffusion-webui/extensions/sd-webui-controlnet/models”

Dưới đây là một số link để bạn có thể tải xuống các ControlNet Model:

  • Các model ControlNet của chính tác giả phát hành: Link download
  • Các mô hình ControlNet có kích thước tệp nhỏ hơn do cộng đồng chia sẻ: Link download
  • Bạn không cần phải tải xuống tất cả các mô hình. Nếu đây là lần đầu tiên bạn sử dụng ControlNet, bạn chỉ cần tải xuống model openpose .

Cách sử dụng ControlNet trong Stable Diffusion

Sau khi cài đặt và tải xuống các ControlNet Model bạn đã có thể bắt đầu sử dụng nó. Hãy xem các hướng dẫn chi tiết về sử dụng ControlNet sau đây.

Tại tab txt2img hãy nhập các câu lệnh prompt, câu phủ định Negative prompt và điều chỉnh các thông số để tạo ảnh AI như bình thường bạn vẫn làm.

How to setting ControlNet in Stable Diffusion

Tiếp theo, kéo xuống mục ControlNet bên dưới, và bấm vào nút mũi tên bên phải chữ ControlNet để mở rộng bảng cài đặt. Bây giờ hãy bắt đầu thiết lập các thông số của nó theo các bước:

  • Bước 1: Hãy upload hoặc kéo một ảnh mẫu vào khung Image, dùng để control cho ảnh AI được tạo.
  • Bước 2: Check vào hộp kiểm Enable
  • Bước 3: Chọn bộ tiền xử lý ControlNet tại ô Preprocessor, ví dụ như OpenPose để nhận dạng tư thế trong ảnh đầu vào.
  • Bước 4: Tại ô Model hãy chọn ControlNet model phù hợp với bộ xử lý bên trên. Đây là những mô hình mà bạn đã upload vào thư mục “stable-diffusion-webui/extensions/sd-webui-controlnet/models” lúc đầu. Nếu không thấy bạn có thế bấm vào nút mũi tên 2 chiều bên cạnh để reload lại dữ liệu.
  • Bước 5: Cuối cùng, bạn chỉ việc bấm vào nút Genarate để tạo quá trình tạo ảnh bằng ControlNet được thực hiện.

Bạn sẽ thấy các hình ảnh được tạo tuân theo tư thế của hình ảnh đầu vào. Hình ảnh cuối cùng là trực tiếp từ bước tiền xử lý. Trong trường hợp này, đó là các điểm chính được phát hiện. Khi bạn đã hoàn tất, hãy bỏ chọn hộp kiểm Enable ở bước 2 để tắt tiện ích mở rộng ControlNet.

How to create AI image with ControlNet in Stable Diffusion

Ý nghĩa các thông số cài đặt của ControlNet

Tại bảng cài đặt của ControlNet có rất nhiều thông số, bạn có thể xem mô tả chi tiết dưới đây để hiểu chức năng và cách sử dụng của từng lệnh.

Điều khiển đầu vào

ControlNet in Stable Diffusion-1

Khung Image: Bạn có thể kéo thả hình ảnh đầu vào hoặc upload nó từ thư mục máy tính tại đây. Bạn cũng có thể dùng lệnh copy và paste ảnh để dán ảnh vào khung này. Hình ảnh đầu vào sẽ được xử lý bởi bộ tiền xử lý được chọn trong ô Preprocessor. Một bản đồ kiểm soát sẽ được tạo ra.

Biểu tượng máy ảnh: Dùng để chụp ảnh bằng máy ảnh của thiết bị và sử dụng nó làm hình ảnh đầu vào.

Enable : Có bật ControlNet hay không.

Invert input color: Đảo ngược màu đầu vào giữa đen và trắng. Nó có thể được sử dụng khi bạn tải lên một nét vẽ. ControlNet yêu cầu một ảnh với nền đen và những nét vẽ màu trắng.

RGB to BGR : Điều này là để thay đổi thứ tự các kênh màu của hình ảnh được tải lên. Hoặc thứ tự tọa độ của bản đồ bình thường được tải lên. Bạn không cần đánh dấu vào ô này nếu bạn tải hình ảnh lên và sử dụng Preprocessor.

Low VRAM: Dành cho GPU có VRAM dưới 8GB. Nó là một tính năng thử nghiệm. Kiểm tra xem bạn đã hết bộ nhớ GPU hay muốn tăng số lượng hình ảnh được xử lý.

Guess Mode: là chế độ không prompt. Việc tạo hình ảnh có thể hoàn toàn không bị ảnh hưởng bởi lời nhắc văn bản. Nó thực thi bộ mã hóa ControlNet tuân theo bản đồ điều khiển đầu vào (như độ sâu, cạnh, v.v.) ngay cả khi không có lời nhắc. Sử dụng các step cao hơn, ví dụ 50 khi sử dụng chế độ này. Bạn thường không đánh dấu vào ô này.

Bộ tiền xử lý và model ControlNet

Preprocessor: Dùng để 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à tư thế. Không ai sử dụng hình ảnh đầu vào làm bản đồ kiểm soát.

Model: Mô hình ControlNet sẽ sử dụng. Nếu bạn đã chọn một bộ tiền xử lý, thông thường bạn sẽ chọn mô hình model tương ứng.

Các thông số cài đặt về tỷ trọng ảnh hưởng của ControlNet

ControlNet in Stable Diffusion-2

Weight: Mức độ ảnh hưởng của ControlNet so với lời nhắc. Thông số càng lớn thì mức ảnh hưởng của ControlNet lên ảnh càng cao.

Guidance strength: Đây là số bước mà ControlNet được áp dụng . Nó tương tự như cường độ khử nhiễu trong image-to-image. Nếu cường độ hướng dẫn là 1, ControlNet được áp dụng cho 100% các bước lấy mẫu. Nếu cường độ hướng dẫn là 0,7 và bạn đang thực hiện 50 bước, thì ControlNet được áp dụng cho 70% bước lấy mẫu đầu tiên, tức là 35 bước đầu tiên.

Resize mode

Các chế độ Resize mode giúp kiểm soát những việc cần làm khi kích thước của hình ảnh đầu vào hoặc bản đồ điều khiển khác với kích thước của hình ảnh sẽ được tạo. 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.

Envelope (Outer Fit): Điều chỉnh canvas hình ảnh trong bản đồ điều khiển. Cắt bản đồ điều khiển để nó có cùng kích thước với khung ảnh.

Scale to Fit: Khớp toàn bộ bản đồ điều khiển với canvas hình ảnh. Mở rộng bản đồ kiểm soát với các giá trị trống sao cho nó có cùng kích thước với khung ảnh.

Just Resize: Chia tỷ lệ chiều rộng và chiều cao của bản đồ điều khiển một cách độc lập để phù hợp với canvas hình ảnh. Điều này sẽ làm thay đổi tỷ lệ khung hình của bản đồ điều khiển.

Cài đặt canvas cho khung vẽ

ControlNet in Stable Diffusion-3

Bạn chỉ dùng cài đặt này nếu bạn sử dụng GUI ControlNet để tạo các nét vẽ. Các cài đặt này không có hiệu lực khi bạn tải hình ảnh đầu vào lên và sử dụng bộ tiền xử lý.

Canvas WidthCanvas Height Chiều để điều chỉnh chiều rộng và chiều cao của khung vẽ trống mà bạn tạo. Mũi tên lên xuống giúp thay đổi chiều cao và chiều rộng.

Xem trước bản đồ ControlNet

Preview annotator result: Tạo bản đồ điều khiển dựa trên cài đặt tiền xử lý. Một bản đồ kiểm soát sẽ hiển thị ngay bên cạnh hình ảnh đầu vào.

Hide annotator result: Ẩn bản đồ kiểm soát.

Một số trường hợp sử dụng ControlNet phổ biến

Sao chép tư thế dáng người

Có lẽ đây là ứng dụng phổ biến của ControlNet, vì thường rất khó để kiểm soát được tư thế, dáng người trong các câu lệnh prompt. Hình ảnh đầu vào có thể là ảnh được tạo bởi SD hoặc từ máy chụp hình.

Để sao chép tư thế dáng người, thì thường sử dụng ControlNet là OpenPose. Chọn các tùy chỉnh như sau:

  • Preprocessor: openpose
  • Model: control_openpose-fp16

Và đánh dấu check vào ô Enable.

Ví dụ về sao chép tư thế từ một ảnh

ControlNet tạo tư thế người trong Stable Diffusion

Gợi ý: Đôi khi bạn có thể không tìm thấy hình ảnh có 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 mình bằng các công cụ phần mềm như Magic Poser

Tạo ý tưởng trong thiết kế nội thất

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

  • Preprocessor: mlsd
  • Model: control_mlsd-fp16

Và đánh dấu check vào ô Enable.

Ví dụ về ý tưởng trong thiết kế nội thất với ControlNet

ControlNet tạo tư thế nét thẳng trong Stable Diffusion

Bạn có thể bắt đầu với bất kỳ bức ảnh thiết kế nội thất nào. Ngoài ra, bạn có thể sử dụng mô hình độ sâu. Thay vì các đường thẳng, nó sẽ nhấn mạnh việc bảo toàn thông tin độ sâu.

Một số câu hỏi khi sử dụng ControlNet trong Stable Diffusion

Tại sao phải sử dụng ControlNet?

Thuật toán ControlNet ra đời để khắc phục những hạn chế của việc tạo ảnh AI chỉ bằng các câu lệnh prompt. Thông thường các mô tả bẳng văn bản sẽ khó kiểm soát hết vị trí, tư thế, hình dạng của chủ thể trong ảnh như mong muốn. Vì vậy, để tạo tranh AI trong Stable Diffusion thường sử dụng thêm ControlNet. Nó thật sự hữu ích trong việc sao chép tư thế, dáng người cũng như trong việc tạo các phối cảnh, bổ sung thêm các ý tưởng trong thiết kế,…

ControlNet có hạn chế gì không?

Tùy vào nhu cầu và mục đích khác nhau mà bạn có thể sử dụng các mô hình ControlNet, nhưng nó cũng có một số hạn chế như:

  • Gia tăng thời gian và tốc độ xử lý trong quá trình tạo ảnh AI.
  • Giới hạn tính sáng tạo trong hình ảnh đầu ra khi bị giới hạn trong một số khuôn khổ nhất định.
  • Việc lựa chọn các model ControlNet không phù hợp cũng dẫn dến hình ảnh bị mất nét, biến dạng hoặc không có chiều sâu.
  • Ngoài ra, nó cũng có thể không đạt được hiệu quả tốt khi ứng dụng trên các tập dữ liệu có nhiễu mạnh hoặc độ phân giải thấp.

Tôi có thể tải thư viện ControlNet ở đâu?

Để download và sử dụng controlNet model, bạn có thể tham khảo tại đây.

Tôi phải làm gì khi ControlNet không xuất hiện trong mục cài đặt.

Để sử dụng ControlNet trước tiên bạn phải cài đặt extensions này theo các hướng dẫn bên trên. Trường hợp bạn đã cài đặt rồi nhưng không tìm thấy mục ControlNet trong giao diện GUI SD. Bạn cần kiểm tra lại một số vấn đề sau:

  • Bạn đã khởi động lại ứng dụng Stable Diffusion sau khi cài ControlNet chưa? Đây là điều là bắt buộc để chạy công cụ này, bạn cần phải tắt SD và chạy lại nó.
  • Bạn đã cài đặt đúng link gốc của công cụ ControlNet chưa? Có nhiều link chia sẻ để cài đặt nó, tuy nhiên bạn nên chọn từ tác giả ControlNet.
  • Nếu bạn đang sử dụng Stable Diffusion Colab và không thấy ControlNet, bạn hãy thử cài đặt theo hướng dẫn trên hoặc tìm bản Colab khác để chạy lại.
  • Bạn cần đảm bảo đặt các file ControlNet Model vào đúng thư mục cài đặt của nó, để có thể tìm thấy ở giao diện GUI.
  • Nếu quá trình cài đặt bị lỗi, bên nên xem xét update Stable Diffusion lên phiên bản mới hơn.

Kết luận

Trên đây là những hướng dẫn chi tiết cho bạn hiểu thế nào là ControlNet và cách sử dụng nó trong mô hình Stable Diffusion. Với công cụ mở rộng này bạn hoàn toàn có thể tạo ra các bức ảnh AI theo đúng suy nghĩ mà mong muốn của mình. ControlNet mạnh mẽ trong việc tạo ra bộ nhận dạng các tư thế, hình dáng, cạnh, đường nét của hình ảnh đầu vào, từ đó xử lý cho ra ảnh AI tương đồng và hoàn chỉnh hơn. Nếu bạn thấy bài viết này của AIChatGPT hữu ích hãy chia sẻ và để lại comment thảo luận bên dưới. Chúc bạn thành công trong việc áp dụng công nghệ AI để tạo ảnh.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *