Microsoft Custom Vision Service を使用した鼓膜画像認識

##概要
プログラミングの勉強を始めて5か月程の開業医です。

他分野に遅れながらも医療業界でもAIの新たな技法が開発・改良されています。すでに心電図・内視鏡・MRI・CT・眼底・病理などの画像診断の研究が進められていますが、耳鼻科領域での報告はほぼありません。

今回、様々な鼓膜の写真をMicrosoft Custom Vision Serviceにまとめて学習させることで急性中耳炎か滲出性中耳炎か正常鼓膜かを判断させ、その診断精度を計測してみました。

使用した鼓膜画像は画像認識技術開発のために使用することに同意いただいたものを匿名化し使わせて頂きました。

##方法
**1.Microsoft LearnとAzureアカウントの取得**

こちらを参考に outlook.jp のアカウントを作りました。
[MicrosoftアカウントのOutlookメールアドレスを取得する方法 - Qiita]
(https://qiita.com/TomoyoH/items/fca3f49729d82d9884eb)

**2.Display nameの作成**

サイトにアクセスします。
[Microsoft Learn | Microsoft Docs](https://docs.microsoft.com/ja-jp/learn/)

サインインしてDisplay nameを作ります。
通知用の電子メール、国を指定して同意します。

**3.Azure アカウントを作成**

制作していくためにはアカウントが必要なので作成します。

[演習 - Azure アカウントを作成する - Learn | Microsoft Docs]
(https://docs.microsoft.com/ja-jp/learn/modules/create-an-azure-account/3-exercise-create-an-azure-account)

**4.Microsoft Custom Vision Service を使用**



[Microsoft Custom Vision Service]
(https://docs.microsoft.com/ja-jp/learn/modules/classify-images-with-custom-vision-service/index)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453374/5e115b18-f37d-e651-4532-ba1a8b28f707.png)

以下の作業を順番にやっていきます。

**5.Custom Vision Service プロジェクトを作成**

**6.タグを付けた画像をアップロード**

今回はローカルファイルから
「急性中耳炎」と「鼓膜」のタグをつけた急性中耳炎の鼓膜画像を93枚、
「滲出性中耳炎」と「鼓膜」のタグをつけた滲出性中耳炎の鼓膜画像を94枚、
「正常鼓膜」と「鼓膜」のタグをつけた正常鼓膜画像を92枚アップロードしました。

**7.モデルをトレーニング**

モデルをトレーニングするには、ページの上部にある [トレーニング] ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453374/285a7444-98a3-b7cf-9c48-b18bb80f990d.png)

結果は、Precision（精度）とRecall（再現率）とAP（平均精度？）がモデルの診断精度の指標として示されます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453374/7d8edfd0-a9be-0000-0958-fe75f4d3a5b3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453374/1f1ff060-00a6-8158-8714-261634dcdcf1.png)

全体では精度95.6%、再現率97.3%と高い診断率です。
内訳は
鼓膜と急性中耳炎は精度、再現率ともに100％、
正常鼓膜が精度89.5%、再現率94.4%、
滲出性中耳炎が精度85.0%、再現率94.4%でした。

**8.モデルをテスト**

モデルのトレーニングが済んだので、今度はこれをテストします。 モデルに新しい画像を渡して、どれくらい正しく分類されるか確認します。

ページの上部にある [Quick Test] をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453374/0d412d2d-f062-18ba-985a-3deaae67add4.png)

今回は先ほど訓練画像として使用したものとは別の
急性中耳炎の鼓膜画像を10枚、
滲出性中耳炎の鼓膜画像を10枚、
正常の鼓膜画像を10枚をローカルファイルからテスト用画像として使用しました。

画像を１枚ずつテストしていきます。

ページの上部にある [Prediction] をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453374/bddfe75d-fdfe-8715-36ec-6212f5117d51.png)

**9.結果**

正診率は100％でした。
30枚のテスト画像すべてで、最も高い確率で選びだしたタグが正解のタグでした。

診断が難しいと思われたテスト画像をいくつかピックアップします。


極軽度の鼓膜の発赤がある軽い急性中耳炎の画像です。
急性中耳炎の確率が72.3%と他のタグより高い確率で診断されています。
<img width="755" alt="2019-11-30_17h03_51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453374/6ea0f91c-1ecf-9692-4dfc-2aa22f3bcc06.png">

鼓膜が濁っているので水が溜まっているのが少し分かりにくい滲出性中耳炎の画像です。
滲出性中耳炎の確率が75%と他のタグより高い確率で診断されています。

<img width="756" alt="2019-11-30_17h06_08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453374/73a3c2b9-2631-6b79-5708-791781c44db1.png">


##考察

テストでは100％の正解率が出て驚きました。
また、無料で短時間でこんなに高い精度のモデルが作成できるMicrosoftのサービス自体が本当にすごいと思いました。

今回の鼓膜画像は耳鼻咽喉科専門医が診断・撮影・タグ付けを行っているので、データの質としては良いものと思います。300枚という少ない画像数でも訓練データが良いと正解率が高いモデルを構築することができるのではないかと思われました。

以前自分でKerasでCNNモデルを作り（ほとんどコピペですが）鼓膜画像診断を試したことがあります。今回と同じ訓練データとテストデータでテスト結果が正解率96.6％でした。これもかなりいい結果と思っていたのですが今回負けて少し悔しかったです。