找回密碼
 申請討論區帳戶
查看: 88|回復: 7

YOLO 在小行星與彗星偵測的應用

[複製鏈接]
發表於 2025-1-31 19:44:46 | 顯示全部樓層 |閱讀模式
本帖最後由 WCYue 於 2025-1-31 22:33 編輯

YOLO 是什麼?

YOLO(You Only Look Once)是一種即時物件偵測模型,可以一次性處理整張影像並偵測其中的目標物。它的主要特點是:
•        速度快:適合用於即時影像處理,如望遠鏡拍攝的天文影像分析。
•        準確度高:能夠在複雜背景(例如星空)中偵測出移動的目標,如小行星或彗星。
•        可訓練自訂模型:可以使用標註過的小行星/彗星影像來訓練專屬的 AI 偵測器。
 樓主| 發表於 2025-1-31 19:45:13 | 顯示全部樓層
本帖最後由 WCYue 於 2025-1-31 22:33 編輯

YOLO 如何用於偵測小行星與彗星

在天文領域,YOLO 可以用來:
1.        分析天文影像,找出異常移動的天體。
2.        偵測新發現的小行星或彗星,並與現有星表比對來確定是否為新天體。
3.        過濾望遠鏡拍攝的影像,標記可能的小行星並減少人工篩選的工作量。
 樓主| 發表於 2025-1-31 19:48:47 | 顯示全部樓層
本帖最後由 WCYue 於 2025-1-31 19:59 編輯

具體流程

要用 YOLO 偵測小行星或彗星,可以按照以下步驟操作:

步驟 1:準備數據
        1.        取得天文影像數據:
        •        你可以從 NASA、ESA 或 JPL 等機構下載小行星與彗星的影像,例如:
        •        Small-Body Database
        •        Pan-STARRS DR2 Data
        •        Astrometry.net
        2.        標記影像:
        •        使用 LabelImg 或 Roboflow 來手動標註小行星與彗星的位置。
        •        格式需為 YOLO 格式 (txt 檔案):

<object-class> <x_center> <y_center> <width> <height>

例如:

0 0.35 0.45 0.10 0.10
1 0.60 0.75 0.12 0.12

        •        0 代表小行星,1 代表彗星
        •        (x_center, y_center) 是影像中天體的中心點
        •        (width, height) 是天體的大小
 樓主| 發表於 2025-1-31 19:52:47 | 顯示全部樓層
步驟 2:訓練 YOLO 模型

環境準備(Mac M4 上運行 YOLOv8)
       
1.        安裝 YOLOv8
pip install ultralytics opencv-python numpy

2.        下載預訓練 YOLOv8 模型
from ultralytics import YOLO

# 下載預訓練模型(可選擇yolov8n.pt、yolov8s.pt)
model = YOLO("yolov8n.pt")  

3.        準備數據並訓練 YOLO
•        創建 data.yaml 文件:
train: /path/to/train/images
val: /path/to/val/images
nc: 2  # 2類(小行星、彗星)
names: ["Asteroid", "Comet"]

•        開始訓練:
model.train(data="data.yaml", epochs=50, batch=16)
 樓主| 發表於 2025-1-31 19:54:13 | 顯示全部樓層
步驟 3:使用 YOLO 偵測小行星或彗星

當我們有一張望遠鏡拍攝的影像(如 asteroid.jpg),可以使用 YOLO 來進行物件偵測:
from ultralytics import YOLO
import cv2

# 載入訓練後的模型
model = YOLO("best.pt")

# 讀取影像
image_path = "asteroid.jpg"
image = cv2.imread(image_path)

# 執行偵測
results = model(image)

# 顯示結果
results.show()
 樓主| 發表於 2025-1-31 19:55:28 | 顯示全部樓層
本帖最後由 WCYue 於 2025-1-31 22:34 編輯

結果

•        若影像中有小行星或彗星,YOLO 會在物件上標註邊界框並顯示其類別(小行星 / 彗星)。
•        你可以輸出影像標註:
results.save("output.jpg")
 樓主| 發表於 2025-1-31 19:57:44 | 顯示全部樓層
YOLO 偵測小行星的應用舉例:

案例 1:分析 Catalina Sky Survey 影像

Catalina Sky Survey (CSS) 是專門偵測地球近地小行星 (NEO) 的計畫,他們的影像可以用來訓練 YOLO:
1.        下載 CSS 小行星影像(FITS 格式)。
2.        使用 Astropy 轉換為 JPG / PNG 格式:
from astropy.io import fits
import numpy as np
import cv2

fits_image = fits.open("asteroid.fits")[0].data
image_normalized = ((fits_image - np.min(fits_image)) / (np.max(fits_image) - np.min(fits_image)) * 255).astype(np.uint8)
cv2.imwrite("asteroid.jpg", image_normalized)

3.        用 YOLO 偵測小行星:
model = YOLO("best.pt")
results = model("asteroid.jpg")
results.show()

 樓主| 發表於 2025-1-31 20:01:07 | 顯示全部樓層
本帖最後由 WCYue 於 2025-1-31 22:35 編輯

案例 2:NASA Pan-STARRS 影像分析

Pan-STARRS 望遠鏡拍攝了大量的星空影像,包含未知小行星與彗星:
•        我們可以下載 Pan-STARRS 數據,然後用 YOLO 自動篩選可能的移動目標,減少人工分析的時間。
您需要登錄後才可以回帖 登錄 | 申請討論區帳戶

本版積分規則

Archiver|手機版|小黑屋|香港天文學會

GMT+8, 2025-3-19 20:57 , Processed in 0.023251 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回復 返回頂部 返回列表