一个基于深度学习的智能气象等值线自动修正工具,能够检测并修复气象数据可视化中的等值线错误。
- 🔍 智能问题检测:自动识别等值线图中的断线、交叉、锯齿等问题
- 🛠️ AI智能修正:基于深度学习模型自动修复等值线
- 📐 物理约束集成:融合气象学物理规则,确保修正结果合理
- 🎨 多模型支持:U-Net、扩散模型、条件GAN等多种AI架构
- 🌐 Web可视化:友好的Web界面,实时查看修正效果
weather-contour-ai/
├── data/ # 数据目录
│ ├── raw/ # 原始气象数据
│ ├── processed/ # 处理后的数据
│ └── synthetic/ # 合成的训练数据
├── notebooks/ # Jupyter笔记本
│ ├── 01_data_exploration.ipynb
│ ├── 02_model_prototyping.ipynb
│ └── 03_experiment_results.ipynb
├── src/ # 源代码
│ ├── data/ # 数据处理模块
│ ├── models/ # 深度学习模型
│ ├── training/ # 训练脚本
│ ├── evaluation/ # 评估工具
│ └── visualization/ # 可视化工具
├── configs/ # 配置文件
├── tests/ # 测试文件
├── scripts/ # 实用脚本
├── environment.yml # Conda环境配置
├── requirements.txt # Pip依赖
└── README.md # 本文件
# 使用conda创建环境
conda env create -f environment.yml
conda activate weather-contour-ai
# 或手动安装
conda create -n weather-contour-ai python=3.10
conda activate weather-contour-ai
# 安装科学计算包
conda install -c conda-forge numpy pandas matplotlib scipy jupyterlab
conda install -c conda-forge xarray netcdf4 cartopy metpy
# 安装深度学习框架
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install diffusers transformers accelerate
# 安装项目依赖
pip install -r requirements.txt# 下载示例数据
python scripts/download_sample_data.py
# 生成合成训练数据
python scripts/generate_synthetic_data.py# 训练U-Net模型
python src/training/train_unet.py --config configs/unet_config.yaml
# 训练扩散模型
python src/training/train_diffusion.py --config configs/diffusion_config.yaml# 启动Gradio界面
python src/web/gradio_app.py
# 或启动Streamlit应用
streamlit run src/web/streamlit_app.py访问 http://localhost:7860 使用交互式界面。
from src.correction_system import ContourCorrectionSystem
# 初始化系统
corrector = ContourCorrectionSystem()
# 加载数据
contour_data = load_contour_data("data/raw/example.nc")
# 进行修正
corrected_data = corrector.correct(
contour_data,
method="unet", # 可选择: unet, diffusion, hybrid
confidence_threshold=0.8
)
# 保存结果
save_corrected_data(corrected_data, "results/corrected_contour.nc")import weather_contour_ai as wca
# 快速修正函数
result = wca.fix_contour(
input_file="input_contour.png",
meteo_data="weather_data.nc",
output_file="corrected.png",
visualize=True
)
# 批量处理
wca.batch_process(
input_dir="data/raw/",
output_dir="results/",
meteo_data_dir="meteo_data/"
)| 模型 | 准确率 | 推理速度 | 内存占用 | 适用场景 |
|---|---|---|---|---|
| U-Net | 92.3% | 快 ⚡ | 低 | 实时修正 |
| Diffusion | 95.7% | 慢 🐌 | 高 | 高质量修正 |
| Hybrid | 94.1% | 中 ⏱️ | 中 | 平衡场景 |
| 问题类型 | 传统方法 | AI修正 | 提升 |
|---|---|---|---|
| 断线修复 | 78.2% | 96.5% | +18.3% |
| 平滑处理 | 65.4% | 91.2% | +25.8% |
| 拓扑纠正 | 42.1% | 88.7% | +46.6% |
| 综合修正 | 61.9% | 92.3% | +30.4% |
# configs/custom_training.yaml
model:
name: "unet_advanced"
backbone: "resnet50"
input_channels: 3
output_channels: 1
training:
epochs: 200
batch_size: 16
learning_rate: 0.001
loss_function: "dice_focal"
data:
augmentation:
rotation_range: 30
zoom_range: [0.8, 1.2]
horizontal_flip: truefrom src.models.physics_constraints import PhysicsValidator
validator = PhysicsValidator(
gradient_limit=5.0, # °C/km
smoothness_weight=0.3,
enforce_topology=True,
station_pinning=True # 保持测站观测值
)# 运行所有测试
pytest tests/ -v
# 运行特定测试
pytest tests/test_contour_correction.py -v
# 生成测试报告
pytest --cov=src --cov-report=html# 代码格式化
black src/
isort src/
# 代码检查
flake8 src/
mypy src/
# 使用预提交钩子
pre-commit install- 在
src/models/下创建新模型类 - 实现
BaseContourModel接口 - 在
src/training/中添加训练脚本 - 在
configs/中添加配置文件 - 更新
model_registry.py
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request
# 构建镜像
docker build -t contour-correction:latest .
# 运行容器
docker run -p 8501:8501 contour-correction
# 使用docker-compose
docker-compose up -d# 部署到Hugging Face Spaces
git push https://huggingface.co/spaces/Repiecer/contour-correction
# 部署到Streamlit Cloud
streamlit deploy src/web/streamlit_app.py我们欢迎各种贡献!请参阅 CONTRIBUTING.md 了解如何开始。
- 报告 Bug
- 提出新功能
- 提交 Pull Request
- 改进文档
- 项目维护者:@Repiecer
- 问题反馈:Issues
- 讨论区:Discussions
- 感谢 Hugging Face 提供的优秀模型库
- 感谢 ECMWF 的气象数据
- 感谢所有开源社区的贡献者
✨ 提示: 本项目正在积极开发中,欢迎反馈和建议!