YOLO3でポリープ検出AI作ってみた

今回作ってみたもの

このような画像から

f:id:MorinoKuma3:20190321155454p:plain

以下のように、ポリープを検出AIを作ってみました!

f:id:MorinoKuma3:20190321155538p:plain

 

 経緯

・Udemyで物体検出を学び、

・Qiitaで記事を見て、背中をそっと押してもらえたので、作ってみました。

 学習

 当初はルンバを改造して、何かしらを追尾させたいと思い学習を始めました。

独学より効率がよいと思い立ち以下の講座を受けました。アンカーボックスなど基本的な概念など学ぶことができました:)

www.udemy.com

実践

受講後に何作ろかと考えている時に、以下の記事を読み、自分も真似てポリープ検出AIを作ってみることに!

qiita.com

作成の流れ

大体記事通りですが、以下です。

データ準備

以下から内視鏡の画像データをDL。

The Kvasir Dataset

以下のツールを使い、アノテーションファイルを作成。

BBox-Label-Tool

記事と同様に500枚の学習データ準備。

Training

記事と同様にYOLOv3を採用。
https://github.com/qqwweee/keras-yolo3

順調に学習していたと思いきや、ResourceExhaustedErrorが発生。。。(悲)

エラー回避

 GPUのメモリが足りないようなので、以下の変更で必要なメモリサイズをコンパクトにして無事動いた。

・画像サイズの削減

  416x416 -> 128x128

・batchサイズの削減

  64 -> 32

検出

こんな感じでわかりやすいものは検出できるようになりました!

f:id:MorinoKuma3:20190321164413p:plain

ただ、以下の画像の様に検出できないものもありました。

f:id:MorinoKuma3:20190321164709p:plain

まだまだ改善の余地はありますね。

人の目で見ても見づらいので、画像サイズを削減したせいでしょうか。

今後

画像サイズ削減しないで学習させてみたいと思います。