Tách background ảnh động vật

Hôm nay mình giới thiệu 1 repo Github có khả năng tách nền ảnh động vật. Trong số hàng vạn repo ngoài kia thì đây là 1 repo chạy được và kết quả cũng khá ok.

Bài viết này hướng dẫn cách cài đặt vì phải cài đặt đúng version của các thư viện Python mới chạy được.

Cài đặt

Source code này viết cho Ubuntu nên nếu chạy bằng Windows sẽ có rất nhiều lỗi. Do đó bạn phải cài Ubuntu, có thể là bản 18.04 hoặc 20.04 đều được, có 3 cách để cài Ubuntu:
Cách 1: cài Ubuntu lên máy thật, ưu điểm là bạn có thể khai thác tối đa phần cứng.
Cách 2: cài Ubuntu lên máy ảo (Virtual Box, VM ware hoặc Docker tùy bạn), ưu điểm là dễ dàng snapshot hoặc revert
Cách 3: dùng WSL (Windows Subsystem Linux)

Mình cài Ubuntu 18.04 để chạy source code này bằng WSL với ưu điểm là truy cập trực tiếp file trong Windows. Nhược điểm là không chạy được CUDA nên không tăng tốc xử lý bằng GPU được.

Sau khi cài đặt xong Ubuntu, tùy theo phiên bản bạn cài đặt mà sẽ có Python 3 hay không. Ubuntu WSL 18.04 cài sẵn Python 3.6.9 x64 nên mình không cần phải cài Python, tuy nhiên phải upgrade pip bằng lệnh:
sudo pip3 install --upgrade pip

Clone source code
git clone https://github.com/JizhiziLi/animal-matting.git

Cài đặt thư viện pip: các bạn sửa file requirements.txt bằng nội dung bên dưới, các dòng bôi đậm là thay đổi so với file gốc:
numpy==1.19.2
opencv-python==4.4.0.46
Pillow==8.0.0
scikit-image==0.17.2
scipy==1.5.3
torch==1.7.0
torchvision==0.8.1
tqdm==4.51.0

Rồi cài đặt bằng lệnh
sudo pip3 install -r requirements.txt

Test source code

Các bạn download file model model_r34_2b_gfm_tt.pth (480 MB – Google Drive). Sau đó tạo folder models rồi copy file vừa download vào.

Để chạy thì các bạn gõ lệnh:
python3 core/test_samples.py --cuda --arch=e2e_resnet34_2b_gfm_tt --model_path=models/model_r34_2b_gfm_tt.pth --pred_choice=3 --hybrid

Lệnh trên sẽ tách background ảnh động vật nằm trong folder samples\original, kết quả nằm trong 2 folder là samples\result_alphasamples\result_color. Bên dưới là ảnh mình thử nghiệm:

Có hình đúng có hình sai, nếu bạn thấy chưa đủ độ chính xác thì có thể training thêm. Có thể thấy ảnh nào có background đơn giản, có độ tương phản cao và blur thì sẽ tách dễ dàng hơn.

Nếu có vấn đề gì thì bạn đặt câu hỏi vào group Thị giác máy tính, mình sẽ trả lời.

Source code

https://github.com/JizhiziLi/animal-matting

Leave a Reply