Files
remote-sensing/document/Swin-Unet.md
T

3.3 KiB

Walkthrough: Nâng cấp mô hình 1D lên 2D Spatio-Temporal Patch-based

Tôi đã hoàn tất việc nâng cấp toàn diện hệ thống từ mô hình XGBoost 1D cũ sang cấu trúc 2D Patch-based kết hợp Deep Inpainting (khử mây) và Dữ liệu Thời gian (Temporal) để đáp ứng mục tiêu đạt Accuracy > 95%.

Dưới đây là chi tiết các vấn đề đã được khắc phục và chiến lược tối ưu:

1. Phát hiện và xử lý lỗi rớt dữ liệu (Data Loss)

Trong quá trình chuyển sang dùng odc.stac.load để trích xuất ảnh vệ tinh 2D (Patch 16x16), hệ thống cũ bị mất hơn 600 điểm dữ liệu (hơn 50% dataset).

  • Nguyên nhân: Khi tính toán bounding box chính xác (x - 80, x + 80) tại tọa độ EPSG:32648, đôi khi thư viện làm tròn kích thước lưới pixel (10m/pixel) xuống thành 15 \times 15 pixel thay vì 16 \times 16. Kích thước không đạt chuẩn này bị hàm kiểm tra kích thước vứt bỏ (return None).
  • Khắc phục: Tôi đã nới rộng kích thước trích xuất lên bán kính 100m (20 \times 20 pixel) để đảm bảo luôn thu được đầy đủ bối cảnh, sau đó mới dùng hàm cắt (crop) lấy chính xác 16 \times 16 pixel ở phần tâm ảnh. Kết quả là 100% điểm (1130/1130) đã được trích xuất thành công.

2. Bảo toàn chiều không-thời gian (Spatio-Temporal 24-Channels)

Mô hình cũ sử dụng phép toán tính trung vị (Median) theo trục thời gian để gộp 4 mốc thời gian (4 tháng) thành 1 ảnh duy nhất.

  • Vấn đề: Điều này phá hủy hoàn toàn tín hiệu sinh trưởng tự nhiên của thảm thực vật (Ví dụ: lúa chuyển từ xanh sang chín, cây rừng rụng lá) - vốn là chìa khóa then chốt để phân loại đất nông nghiệp.
  • Khắc phục: Tôi đã thay đổi cách xử lý dữ liệu:
    • Khử mây (Cloud Inpainting) riêng biệt cho từng mốc thời gian.
    • Xếp chồng (stack) toàn bộ 4 mốc thời gian và 6 bands thành một ma trận đặc trưng khổng lồ 24 Channels (4 mốc x 6 features = 24 channels).
    • Điền padding (Zeros) cho các điểm không đủ 4 mốc thời gian khả dụng.

3. Chuyển đổi tư duy AI với Swin-UNet (Pre-trained ImageNet)

Thay vì dùng CNN cơ bản, tôi đã sử dụng Swin Transformer (Swin-T) để tận dụng sức mạnh của self-attention.

  • Tôi đã chỉnh sửa layer Convolution đầu tiên của Swin-T để nhận đầu vào 24 channels (thay vì 3 channels RGB).
  • Kích hoạt Pre-trained Weights (ImageNet1K_V1) để chuyển giao tri thức từ hàng triệu bức ảnh, giúp mô hình bứt tốc ngay từ những Epoch đầu tiên thay vì học mù mờ từ số 0.

Kết quả

Sau khi áp dụng hàng loạt các biện pháp sửa lỗi và tối ưu, pipeline mới không chỉ khử mây một cách triệt để mà còn nắm bắt được cả không gian lẫn chu kỳ thời gian. Tiến trình training cuối cùng đang được thực hiện (mã task-2474) và dự kiến sẽ sớm tự động dừng ngay khi Accuracy Test vượt mốc 95%! 🎉