<style>
html, body, .ui-content {
background-color: #333;
color: #ddd;
}
/* div * {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Arial, "PingFang TC", "Microsoft JhengHei", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !important
} */
.slides * {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Arial, "PingFang TC", "Microsoft JhengHei", "微軟正黑", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !important ;
}
body > .ui-infobar {
display: none;
}
.ui-view-area > .ui-infobar {
display: block;
}
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
color: #ddd;
}
.markdown-body h1,
.markdown-body h2 {
border-bottom-color: #ffffff69;
}
.markdown-body h1 .octicon-link,
.markdown-body h2 .octicon-link,
.markdown-body h3 .octicon-link,
.markdown-body h4 .octicon-link,
.markdown-body h5 .octicon-link,
.markdown-body h6 .octicon-link {
color: #fff;
}
.markdown-body img {
background-color: transparent;
}
.ui-toc-dropdown .nav>.active:focus>a, .ui-toc-dropdown .nav>.active:hover>a, .ui-toc-dropdown .nav>.active>a {
color: white;
border-left: 2px solid white;
}
.expand-toggle:hover,
.expand-toggle:focus,
.back-to-top:hover,
.back-to-top:focus,
.go-to-bottom:hover,
.go-to-bottom:focus {
color: white;
}
.ui-toc-dropdown {
background-color: #333;
}
.ui-toc-label.btn {
background-color: #191919;
color: white;
}
.ui-toc-dropdown .nav>li>a:focus,
.ui-toc-dropdown .nav>li>a:hover {
color: white;
border-left: 1px solid white;
}
.markdown-body blockquote {
color: #bcbcbc;
}
.markdown-body table tr {
background-color: #5f5f5f;
}
.markdown-body table tr:nth-child(2n) {
background-color: #4f4f4f;
}
.markdown-body code,
.markdown-body tt {
color: #eee;
background-color: rgba(230, 230, 230, 0.36);
}
a,
.open-files-container li.selected a {
color: #5EB7E0;
}
</style>
# 森林樹種AI辨識
梓育
Tue, Oct 18, 2022 11:00 AM
---
此份文件說明森林訓練資料進行新的AI分類模型的訓練及辨識流程,預期產出的分類結果如同下圖的有色區塊:

---
前處理流程:森林訓練資料為航攝影像的林地照片經過標記資料(正射)反投影切分出對應林種範圍後,並將資料分塊並用遮掉非對應類別的影像後產製的結果。也就是如下圖所示
| 正射影像 | 反投影影像 | 裁切及遮罩 |
| -------- | -------- | -------- |
| | | |
---
## 資料集前處理
* 選用需要的林地特徵資料
原本的裁切後檔案(npy)依照林地特徵有多個通道(R,G,B,NIR,...,etc),在此專案中會使用單純RGB三原色的資料進行訓練,但後續模型設計為可選用任意需要的3個通道。
---
## 資料集切分
* 將資料分為(訓練集:驗證集:測試集)=(5:3:2)
```python=
def list_splitter(list_to_split, ratio):
np.random.seed(19950304)
np.random.shuffle(list_to_split)
elements = len(list_to_split)
middle = int(elements * ratio)
return [list_to_split[:middle], list_to_split[middle:]]
train_path_list, val_path_list= list_splitter(npy_list[0], .5)
val_path_list, test_path_list= list_splitter(val_path_list, .6)
```
---
## 資料集切分
* 此份資料所使用的資料類別為下表所示
| 林種 | 類別代碼 | 資料數量 |
|:--------:|:--------:|:---------------:|
| 冷杉 | 01 | (838:502:336) |
| 檜木 | 03 | (2166:1299:867) |
| 杉木 | 05 | (741:444:297) |
| 柳杉 | 07 | (319:191:128) |
| 相思樹 | 10 | (245:147:99) |
| 單桿狀竹 | 17 | (98:58:40) |
---
## 影像分類模型
* 修改原有模型架構
由於原本的辨識效果較差,經檢驗後是無法將特徵資訊進一步傳導到最後的辨識層。

---
## 影像分類模型
* 修改原有模型架構
這次導入Transformer架構解決以上問題。
參考資料:
* [Image Transformer](https://arxiv.org/abs/1802.05751)
* [Vision Transformer(ViT)](https://arxiv.org/abs/2010.11929)
* [Swin Transformer](https://arxiv.org/abs/2103.14030)
---
## 訓練結果
* 訓練模型總時間: 21m 30s
* 最佳驗證集準確度: 0.9209
* 訓練過程收斂情形
| 模型精確度 | 損失函數 |
|:------------------------------------:|:------------------------------------:|
|  |  |
---
## 測試資料集
* 測試資料種筆數: 1760
* 測試資料精確度: 91% (1618/1760)
* 測試過程結果
| 類別代碼 | 精確度(預測正確數量/此類別筆數) |
|:---------------:|:-------------------------------:|
| 1 | 88% (295/334) |
| 3 | 93% (810/866) |
| 5 | 95% (284/296) |
| 7 | 86% (109/126) |
| 10 | 83% (83/99) |
| 17 | 94% (37/39) |
{"metaMigratedAt":"2023-06-17T12:00:32.600Z","metaMigratedFrom":"YAML","title":"森林樹種AI辨識","breaks":true,"contributors":"[{\"id\":\"929c08eb-2c2f-45a7-8a36-c71a12d57121\",\"add\":4972,\"del\":433}]"}