Bạn có biết Stable Diffusion có thể được sử dụng để mở rộng một hình ảnh theo bất kỳ hướng nào không? Chức năng này được gọi là outpainting. Nó có thể tạo ra nền hợp nhất ban đầu nằm ngoài khung hình. Trong bài viết này, chúng ta sẽ đi qua cách thực hiện điều này từng bước một trong giao diện AUTOMATIC1111. Tôi cũng sẽ giới thiệu các mô hình outpainting tuyệt vời khác như các lựa chọn thay thế.
Phần mềm cần thiết
Chúng ta sẽ sử dụng AUTOMATIC1111, một giao diện người dùng Stable Diffusion phổ biến và đầy đủ tính năng trong hướng dẫn này. Chúng ta sẽ sử dụng ghi chép Colab một cú nhấp chuột trong Hướng dẫn Khởi đầu Nhanh. Xem hướng dẫn sử dụng. Bạn cũng có thể cài đặt giao diện này trên Windows và Mac.
Khi khởi động ghi chép, hãy chắc chắn chọn mô hình F222, sẽ được sử dụng trong hướng dẫn này.
Hướng dẫn từng bước
Bước đầu tiên là chuẩn bị hình ảnh của bạn. Tôi sẽ sử dụng hình ảnh này được tạo bởi Stable Diffusion. Trong hướng dẫn này, chúng ta sẽ sử dụng hình ảnh sau đây làm điểm khởi đầu. Chúng ta sẽ sử dụng outpainting để căn giữa hình ảnh và biến nó thành kích thước ngang.
Hình ảnh ban đầu để thực hiện outpainting
Bạn có thể tải xuống hình ảnh này bằng cách sử dụng nút bên dưới để theo dõi hướng dẫn.
Tải ảnh lên AUTOMATIC1111
Nếu hình ảnh được tạo bởi giao diện người dùng AUTOMATIC1111, các yêu cầu và các thông số tạo ra khác được viết vào dữ liệu meta của tệp PNG.
Trong giao diện người dùng AUTOMATIC1111, chuyển đến tab PNG Info. Kéo và thả hình ảnh từ bộ nhớ lưu trữ của bạn vào khu vực canvas. Các thông số tạo ra sẽ xuất hiện bên phải.
Nhấn Gửi đến img2img để gửi hình ảnh này và các thông số cho outpainting. Hình ảnh và yêu cầu sẽ xuất hiện trong con tab img2img của tab img2img.
Sử dụng tab PNG Info để trích xuất các thông số tạo ra hình ảnh
Nếu hình ảnh ban đầu của bạn không được tạo ra bằng giao diện người dùng AUTOMATIC1111, đơn giản tiến hành đến tab img2img. Tải lên hình ảnh lên canvas img2img. Bạn sẽ cần viết một yêu cầu để mô tả chính xác hình ảnh và phong cách. (Bạn có thể tự động tạo yêu cầu bằng cách nhấp vào “Interrogate CLIP”. Nhưng theo ý kiến của tôi, nó không tốt lắm.)
Điều chỉnh các thông số cho outpainting
Đầu tiên, bạn cần chọn một mô hình phù hợp cho outpainting. Để đảm bảo thống nhất phong cách, bạn nên sử dụng cùng một mô hình đã tạo ra hình ảnh ban đầu. Ví dụ, tôi đã sử dụng mô hình F222 nên tôi sẽ sử dụng cùng mô hình này cho outpainting.
Nếu bạn đã sử dụng mô hình cơ bản v1.4 và v1.5 hoặc bạn đang sử dụng một bức ảnh chụp, bạn cũng có thể sử dụng mô hình inpainting v1. Điều này giúp mang lại kết quả tốt hơn. Tuy nhiên, tôi không gặp vấn đề gì khi không sử dụng nó.
Kích thước hình ảnh nên đã được thiết lập tự động chính xác nếu bạn đã sử dụng PNG Info. Đối với một hình ảnh tùy chỉnh, bạn nên đặt chiều ngắn hơn về độ phân giải cơ bản của mô hình, ví dụ 512 px cho các mô hình v1. Chiều dài phải được điều chỉnh phù hợp để duy trì tỷ lệ khung hình.
Đặt chế độ resize thành crop và resize để tỷ lệ khung hình không thay đổi.
Đặt seed thành -1 để có kết quả khác nhau mỗi lần.
Cường độ giảm nhiễu sẽ là điểm mà bạn sẽ có rất nhiều niềm vui khi tùy chỉnh… Nhưng trước tiên, hãy đặt nó thành 0.6.
Bạn có thể sử dụng cài đặt chuẩn của text-to-image cho phần còn lại. Để hoàn chỉnh, đây là những gì tôi sử dụng:
- Phương pháp lấy mẫu: DPM++ 2M Karras
- Bước lấy mẫu: 30
- Batch size: 4
Đây là phần cài đặt của tôi:
Bật tùy chọn kịch bản outpainting
Cuộn xuống và bạn sẽ thấy một hộp thả xuống Script. Có hai tùy chọn cho outpainting: (1) outpainting mk2 và (2) poor man’s outpainting. Outpainting mk2 không hoạt động rất tốt. Chọn Poor man’s outpainting.
Bạn có thể để Pixels to expand là 128 pixel. Chọn fill cho nội dung đã được đánh dấu. Nó sẽ sử dụng màu trung bình của hình ảnh để điền vào khu vực đã mở rộng trước khi outpainting.
Tốt nhất là outpainting một hướng một lần. Tôi chọn hướng outpainting là right cho hình ảnh này.
Tôi đang sử dụng lại yêu cầu ban đầu.
Nhấn Generate và bạn đã bắt đầu! Tạo lại nhiều lần cần thiết cho đến khi bạn thấy một hình ảnh bạn thích.
Tăng cường cường độ giảm nhiễu để thay đổi nhiều hơn. Giảm cường độ giảm nhiễu để thay đổi ít hơn. Đơn giản như vậy.
Xem thêm: Cách sửa hình ảnh AI bằng phương pháp inpainting Stable Diffusion
Căn giữa một hình ảnh
Đây là kết quả mà tôi đã nhận được. Cô ấy không còn ở bên phải của bức ảnh mà đã đứng ở giữa. Các pixel mở rộng hình ảnh hợp với các phần còn lại của hình ảnh.
Outpainting đã được sử dụng để mở rộng phía bên phải
Khi bạn hài lòng với một bên, bạn có thể nhấn Send to img2img dưới canvas kết quả để lặp lại quá trình.
Chuyển đổi thành kích thước ngang
Hãy mở rộng các bên trái và phải nhiều lần để hình ảnh kích thước chân dung trở thành hình ảnh ngang. Điều này có thể thay đổi hoàn toàn cảm nhận về hình ảnh. Bây giờ đó không phải là một chân dung chụp gần về chủ thể. Phông nền thành phố ảm đạm rộng lớn tạo nên sự tương phản tuyệt vời và kể một câu chuyện hay.
Sửa chi tiết với inpainting
Bạn không cần quá chú trọng vào những chi tiết nhỏ của phần mở rộng vì bạn luôn có thể tái tạo lại bất kỳ vùng nào sau đó bằng cách sử dụng inpainting. Dưới đây, tôi sẽ chỉ bạn cách tái tạo lại toàn bộ phía bên phải.
Trước tiên, nhấn Send to inpainting để gửi hình ảnh vừa được tạo ra đến tab inpainting. Chắc chắn chọn tab Inpaint. Sử dụng công cụ cọ sơn để tạo mặt nạ trên khu vực bạn muốn tái tạo.
Cài đặt mà tôi sử dụng là:
- Mask mode: Inpaint masked
- Inpaint area: Chỉ mặt nạ
- Only masked padding, pixel: 36-72 (điều chỉnh khi cần)
- Script: None (Đừng quên tắt kịch bản outpainting!)
- Denoising strength: 0.6-0.9. Bạn sẽ muốn xem kết quả và điều chỉnh nó. Tăng lên để thay đổi nhiều hơn.
- Batch size: 2-4. Tạo nhiều hình ảnh cùng một lúc để so sánh.
- Seed: -1 (ngẫu nhiên)
- Nội dung đã được đánh dấu: original hoặc fill. (Fill sẽ sử dụng màu trung bình dưới mặt nạ làm giá trị ban đầu)
Dưới đây là một bức ảnh chụp màn hình về cài đặt inpainting của tôi. Xem Hướng dẫn Inpainting để có thêm giải thích chi tiết hơn.
Cài đặt Inpainting
Sau một vài lượt inpainting, đây là hình ảnh cuối cùng của tôi với kích thước ngang.
Outpainting các cảnh phức tạp
Phương pháp Stable Diffusion trên đã hoạt động tốt với phông nền đơn giản. Tuy nhiên, nó sẽ gặp khó khăn với các cảnh phức tạp. Lý do là phương pháp outpainting chỉ xem xét một khu vực nhỏ của hình ảnh tiếp giáp với khu vực đã mở rộng. Để mở rộng một cảnh phức tạp, cần xem xét thông tin phạm vi xa hơn.
Đó không phải là Stable Diffusion (Xin lỗi các nguyên tố Stable Diffusion!), nhưng có một phương pháp outpainting/inpainting xuất sắc có tên gọi MAT (Mask-Aware Transformer). Đây là một mô hình GAN được thiết kế để xem xét thông tin phạm vi xa hơn khi bổ sung các phần của hình ảnh.
Ví dụ thất bại của outpainting Stable Diffusion
Để minh họa tầm quan trọng của việc mô hình hóa thông tin phạm vi xa hơn, hãy outpainting cảnh phố phức tạp sau đây.
Sử dụng phương pháp trên để mở rộng phía bên phải, chúng ta nhận được hình ảnh này:
Phần mở rộng trông ổn riêng lẻ nhưng không nhất quán với phần còn lại của hình ảnh như một thể.
MAT outpainting không chỉ nhanh hơn, mà còn đem lại kết quả tốt hơn. Xem hình ảnh dưới đây được mở rộng bởi MAT. Nó không hoàn hảo, nhưng tốt hơn nhiều.
Hãy chuyển đến Stable Diffusion Mat Outpainting để sử dụng MAT. Giao diện người dùng chỉ cho phép bạn tạo ra một hình ảnh vuông. Bạn có thể tạo ra một hình ảnh vuông lớn hơn và cắt nó thành kích thước ngang. Scale là tỷ lệ được áp dụng trên hình ảnh đã tải lên trước khi outpainting. Trong hình ảnh trên, tôi đặt scale thành 1 và đặt kích thước xuất ra là 768 để outpainting hình ảnh 512×768 thành 768×768, mở rộng các bên trái và phải.
MAT cũng hoạt động khá tốt với ví dụ của chúng ta. Dưới đây là hình ảnh được mở rộng chiều ngang.
Tùy chọn outpainting khác
Nếu bạn không muốn sử dụng AUTOMATIC1111 vì bất kỳ lý do nào, phần này dành cho bạn.
Stable Diffusion Infinity
Stable Diffusion Infinity là một giao diện người dùng outpainting đồ họa tốt. Demo của Huggingface miễn phí để sử dụng. Nó chạy khá nhanh nếu không có ai khác sử dụng. Bạn cũng có thể khởi chạy một colab notebook để chạy phiên bản riêng của mình.
Giao diện này cho phép bạn outpainting một tile một lúc. Bạn sẽ cần viết một gợi ý cho mỗi tile. Mỗi tile nên có một sự chồng lấn nhỏ với hình ảnh hiện có.
Để biết thêm thông tin chi tiết về Stable Diffusion có thể tìm hiểu thêm tại khóa học Stable Diffusion – Midjourney tại Arcline Academy hoặc có thể tham khảo thêm thông tin các khóa học khác tại đây
Trụ sở chính: 32/19 Nghĩa Hòa, Phường 06, Q. Tân Bình, TPHCM (Nhà Thờ Nghĩa Hòa – Khu Bắc Hải)
Trụ sở miền Tây: L30-09, Đường số 43, Khu Dân cư Stella Megacity, P. Bình Thủy, Q. Bình Thủy, Tp. Cần Thơ
Hotline: 0988 363 967