6.7 KiB
Executable File
6.7 KiB
Executable File
Tóm tắt cập nhật Training Interface & API
📋 Những gì đã cập nhật
1. Backend API (api_server.py)
✅ Cập nhật giá trị mặc định từ 01.train_ODC.ipynb:
- Bbox mới:
[105.5, 9.2, 106.4, 10.0](thay vì[105.6, 9.3, 106.2, 9.8]) - Thời gian mới:
2023-03-01→2023-12-31(thay vì2023-03-01→2023-05-31)
✅ Thêm Label Mapping Constants:
DEFAULT_LABEL_MAPPING = {
"Lua tom": "0",
"Lua": "1",
"CHN": "2",
"CLN": "3",
"TS": "4",
"Song": "5",
"Dat xay dung": "6",
"Rung": "7",
}
✅ API Endpoints mới:
1. GET /api/training/labels
- Trả về danh sách tất cả labels và label mapping
- Response:
{
"label_mapping": {...},
"label_names": {...},
"count": 8,
"labels": [...]
}
2. GET /api/training/files
- List tất cả shapefile trong thư mục
/train - Hiển thị: filename, size, số điểm, label column, unique labels
- Response:
{
"files": [
{
"filename": "ST_training data_updated_1130points_new.shp",
"path": "train/...",
"size_mb": 0.15,
"point_count": 1130,
"label_column": "Hientrang",
"unique_labels": [...],
"label_count": 8
}
],
"count": 2,
"directory": "train/"
}
3. GET /api/training/shapefile/{filename}/labels
- Đọc chi tiết labels từ một shapefile cụ thể
- Trả về: số điểm, unique labels, label counts, bbox, columns
- Response:
{
"filename": "...",
"label_column": "Hientrang",
"point_count": 1130,
"unique_labels": [...],
"label_count": 8,
"labels": [
{
"name": "Lua tom",
"code": "0",
"count": 150,
"mapped": true
},
...
],
"bbox": [105.5, 9.2, 106.4, 10.0],
"columns": [...]
}
✅ Cập nhật Presets:
- Preset 1: "PC - Nhỏ" với bbox mới
- Preset 2: "Server - Trung bình" với bbox mới
- Preset 3: "Full - ODC" - PRESET MỚI từ 01.train_ODC.ipynb
- Bbox:
[105.5, 9.2, 106.4, 10.0] - Time:
2023-03-01→2023-12-31 - Max scenes: 1
- Resolution: 10m
- Bbox:
2. Frontend UI (training_interface.html)
✅ Cập nhật giá trị mặc định trong form:
- Hidden inputs bbox:
minLon: 105.5, minLat: 9.2, maxLon: 106.4, maxLat: 10.0
- Date inputs:
startDate: 2023-03-01, endDate: 2023-12-31
✅ Thêm section "Training Data (Shapefile)":
<h3>📊 Training Data (Shapefile)</h3>
<select id="trainingShapefile">...</select>
Features:
- Dropdown chọn shapefile từ thư mục
/train - Tự động load default:
ST_training data_updated_1130points_new.shp - Hiển thị thông tin: số điểm, label column, số lớp, bbox
✅ Thêm phần hiển thị thông tin Shapefile:
<div id="shapefileInfo">
- Số điểm
- Label column
- Số lớp
- Bbox
- Phân bố labels (với icon ✅/⚠️)
- Button "Áp dụng Bbox từ Shapefile"
</div>
✅ JavaScript Functions mới:
1. loadTrainingFiles()
- Load danh sách shapefile từ API
- Populate dropdown
- Auto-select default shapefile
2. loadShapefileLabels(filename)
- Load chi tiết labels từ shapefile
- Hiển thị phân bố labels
- Highlight labels đã map vs chưa map
3. applyShapefileBbox()
- Áp dụng bbox từ shapefile đã chọn
- Cập nhật form inputs
- Vẽ rectangle trên map
- Hiển thị notification
4. showNotification(type, message)
- Helper function để hiển thị notifications
- Support types: success, error, warning
✅ Cập nhật form submission:
- Thêm
training_shapefilevào config - Default:
train/ST_training data_updated_1130points_new.shp
✅ Event listeners:
document.getElementById('trainingShapefile').addEventListener('change',
(e) => loadShapefileLabels(e.target.value)
);
3. Bản đồ (Map)
✅ Initial rectangle với bbox mới:
- Tự động vẽ rectangle với bbox từ backend
- Fit map bounds để hiển thị khu vực
✅ Dynamic update từ shapefile:
- Khi chọn shapefile → có thể áp dụng bbox
- Màu khác biệt (xanh dương) để dễ nhận biết
🧪 Test Script
File test_training_api.py để test các endpoints:
# Run API server (terminal 1)
conda activate env_01
python api_server.py
# Run test script (terminal 2)
conda activate env_01
python test_training_api.py
Test coverage:
- ✅ GET /api/training/labels
- ✅ GET /api/training/files
- ✅ GET /api/training/shapefile/{filename}/labels
- ✅ GET /api/config/presets
📊 Workflow mới
Cách sử dụng trên giao diện:
-
Mở Training Interface: http://localhost:8000/training
-
Chọn Training Data:
- Chọn shapefile từ dropdown "📊 Training Data"
- Xem thông tin: số điểm, labels, bbox
- (Optional) Click "📍 Áp dụng Bbox từ Shapefile"
-
Chọn Khu vực:
- Option 1: Chọn tỉnh thành
- Option 2: Vẽ rectangle trên map
- Option 3: Áp dụng bbox từ shapefile
- Option 4: Chọn preset
-
Cấu hình thời gian và parameters:
- Thời gian mặc định: 2023-03-01 → 2023-12-31
- Bbox mặc định: [105.5, 9.2, 106.4, 10.0]
-
Start Training:
- Form tự động gửi
training_shapefileparameter - Backend sẽ dùng đúng shapefile đã chọn
- Form tự động gửi
🎯 Kết quả
✅ Backend:
- 3 API endpoints mới hoạt động
- Default values khớp với notebook
- Label mapping được share
✅ Frontend:
- UI mới để chọn shapefile
- Hiển thị chi tiết labels
- Auto-load default shapefile
- Bbox từ shapefile có thể áp dụng
✅ Map:
- Initial bbox khớp với backend
- Update bbox từ nhiều nguồn
- Visual feedback rõ ràng
🔍 Debug & Verify
Check API:
# List training files
curl http://localhost:8000/api/training/files
# Get labels
curl http://localhost:8000/api/training/labels
# Get shapefile labels
curl "http://localhost:8000/api/training/shapefile/ST_training data_updated_1130points_new.shp/labels"
Check Browser Console:
- F12 → Console
- Xem logs khi chọn shapefile
- Check network requests
📝 Notes
-
Training shapefile path format:
- Frontend select value:
ST_training data_updated_1130points_new.shp - Backend receives:
train/ST_training data_updated_1130points_new.shp - Auto-prepend
train/prefix in form submission
- Frontend select value:
-
Label mapping:
- ✅ icon: Label có trong DEFAULT_LABEL_MAPPING
- ⚠️ icon: Label chưa có trong mapping
-
Bbox sources:
- Default từ backend
- Từ tỉnh thành
- Từ shapefile
- Từ preset
- Vẽ thủ công
Tất cả đều hoạt động đồng bộ!