Có lẽ nhiều bạn cũng đã biết sức mạnh của AI đến từ các model. Inpaint Anything cũng vậy, đứng sau Inpaint Anything là Segment Anything Model (SAM), và SAM là con đẻ của META AI. Còn META AI thì là của người mà ai cũng biết là ai đấy. Điều đó cũng đã chứng tỏ sức mạnh và tiềm năng rất lớn của Inpaint Anything. SAM được đào tạo từ 11 triệu ảnh và 1 tỉ mask, phản hồi lại phân vùng chỉ trong vòng 50 mili giây.
Quay lại với Inpaint Anything, một ứng dụng lấy SAM làm model chính. Công việc của Inpaint Anything là dùng SAM để phân vùng các thành phần một cách riêng biệt, và thêm, bớt, thay đổi vật thể trong ảnh, video.
Trong phạm vi bài viết, hãy tìm hiểu Inpaint Anything WebUI (phiên bản extension đã được cài trong Kaikun nên mình không viết về cách cài đặt và tải model).
Các model của SAM được cài trong Inpaint Anything gồm có
Hiểu đơn giản sam_vit là các model mặc định, sam_hq_vit là các model chất lượng cao hơn của sam_vit. Các model chất lượng cao sẽ cho kết quả tốt hơn nhưng nặng hơn và cần nhiều sức mạnh GPU hơn để sử dụng.
b- base / l - large / h -huge : độ lớn của data của các SAM
FastSAM / Mobile_sam được hiểu là bản SAM lite
Đưa ảnh vào “Input Image”, chọn SAM ID mà bạn muốn và chọn “Run Segment Anything”
Hình input đưa vào sẽ được chia ra thành các mảng màu như bên phải.
> Padding option: tạo ra vùng viền cho ảnh
> Anime style: Inpaint Anything sẽ nhạy cảm hơn với các ảnh có xu hướng Anime.
Chúng ta sẽ dùng cọ để tô và chọn các mảng màu. Trỏ chuột vào hình đã segment, ấn S để phóng to, R để thu nhỏ.
Các bạn không cần tô hết màu sắc, mà chỉ cần chấm vào các màu, chọn “Create Mask”
Kết quả dưới đây cho thấy đa số vùng tóc đã được chọn, tuy nhiên hơi còn phần chân tóc sẽ chưa được tách triệt để.
Chúng ta sẽ phải chọn thêm một số lựa chọn
Expand mask region: Mở rộng pixel của vùng lựa chọn thêm 1px (giống feather ở Photoshop)
Expand mask Iterations: Giá trị px mà mask region sẽ expand thêm.
Trim mask by sketch: Dùng cọ tô vào vùng đã mask, trim mask sẽ cắt vùng đã vẽ ra khỏi vùng mask
Add mask by sketch: Dùng cọ tô vào vùng chưa mask, add mask sẽ thêm cùng đã vẽ vào vùng mask
Giờ mới đến chức năng chính của Inpaint Anything
Inpainting
Sau khi đã có vùng được chọn, chức năng này khá giống như text2img và dùng inpaint. Bạn thêm prompt và negative prompt vào để thay đổi vùng chọn mask.
Iterations: số ảnh được tạo ra trong 1 lần ấn Run Inpainting
Prompt: silver hair
Tóc được blend rất tốt vào ảnh.
Cleaner
Mask bây giờ sẽ là vũ khí, mình muốn xóa vũ khí này đi. Chọn Cleaner, chọn model ID và Run Cleaner. BÙM…
Model ID:
LAMA: model phổ biến và dễ dùng nhất
LDM ( Latent Diffusion Models) : model tốt hơn LAMA, thể hiện chi tiết tốt hơn, yêu cầu GPU lớn hơn
ZITS: tốt hơn model trước nhưng cũng chậm hơn
MAT ( Mask-Aware Transformer): sử dụng để xóa với nhiều vùng mask một lúc
FCF: Texture tạo ra khá tốt, nhưng chỉ hiệu quả với vùng 512 x 512
Manga: Làm việc tốt tranh manga
Controlnet Inpaint
Cũng sử dụng như việc dùng inpaint và controlnet, tuy nhiên chúng ta chỉ có 2 lựa chọn model là “Reference” và “IP-Adapter”.
Mask Only
Chọn alpha mask để tách hình của vùng đã được chọn
Chọn mask để tách vùng đen trắng đã được chọn. Từ đây, chúng ta có thể ấn send to img2img inpaint
Từ tab img2img ta có thể sử dụng được thêm nhiều model controlnet, lora, inversion texture, điều mà inpainting không làm được.
Về ứng dụng khi sử dụng inpaint upload, các bạn có thể xem thêm tại Hướng dẫn làm sản phẩm thương mại như chụp Studio bằng Stable Diffusion
Lưu ý: Ảnh tạo ra được lưu tự động tại outputs/inpaint-anything
Chúc mọi người thành công!