Kaggleでダウンロードしたデータセットでは,良性が32542枚,悪性が584枚でとても偏りが多いものとなっていて,過学習の原因となってしまいます.そのため,メラノーマのデータ数に合わせて学習を進めていきます.
データセットに付属しているメタデータは図の様になっており,以下の事が読み取れます.
実験で用いるKaggleからダウンロードした画像は
実際にメラノーマか否かを判断するのに必要な領域は,肌を含まない茶色に変色した部分です.
そのため,ネットワークを用いた学習時には,OpenCVの findContours()
を使用して対象となる領域を抽出し,その他の必要とならない皮膚の部分を黒く塗りつぶすことで過学習を抑制した学習を進めることができます.
しかし,抽出後の画像の中にはいくつか想定をしていない抽出をされた画像も存在していました.全てを確認した訳ではありませんが,3割程度が想定していない抽出のされ方をしていました.これが,学習の精度を妨げる要因となり得るため
findContours()
を医用に最適化する等のアルゴリズムの改善が求められ,それが今後の課題の1つとなります.
ResNet18で学習を行った結果,メタデータを用いた場合の方がvalidationにおいて高精度であることが確認できます.また,メタデータだけでなく全結合層に隠れ層を追加して実験を行ったことで以下のことも確認できます.
conv層の重み | メタデータ | fc層 | accuracy |
---|---|---|---|
可変 | 無し | 76.39% | |
固定 | 無し | 67.96% | |
可変 | 有り | hidden層を追加 | 79.17% |
固定 | 有り | hidden層を追加 | 73.96% |
EfficientNet-B1で学習を行った結果,メタデータを用いた場合の方がvalidationにおいて高精度であることが確認できます.また,メタデータだけでなく全結合層に隠れ層を追加して実験を行ったことで以下のことが確認できます.
conv層の重み | メタデータ | fc層 | accuracy |
---|---|---|---|
可変 | 無し | 70.83% | |
固定 | 無し | 73.26% | |
可変 | 有り | hidden層を追加 | 76.74% |
固定 | 有り | hidden層を追加 | 75.00% |
今回の研究で,ResNet18とEfficientNet-B1の双方で医者の平均識別率を超えることができました.しかし,80%程度では実用性はないので,更なる改善が必要であると考えます.具体的にはCNN以外に
の様な畳み込み処理のない手法を使用し,細部における情報の欠損をさせることのない学習をさせていきたいと思っています.