Source code phục hồi ảnh cũ bị mờ bằng Real-ESRGAN

Hiện nay có nhiều source code mã nguồn mở để phục hồi ảnh cũ. Bài viết này giới thiệu Real-ESRGAN – mã nguồn chạy được và hoạt động hiệu quả như giới thiệu.

Nếu bạn không rành về code mà muốn sử dụng thì xem link hướng dẫn sử dụng Real-ESRGAN online ở đây:
https://viscomsolution.com/phuc-hoi-anh-bi-mo-nhoe-bang-cong-cu-online-mien-phi/

Đây là tool dành cho Anime, Wibu,… tuy nhiên phục hồi ảnh cũ xưa cũng rất tốt.

Source code cung cấp file binary exe, Colab Notebook để bạn sử dụng. Nếu bạn muốn chạy trên PC của mình thì làm theo các bước sau:

Clone repo

Dùng git command hoặc Source tree/Tortoise Git để clone:
git clone https://github.com/xinntao/Real-ESRGAN.git

Cài đặt required packages

PC mình đang cài đặt Python 3.7.3 x64 trên Windows 10.

Cài đặt Pytorch CUDA hoặc CPU đều được, mình dùng CUDA 11.3
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113

Sau đó cài đặt các packages:
pip install basicsr
pip install facexlib
pip install gfpgan
pip install -r requirements.txt
python setup.py develop

Sau khi cài đặt xong các bạn download file pretrain RealESRGAN_x4plus.pth bỏ vào folder Real-ESRGAN\experiments\pretrained_models

Run source code

python inference_realesrgan.py -n RealESRGAN_x4plus -i 4229808217108.jpg -o outfile --fp32 --face_enhance -s 1

Giải thích command:

  • -n RealESRGAN_x4plus: chọn model đã download ở trên
  • -i 4229808217108.jpg: ảnh input
  • -o outfile: folder chứa ảnh output
  • –fp32: chọn độ chính xác số float, có thể chọn –fp64 (mặc định) hoặc –fp16 nếu máy bạn không đủ VRAM
  • –face_enhance: thêm tham số này nếu ảnh input có khuôn mặt
  • -s 1: tỷ lệ scale, 1 là giữ nguyên, mặc định là 4

Kết quả sẽ lưu trong folder outfile bạn đã chọn. Một số kết quả để bạn tham khảo

Source code

https://github.com/NightmareAI/Real-ESRGAN

Khắc phục 1 số lỗi thường gặp

ModuleNotFoundError: No module named ‘torchvision.transforms.functional_tensor’
Vào folder basicsr và sửa file data\degradations.py. VD: C:\Users\vohungvi\AppData\Local\Programs\Python\Python38\Lib\site-packages\basicsr\datadegradations.py

Sửa dòng:
from torchvision.transforms.functional_tensor import rgb_to_grayscale

Thành
from torchvision.transforms.functional import rgb_to_grayscale

ImportError: cannot import name ‘Self’ from ‘typing_extensions’
Cài đặt package typing_extensions 4.12.2
pip install typing_extensions==4.12.2

RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd
Cài đặt package numpy 1.24.4
pip install numpy==1.24.4

Error CUDA out of memory

Lỗi này xảy ra khi bạn chạy với GPU có ít VRAM, VD 6GB VRAM. Khi đó bạn cần thêm tham số –tile 400 để khắc phục lỗi.

python inference_realesrgan.py -n RealESRGAN_x4plus -i 4229808217108.jpg -o outfile --fp32 --face_enhance -s 1 --tile 400