From dcf80c8295bac095d99d80ef41f6ab6937c09db4 Mon Sep 17 00:00:00 2001 From: hienp Date: Fri, 3 Apr 2026 10:12:11 +0700 Subject: [PATCH] =?UTF-8?q?h=C6=B0=E1=BB=9Bng=20d=E1=BA=ABn=20ch=E1=BA=A1y?= =?UTF-8?q?=20v=E1=BB=9Bi=20google=20colab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- COLAB_FRP_DEMO_GUIDE.md | 445 +++++++++++++++++++ cloud_removal_model/CRGAN_generator.json | 11 + cloud_removal_model/GLFCR_generator.json | 11 + cloud_removal_model/SpAGAN_generator.json | 11 + reports/training_report_20260105_112532.html | 347 +++++++++++++++ reports/training_report_20260105_120153.html | 347 +++++++++++++++ reports/training_report_20260105_121146.html | 347 +++++++++++++++ reports/training_report_20260105_123055.html | 347 +++++++++++++++ reports/training_report_20260105_124348.html | 347 +++++++++++++++ reports/training_report_20260105_161723.html | 347 +++++++++++++++ reports/training_report_20260105_225505.html | 347 +++++++++++++++ 11 files changed, 2907 insertions(+) create mode 100644 COLAB_FRP_DEMO_GUIDE.md create mode 100644 cloud_removal_model/CRGAN_generator.json create mode 100644 cloud_removal_model/GLFCR_generator.json create mode 100644 cloud_removal_model/SpAGAN_generator.json create mode 100644 reports/training_report_20260105_112532.html create mode 100644 reports/training_report_20260105_120153.html create mode 100644 reports/training_report_20260105_121146.html create mode 100644 reports/training_report_20260105_123055.html create mode 100644 reports/training_report_20260105_124348.html create mode 100644 reports/training_report_20260105_161723.html create mode 100644 reports/training_report_20260105_225505.html diff --git a/COLAB_FRP_DEMO_GUIDE.md b/COLAB_FRP_DEMO_GUIDE.md new file mode 100644 index 0000000..1dd46ef --- /dev/null +++ b/COLAB_FRP_DEMO_GUIDE.md @@ -0,0 +1,445 @@ +# Demo Website trên Google Colab với FRP + +Hướng dẫn này giúp bạn chạy toàn bộ hệ thống **remote-sensing** trên Google Colab +và expose ra internet qua **FRP (Fast Reverse Proxy)** — không cần ngrok, URL cố định, không giới hạn session. + +--- + +## Yêu cầu + +| Thành phần | Mô tả | +|---|---| +| **Google Colab** | Tài khoản Google thông thường (free tier là đủ) | +| **Google Drive** | Dùng để lưu project và models | +| **1 VPS có IP public** | Chạy `frps` server — VPS $3–5/tháng là đủ | +| **Port mở trên VPS** | 7000 (FRP control) + 8080 (web traffic) | + +--- + +## Phần 1 — Chuẩn bị VPS (chạy 1 lần, giữ mãi) + +### Bước 1.1 — Download FRP lên VPS + +SSH vào VPS rồi chạy: + +```bash +wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz +tar -xzf frp_0.61.1_linux_amd64.tar.gz +cd frp_0.61.1_linux_amd64 +``` + +### Bước 1.2 — Tạo file cấu hình `frps.toml` + +```bash +cat > frps.toml << 'EOF' +bindPort = 7000 +auth.token = "your_secret_token_here" + +# Dashboard để theo dõi kết nối (tuỳ chọn) +webServer.port = 7500 +webServer.user = "admin" +webServer.password = "admin123" +EOF +``` + +> ⚠️ Đặt `auth.token` thành chuỗi bí mật của bạn, ví dụ: `"rs_demo_2026_abc123"`. Phải giống với phía Colab. + +### Bước 1.3 — Chạy frps + +```bash +# Test chạy foreground (Ctrl+C để dừng) +./frps -c frps.toml + +# Chạy nền (production) +nohup ./frps -c frps.toml > frps.log 2>&1 & + +# Kiểm tra đang chạy +ps aux | grep frps +``` + +### Bước 1.4 — Mở firewall VPS + +```bash +# Ubuntu/Debian +ufw allow 7000 # FRP control port +ufw allow 8080 # Web traffic port +ufw allow 7500 # Dashboard (tuỳ chọn) +ufw reload + +# CentOS/RHEL +firewall-cmd --permanent --add-port=7000/tcp +firewall-cmd --permanent --add-port=8080/tcp +firewall-cmd --reload +``` + +### Bước 1.5 — Kiểm tra frps hoạt động + +```bash +# Xem log +tail -f frps.log + +# Kết quả kỳ vọng: +# [frps] frp service started, listen on 0.0.0.0:7000 +``` + +--- + +## Phần 2 — Chuẩn bị Google Drive + +### Bước 2.1 — Upload project lên Drive + +Cấu trúc thư mục trên Google Drive: + +``` +My Drive/ +└── remote-sensing/ + ├── api_server.py + ├── train_module.py + ├── feature_extractor.py + ├── model_manager.py + ├── cloud_removal.py + ├── report_generator.py + ├── generate_previews.py + ├── vietnam_provinces.py + ├── vietnam_provinces_merged.py + ├── utils.py + ├── model_train/ ← copy toàn bộ models đã train + │ ├── *.joblib + │ └── *.json + ├── cloud_removal_model/ ← copy nếu dùng cloud removal DL + │ └── *.pth + ├── predictions/ ← để trống, Colab sẽ tạo output vào đây + ├── reports/ ← để trống + └── training_interface.html ← và tất cả *.html +``` + +> 💡 Upload nhanh nhất: zip toàn bộ folder `remote-sensing`, upload 1 file zip lên Drive, rồi giải nén bằng Colab. + +--- + +## Phần 3 — Notebook Google Colab + +Tạo notebook mới tại [colab.google.com](https://colab.google.com) và paste từng cell sau. + +--- + +### Cell 1 — Mount Drive và di chuyển vào project + +```python +from google.colab import drive +drive.mount('/content/drive') + +import os + +PROJECT_PATH = '/content/drive/MyDrive/remote-sensing' +os.chdir(PROJECT_PATH) + +print(f"Working directory: {os.getcwd()}") +print("Files:", os.listdir()[:10]) +``` + +--- + +### Cell 2 — Giải nén nếu upload dạng zip (tuỳ chọn) + +```python +# Chỉ chạy nếu bạn upload file zip +import zipfile + +ZIP_PATH = '/content/drive/MyDrive/remote-sensing.zip' +EXTRACT_TO = '/content/drive/MyDrive/' + +if os.path.exists(ZIP_PATH): + with zipfile.ZipFile(ZIP_PATH, 'r') as z: + z.extractall(EXTRACT_TO) + print("✅ Extracted successfully") +else: + print("⏭️ No zip found, skipping") +``` + +--- + +### Cell 3 — Cài dependencies (chạy lần đầu, ~8–12 phút) + +```python +print("Installing core API dependencies...") +!pip install -q fastapi uvicorn pydantic + +print("Installing geospatial + ML dependencies...") +!pip install -q \ + numpy pandas xarray rasterio rioxarray geopandas shapely \ + scikit-learn xgboost joblib \ + matplotlib pillow markdown + +print("Installing Planetary Computer dependencies...") +!pip install -q pystac-client planetary-computer odc-stac + +print("Installing PyTorch (GPU)...") +!pip install -q torch torchvision \ + --extra-index-url https://download.pytorch.org/whl/cu118 + +print("✅ All dependencies installed") +``` + +--- + +### Cell 4 — Kiểm tra GPU và môi trường + +```python +import torch + +print(f"PyTorch version : {torch.__version__}") +print(f"GPU available : {torch.cuda.is_available()}") +if torch.cuda.is_available(): + print(f"GPU name : {torch.cuda.get_device_name(0)}") + +import rasterio, xarray, geopandas +print(f"rasterio : {rasterio.__version__}") +print(f"xarray : {xarray.__version__}") +print(f"geopandas : {geopandas.__version__}") +``` + +--- + +### Cell 5 — Download và cấu hình frpc + +```python +import subprocess, os + +# Download frpc +!wget -q https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz \ + -O /tmp/frp.tar.gz +!tar -xzf /tmp/frp.tar.gz -C /tmp/ +!chmod +x /tmp/frp_0.61.1_linux_amd64/frpc + +# ============================================================ +# ⚠️ SỬA 2 DÒNG NÀY TRƯỚC KHI CHẠY +VPS_IP = "123.456.789.000" # IP public của VPS bạn +FRP_TOKEN = "your_secret_token_here" # Phải giống frps.toml trên VPS +# ============================================================ + +frpc_config = f""" +serverAddr = "{VPS_IP}" +serverPort = 7000 +auth.token = "{FRP_TOKEN}" + +[[proxies]] +name = "remote-sensing-web" +type = "tcp" +localIP = "127.0.0.1" +localPort = 8000 +remotePort = 8080 +""" + +with open('/tmp/frpc.toml', 'w') as f: + f.write(frpc_config) + +print(f"✅ frpc configured → VPS: {VPS_IP}:8080") +``` + +--- + +### Cell 6 — Khởi động FastAPI server + +```python +import subprocess, time, os + +os.chdir('/content/drive/MyDrive/remote-sensing') + +# Khởi động FastAPI +server = subprocess.Popen( + ["uvicorn", "api_server:app", + "--host", "127.0.0.1", + "--port", "8000", + "--log-level", "warning"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE +) + +time.sleep(4) + +# Kiểm tra server đã lên chưa +if server.poll() is None: + print("✅ FastAPI server is running on port 8000") +else: + out, err = server.communicate() + print("❌ Server failed to start:") + print(err.decode()[:1000]) +``` + +--- + +### Cell 7 — Khởi động frpc tunnel + +```python +import subprocess, time + +frpc = subprocess.Popen( + ["/tmp/frp_0.61.1_linux_amd64/frpc", "-c", "/tmp/frpc.toml"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE +) + +time.sleep(3) + +if frpc.poll() is None: + print("✅ FRP tunnel is active") + print("=" * 55) + print(f"🌐 Main site : http://{VPS_IP}:8080") + print(f"📊 Dashboard : http://{VPS_IP}:8080/dashboard") + print(f"🏋️ Training : http://{VPS_IP}:8080/training") + print(f"🔮 Prediction : http://{VPS_IP}:8080/prediction") + print(f"📦 Batch : http://{VPS_IP}:8080/batch") + print(f"🌿 NDVI : http://{VPS_IP}:8080/ndvi") + print(f"📈 Reports : http://{VPS_IP}:8080/reports") + print("=" * 55) +else: + out, err = frpc.communicate() + print("❌ FRP failed:") + print(err.decode()[:500]) +``` + +--- + +### Cell 8 — Kiểm tra toàn bộ hệ thống + +```python +import urllib.request, json + +BASE = "http://127.0.0.1:8000" +checks = [ + ("/api/network/check", "Network connectivity"), + ("/api/models/list", "Model list"), + ("/api/provinces/list", "Province list"), + ("/api/cloud-removal/methods", "Cloud removal methods"), +] + +for path, label in checks: + try: + r = urllib.request.urlopen(BASE + path, timeout=5) + data = json.loads(r.read()) + status = "✅" + except Exception as e: + data = str(e) + status = "❌" + print(f"{status} {label:<30} → {str(data)[:80]}") +``` + +--- + +### Cell 9 — Xem log nếu có lỗi (tuỳ chọn) + +```python +# Xem stderr của FastAPI +import select, sys + +if server.poll() is not None: + _, err = server.communicate() + print("FastAPI stderr:") + print(err.decode()) +else: + # Đọc log không block + import os + flags = os.O_RDONLY | os.O_NONBLOCK + try: + fd = server.stderr.fileno() + os.set_blocking(fd, False) + print(server.stderr.read(2000).decode()) + except: + print("Server is running (no errors captured)") +``` + +--- + +### Cell 10 — Dừng server khi xong demo + +```python +import subprocess + +server.terminate() +frpc.terminate() + +print("✅ FastAPI stopped") +print("✅ FRP tunnel closed") +``` + +--- + +## Phần 4 — Dùng domain thay vì IP (nâng cao) + +Nếu VPS có domain riêng, bạn có thể truy cập bằng URL đẹp hơn. + +### Sửa `frps.toml` trên VPS + +```toml +bindPort = 7000 +auth.token = "your_secret_token_here" +vhostHTTPPort = 80 +``` + +### Sửa Cell 5 (`frpc.toml`) trên Colab + +```toml +serverAddr = "your-vps.com" +serverPort = 7000 +auth.token = "your_secret_token_here" + +[[proxies]] +name = "remote-sensing-web" +type = "http" +localPort = 8000 +customDomains = ["demo.your-vps.com"] +``` + +### DNS — trỏ subdomain về VPS + +``` +demo.your-vps.com → A record → 123.456.789.000 +``` + +→ Truy cập: `http://demo.your-vps.com` (không cần `:8080`) + +--- + +## Phần 5 — Giữ session Colab sống lâu hơn + +Colab tự disconnect sau ~90 phút idle. Để tránh: + +```javascript +// Paste vào console trình duyệt (F12 → Console) +function keepAlive() { + document.querySelector('#connect button')?.click(); + console.log('keep-alive ping:', new Date().toLocaleTimeString()); +} +setInterval(keepAlive, 60000); +``` + +Hoặc dùng **Colab Pro** ($10/tháng) để không bị giới hạn session. + +--- + +## Phần 6 — Tóm tắt so sánh FRP vs ngrok + +| Tiêu chí | FRP (self-host) | ngrok (free) | +|---|---|---| +| URL cố định | ✅ Có | ❌ Đổi mỗi session | +| Session timeout | ✅ Không giới hạn | ⚠️ 2 giờ | +| Chi phí | Free (cần VPS) | Free tier có giới hạn | +| Dữ liệu qua server bên thứ 3 | ❌ Không | ✅ Qua server ngrok | +| Cần setup | ⚠️ Cần cài frps trên VPS | ✅ Chạy ngay | +| Phù hợp | Demo dài hạn, production | Demo nhanh 1 lần | + +--- + +## Checklist trước khi demo + +- [ ] VPS đang chạy `frps` và port 7000, 8080 đã mở +- [ ] Project đã upload đầy đủ lên Google Drive (kể cả `model_train/`) +- [ ] Đã điền đúng `VPS_IP` và `FRP_TOKEN` trong Cell 5 +- [ ] Cell 3 (cài deps) đã chạy thành công +- [ ] Cell 8 (health check) cho thấy tất cả ✅ +- [ ] Truy cập `http://VPS_IP:8080/dashboard` từ trình duyệt → hiện trang + +--- + +*Tạo ngày: 03/04/2026 — dự án remote-sensing Vietnam Land Classification* diff --git a/cloud_removal_model/CRGAN_generator.json b/cloud_removal_model/CRGAN_generator.json new file mode 100644 index 0000000..f95d824 --- /dev/null +++ b/cloud_removal_model/CRGAN_generator.json @@ -0,0 +1,11 @@ +{ + "filename": "CRGAN_generator.pth", + "epoch": 0, + "train_loss": 0.0, + "val_loss": 0.0, + "in_channels": 6, + "out_channels": 4, + "use_s1": true, + "description": "", + "uploaded_at": "2026-01-26T13:36:58.433105" +} \ No newline at end of file diff --git a/cloud_removal_model/GLFCR_generator.json b/cloud_removal_model/GLFCR_generator.json new file mode 100644 index 0000000..0589d6e --- /dev/null +++ b/cloud_removal_model/GLFCR_generator.json @@ -0,0 +1,11 @@ +{ + "filename": "GLFCR_generator.pth", + "epoch": 10, + "train_loss": 0.014, + "val_loss": 0.01, + "in_channels": 6, + "out_channels": 4, + "use_s1": true, + "description": "No describe", + "uploaded_at": "2026-01-27T10:38:28.134503" +} \ No newline at end of file diff --git a/cloud_removal_model/SpAGAN_generator.json b/cloud_removal_model/SpAGAN_generator.json new file mode 100644 index 0000000..791b001 --- /dev/null +++ b/cloud_removal_model/SpAGAN_generator.json @@ -0,0 +1,11 @@ +{ + "filename": "SpAGAN_generator.pth", + "epoch": 30, + "train_loss": 0.222, + "val_loss": 0.11, + "in_channels": 6, + "out_channels": 4, + "use_s1": true, + "description": "No data", + "uploaded_at": "2026-01-26T13:43:06.751319" +} \ No newline at end of file diff --git a/reports/training_report_20260105_112532.html b/reports/training_report_20260105_112532.html new file mode 100644 index 0000000..d320987 --- /dev/null +++ b/reports/training_report_20260105_112532.html @@ -0,0 +1,347 @@ + + + + + + + Training Report - 20260105_112532 + + + +
+
+

📊 Báo Cáo Training Model

+

Land Classification - 05/01/2026 11:25:33

+
+ +
+ +
+

📈 Tóm Tắt Kết Quả

+
+
+
77.0%
+
Train Accuracy
+
+
+
70.6%
+
Test Accuracy
+
+
+
868
+
Training Samples
+
+
+
218
+
Testing Samples
+
+
+
8
+
Số Classes
+
+
+
20%
+
Test Size
+
+
+
+ + +
+

⚙️ Cấu Hình Training

+
+
+ 🤖 Model Type: + SWIN-UNET +
+
+ 📍 Khu vực (bbox): + [105.561448, 9.264228, 106.298669, 9.931334] +
+
+ 📅 Thời gian: + 2023-03-01/2023-12-31 +
+
+ 📐 Độ phân giải: + 20m +
+
+ 💾 Model Path: + model_train/model_swin-unet_20260105_112458.joblib +
+
+
+ + +
+

📋 Classification Report

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Loại đấtPrecisionRecallF1-ScoreSupport
00.0000.0000.00012
10.6670.7800.71941
20.0000.0000.0009
30.5790.6470.61134
40.5940.7310.65526
50.9260.9620.94326
60.9560.9770.96644
70.4640.5000.48126
macro avg0.5230.5750.547218
weighted avg0.6450.7060.674218
+
+ + +

📊 Biểu Đồ Metrics

Metrics Chart
+ + +

📊 Phân Bố Số Mẫu

Class Distribution
+ + +
+

🔢 Confusion Matrix

+
Confusion Matrix
+
+ + +
+

🏷️ Danh Sách Các Loại Đất

+
+
    +
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • +
+
+
+
+ + +
+ + diff --git a/reports/training_report_20260105_120153.html b/reports/training_report_20260105_120153.html new file mode 100644 index 0000000..b470da6 --- /dev/null +++ b/reports/training_report_20260105_120153.html @@ -0,0 +1,347 @@ + + + + + + + Training Report - 20260105_120153 + + + +
+
+

📊 Báo Cáo Training Model

+

Land Classification - 05/01/2026 12:01:54

+
+ +
+ +
+

📈 Tóm Tắt Kết Quả

+
+
+
78.2%
+
Train Accuracy
+
+
+
72.0%
+
Test Accuracy
+
+
+
868
+
Training Samples
+
+
+
218
+
Testing Samples
+
+
+
8
+
Số Classes
+
+
+
20%
+
Test Size
+
+
+
+ + +
+

⚙️ Cấu Hình Training

+
+
+ 🤖 Model Type: + SWIN-UNET +
+
+ 📍 Khu vực (bbox): + [105.561448, 9.264228, 106.298669, 9.931334] +
+
+ 📅 Thời gian: + 2023-03-01/2023-12-31 +
+
+ 📐 Độ phân giải: + 20m +
+
+ 💾 Model Path: + model_train/model_swin-unet_20260105_120129.joblib +
+
+
+ + +
+

📋 Classification Report

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Loại đấtPrecisionRecallF1-ScoreSupport
00.0000.0000.00012
10.6670.7800.71941
20.0000.0000.0009
30.5950.6470.62034
40.6250.7690.69026
50.9291.0000.96326
60.9560.9770.96644
70.5000.5380.51926
macro avg0.5340.5890.560218
weighted avg0.6560.7200.686218
+
+ + +

📊 Biểu Đồ Metrics

Metrics Chart
+ + +

📊 Phân Bố Số Mẫu

Class Distribution
+ + +
+

🔢 Confusion Matrix

+
Confusion Matrix
+
+ + +
+

🏷️ Danh Sách Các Loại Đất

+
+
    +
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • +
+
+
+
+ + +
+ + diff --git a/reports/training_report_20260105_121146.html b/reports/training_report_20260105_121146.html new file mode 100644 index 0000000..c2b91da --- /dev/null +++ b/reports/training_report_20260105_121146.html @@ -0,0 +1,347 @@ + + + + + + + Training Report - 20260105_121146 + + + +
+
+

📊 Báo Cáo Training Model

+

Land Classification - 05/01/2026 12:11:48

+
+ +
+ +
+

📈 Tóm Tắt Kết Quả

+
+
+
76.5%
+
Train Accuracy
+
+
+
72.5%
+
Test Accuracy
+
+
+
868
+
Training Samples
+
+
+
218
+
Testing Samples
+
+
+
8
+
Số Classes
+
+
+
20%
+
Test Size
+
+
+
+ + +
+

⚙️ Cấu Hình Training

+
+
+ 🤖 Model Type: + SWIN-UNET +
+
+ 📍 Khu vực (bbox): + [105.561448, 9.264228, 106.298669, 9.931334] +
+
+ 📅 Thời gian: + 2023-03-01/2023-12-31 +
+
+ 📐 Độ phân giải: + 20m +
+
+ 💾 Model Path: + model_train/model_swin-unet_20260105_121125.joblib +
+
+
+ + +
+

📋 Classification Report

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Loại đấtPrecisionRecallF1-ScoreSupport
00.0000.0000.00012
10.7110.7800.74441
20.0000.0000.0009
30.6390.6760.65734
40.6250.7690.69026
50.9291.0000.96326
60.9560.9770.96644
70.4380.5380.48326
macro avg0.5370.5930.563218
weighted avg0.6640.7250.692218
+
+ + +

📊 Biểu Đồ Metrics

Metrics Chart
+ + +

📊 Phân Bố Số Mẫu

Class Distribution
+ + +
+

🔢 Confusion Matrix

+
Confusion Matrix
+
+ + +
+

🏷️ Danh Sách Các Loại Đất

+
+
    +
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • +
+
+
+
+ + +
+ + diff --git a/reports/training_report_20260105_123055.html b/reports/training_report_20260105_123055.html new file mode 100644 index 0000000..0ef8579 --- /dev/null +++ b/reports/training_report_20260105_123055.html @@ -0,0 +1,347 @@ + + + + + + + Training Report - 20260105_123055 + + + +
+
+

📊 Báo Cáo Training Model

+

Land Classification - 05/01/2026 12:30:56

+
+ +
+ +
+

📈 Tóm Tắt Kết Quả

+
+
+
77.3%
+
Train Accuracy
+
+
+
72.5%
+
Test Accuracy
+
+
+
868
+
Training Samples
+
+
+
218
+
Testing Samples
+
+
+
8
+
Số Classes
+
+
+
20%
+
Test Size
+
+
+
+ + +
+

⚙️ Cấu Hình Training

+
+
+ 🤖 Model Type: + SWIN-UNET +
+
+ 📍 Khu vực (bbox): + [105.561448, 9.264228, 106.298669, 9.931334] +
+
+ 📅 Thời gian: + 2023-03-01/2023-12-31 +
+
+ 📐 Độ phân giải: + 20m +
+
+ 💾 Model Path: + model_train/model_swin-unet_20260105_123033.joblib +
+
+
+ + +
+

📋 Classification Report

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Loại đấtPrecisionRecallF1-ScoreSupport
00.0000.0000.00012
10.6810.7800.72741
20.0000.0000.0009
30.6050.6760.63934
40.6250.7690.69026
50.9291.0000.96326
60.9560.9770.96644
70.5000.5380.51926
macro avg0.5370.5930.563218
weighted avg0.6600.7250.690218
+
+ + +

📊 Biểu Đồ Metrics

Metrics Chart
+ + +

📊 Phân Bố Số Mẫu

Class Distribution
+ + +
+

🔢 Confusion Matrix

+
Confusion Matrix
+
+ + +
+

🏷️ Danh Sách Các Loại Đất

+
+
    +
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • +
+
+
+
+ + +
+ + diff --git a/reports/training_report_20260105_124348.html b/reports/training_report_20260105_124348.html new file mode 100644 index 0000000..c16c1f0 --- /dev/null +++ b/reports/training_report_20260105_124348.html @@ -0,0 +1,347 @@ + + + + + + + Training Report - 20260105_124348 + + + +
+
+

📊 Báo Cáo Training Model

+

Land Classification - 05/01/2026 12:43:49

+
+ +
+ +
+

📈 Tóm Tắt Kết Quả

+
+
+
100.0%
+
Train Accuracy
+
+
+
75.7%
+
Test Accuracy
+
+
+
868
+
Training Samples
+
+
+
218
+
Testing Samples
+
+
+
8
+
Số Classes
+
+
+
20%
+
Test Size
+
+
+
+ + +
+

⚙️ Cấu Hình Training

+
+
+ 🤖 Model Type: + XGBOOST +
+
+ 📍 Khu vực (bbox): + [105.561448, 9.264228, 106.298669, 9.931334] +
+
+ 📅 Thời gian: + 2023-03-01/2023-12-31 +
+
+ 📐 Độ phân giải: + 20m +
+
+ 💾 Model Path: + model_train/model_xgboost_20260105_123120.joblib +
+
+
+ + +
+

📋 Classification Report

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Loại đấtPrecisionRecallF1-ScoreSupport
00.6670.5000.57112
10.6980.7320.71441
20.3750.3330.3539
30.6560.6180.63634
40.7240.8080.76426
50.9631.0000.98126
60.8860.8860.88644
70.7310.7310.73126
macro avg0.7120.7010.705218
weighted avg0.7530.7570.754218
+
+ + +

📊 Biểu Đồ Metrics

Metrics Chart
+ + +

📊 Phân Bố Số Mẫu

Class Distribution
+ + +
+

🔢 Confusion Matrix

+
Confusion Matrix
+
+ + +
+

🏷️ Danh Sách Các Loại Đất

+
+
    +
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • +
+
+
+
+ + +
+ + diff --git a/reports/training_report_20260105_161723.html b/reports/training_report_20260105_161723.html new file mode 100644 index 0000000..01e377a --- /dev/null +++ b/reports/training_report_20260105_161723.html @@ -0,0 +1,347 @@ + + + + + + + Training Report - 20260105_161723 + + + +
+
+

📊 Báo Cáo Training Model

+

Land Classification - 05/01/2026 16:17:24

+
+ +
+ +
+

📈 Tóm Tắt Kết Quả

+
+
+
69.2%
+
Train Accuracy
+
+
+
60.1%
+
Test Accuracy
+
+
+
868
+
Training Samples
+
+
+
218
+
Testing Samples
+
+
+
8
+
Số Classes
+
+
+
20%
+
Test Size
+
+
+
+ + +
+

⚙️ Cấu Hình Training

+
+
+ 🤖 Model Type: + SWIN-UNET +
+
+ 📍 Khu vực (bbox): + [105.561448, 9.264228, 106.298669, 9.931334] +
+
+ 📅 Thời gian: + 2023-03-01/2023-12-31 +
+
+ 📐 Độ phân giải: + 20m +
+
+ 💾 Model Path: + model_train/model_swin-unet_20260105_161647.joblib +
+
+
+ + +
+

📋 Classification Report

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Loại đấtPrecisionRecallF1-ScoreSupport
00.3330.5000.40012
10.7080.4150.52341
20.2500.4440.3209
30.3600.2650.30534
40.6150.6150.61526
51.0000.9230.96026
60.8140.7950.80544
70.4760.7690.58826
macro avg0.5700.5910.565218
weighted avg0.6320.6010.602218
+
+ + +

📊 Biểu Đồ Metrics

Metrics Chart
+ + +

📊 Phân Bố Số Mẫu

Class Distribution
+ + +
+

🔢 Confusion Matrix

+
Confusion Matrix
+
+ + +
+

🏷️ Danh Sách Các Loại Đất

+
+
    +
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • +
+
+
+
+ + +
+ + diff --git a/reports/training_report_20260105_225505.html b/reports/training_report_20260105_225505.html new file mode 100644 index 0000000..d297b9f --- /dev/null +++ b/reports/training_report_20260105_225505.html @@ -0,0 +1,347 @@ + + + + + + + Training Report - 20260105_225505 + + + +
+
+

📊 Báo Cáo Training Model

+

Land Classification - 05/01/2026 22:55:06

+
+ +
+ +
+

📈 Tóm Tắt Kết Quả

+
+
+
69.2%
+
Train Accuracy
+
+
+
69.3%
+
Test Accuracy
+
+
+
868
+
Training Samples
+
+
+
218
+
Testing Samples
+
+
+
8
+
Số Classes
+
+
+
20%
+
Test Size
+
+
+
+ + +
+

⚙️ Cấu Hình Training

+
+
+ 🤖 Model Type: + MOBILENET-LRASPP +
+
+ 📍 Khu vực (bbox): + [105.561448, 9.264228, 106.298669, 9.931334] +
+
+ 📅 Thời gian: + 2023-03-01/2023-12-31 +
+
+ 📐 Độ phân giải: + 20m +
+
+ 💾 Model Path: + model_train/model_mobilenet-lraspp_20260105_225459.joblib +
+
+
+ + +
+

📋 Classification Report

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Loại đấtPrecisionRecallF1-ScoreSupport
00.3480.6670.45712
10.7330.2680.39341
20.2350.4440.3089
30.4860.5000.49334
40.7670.8850.82126
51.0000.9620.98026
60.9290.8860.90744
70.7740.9230.84226
macro avg0.6590.6920.650218
weighted avg0.7330.6930.687218
+
+ + +

📊 Biểu Đồ Metrics

Metrics Chart
+ + +

📊 Phân Bố Số Mẫu

Class Distribution
+ + +
+

🔢 Confusion Matrix

+
Confusion Matrix
+
+ + +
+

🏷️ Danh Sách Các Loại Đất

+
+
    +
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • +
+
+
+
+ + +
+ +