# 自编码器(Autoencoder)训练项目 **Repository Path**: az13js/Autoencoder ## Basic Information - **Project Name**: 自编码器(Autoencoder)训练项目 - **Description**: 一个完整的自编码器(Autoencoder)训练项目。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-28 - **Last Updated**: 2026-01-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 自编码器 基于 PyTorch 的简单卷积自编码器实现,用于图像特征提取与重建。 ## 项目结构 ``` project/ ├── images/ # 原始图片数据集目录(用户自备) ├── checkpoints/ # 训练检查点保存目录(自动生成) ├── outputs/ # 最终模型和日志保存目录(自动生成) ├── config.py # 全局配置参数 ├── dataset.py # 数据加载与预处理 ├── model.py # 自编码器网络定义(Encoder + Decoder) ├── utils.py # 工具函数(检查点、指标计算) ├── train.py # 训练主程序 ├── inference.py # 推理脚本(仅编码器) └── visualize_reconstruction.py # 重建效果可视化 ``` ## 环境要求 - Python 3.8+ - torch - torchvision - pillow - tqdm - numpy - matplotlib ```bash python3 -m venv .venv source .venv/bin/activate python3 -m pip install torchvision --index-url https://download.pytorch.org/whl/cpu python3 -m pip install tqdm matplotlib scikit-learn ``` ## 使用步骤 ### 1. 准备数据 将训练图片(JPG/PNG/BMP等格式,300-400张)放入 `./images` 目录。 ### 2. 训练模型 ```bash python train.py ``` - 默认训练100个epoch,每10个epoch自动保存检查点到 `checkpoints/` - 最佳模型自动保存为 `checkpoints/best_model.pth` - 训练完成后,最终模型保存在 `outputs/final_autoencoder.pth` 控制台将实时显示: - 训练/测试损失(MSE) - 重建质量(PSNR,单位dB,值越大越好) - 学习率变化 ### 3. 观察重建效果 ```bash python visualize_reconstruction.py ``` - 随机从 `images` 目录选择一张图片 - 自动编码并解码重建 - 生成三图对比:原图 | 重建图 | 差异图 - 结果保存至 `outputs/reconstruction_时间戳.png` ### 4. 单独使用编码器(推理) ```bash python inference.py ``` 演示如何加载训练好的编码器提取图片的潜在向量(Latent Vector)。 ## 关键配置(config.py) | 参数 | 默认值 | 说明 | |------|--------|------| | `IMG_SIZE` | 128 | 输入图片尺寸(宽×高) | | `LATENT_DIM` | 256 | 编码器输出维度,数值越小压缩率越高 | | `TRAIN_SPLIT` | 0.8 | 训练集占比(80%训练,20%测试) | | `BATCH_SIZE` | 32 | 批次大小,根据显存调整 | | `EPOCHS` | 100 | 总训练轮数 | | `CHECKPOINT_INTERVAL` | 10 | 检查点保存间隔(epoch) | ## 模型说明 **编码器(Encoder)**:4层卷积下采样,将输入图像压缩为 `LATENT_DIM` 维向量。 **解码器(Decoder)**:4层转置卷积上采样,从潜在向量重建原始图像。 支持任意尺寸输入图片,自动缩放/裁剪至 `IMG_SIZE` 处理。 ## 注意事项 - 首次运行会自动创建 `checkpoints/` 和 `outputs/` 目录 - 支持断点续训:在 `train.py` 中取消相关注释可恢复训练 - 重建质量取决于 `LATENT_DIM` 大小和数据集复杂度 - 若重建模糊,可尝试增大 `LATENT_DIM` 或增加训练轮数