6.0 KiB
6.0 KiB
Quick Start Guide - PyTorch CNN Training Workflow
TL;DR (Nhanh gọn)
- Server: Chạy
01.prepare_data_on_server.ipynb→ Lưu data - Local: Download data → Chạy
02.train_CNN_PyTorch_local.ipynb→ Huấn luyện - Local: Chạy
03.predict_CNN_PyTorch_local.ipynb→ Dự đoán
Step 1️⃣: Chuẩn Bị Data Trên Server
Chạy notebook:
01.prepare_data_on_server.ipynb
Khi hoàn thành, bạn sẽ có:
data_for_training/
├── average_ndvi.nc (~50-100 MB)
├── average_vv.nc (~50-100 MB)
├── average_vh.nc (~50-100 MB)
└── train_data/
└── ST_training data_updated_1130points_new.* (các file shp)
Download data (từ terminal):
scp -r your_username@your_server_ip:/path/to/data_for_training ./
File size: Khoảng 150-300 MB (tùy vào độ phân giải)
Step 2️⃣: Cài Đặt Environment Trên Local
Tạo virtual environment:
python -m venv pytorch_env
source pytorch_env/bin/activate # On Windows: pytorch_env\Scripts\activate
Cài PyTorch (GPU - recommended):
# For NVIDIA GPU
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# Or CPU only (nếu không có GPU)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
Cài dependencies:
pip install numpy xarray netcdf4 geopandas shapely scikit-learn matplotlib rasterio joblib
Kiểm tra GPU:
python -c "import torch; print(f'GPU: {torch.cuda.is_available()}')"
Step 3️⃣: Huấn Luyện Model
Chạy notebook:
02.train_CNN_PyTorch_local.ipynb
Điều gì sẽ xảy ra:
- ✅ Load data từ file NetCDF
- ✅ Trích xuất 1130 training points
- ✅ Huấn luyện CNN model (100 epochs tối đa)
- ✅ Hiển thị training curves
- ✅ Lưu model
Thời gian:
- GPU (NVIDIA): ~5-15 phút
- GPU (Apple Silicon): ~10-20 phút
- CPU: ~30-60 phút
Output files:
├── model_cnn_pytorch.pt (50-100 MB)
├── model_cnn_pytorch_full.pt (50-100 MB)
└── training_history.png
Step 4️⃣: Dự Đoán Trên Dataset
Chạy notebook:
03.predict_CNN_PyTorch_local.ipynb
Điều gì sẽ xảy ra:
- ✅ Load trained model
- ✅ Predict trên toàn bộ ~11 triệu pixels
- ✅ Tạo classification map
- ✅ Lưu kết quả
Thời gian:
- GPU: ~2-5 phút
- CPU: ~10-20 phút
Output files:
├── land_use_prediction.nc (NetCDF - 50-100 MB)
├── land_use_prediction.tif (GeoTIFF - 50-100 MB)
├── prediction_map.png (Visualization)
└── prediction_metadata.json (Model info + accuracy)
Key Features của Workflow
| Feature | Benefit |
|---|---|
| Modular Design | Các notebook độc lập, có thể chạy riêng lẻ |
| GPU Support | Tự động phát hiện và sử dụng GPU |
| Normalization | Tự động normalize dữ liệu |
| Early Stopping | Tránh overfitting |
| Data Validation | Kiểm tra dữ liệu trước training |
| Visualization | Vẽ training curves và prediction map |
| Metadata | Lưu model info và test accuracy |
Các Model Output
Training Phase
model_cnn_pytorch_full.pt
├── state_dict (weights)
├── num_classes (8)
├── input_size (35 features)
├── label_mapping (class names)
├── mean (normalization)
├── std (normalization)
├── test_accuracy (%)
└── test_loss
Prediction Phase
land_use_prediction.nc
├── land_use_class (data array)
├── x, y coordinates
├── Spatial grid (1080x1080 pixels)
└── CRS (projection)
Model Architecture (CNN)
Input (N, 1, 35)
↓
Conv1d(1, 64, 3) → BatchNorm → ReLU
Conv1d(64, 64, 3) → BatchNorm → ReLU
MaxPool(2) → Dropout(0.25)
↓
Conv1d(64, 128, 3) → BatchNorm → ReLU
Conv1d(128, 128, 3) → BatchNorm → ReLU
MaxPool(2) → Dropout(0.25)
↓
Conv1d(128, 256, 3) → BatchNorm → ReLU
Conv1d(256, 256, 3) → BatchNorm → ReLU
GlobalAvgPool → Dropout(0.25)
↓
FC(256, 128) → BatchNorm → ReLU → Dropout(0.5)
FC(128, 64) → BatchNorm → ReLU → Dropout(0.5)
FC(64, 8) → Softmax
↓
Output (N, 8)
Parameters: ~500K
Trainable: ~450K
Hyperparameters
# Training
epochs = 100
batch_size = 32
learning_rate = 0.001
optimizer = Adam
loss = CrossEntropyLoss
# Regularization
dropout = [0.25, 0.5]
early_stopping_patience = 15
scheduler = ReduceLROnPlateau
# Splitting
train/val/test = 60/20/20
Common Issues & Solutions
| Issue | Solution |
|---|---|
FileNotFoundError |
Chạy notebook 01 trên server trước |
GPU not available |
Cài lại PyTorch với CUDA version đúng |
Out of memory |
Giảm batch_size hoặc dùng CPU |
Model file too large |
File ~100 MB là bình thường |
Prediction quá lâu |
Giảm batch_size trong predict |
Expected Results
Training Accuracy
- Train: ~85-95%
- Val: ~75-85%
- Test: ~75-85%
Output
- Classification map: 1080x1080 pixels
- 8 classes: Lua tom, Lua, CHN, CLN, TS, Song, Dat xay dung, Rung
- Spatial resolution: 10m/pixel
Next Steps
- ✅ Data preparation trên server (30 phút - 2 giờ)
- ✅ Download data xuống local (~1 giờ)
- ✅ Training trên local (~30 phút - 2 giờ)
- ✅ Prediction (~10 phút)
- Validation (so sánh với ground truth)
- Optimization (fine-tune hyperparameters)
Support & Resources
- PyTorch Docs: https://pytorch.org/docs/stable/index.html
- xarray Docs: https://docs.xarray.dev/
- GeoPandas Docs: https://geopandas.org/
Estimated Total Time:
- Server: 1-3 hours
- Local Training: 1-3 hours (GPU) / 3-6 hours (CPU)
- Prediction: 15 minutes
- Total: 2-9 hours depending on hardware
🚀 Ready to start? Run notebook 01.prepare_data_on_server.ipynb on server first!