目录

CGAN_jittor_NKU_CG

本项目为 南开大学《计算机图形学》课程小作业,基于官方示例代码补全实现,并在此基础上增加了若干实用功能。


项目简介

Conditional GAN(CGAN)是在传统 GAN 的基础上引入条件信息(类别标签)的生成模型,使生成器能够按照指定类别生成对应图像。

本项目使用 Jittor + MNIST 数据集,实现了一个完整的 CGAN 训练与生成流程,支持:

  • 条件生成(按数字 0–9 生成手写数字)
  • 模型断点恢复(resume)
  • 训练过程与结果日志输出
  • 生成结果图片保存

环境依赖

  • Python
  • Jittor

Jittor 安装

参考清华大学 Jittor 官方文档:
https://cg.cs.tsinghua.edu.cn/jittor/download/

在 Ubuntu 22.04 下,如遇 python3.7-dev 不存在的问题,可直接安装:

sudo apt install python3-dev

项目结构

.
├── CGAN.py              # 最终可运行版本
├── result.png           # 最终生成结果示例
├── .gitignore
└── README.md

运行方式

1. 从头开始训练

python3 CGAN.py

常用参数示例:

python3 CGAN.py --n_epochs 20 --sample_interval 10000

2. 断点恢复训练

若当前目录下存在:

  • generator_last.pkl
  • discriminator_last.pkl

可使用:

python3 CGAN.py --resume

程序将自动加载已有模型并继续训练。


实现说明

1. TODO 补全

在官方示例代码基础上,完成了以下 TODO:

  • 补全判别器最后的线性输出层(输出真假得分)
  • 实现判别器 execute(forward)逻辑
  • 完整实现判别器对真实样本 / 生成样本的损失计算

使 CGAN 能够正常训练并收敛。


2. 新增功能

(1)断点恢复(resume)

  • 新增 --resume 命令行参数
  • 支持从 .pkl 权重文件恢复训练
  • 适合 CPU 环境下长时间训练或中途异常中断的情况

(2)结果日志输出

  • 训练过程中输出 Generator / Discriminator loss
  • 训练结束后评估判别器在 MNIST 测试集上的表现:
    • 真实样本判真准确率
    • 生成样本判假准确率
    • 各数字类别的平均正确率

实验结果说明

在 CPU 环境下训练 20 个 epoch 后:

  • 判别器在测试集上的准确率约为 0.77
  • 各类别平均正确率均在 0.7 以上

最终可按指定数字序列生成对应手写数字图像(如学号)。

关于

A Jittor implementation of Conditional GAN (基于Jittor实现CGAN). This project is a coursework assignment for the Computer Graphics course at Nankai University (南开大学计算机图形学课程作业).

35.0 KB
邀请码