Repo của nhóm tái hiện và mở rộng mô hình pix2pix cho bài toán sketch → image trên 3 dataset: facades, edges2shoes, CUFS.
-
Report Đồ án: Report của nhóm BÁO CÁO CUỐI KÌ
-
Demo app: Xem hướng dẫn tại DEMO_APP_README để setup
-
Repo gốc: https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
-
W&B tracking: https://wandb.ai/ (liên hệ Bình để được thêm vào project)
-
Checkpoint: Kaggle Dataset private (liên hệ Bình để được thêm vào)
---
- Vào kaggle.com/code → New Notebook
- Bật GPU: Settings → Accelerator → GPU T4 x2
- Bật Internet: Settings → Internet → On
- Vào Add-ons → Secrets → Add a new secret
- Name:
WANDB_API_KEY| Value: API key của bạn (lấy tại https://wandb.ai/settings)
- Add Data → tìm
sketch2image-dataset(của lqb464) → Add - Add Data → tìm
pix2pix-checkpoints(của lqb464) → Add (nếu cần dùng checkpoint)
!git clone -b dev https://github.com/lqb464/Sketch-to-Image-by-Pix2Pix
import os
from kaggle_secrets import UserSecretsClient
os.environ["WANDB_API_KEY"] = UserSecretsClient().get_secret("WANDB_API_KEY")
os.chdir('Sketch-to-Image-by-Pix2Pix/')
!pip install -q -r requirements.txtDataset được mount tại /kaggle/input/datasets/lqb464/sketch2image-dataset/:
sketch2image-dataset/
├── facades/
│ ├── train/ ← ảnh AB ghép (sketch + photo)
│ ├── val/
│ └── test/
├── edges2shoes/
│ ├── train/
│ └── val/
└── cufs/
├── train/
└── test/
Mỗi ảnh là ảnh ghép A|B (sketch bên trái, photo bên phải), kích thước 512×256. Riêng bộ facades thì sketch bên phải, photo bên trái
import yaml, random, numpy as np, torch
CONFIG_PATH = "./configs/baseline_facades.yaml"
# CONFIG_PATH = "./configs/baseline_edges2shoes.yaml"
# CONFIG_PATH = "./configs/baseline_cufs.yaml"
with open(CONFIG_PATH) as f:
cfg = yaml.safe_load(f)
# Fix seed
SEED = cfg.get("seed", 42)
random.seed(SEED); np.random.seed(SEED)
torch.manual_seed(SEED); torch.cuda.manual_seed_all(SEED)Sau đó chạy train:
!python train.py \
--dataroot {cfg['dataroot']} \
--name {cfg['name']} \
--model pix2pix \
--direction {cfg['direction']} \
--batch_size {cfg['batch_size']} \
--n_epochs {cfg['n_epochs']} \
--n_epochs_decay {cfg['n_epochs_decay']} \
--use_wandb# Facades
!python train.py \
--dataroot /kaggle/input/datasets/lqb464/sketch2image-dataset/facades \
--name facades_unet256_lambda100_0524 \
--model pix2pix --direction BtoA \
--batch_size 16 --lr 0.0004 \
--n_epochs 100 --n_epochs_decay 100 \
--use_wandb --no_html
# edges2shoes
!python train.py \
--dataroot /kaggle/input/datasets/lqb464/sketch2image-dataset/edges2shoes \
--name shoes_unet256_lambda100_0524 \
--model pix2pix --direction AtoB \
--batch_size 16 --lr 0.0004 \
--n_epochs 100 --n_epochs_decay 100 \
--use_wandb --no_html
# CUFS
!python train.py \
--dataroot /kaggle/input/datasets/lqb464/sketch2image-dataset/cufs \
--name cufs_unet256_lambda100_0524 \
--model pix2pix --direction AtoB \
--batch_size 8 --lr 0.0004 \
--n_epochs 100 --n_epochs_decay 100 \
--use_wandb --no_html# Facades
!python test.py \
--dataroot /kaggle/input/datasets/lqb464/sketch2image-dataset/facades \
--name facades_unet256_lambda100_0524 \
--model pix2pix --direction BtoA \
--num_test 20 --use_wandb
# edges2shoes
!python test.py \
--dataroot /kaggle/input/datasets/lqb464/sketch2image-dataset/edges2shoes \
--name shoes_unet256_lambda100_0524 \
--model pix2pix --direction AtoB \
--num_test 20 --use_wandb
# CUFS
!python test.py \
--dataroot /kaggle/input/datasets/lqb464/sketch2image-dataset/cufs \
--name cufs_unet256_lambda100_0524 \
--model pix2pix --direction AtoB \
--num_test 20 --use_wandb<dataset>_<netG>_lambda<lambda_L1>_<ngày>
Ví dụ:
facades_unet256_lambda100_0524
shoes_unet128_lambda50_0525
cufs_unet256_lambda100_0526
main ← chỉ merge khi đã kiểm tra kỹ
dev ← branch tổng hợp hàng ngày
exp/<tên> ← mỗi experiment một branch riêng
Ví dụ:
exp/ablation-unet128
exp/ablation-lambda50
exp/arch-attention
Xem chi tiết hướng dẫn tại DEMO_APP_README để setup
**Option 1: Chạy script **
chmod +x run_app.sh
./run_app.shOption 2: Chạy thủ công
# Cài đặt dependencies
pip install -r requirements_app.txt
# Chạy app
python app.pyApp sẽ mở tại http://127.0.0.1:7860 hoặc public link sẽ xuất hiện ( nếu chạy trên Colab)
- Upload sketch - Chọn ảnh sketch (đen trắng)
- Bấm "Generate" - Chạy model inference
- Xem kết quả - Ảnh sinh ra hiển thị ngay
Đường dẫn checkpoint model Có thể download checkpoint pretrained sẵn tại: checkpoint_model_link
Mặc định app tìm model tại:
results/checkpoints/best_model.pklcheckpoints/best_model.pkl
- Không commit dataset lên repo —
datasets/đã có trong.gitignore - Checkpoint lưu trên Kaggle Dataset private, không push lên GitHub
- Mọi experiment phải log lên W&B
- Khi có kết quả mới → báo vào nhóm Messenger + push lên branch tương ứng

