YOLOを用いた血液細胞の検出
背景
AIの進歩により、AIを用いた画像診断ができるようになっている。しかし画像診断を行うコンピュータには高価なGPUや高い処理性能のコンピュータ、高解像度の画像が使われるのが一般的である。
目的
医療画像の診断をRaspberry piを用いて行えば、安価に診断機器を作れる可能性がある。今回は画素数が違う医療画像を用いて、血液細胞の検出を行った。データセットとしては比較的素人でも結果がわかりやすい血液細胞の画像を用いた。
概要
YOLOv5を用いて、低解像度の血液細胞の画像から、白血球・赤血球を検出した。
結果

まずは、画像の解像度を低くして、YOLOでの物体検出の精度(mAP)がどのように変化するのかを調べたところ、解像度が低くなるに連れて、精度が下がることがわかった。
解像度が低い状態で、精度を上げるにはどうすればいいか、試行錯誤した。
結論を述べると、低解像度な画像は学習不足に陥っており、学習数を増やすと、精度が向上した。

256x256の解像度の画像ではエポック数が100程度でmAPが1に近づいているが、128x128や64x64ではmAPがエポック数100程度ではまだ学習の余地があることがわかった。
工夫点・反省点

精度を上げるため次の4つの前処理を行った。
- グレースケール化
- エッジ検出
- グレースケール化 + エッジ検出
- エッジ検出 + グレースケール化
しかし、上記の図の通り、精度は改善できなかった。

原因としては次のことが考えられる。
- CNNを用いるYOLOでは色情報を使うので色情報が失われると精度が低くなる?
- 畳み込み(CNN)は、フィルタを使用して画像内のピクセルを滑らかにし、これにより、エッジが強調され、前処理が効果が出ない?
結果としては学習不足が発生していて、学習回数を上げると精度が上がった。