--- title: NAFNet emoji: 🔥 colorFrom: purple colorTo: green sdk: docker app_port: 7860 pinned: false --- # NAFNet FastAPI Backend Backend này kết nối trực tiếp với repo NAFNet đã clone sẵn trong: ```text backend/NAFNet/NAFNet-main ``` Không cần clone lại và không cần di chuyển folder. ## Cấu trúc quan trọng ```text backend/ ├── app/ ├── NAFNet/ │ └── NAFNet-main/ │ ├── basicsr/ │ ├── options/ │ └── setup.py ├── weights/ ├── uploads/ ├── outputs/ ├── requirements.txt └── run.py ``` ## Cài thư viện Chạy tại thư mục `backend`, không chạy trong `backend/NAFNet`: ```powershell cd c:\Users\Admin\Documents\Nam3_Ky2\CV\Final\backend pip install -r requirements.txt ``` Bạn đã cài requirements của NAFNet trong `NAFNet/NAFNet-main` rồi thì vẫn nên chạy lệnh trên để cài thêm FastAPI. ## Checkpoint Đặt checkpoint vào: ```text backend/weights/nafnet_sidd_width32.pth backend/weights/nafnet_sidd_width64.pth backend/weights/nafnet_custom.pth ``` Nếu chưa có checkpoint hoặc NAFNet lỗi, backend sẽ tự fallback sang mock denoise để không crash. ## Chạy API Chạy tại thư mục `backend`: ```powershell python run.py ``` Mở Swagger: ```text http://127.0.0.1:8000/docs ``` ## API endpoints ```text GET /api/health GET /api/models POST /api/denoise POST /api/denoise-json GET /api/outputs/{filename} ``` ## Test curl Trả file ảnh trực tiếp: ```bash curl -X POST "http://127.0.0.1:8000/api/denoise" \ -F "file=@test.jpg" \ --output output.png ``` Trả JSON: ```bash curl -X POST "http://127.0.0.1:8000/api/denoise-json" \ -F "file=@test.jpg" \ -F "model_name=nafnet_sidd_width32" ``` ## Flutter base URL Flutter Web Chrome: ```text http://127.0.0.1:8000 ``` Android Emulator: ```text http://10.0.2.2:8000 ``` Điện thoại thật cùng WiFi: ```text http://IP_LAN_CUA_MAY_TINH:8000 ```