Giaosucan's blog - Chia sẻ kiến thức theo cách bá đạo

Ticker

20/recent/ticker-posts

Xây dựng AI model Tornado Detection - Part 1

NEXRAD station

Ai đã xem phim Twister, nói về một nhóm các nhà khoa học tìm cách thả những cảm biến vào cơn lốc để thu thập dữ liệu, mục đích giúp dự báo cơn lốc sớm để giảm thiểu thiệt hại gây ra


Interactive Map of NEXRAD Doppler Radar ...

Các dữ liệu về thời tiết như lốc xoáy, mưa gió như trên được lưu ở NEXRAD stations l trạm radar thời tiết thuộc mạng lưới NEXRAD (Next-Generation Radar) do Hoa Kỳ vận hành. Mỗi “station” là một trạm radar Doppler công suất lớn, dùng để quan sát và cảnh báo thời tiết nguy hiểm.
Các trạm Nexrad có các chức năng chính như

  • Phát hiện lốc xoáy (tornado) qua radial velocity.
  • Theo dõi cường độ mưa và dự báo lũ.
  • Quan sát cấu trúc 3D của giông bão.
  • Dữ liệu để dự báo thời tiết và nghiên cứu.

Một NEXRAD station là trạm radar cố định, mỗi trạm có:

NEXRAD - Wikipedia

  • Một radar siêu lớn dạng cầu trắng (radome).
  • Tần số hoạt động trong S-band (≈ 2.7–3.0 GHz).
  • Phần cứng thu/phát, xử lý tín hiệu, và trung tâm điều khiển.
  • ID trạm (ví dụ: KTLXKBMXKFWS…).
    Mỗi trạm phủ sóng khoảng 230–460 km.
    Lượng dữ liệu của Nexrad rất lớn và là mỏ vàng để thực hiện training model chuyên về dự báo thời tiết. Từ đó đội dự án công ty S* hình thành ý tưởng về phát triển một mô hình AI có thể detect được cơn lốc sử dụng mạng neuron network, gọi là tornado detection, một ứng dụng nằm trong hệ sinh thái Zoomradar. Interactive weather radar map – bản đồ radar thời tiết có thể phóng to/thu nhỏ (zoom) và xem theo lớp (layer).

Data Training

Để build model thì cần nguồn dữ liệu training từ Nexrad, dữ liệu này gọi là Nexrad Level II chứa toàn bộ cấu trúc của một cơn bão, những tham số này hơn thuần về chuyên môn trong lĩnh vực vật lý khí quyển



Nexrad lưu giữ liệu trên AWS S3 và các Nexrad server publish nên có thể down về sử dụng. Đội dự án đã phát triển 1 Downloader service liên tục monitors NEXRAD stations để download đữ liệu latest về. Việc xử lý download dữ liệu không phải là challenging, chủ yếu là monitor S3 bucket và pull data về. Điều này được thực hiện bởi Detection Pipeline, là một python script làm 2 việc là RealtimeDataDownloader và RealtimeDataProcessor
Pipeline RealtimeDataDownloader cho phép monitor một trạm NEXRAD cụ thể và download dữ liệu về lưu trong S3
Phần phức tạp là làm sao để xử lý dữ liệu download ở trên ở RealtimeDataProcessor, trước tiên là phải hiểu cấu trúc dữ liệu của Nexrad
Dữ liệu NEXRAD dạng Parquet là phiên bản đã được chuyển đổi và chuẩn hoá từ các file gốc Level II/III sang định dạng Apache Parquet để đọc nhanh và và dễ truy vấn, giảm kích thước lưu trữ
Format của Nexrad data không phải là kiểu image thông thường mà là dạng Polar (một dạng format dành riêng cho dữ liệu Radar)

Simulating Polarimetric Radar Returns for Weather Observations - MATLAB &  Simulink

Polar coordinate (tọa độ cực) mô tả điểm theo:

  • r — khoảng cách
  • θ — góc xoay (azimuth)

Với radar NEXRAD, thêm:

elevation — góc nghiêng chùm radar
sweep — một vòng quét ở một elevation
  • Một file Level II chứa nhiều sweep, mỗi sweep có 360–720 rays.
  • Mỗi ray là:
  • azimuth: 0 → 360° range: 0 → 460 km
  • Và mỗi ray có hàng trăm giá trị reflectivity/velocity.
  • Ví dụ mô tả 1 ray:
  • ray { azimuth = 123° elevation = 1.5° reflectivity = [N pixel theo range] velocity = [...] }
  • Nếu vẽ ra → nó là hình quạt (fan-shaped) như ở trên
  • Giải thích các tham số trong cấu trúc dữ liệu Radar
  • Một ray (tia quét) là đơn vị nhỏ nhất của dữ liệu radar. Radar phát một xung → nó lan ra → gặp mưa/bão → phản xạ về → tạo thành 1 ray.
  • ✅ 1. **Azimuth (góc phương vị)
  • azimuth = 123°

Là góc xoay ngang của tia radar, tính từ Bắc theo chiều kim đồng hồ.
0° = hướng Bắc
90° = hướng Đông
180° = hướng Nam

  • 270° = hướng Tây

Ý nghĩa:
Ray này được bắn theo hướng 123° (Đông–Đông Nam).

Radar xoay 360° để quét vòng tròn → tạo hàng trăm–ngàn ray.


✅ 2. **Elevation (góc nâng)

elevation = 1.5°

  • Là góc ngẩng lên của chùm radar.
  • 0.5° → 20° tùy sweep.

NEXRAD có nhiều sweeps (tầng quét), mỗi sweep có elevation khác nhau.

Ví dụ:

0.5° 1.5° 2.4° 3.4° … đến 19.6°

Ý nghĩa:
Ray này thuộc sweep ở độ cao 1.5°, tức radar đang quét hơi hướng lên, không nằm ngang.


✅ 3. **Reflectivity (Z)

  • Reflectivity = [N pixel theo range]
  • Đây là dBZ, giá trị phản xạ của mưa/hạt.
  • Là một array gồm nhiều pixel, mỗi pixel tương ứng với một khoảng cách (range bin).

Ví dụ:
[3km → 0.7 dBZ] [3.25km → 2 dBZ] [3.5km → 10 dBZ] ...
Một ray có khoảng 400–1000 giá trị reflectivity tuỳ cấu hình.
Ý nghĩa:
Cho biết cường độ mưa/bão dọc theo đường tia quét này. Z càng cao thì mưa bão càng mạnh


✅ 4. **Velocity (V)

  • Đây là radial velocity, đo tốc độ gió hướng về hoặc rời radar (m/s).
  • Cũng là một array theo range, cùng số pixel như reflectivity.

Ví dụ:

[-25, -20, -10, 0, 10, 15, 22]

Trong đó:

  • âm = gió thổi về radar
  • dương = gió thổi ra xa radar

Ý nghĩa:
Dùng để phát hiện rotation → mesocyclone → tornado.
Hãy tưởng tượng radar là đèn pin xoay quanh:

Ray là 1 tia sáng:

✅ Azimuth = hướng xoay ngang của đèn
✅ Elevation = hướng ngẩng lên của đèn
✅ Reflectivity array = độ sáng của vật thể dọc theo tia
✅ Velocity array = vận tốc của vật thể dọc theo tia

Data Processor thực hiện extract các tham số từ dữ liệu NEXRAD và lưu lại
Nhìn sơ sơ thì thấy cấu trúc dữ liệu dạng polar khá là phức tạp, nên các mô hình deep learning như (CNN, UNet, ViT) không hiểu dạng polar là gì
Tức là cần phải làm thêm một bước tiền xử lý, convert dữ liệu Polar từ Nextrad trên về dạng dữ liệu simple, standard để đưa vào input cho training process, format dữ liệu này là Cartesian 2D, loại toạ độ Decard khá thông dụng ở toàn học phổ thông. Loại dữ liệu này mới h
Đội dự án chuyển radar NEXRAD sang Cartesian 2D bằng PyART

Py-ART có khả năng nạp (đọc) dữ liệu từ nhiều định dạng radar thời tiết phổ biến, bao gồm Sigmet/IRIS, MDV, CF/Radial, UF và các tệp lưu trữ NEXRAD Level II.

Dữ liệu radar có thể được ghi ra các tệp NetCDF tuân theo chuẩn CF/Radial.

Py-ART cũng cung cấp các hàm để tạo ra các biểu đồ radar phổ biến, bao gồm PPI và RHI.



Đại loại PyArt chuyển đổi Polar thành dữ liệu dạng lưới Decard 

Ví dụ 1 ray dạng polar: (range, azimuth, elevation) sẽ chuyển sang toạ độ (x, y, z) để cho AI hiểu được

Quy trình summary thế này

Dữ liệu NEXRAD Level II → Py-ART → Cartesian Grid → NetCDF



Như vậy bước download và process data đã xong, phần 2 sẽ mô tả quy trình train model bằng neuron network

Đăng nhận xét

0 Nhận xét