Biến ảnh 2D thành model 3D

Bài viết này hướng dẫn cách biến ảnh 2D thành model 3D bằng PiFuHD trên Windows. Từ 1 ảnh người bạn có thể tạo ra 1 model 3D mặc dù ảnh input chỉ là chụp phía trước mặt.

Do source code được viết cho Ubuntu nên chúng ta phải sửa đổi lại chút ít để có thể chạy được trên windows.

Một số ví dụ mẫu

Input của thuật toán là ảnh model 2D kích thước 512×512 pixel, output là model 3D đuôi *.obj. Trên windows 10 có cài sẵn chương trình 3D viewer để xem kết quả, nếu bạn muốn chỉnh sửa có thể dùng Paint 3D.

Hướng dẫn cách chạy ứng dụng

  • Bước 1: clone source code tại link: https://github.com/facebookresearch/pifuhd
  • Bước 2: cài đặt Python 3.7 x64, chọn bản Windows x86-64 executable installer để download, cài đặt xong thì restart máy
  • Bước 3: download model PiFuHD tại link: pifuhd.pt (1.44 GB) (Link dự phòng: Google Drive)
  • Bước 4: tạo folder checkpoints rồi copy file pifuhd.pt vào.
  • Bước 5: Tiếp theo bạn cài các package Python theo lệnh pip install -r requirements.txt
  • Bước 6: cài đặt pytorch

Có 1 điều rất quan trọng là pytorch không cài được trên Windows bằng lệnh vì khác tên package. Trên Ubuntu là pytorch còn trên Windows là torch, các bạn phải vào trang chủ Pytorch để download. Các bạn chọn như hình dưới để lấy câu lệnh cài đặt

pip install torch==1.7.0+cu101 torchvision==0.8.1+cu101 torchaudio===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html

Cài đặt để chạy với GPU

Nếu máy bạn có GPU NVIDA thì GPU sẽ giúp tăng tốc xử lý gấp nhiều lần. Chạy test thực tế với 1 ảnh 512 pixel thì:

  • CPU Intel Core i5 2500 chạy mất 7 phút (420 giây)
  • GPU GTX 2070 8GB mất 37 giây

Nghĩa là GPU xử lý công việc chuyển ảnh 2D thành 3D nhanh gấp 11 lần CPU.

Chúng tôi recommend CUDA 10.1 vì hiện tại CUDA 10.1 chạy ổn định với nhiều source code Deep Learning.

Lưu ý: source code chỉ chạy được với GPU có 8GB vRAM trở lên

Các bạn cài đặt các thư viện cần thiết như bước trên, sau đó các bạn làm theo bài viết Tăng tốc Deep Learning bằng CUDA 10.1 . Restart máy là có thể chạy được GPU.

Cách sử dụng

Đầu tiên các bạn tách background từ ảnh bằng trang web remove.bg. Sau khi tách background xong các bạn resize thành ảnh có kích thước 512 x 512 pixel giống hình dưới.

Cách đơn giản nhất để tạo ảnh có background trong suốt với kích cỡ 512 pixel là dùng Photoshop. Sau khi download ảnh từ remove.bg thì vào menu Image -> Canvas size, sau đó chọn kích thước mong muốn.

Sau đó copy ảnh vào folder sample_images rồi tạo file txt với đuôi là _rect.txt. Ví dụ bạn có ảnh là abc.png thì tạo file abc_rect.txt với nội dung như sau:

0
0
512
512

Sau đó chạy lệnh
python -m apps.simple_test --use_rect --resolution 512

Sau khi chạy xong chương trình sẽ tạo kết quả tại folder results\pifuhd_final\recon, trong đó có 2 file: file png và obj.

Kết luận

– Bài này ở độ khó trung bình, không cần cài đặt hay chuẩn bị quá nhiều.
– Model được cung cấp sẵn chạy được với một số ảnh đơn giản, ảnh có tóc hay phức tạp dễ chạy sai.
– Có nhiều cách để sử dụng, tuy nhiên bài viết này chỉ hướng dẫn cách đơn giản nhất để làm quen.

Source code

https://github.com/facebookresearch/pifuhd

Chúng tôi đã fork ra 1 source code riêng và thêm các file sample: https://github.com/thigiacmaytinh/pifuhd

Leave a Reply