Tiếng Việt | English
Pipeline LiDAR nhị phân:
- Lọc đất (SMRF hoặc CSF)
- Merge (ground từ thuật toán + giữ lớp non-ground gốc)
- HAG (HeightAboveGround)
- ML nhị phân (đất vs không phải đất)
pip install pdal laspy numpy scikit-learn joblib matplotlib
pip install cloth-simulation-filter # chỉ cho mode CSF- Nhãn nội bộ cho model:
1= ground0= non-ground
- Nhãn ghi ra LAS:
- ground -> class
2 - non-ground -> class
1
- ground -> class
Tham số mặc định nằm trong config.json.
| Phần | Tham số |
|---|---|
smrf |
slope, window, threshold, scalar |
csf |
cloth_resolution, rigidness, slope_smooth, class_threshold |
training |
max_train_points, min_class_points, sample_ratio |
random_forest |
n_jobs, n_estimators, class_weight |
# Train model nhị phân với SMRF
python train_classify.py --mode train --input "data/**/*.las" --ground-method smrf \
--ml-model random-forest --model models
# Train với nhãn gốc làm target (khuyến nghị khi nhãn gốc đã QA/QC)
python train_classify.py --mode train --input "data/**/*.las" --ground-method smrf \
--ml-model random-forest --model models --train-target original
# Train model nhị phân với CSF
python train_classify.py --mode train --input "data/**/*.las" --ground-method csf \
--ml-model random-forest --model modelsOutput ví dụ (đã thêm train target để tránh ghi đè):
models/smrf_rf_merged.savmodels/smrf_rf_orig.sav
--train-target:
merged(mặc định): train bằng nhãn binary sau ground reclassification + mergeoriginal: train bằng nhãn binary gốc (class 2vs non-2) nhưng vẫn dùng feature tạo từ SMRF/CSF
# Evaluate theo nhãn binary gốc (mặc định)
python train_classify.py --mode evaluate --input "test/**/*.las" --ground-method smrf \
--model models/smrf_rf_orig.sav --output-dir results
# Evaluate theo nhãn binary merged
python train_classify.py --mode evaluate --input "test/**/*.las" --ground-method smrf \
--model models/smrf_rf_merged.sav --output-dir results --eval-target merged
# Evaluate và đồng thời xuất LAS dự đoán
python train_classify.py --mode evaluate --input "test/**/*.las" --ground-method smrf \
--model models/smrf_rf_orig.sav --output-dir results --save-eval-pred-las--eval-target:
original(mặc định): so với nhãn binary gốc (class 2vs non-2)merged: so với nhãn binary sau reclassification + merge
Output khi bật --save-eval-pred-las:
results/<model_name>/predicted_las/*_eval_predicted.las
# Predict chuẩn (chạy lại SMRF/CSF)
python train_classify.py --mode predict --input "new/**/*.las" --ground-method smrf \
--model models/smrf_rf_orig.sav
# Predict từ LAS đã premerged (không chạy lại SMRF/CSF)
python train_classify.py --mode predict --input "new/**/*.las" \
--model models/smrf_rf_orig.sav --use-premergedMỗi abc.las -> abc_predicted.las với nhãn LAS nhị phân (2 ground, 1 non-ground).
- Giữ nhất quán pipeline train/predict (
smrfvscsfvs--use-premerged). - Dữ liệu lớn: dùng
--sample-ratio 0.01. - Ground quality quan trọng nhất: ưu tiên tối ưu precision ground trước.