AIを使ったサービスや商品を開発する際、当社では最初にPoC(Proof of Concept、概念実証)を行い、どのようなAIモデルができるのかを実際に作ってみてテスト結果をお客様にご提示しています。

通常の開発依頼と異なりPoCというのはイメージがし辛いですが、今回『写真に写っているエゾシカのオスとメスごと頭数を、AIを使って自動集計』というテーマで実施したのでここで紹介します。

PoCではどんなことをするのかや、どんな結果レポートが出てくるのかがわかりますので、AI開発をお考えの方はご参考ください。

1. PoC実施の背景~エゾシカの被害に悩む日本~

まず今回PoCのテーマとして選んだエゾシカについてです。

都市部ではあまり知られていませんが増えすぎたエゾシカによる農林水産業への被害は、2019年の1年間で38億6千万円にもなります。カラスによる被害が2位の3.5億円ですので、鳥獣別被害では圧倒的なトップです。こちらの資料でも、農林業において被害全体の8割がエゾシカによるものとあります。

具体的な被害内容は、「樹皮を剥いだり角をこする」ことでの樹木の枯死や、好みの植物だけが食べつくされてしまうことによる生態系への影響、里山におりて農作物を食べる被害などがあります。この対策にあたっては、山にいるエゾシカのオスとメスそれぞれの頭数把握を把握することがまず必要となります。

この作業ですが現在、無人の定点監視カメラを用いて何らか動くものがあった場合に自動で撮影をし、後日回収してから膨大な時間と手間をかけて写真から手動で頭数を集計していると知りました。

そこで写真からエゾシカの判別や集計を自動的に行うご相談があったと仮定し、当社のAI開発の技術力を活かしてPoCを実施致しました。

2. PoCを開始するにあたっての準備

以下の画像は、弊社でのAI開発の進め方です。

最初にお客様へのヒアリングして目的やKPIなどを設定、各種データを受け取ったうえでAIモデルを作成し、その結果(テストデータで検証した結果)をレポートで報告するという流れになります。

今回作るAIモデルとしては、下記のようにしました。

◆写真からエゾシカの頭数とオス・メスといった分類ごとの数を集計する
◆その分類は「角があるシカ=オス」「角が無いシカ=メス」「角の有無がわからず判別不明なシカ」の3種類とする
◆1枚の写真に複数頭写っていた場合は、1頭ごとに3種類のどれに該当するのかを判別し集計する
◆シカ以外が写っていた場合は、上記にカウントをしない

データとしては、約2万枚の定点監視カメラで撮影した画像を使いました。

3. データへのアノテーション

まずは「角があるシカ(Horn)」「角が無いシカ(Hornless)」「角の有無がわからず判別不明なシカ(Unknown)」がそれぞれどういった写真なのかを、AIに学習させる必要があります。

写真ごとに写っているそれぞれのシカが上記3種類のどれが該当するのかを、正解(写真に写っているのは、角無しのシカ1頭であるといったデータ)を元に指定していきます。一般的にアノテーションやラベル付けと言われる作業です。

アノテーション後に写真を2種類に分けます。「AIに学習させるための写真データ」と、「出来上がったAIモデルをテストするための写真データ」です。その配分比率ですが、今回のPoCでは8.5:1.5の割合で2種類に分けました。

ちなみになぜ2種類に分けるのかと言えば、学習させたデータでテストをしてしまうと、既にAIが覚えている内容なのでカンニングをしたテストとなってしまい、AIモデルの正しい評価ができなくなってしまう為です。

4. エゾシカの検出率~Detection RateとThreat Score~

アノテーションを終えた後は、AIモデルを作ります。今回は100万枚を超えるイメージで学習済みの畳み込みニューラルネットワーク、Backbone Resnet50という物体検出モデルを最適な形に調整し、学習用データを学習させてAIモデルを作りテストデータを使ってテストをしました。

エゾシカの検出率(写真からどのくらいエゾシカを正しく検出できるのか)を出します。まずは指標の定義ですが、

TP: シカを正しく検出できた数
FP: 葉、枝などのシカではないものをシカとして誤って検出した数
FN: 実際は存在するものの暗い/隠れているといった様々な原因でシカを検出できなかった数

とします。そしてテスト結果はこうなりました。

TP FP FN
1,243 85 237

さてここから検出率を算出しますが、計算方法には2種類あります。「Detection Rate」と「Threat Score」です。

よく検出率としてあげられるのは「Detection Rate」であり、TP/ (TP + FN) という計算式になります。

しかし本当の意味での検出率は、分母に検出できなかったシカの数であるFNが含まれている計算式になります。これが「Threat Score」であり、TP/(TP + FP + FN)という計算式になります。

今回「Threat Score」で計算した検出率は、79.42%となりました。

5. エゾシカ分類の検証結果

次に「角があるシカ」「角が無いシカ」「角の有無がわからず判別不明なシカ」3種類への分類結果です。以下の様になりました。

AIモデルによるシカ分類結果
角があるシカ 角がないシカ 不明 検出できない
 

実際の頭数(正解)

角があるシカ 182 63 7 25
角がないシカ 35 700 20 91
不明 19 116 101 121

上記図についての意味は、実際に『角があるシカ』が計277頭(182+63+7+25)いて、AIが正しく『角があるシカ』として分類できた数が182頭であったという意味となります。

これを元に分類の精度を計算してみます。「角があるシカ」について次のように当てはめます。

TP: 角があるシカと正しく分類する値
TN: 角がないシカと不明のシカの両方とも正しく分類する値
FP: 角がないシカと不明の種類を、角があるシカとして誤分類する値
FN: 角があるシカの種類を、角がないシカまたは不明として誤分類する値

計算式として(TP + TN) / (TP + FP + TN +FN)で計算します。

同様に「角が無いシカ」「不明なシカ」についてもTP~FNを設定して計算したところ以下の様になりました。

角があるシカ 角がないシカ 不明 平均
精度 90.02 81.17 86.97 86.05

分類の平均精度は、86.05%という結果になりました。

6. PoCを実施したことでわかる問題点や課題

さてPoC(概念実証)という通り、やってみることでAIモデルの判別精度以外に見えてくることがあります。今回は2つありました。

6-1. アノテーションにおける課題

1枚の写真に複数頭が写っているケースなどで、アノテーションを行うにあたって判断に迷うケースがあることがわかりました。

特に夜間撮影された画像などにおいては、写真を見てもそれが「角がないシカ」なのか、それとも「不明なシカ」なのかを分類することが難しいです。

この写真に写っているのは、「角が無いシカ」が何頭で「不明なシカ」が何頭という正解(別途テキストデータ)があったとしても、実際に写真へのアノテーションをする際に複数頭の内、どちらを「角がないシカ」としてラベル付けすればよいのか判断に困るケースが多くなり、結果一貫性が欠けることになりました。

6-2. 特定のデータ素材の利用について

今回利用したデータのうち、ある特定のカメラ1台(フォルダ4)において撮影されたデータは、他のカメラ5台(フォルダ1~3、5~6)と異なり「画像1枚の写っているエゾシカの平均頭数」が他のフォルダ内の画像よりも多いという特徴がありました。

写真の枚数

物体数

画像1枚の写っているエゾシカの平均頭数

フォルダ 1

2,515 2,735

~ 1.08

フォルダ 2

3,100 3,435

~ 1.1

フォルダ 3

3,528 3,669

~ 1.04

フォルダ 4

2,476 7,441

~ 3.01

フォルダ 5

4,060 4,107

~ 1.01

フォルダ 6

3,821 4,428

~ 1.16

平均頭数が多いことで複数のシカにより一部のシカが隠れてしまうケースや、シカの一部しか撮影されていない画像も存在しています。

こういった他のフォルダには無い画像があることで、AIモデルの性能(シカ検出率や分類の正解率)に悪影響を与えている可能性があります

フォルダ4のケースが一般的でない場合は、このフォルダ4を除いてAIモデルを構築することで、より性能が高いAIモデルが出来上がる可能性もあると考えられるため、実際にフォルダ4を除き検証を行ったところ下記のような結果となりました。

エゾシカの検出率(Threat Score): 84.14%(フォルダ4を含めた場合79.42%)

エゾシカの分類精度:平均90.29%(フォルダ4を含めた場合86.05%)

予想通りフォルダ4を含めないことで4%超、数値が向上した結果となりました。

こういった試しにやってみてその結果を確認することで、一部のデータ素材を特殊なケースとして扱い例外として外すのかどうか・・・という判断材料になります

7. PoC結果レポートとその後について

PoC実施後は、結果レポートを作成してお客様へ提示しています。今回のエゾシカ判別のPoC結果レポートは、下記画像をクリックすると実際にダウンロードしてご確認いただけます。

PoCで判明した検出率などの結果を元に作ったAIモデルをそのまま導入するのか、それともさらに別のデータを用いて再度PoCを実施するのか判断も可能です。

AIモデルを導入する場合、AIモデルだけをお渡ししてお客様側のエンジニアが組み込むことや、弊社側でAIモデルが動くソフトウェアやWEBサービスを作ることも可能となります。

8. 世界Topレベルの技術力でAIを開発

当社のAIチームメンバーは、kaggleという世界的なAIコンペの「Predicting Molecular Properties」において、2749チーム中10位を受賞しMasterの称号も得るなど世界トップレベルです。

このメンバーでPoCを実施しAIモデルを開発してそれを組み込んだサービス開発も可能ですので、ご興味のある方はお気軽にご相談ください。

詳細