<!-- ### 應用深度學習與合成孔徑雷達迴波模擬實現海面風速監測 --> ### 專題進度報告 #### 報告人: 111310452 黃安華 --- ## 0520 中央氣象局 氣象資料開放平台API使用 ---- [中央氣象局 氣象資料開放平台](https://opendata.cwa.gov.tw/user/authkey) 註冊 登入 會員資訊 API授權碼 取得授權碼 ![image](https://hackmd.io/_uploads/ry_MSyFbxx.png) ---- 資料主題 觀測 ![image](https://hackmd.io/_uploads/HJPISyYblx.png) ---- 自動氣象站-氣象觀測資料 ![image](https://hackmd.io/_uploads/B1LiSyFWgl.png) ---- 資料擷取API服務說明網址 觀測 ![image](https://hackmd.io/_uploads/ByNILJYWge.png) ---- Try it out 填入API授權碼 ![image](https://hackmd.io/_uploads/Hyf581YWge.png) ---- Execute ![image](https://hackmd.io/_uploads/Hy5TI1Ybee.png) ---- 下載 json 檔 或用 curl 指令拿檔案 ![image](https://hackmd.io/_uploads/B1-fv1tbee.png) ---- 資料範例 ![image](https://hackmd.io/_uploads/HJDmukt-xx.png) ---- 擷取必要資料 ![image](https://hackmd.io/_uploads/S1O0dkKWgx.png) --- ## 0527 風速 label 資料整理 ---- ## 資料特徵說明 - 來源:中央氣象署即時氣象觀測資料(上次已整理) - 擷取欄位: - 測站名稱 - 時間(觀測時間) - 風速(m/s) - 天氣狀況(文字) - 標籤(Label):風速強中弱分類 ---- ## 風速分類標籤定義 | 分類 | 範圍 | 說明 | |--------|------------|--------------------| | 弱風 | v < 3.3 | 微風,基本無感 | | 中風 | 3.3 ≤ v < 8| 有感明顯風力 | | 強風 | v ≥ 8 | 有明顯風壓或近颱風等級 | ---- ## JSON 資料處理成果 <!-- 輸入:`labeled_wind_data.json` --> 已完成處理項目: - 去除單位,將風速轉為 float - 加入 `風級` 分類欄位(弱風 / 中風 / 強風) - 天氣、測站轉為數字編碼(非 one-hot) - 輸出成:`labeled_wind_data_numeric.json` ---- ## 資料範例 ![image](https://hackmd.io/_uploads/SJJykmGfxg.png) ---- ## 建模方向說明 - 使用工具:TensorFlow + Keras - 預計輸入欄位: - `風速(float)` - `天氣(整數分類)` - `測站(整數分類)` - 輸出:三分類(風速等級) 近期目標: <!-- - 建立 baseline 模型(MLP) --> - 評估分類準確率與模型穩定性 ---- ## 本週小結 - 即時觀測資料標準化 - 建立風速分類標籤 - 整理資料數值化格式 <!-- - 明確模型方向與工具選擇 --> ---- ## 下一步規劃 1. 使用 Keras 建立風速分類神經網路模型 2. 加入視覺化訓練評估(Loss / Accuracy) 3. 使用混淆矩陣觀察分類效果 若教授提供圖資,可進一步評估加入圖像特徵 --- ## 0603 Matplotlib 模擬資料集生成 ---- ## 準備建立神經網路 - 決定使用模型 (CNN) - 目前資料僅有 label 的部分,沒有圖片 - 生成模擬資料先行訓練,之後嫁接到照片 ---- ## 模擬資料集生成 * 生成與目前資料相對應的風速圖做為資料集 * 確認資料集/模型能有效運作 * 補充實際照片 ---- ## 暫定風速對應生成參數設定 | 分類 | RMS粗糙度 (σ) | 方向性控制 $L_{cx}, L_{cy}$ | PSD指數 $\beta$ | | -------- | ---------- | ---------------------- | ------------- | | weak | 0.5 | 長(均等方向性) | 4.0(平緩) | | moderate | 1.0 | 中等(略偏向) | 3.0 | | strong | 2.0 | 明顯不等(強方向性) | 2.0(粗糙) | ---- ## Python Matplotlib 生成結果 ---- ## Sine wave generation ![gen_wave_3](https://hackmd.io/_uploads/B1DcjIizgl.png =720x) ---- ## Gaussian surface generation (isotropy) ![surface_corr14_rms3.6](https://hackmd.io/_uploads/B1Xno8ifle.png) ---- ## Gaussian surface generation (anisotropy) ![sim_moderate_v5.0_idx1](https://hackmd.io/_uploads/HkU0oLsGlx.png) ---- ## 下週進度 * 修正模擬參數 (參考學長的論文) * 建立/找CNN模型的 code 來試跑 --- ## 0701 ---- ### 進度總覽 - 建立模擬環境 - 安裝 tensorflow - 上傳 [github](https://github.com/Annie04082020/prj-seawind) - 構想實作框架 - 找資料集來源 - 修正模擬圖生成程式 ---- ### 專題實作框架 ┌──────────────────────────┐ │ 風速 Ground Truth 資料 │ ← 中央氣象局API └────────────┬─────────────┘ │ ┌──────────────────▼──────────────────┐ │ 海面模擬器(數學/物理模型) │ ← 自訂海面模擬函數 f(wind, random_seed, t) └──────────────────┬──────────────────┘ │生成海面圖像 + 記錄風速 ▼ ┌──────────────────────────┐ │ 資料集建立(圖像 + 風速對) │ └────────────┬─────────────┘ │ ▼ ┌────────────────────────────┐ │ CNN or ViT 模型 │ │ Input: 波紋圖 │ │ Output: 預測風速(回歸) │ └────────────┬───────────────┘ ▼ ┌─────────────────────────────────────┐ │ 真實資料對比測試(實圖 or SAR) │ ← 若有少量SAR圖 or 實拍可套測試集 └─────────────────────────────────────┘ ---- ### 可能的資料集來源 Sentinel-1 SAR GRD (Ground Range Detected) 影像 [Copernicus Open Access Hub](https://browser.dataspace.copernicus.eu/) ---- ### 模擬生成修正 加入受光 ![anisotropy_gaussian_lit_moderate](https://hackmd.io/_uploads/Hk8CwXgBeg.png =300x) ![anisotropy_gaussian_lit_strong](https://hackmd.io/_uploads/SytAD7xHgl.png =300x) ![anisotropy_gaussian_lit_weak](https://hackmd.io/_uploads/Sks0Pmerex.png =300x) ---- ### 模擬生成修正 加入顏色 ![colour_512_moderate_ex](https://hackmd.io/_uploads/Hyc2dmergx.png =300x) ![colour_512_strong_ex](https://hackmd.io/_uploads/rJq2_QlBgx.png =300x) ![colour_512_weak_ex](https://hackmd.io/_uploads/By53_XeBel.png =300x) ---- ### 模擬生成修正 嘗試加入不同角度受光+海的深度 ![sim_lit_strong_v9.0_idx1_t2_angle0](https://hackmd.io/_uploads/ryICKmerxg.png =300x) ![sim_lit_weak_v2.0_idx1_t3_angle140](https://hackmd.io/_uploads/rkLRFQeBee.png =300x) ![sim_lit_moderate_v5.0_idx1_t1_angle0](https://hackmd.io/_uploads/ByI0F7xSel.png =300x) ---- ### 開始 - 輸入風速 v ### 風速分類 - 如果 v < 3.3 - 弱風 (sigma=0.5, Lcx=20, Lcy=20, beta=4.0, foam_factor=0.1) - 如果 3.3 <= v < 8 - 中風 (sigma=1.0, Lcx=15, Lcy=30, beta=3.0, foam_factor=0.3) - 如果 v >= 8 - 強風 (sigma=2.0, Lcx=8, Lcy=20, beta=2.0, foam_factor=0.5) ---- ### 初始化 - 設定場景參數 (解析度 1024x1024) - 生成深度地形 depth_map (隨機生成地形高度,模擬海底起伏) ---- ### 模擬主流程 - 進入模擬迴圈 (涵蓋時間與燈光角度) - **模擬海面高度 (simulate_surface)** - 原理:用 PSD (功率譜密度) 生成波浪,根據風速參數 (sigma, Lcx, Lcy) 控制幅度跟波長,還加了時間動態讓波浪動起來,再跟深度地形混在一起。 - **加入泡沫效果 (add_foam)** - 原理:看梯度強度 (波浪斜率) 判斷哪裡該長泡沫,根據風力 (foam_factor) 調整濃度,還加了點隨機噪聲讓它看起來自然。 ---- ### 模擬主流程 - **計算法線 (compute_normals)** - 原理:算出每個點的法線方向 (用梯度),幫光照跟陰影找準落點,模擬立體感。 - **應用光照 (apply_lighting)** - 原理:用漫射 (diffuse) 跟鏡面反射 (specular) 模擬光影效果,根據燈光角度跟視角算出亮度,讓海面有光澤。 ---- ### 模擬主流程 - **合成深度與透明度 (save_image)** - 原理:把深度地形跟海面混在一起,調整透明度後轉成彩色圖,存成 PNG 檔。 - 檢查迴圈是否完成 - 如果沒完成,回頭繼續模擬 - 如果完成,跳到下一步 ---- ### 建立 CNN 預備網路 ![image](https://hackmd.io/_uploads/SyutkElHle.png) ---- ## 下週進度 - 嘗試使用加入顏色的生成圖訓練網路 - 繼續找資料集+做處理和 labeling - 參考論文的 dataset 製作方法 - 找 pretrain model - 研究 [A Large-scale Security Inspection X-ray Benchmark for Prohibited Item Discovery in Overlapping Images](https://github.com/MeioJane/SIXray) --- ## 0708 ---- 新專題進度報告 ### 違禁品影像辨識系統 ---- ### 目標調整與資料來源確認 - 原專題「衛星風速估測」因圖資取得與標註困難,改為進行 X-ray 違禁品辨識。 - 參考資料集:SIXray,含圖片 (`JPEGImages/`) 與標註 (`Annotations/`)。 - 標註格式為 VOC XML,需處理 P 開頭(annotation)與 N 開頭(image)檔名對應問題。 - 資料集處理耗時較長,已完成初步整理與對應確認。 ---- ### 模型與工具選型 - 採用 YOLOv10 進行物件偵測(`THU-MIG/yolov10` repo 下載 `.pt` 預訓練模型)。 - 與 YOLOv8 測試比較結果: - YOLOv8 偵測較靈敏,包含遊戲畫面人物等非目標物。 - YOLOv10 偵測結果較聚焦,適合本任務。 - 可視需求考慮後續整合 CNN 作為特徵辨識補強。 ---- ### 開發工具與流程 - 使用 PyQt6 建立 GUI 工具: - 可互動切換圖片、設定資料夾路徑。 - 圖片可自適應顯示比例。 - **目前尚未整合 XML 標註同步顯示,僅獨立測試檔案可讀取並標記框框。** - 開發 `read_annotation.py` 與 `draw_box.py` 模組支援 XML 解析與框線繪製。 ---- ### 模型推論測試與整合 - 成功執行 YOLOv10 模型推論,預設輸出目錄與結果檔案確認可調整。 - 完成基礎資料可視化測試,包括框選標註對應與圖片呈現。 ---- ### 架構規劃(初步) ```text [YOLOv10] ↓ 分割檢測到的區域 ↓ CNN or 特徵分類模型 ↓ 違禁品 vs 非違禁品分類 ``` - 若時間允許,嘗試實作原論文架構(分層分類 + CNN特徵分類)與 YOLOv10-based pipeline 比較。 ---- ### 進行中與待辦事項 - [x] 下載與整理 SIXray 資料集 - [x] 專案初始化與環境設定(建立資料夾結構、設定 gitignore、requirements.txt 等) - [x] 將 yolov10 模型與資料前處理程式碼整理進 GitHub 專案,方便日後版本管理與測試 - [x] 建立 PyQt6 GUI 工具(讀圖+互動切換功能) - [x] 完成 YOLOv10 模型推論測試 - [x] 寫好讀取 XML + 畫框測試功能 ---- ### 進行中與待辦事項 - [ ] 整合 GUI 與 XML 標註同步顯示 - [ ] 切割訓練集 / 測試集,並平衡類別樣本數 - [ ] 設計 CNN 模型,與 YOLO output 做整合或比較 - [ ] 若來得及,復刻原文論文架構與 YOLO pipeline 比較其效能差異 --- ## 0715 ---- - 發現資料集不齊全 - 統計缺失資料數量與各類別數量 - 試跑原論文程式 ---- ![image](https://hackmd.io/_uploads/rJDV-pXUxe.png) ---- ![image](https://hackmd.io/_uploads/BJg1GamLel.png) ---- ![image](https://hackmd.io/_uploads/ryj7m6Q8gg.png) ---- ![image](https://hackmd.io/_uploads/H1bv7pQLgx.png) --- ## 0722 ---- ### 日進度 * 週三: 用 wsl linux wget 指令重載 dataset、閱讀論文 * 週四: 載dataset、閱讀論文(原理部分) * 週五: 合併壓縮檔、開 issue 詢問 * 週六: * 週日: 跟AI討論新題目方向 * 週一: 研究新題目的論文與實踐方法 ---- ### SIXray 原理 問題: 物體大量重疊、正負資料比例相差極大 - 高層特徵包含語意(eg.分類)、低層特徵保留空間細節(eg.位置,形狀) - 將高層的語意反向回饋給低層網路,增加網路對重疊物體的檢測能力 - 將高層的特徵進行填充(eg.上採樣插值法)後與低層特徵組合(相加) - 透過新設計的loss function 解決資料比例問題 - 將positive label給與較大權重 - 最後用 Global Pooling 和 NN 輸出分類預測 ---- ### 問題 - 原論文程式已更新成新版本python和torch,但因資料集問題無法試跑 - 重新用另一種指令載資料集,結果與上週相同 - 翻 repo issue 發現此問題之前已經有人反映,但作者自兩三年前沒回覆 - 資料集 label 與圖片對應關係模糊,難以確認 - 有檢測到違禁品的為P開頭檔名 - box label 皆為P開頭 - 圖片皆為N開頭,每個行李都有三張圖 - 重新標記問題 - 耗時 - 無法確認標記的正確性 ---- ## 新題目發想 <!-- ### 背景與限制 * 時間:需在 7/21–8/31 完成核心內容,開學後進行報告與微調 * 限制:需偏軟體/AI 方向,教授與助教才能協助 * 目標:不想只是交差,想做出**實用又有深度**的作品 --- --> ### 🆚 題目比較:LID vs 構圖輔助 | 項目 | LID(語言辨識) | 構圖輔助(人體合理性) | | --- | --------------------- | -------------------------- | | 任務 | 語音→語言分類 | 插圖→2D→3D→姿態合理性判斷 | | 技術 | CNN / CRNN / wav2vec2 | PARE / FrankMocap / SMPL | | 資料 | FLEURS (多語音訊) | COCO / InstaVariety / 插圖圖包 | | 優點 | 資料齊全、模型熟悉、可挑戰精度 | 創新應用、視覺化成果吸睛 | | 難點 | 模型需創新、調參 | pipeline 較長、資料需整理 | | 可行性 | 高 | 中偏高 | ---- ## ✅ 構圖輔助架構草圖(PoseCritic) A[輸入圖像] --> B[2D 姿態預測 (OpenPose)] B --> C[3D 姿態預測 (SMPL)] C --> D[合理性分析(比例、平衡性)] D --> E[回饋 + 可視化] 可加強:錯誤姿勢標記、自動修正建議 ---- ## 🧪 技術可行性分析 | 模組 | 工具 | 難度 | 是否可用 | | --------- | --------------------- | --- | -------- | | 2D→3D | PARE / FrankMocap | 中 | ✅ 有預訓練模型 | | 合理性分析 | SMPL + 規則設計 | 中偏高 | ⭕ 可自訂 | | 前後景分析(延伸) | SAM, Segment Anything | 中 | ✅ 現成模型 | ---- ## 📌 結論建議 * 若要快速完成、有穩定成果 → **選 LID** * 若想做出創新題目、有視覺化成品 → **選構圖輔助 PoseCritic** 可行策略: * 先做 LID 初版,構圖輔助視情況加做 demo 或轉為主題 * 若教授支持創新題,構圖方向更具吸引力 ---- 下週: 調查構圖題目有沒有人做類似的東西可以用 - Stable Diffusion 套件 - 論文 --- ## 0729 ---- ### Stable Diffusion原理 ![image](https://hackmd.io/_uploads/HJKp2VIDll.png) ---- ### 架構 圖片 → (MMPose) → 骨架 keypoints ↓ (檢測模型 or Rule-based) → 找異常部位 GCN 判斷? ↓ (PoseScript) → 自然語言描述「你的左腿比例異常」 ↓ (修正骨架 keypoints)生成 keypoint ↓ (ControlNet) → 生成修正後建議圖 ---- ## 辨識人物骨架 [MMPose](https://github.com/open-mmlab/mmpose) [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) - 需要 Fine Tune 成也能辨識手繪的人物 - [Open Pose Editor](https://github.com/huchenlei/sd-webui-openpose-editor) ---- ## 依照差距生成改善建議 [Control Net](https://github.com/lllyasviel/ControlNet) ---- ## 姿勢轉自然語言生成 [Pose Script](https://github.com/naver/posescript) ---- ### 問題 * 有沒有dataset * 特定畫風規範的異常指標 * 沒有的話定義正常範圍,限縮主題 * **確認製作時間** (80、90%信心) * 調查GCN的可行性 --- ## 專題簡介:基於骨架結構分析的繪圖姿勢檢查與建議生成系統 ### 動機與背景 在繪製人物動作時,繪師常會遇到難以察覺的結構錯誤,例如關節角度不自然、肢體比例不對稱、重心分布失衡等,這些問題雖可能不直接破壞畫面,但會造成整體姿勢違和感,進而影響角色的氛圍與故事表現。 傳統的教學方式仰賴經驗積累與參考圖,而 AI 雖已能生成畫面,但對「評估一張圖是否合理」仍缺乏具體回饋系統。因此,我們希望建立一套系統,協助繪師判斷手繪姿勢的結構合理性,並給出圖像與自然語言的修正建議。 ---- ### 系統目標與分層設計 我們將姿勢的「合理性」分為三個層次: 1. **靜態結構合理性** 判斷人體是否符合基本生物學結構,如關節活動範圍、四肢比例對稱性等。此層次可由 rule-based 方法或 GCN 模型處理,為本專題的主攻方向。 2. **動作物理合理性** 判斷動作本身是否可能完成,如支撐點、重心轉移、力量來源等。此層雖可由重心預測與力學模型輔助判斷,但複雜度與資料需求較高,暫規劃為延伸探討。 3. **語境與風格合理性** 結合角色性格、場景氛圍與敘事意圖,判斷動作是否「符合角色調性」。此層涉及風格與美學理解,主觀性高、難以標準化,故暫不納入本階段實作,但作為未來系統整合的方向。 ---- ### 系統流程與模組構想 1. 使用 MMPose 對輸入圖像進行骨架辨識 2. 以 rule-based 判斷或圖神經網路(GCN)分析關節結構 3. 將分析結果轉換為自然語言描述(如「你的左腿比例異常」) 4. 使用 OpenPose Editor 或 ControlNet 輔助生成修正建議圖 ---- ### 現階段目標 * 建立資料處理流程與初步骨架合理性判斷規則 * 探索 GCN 應用於異常姿勢分類的可行性 * 串接自然語言與圖像輸出的回饋模組 * 評估該系統在繪圖輔助中的使用潛力 --- ## 0804 ---- ### 流程 1. 前處理:去除人物以外的背景 2. mmdetecion 辨識人物位置 3. mmpose 辨識骨架+3D關節角度 4. 程式計算關節角度 5. gcn判斷角度 (gcn架構?訓練用資料?形式?) 7. 輸出骨架 8. 修正建議 9. 修正圖 ---- ## 3D骨架擷取 ![image](https://hackmd.io/_uploads/H11Hmu1dge.png) ---- ### 成功例 ![test6](https://hackmd.io/_uploads/rJLAzOkdxg.jpg =450x) ---- ### 失敗例 ![test7](https://hackmd.io/_uploads/SkVJ6okulx.jpg =450x) ---- ### 問題 - gcn dataset要找怎樣的 - 找gcn相關資料 - 找判斷人體是否歪曲的標準 - 自己定標準的公信力? - **問教授要不要繼續做sixray** - 單一張圖要怎麼辨識出3D骨架 - 2D骨架直接算角度會有正負角度的問題 - eg. 同樣的角度但圖有問題 --- ## 0812 ---- ![image](https://hackmd.io/_uploads/r1kF9BM_el.png =350x) ---- ![image](https://hackmd.io/_uploads/r1Eo5rzdlx.png =350x) ---- ![image](https://hackmd.io/_uploads/S1sa9Hfdgx.png =350x) ---- ![test3](https://hackmd.io/_uploads/rJ2IcBzOgx.jpg) ---- ### 還原 ![Figure_1](https://hackmd.io/_uploads/ry7DaouOeg.png) ---- ![image](https://hackmd.io/_uploads/SJkeTiuOxg.png) ---- ## 問題 - 如何判斷模型準確度?學術上如何證明? - 從patreon、pixiv、pinterest找圖,人工分類 - 模型透過關節角度、長度比例判斷合理性再給出結果 - 將人工分類與模型判斷結果做比較 - 模型如何訓練 - 1.骨架辨識模型透過官方readme微調 - 2.正確性判斷模型的標準?gcn目前是最佳解但還沒開始 --- ### 0819 ---- ### UI 修正 ![image](https://hackmd.io/_uploads/BJW-SanOeg.png =600x) ---- ### 3D 辨識 ![test3](https://hackmd.io/_uploads/BySKB63Olg.jpg) ---- ### 重寫辨識部份 API ![image](https://hackmd.io/_uploads/B1QxIp3_xl.png) ---- ### 骨架檔案輸出 ``` [ { "keypoints": [ [ -0.0, 0.0, 0.6227785348892212 ], [ 0.08712487667798996, 0.06869959831237793, 0.637316107749939 ], [ 0.33669713139533997, 0.0011243772460147738, 0.49105244874954224 ], [ 0.1619156450033188, 0.11976391077041626, 0.20670530200004578 ], [ -0.0931553989648819, -0.072047159075737, 0.6140944361686707 ], [ 0.08286450058221817, -0.16432929039001465, 0.40337619185447693 ], [ 0.22169896960258484, -0.029318565502762794, 0.0 ], [ 0.005057373084127903, -0.054478880017995834, 0.8317997455596924 ], [ 0.020555175840854645, -0.14189903438091278, 1.0408084392547607 ], [ 0.15042394399642944, -0.17397700250148773, 1.169395089149475 ], [ 0.1372050791978836, -0.16303445398807526, 1.2123674154281616 ], [ -0.1040363758802414, -0.20335093140602112, 1.0334067344665527 ], [ -0.10602539032697678, -0.21470314264297485, 0.7651693820953369 ], [ 0.06215747073292732, -0.17832191288471222, 0.6208605766296387 ], [ 0.14124706387519836, -0.046067286282777786, 1.0277445316314697 ], [ 0.2515684962272644, 0.055432334542274475, 0.8573705554008484 ], [ 0.2323601096868515, -0.07725538313388824, 1.0474107265472412 ] ], "keypoint_scores": [ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ] } ] ``` ---- ### 人體繪圖辨識 [Human-Art](https://github.com/IDEA-Research/HumanArt) [Dataset](https://drive.google.com/drive/folders/1Uk5UgEMS0_fech6CwFCxaOqeeDiZOvNS) ---- ### 問題 - 指標:F-Score - 單純用方法跟人工標記的對比計算一致率 - 剩餘工作 - 標記 - finetune第一部份 - GCN訓練 - 輸出比對 - 計算指標 --- ### 0827 ---- GUI批量辨識功能 重新整理環境 用coco2017跟HumanArt測試訓練 6 epochs
{"description":"中央氣象局 氣象資料開放平台API使用","title":"專題進度報告","contributors":"[{\"id\":\"1256ea94-a5d4-47bb-9b07-a24e315807fd\",\"add\":19156,\"del\":16256,\"latestUpdatedAt\":1756210101836}]"}
    230 views