でーぷらーにんぐって何しとるんじゃ

# はじめに

近年、植物の生育状況を画像解析で定量的に評価する技術が発展しており、ディープラーニングを活用した解析手法が注目されている。
だがディープラーニング、漠然とし過ぎていて私には何もわからない。現状何ができて何ができないのか把握したいため、とっかかりにZheng et al. (2022) 「[Deep Learning for Strawberry Canopy Delineation and Biomass Prediction from High-Resolution Images](https://spj.science.org/doi/10.34133/2022/9850486)」を読んでみた。（単語すらよくわからんかったので単語備忘録みたいになってしまった）

## 1. 従来の植物画像解析手法と課題（イントロより）

従来の植物画像解析では、以下のような手法が用いられていた：

- **閾値処理 (Thresholding)**: 画像の輝度や色を基準にし、対象物を分離する方法
- **エッジ検出 (Edge Detection)**: 画像内の輪郭を検出し、作物を識別
- **クラスタリング (Clustering)**: k-means、階層的クラスタリング (Hierarchical Clustering)、Gaussian Mixture Model (GMM) などを用いて植物の領域を分類
- **特徴量ベースの機械学習 (Feature-based Machine Learning)**: 事前に設計した特徴量 (色、形状、テクスチャ) を用い、SVMやランダムフォレストなどの分類器を適用
- **3Dデータ解析 (3D Data Analysis)**: LiDARやSfM技術を用いた3D点群データを利用し、作物の高さや体積を測定

しかし、これらの方法は光条件や背景の影響を受けやすく、汎用性に欠けるという課題がある。

## 2. 本論文の提案手法

本論文では、ディープラーニングを活用した自動解析の手法として以下を提案：

1. **SfM (Structure from Motion)** による高解像度オルソモザイク画像とDSMの作成(Agisoft Metashape→ SfM処理 (Structure from Motion) を用いて RGB・NIRのオルソモザイク画像とDSM を生成)
2. **Mask R-CNN** によるイチゴの葉群の検出
3. **Deep Regression** による葉面積およびバイオマスの推定

この組み合わせにより、従来の特徴量設計を必要とせず、高精度な自動解析が可能となる。

## 3. データ取得と前処理

RGBカメラとNIRカメラを搭載した地上トラクターを用いて画像を取得。取得したのはカラー画像 (RGB) と近赤外画像 (NIR) のみであり、それらの画像を元に解析を行った。

### 登場するデータの種類

- **GCP (Ground Control Points)**: 画像の位置精度を高めるための基準点
- **オルソモザイク画像**: 地形の歪みを補正した高精度画像
- **DSM (Digital Surface Model)**: 3Dの地表モデル

### 前処理

- **SfMによる画像処理**: 複数画像から高解像度オルソモザイク画像とDSMを生成
- **幾何補正**: 画像の歪みや座標変換を補正
- **ノイズ除去**: 画像の質を向上させるフィルタリング処理
- **回転やミラーリング**：画像のデータ拡張として回転させたり反転させたりしてバリエーション増やしてる
- **リサイズ**：取得した画像を224x224ピクセルに変換。モデルによって入力できる形式が違うらしい
- **バンド組み合わせ**：RGB, NIR, DSMのバンドを組み合わせ、入力するデータをちょっと変えて比較実験。DSM-R-NIRとDSM-RGB-NIR-Maskの２つ

## 4. Mask R-CNN による葉群検出
- TensorFlow 2.1.0 / Keras 2.3.1を深層学習フレームワークとして使用
- Mask R-CNNは、物体検出に加え、ピクセル単位でのインスタンスセグメンテーションを可能にする手法。従来のCNNと比べて **インスタンスセグメンテーション** を可能にする点が大きな違い

#### **従来のCNNとの違い**
1. **画像分類 (Classification) のみではない**  
   - 一般的なCNN (例: VGG-16, ResNet) は、画像全体を1つのクラスに分類
   - Mask R-CNN は、画像内の複数の物体を識別し、それぞれの形状をピクセル単位で分離

2. **物体検出 (Object Detection) 機能の追加**  
   - **Faster R-CNN** をベースにし、物体の境界ボックス (Bounding Box) を検出可能
   - これにより、「この画像に何があるか」だけでなく、「どこにあるか」も特定できる

3. **ピクセル単位のマスク生成**  
   - **Semantic Segmentation** は画像内のすべてのピクセルをクラスごとに分類するが、個々のオブジェクトを分離しない
   - Mask R-CNN は、各物体ごとに異なるマスクを生成する **Instance Segmentation** を実現

### **従来の手法との比較**
| 手法 | 目的 | 特徴 |
|------|------|------|
| CNN (例: VGG-16, ResNet) | 画像分類 | 画像全体を単一のクラスに分類 |
| Faster R-CNN | 物体検出 | 画像内の物体の位置とクラスを検出 |
| セマンティックセグメンテーション (例: U-Net) | 画素分類 | すべてのピクセルをクラスごとに分類するが、個別の物体を区別しない |
| **Mask R-CNN** | インスタンスセグメンテーション | 物体のクラスと位置に加え、ピクセル単位のマスクを生成 |

Mask R-CNNは、これらの手法の発展形であり、特に **物体検出 + セグメンテーション** を組み合わせた強力な手法。

## 5. Deep Regression による葉面積とバイオマス推定
Mask R-CNN で分離した株ごとの葉群を、深層回帰 (Deep Regression) を用いて解析。

### 深層回帰 (Deep Regression) とは？
畳み込みニューラルネットワーク (CNN) を用いた回帰分析手法であり、従来の線形回帰や決定木ベースの回帰手法と異なり、高次元の非線形関係を学習可能。
本論文では、Mask R-CNN により抽出された 葉群の特徴量 (面積、形状、テクスチャ) を入力とし、最終的に葉面積やバイオマスの数値を回帰モデルで予測。

### 深層回帰の構造
CNN の特徴抽出機能を活用し、以下のようなアーキテクチャを採用：

1. 畳み込み層 (Convolutional Layers)
    - RGB および NIR 画像から特徴を抽出
    - ResNet-50 や VGG-16 を利用し、深層の特徴を学習
1. 全結合層 (Fully Connected Layers, FC層)
    - 畳み込み層で得られた特徴マップを1次元のベクトルに変換
    - 最後に回帰モデルを適用し、数値予測 (バイオマスや葉面積) を行う
1. 損失関数 (Loss Function)
    - 平均二乗誤差 (Mean Squared Error, MSE) を使用
    - 予測値と実測値の誤差を最小化するように学習
### 深層回帰の利点
- 手作業による特徴量設計が不要：CNN が自動で最適な特徴を学習するため、手動での特徴抽出 (色、形状、テクスチャ) が不要
- 非線形関係を学習可能：バイオマスや葉面積のような複雑な関係性もモデルが学習できる
- 従来手法より高精度：特徴量設計に依存しないため、環境条件が異なっても適応可能

## 結局どこまで使えそう？
どこが株でどこが背景か、というのは正確に抽出できるし、一般的な物体検出（e.g. YOLOXなど）よりは高精度。NIRやDSMも取得できるなら有効。
バイオマス・LAIもまあ精度よく推定できる。
特徴量設計が不要なので、従来の手作業よりはいいかも？

## 感想
実際、この処理はこういうコードで動いてるよ、まで嚙み砕いてくれると実感わくんだけどね。結局よくわかんなかったから日々精進ですな。
あと技術的にすごいことは分かるんだけど、研究目的でしか使い道が思いつかない。どうやって社会実装につなげるんでしょうね...?