<!-- ### 應用深度學習與合成孔徑雷達迴波模擬實現海面風速監測 -->
### 專題進度報告
#### 報告人: 111310452 黃安華
---
## 0520
中央氣象局 氣象資料開放平台API使用
----
[中央氣象局 氣象資料開放平台](https://opendata.cwa.gov.tw/user/authkey)
註冊 登入 會員資訊 API授權碼 取得授權碼

----
資料主題 觀測

----
自動氣象站-氣象觀測資料

----
資料擷取API服務說明網址 觀測

----
Try it out 填入API授權碼

----
Execute

----
下載 json 檔 或用 curl 指令拿檔案

----
資料範例

----
擷取必要資料

---
## 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`
----
## 資料範例

----
## 建模方向說明
- 使用工具: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

----
## Gaussian surface generation (isotropy)

----
## Gaussian surface generation (anisotropy)

----
## 下週進度
* 修正模擬參數 (參考學長的論文)
* 建立/找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/)
----
### 模擬生成修正
加入受光
  
----
### 模擬生成修正
加入顏色
  
----
### 模擬生成修正
嘗試加入不同角度受光+海的深度
  
----
### 開始
- 輸入風速 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 預備網路

----
## 下週進度
- 嘗試使用加入顏色的生成圖訓練網路
- 繼續找資料集+做處理和 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
----
- 發現資料集不齊全
- 統計缺失資料數量與各類別數量
- 試跑原論文程式
----

----

----

----

---
## 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原理

----
### 架構
圖片 → (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骨架擷取

----
### 成功例

----
### 失敗例

----
### 問題
- gcn dataset要找怎樣的
- 找gcn相關資料
- 找判斷人體是否歪曲的標準
- 自己定標準的公信力?
- **問教授要不要繼續做sixray**
- 單一張圖要怎麼辨識出3D骨架
- 2D骨架直接算角度會有正負角度的問題
- eg. 同樣的角度但圖有問題
---
## 0812
----

----

----

----

----
### 還原

----

----
## 問題
- 如何判斷模型準確度?學術上如何證明?
- 從patreon、pixiv、pinterest找圖,人工分類
- 模型透過關節角度、長度比例判斷合理性再給出結果
- 將人工分類與模型判斷結果做比較
- 模型如何訓練
- 1.骨架辨識模型透過官方readme微調
- 2.正確性判斷模型的標準?gcn目前是最佳解但還沒開始
---
### 0819
----
### UI 修正

----
### 3D 辨識

----
### 重寫辨識部份 API

----
### 骨架檔案輸出
```
[
{
"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}]"}