骨年齢の決定のための競争。 メンバーノート
10月6日に、 北米放射線学会 ( RSNA )および放射線情報委員会( RIC )のアメリカの放射線科医が組織した非常に興味深いコンテストがVolodya Iglovikovのレーダーに落ち、彼はODS.aiコミュニティで叫びました。
競技の目的は、手のX線から骨年齢を決定する自動システムを作成することでした。 骨年齢は、小児の身体発達の包括的な評価のために小児科で使用され、時系列からの逸脱は、さまざまな身体システムの機能障害を特定するのに役立ちます。 医療プロジェクトに関しては、説得する必要はありませんが、このコンテストは8月に始まり、8日間の冒険の前に参加しました。 少なくとも写真の前処理を開始するには、ハンドマスクが必要でしたが、Volodyaは数日でそれらを優れた品質で作成し、他の人と共有しました。 手動のマークアップを含むこの困難なタスクにいかに迅速に対処したかは謎であり、おそらく自分でそれについて書きます。 マスクを使用することで、アイデアはもはや絶望的ではなかったので、参加することに決め、最終的にほぼすべての計画を実現することができました。
挑戦する
骨年齢 (骨年齢)は、子供や青年の骨の発達レベルに対応する条件付き年齢です。 スケルトンの形成はいくつかの段階で発生します。 これは、小児科で骨年齢と年齢を比較するために使用されます。これにより、内分泌系および代謝系の違反を時間内に確認できます。
骨の年齢を決定するために主に使用されるのは、20世紀後半に開発されたGP Greulich and Pyle(Greulich and Pyle)とTW2 Tanner、Whitehouse and Healy(Tanner、Whitehouse、Healy)です。 どちらの方法も、手首と手首の関節のレントゲン写真に基づいています。 骨および骨化核の成長組織の領域が多数あるため、 これらのX線写真は、骨端の外観(尿細管骨の端部)、その発達段階、骨端の骨幹形成と骨端の融合のプロセスを追跡するために使用できます。
GP法は、X線と特別なアトラスの比較に基づいています。 ここでは、骨年齢がTW2メソッドによってどのように決定されるかを見ることができます。 この方法は、20個の特定の骨を評価することで構成され、そのほとんどは手首または中手骨と近位指節骨の関節領域に関連しています。 骨年齢を決定するための古典的な方法は、かなりの専門家の時間を必要とし、診断とその後の治療に悪影響を及ぼす主観的評価に大きく依存しています。
今日、骨年齢の自動検出のための最初で最良のシステムは、ヨーロッパでの使用が承認されている商用のBoneXpertシステムです。 BoneXpertはAAMコンピュータービジョンアルゴリズムを使用して、手のひらの13の骨の輪郭を再構築し、形状、テクスチャー、強度からGPまたはTWの方法に従って骨年齢を決定します。 このシステムの精度は0.65年です。 BoneXpertの重大な制限には、画質に対する感度と、手首の骨を使用しないという事実が含まれます。これは、幼い子供の骨年齢を決定する際に特に重要です。 最近の出版物 「骨年齢評価のための完全自動化深層学習システム」は、放射線写真のみを使用して0.82〜0.93年の精度を示した機械学習システムについて説明しています。
私たちの競争の目的は、X線のみで骨年齢を決定する自動システムを作成することでした。
データ
主催者は、スタンフォード大学、コロラド大学、カリフォルニア大学の3つの研究所から収集した12,611のトレーニング、1,425の検証、200のテスト画像を提供しました。 トレーニングセットでは、5,778人の少女、6,833人の少年。 1〜228か月の年齢。 テストセットでは、男の子と女の子が均等に分割されます。
写真は、さまざまな機器で、さまざまな時間に、さまざまな種類で撮影されました:スケール、手のサイズ、向き、コントラスト、碑文、フレーム、その他のゴミ。 png形式のモノクロ。通常のサイズは2044x1514ピクセルです。 すべての画像について、性別が示され、訓練については-専門家の評価によって得られた骨の月齢。
前処理
コントラストを正規化してデブリを除去するには、V。Iglovikovのマスクを使用してバックグラウンドをリセットする必要がありました。 さらに2つのオプションが考慮されました:自動コントラストとPIL.ImageOpsからのイコライズ。 ヒストグラムの等化は、ハイライトがハイライトされたという事実と合わず、その結果、自動コントラストが使用されました。
この上で前処理を行うと、さまざまなスケールと向きの画像でモデルを完成させて訓練することができます。 これが機能する可能性があります。 しかし、元の方法では、中手骨(中手骨)、指節骨(近位指節骨)、手首(手根骨)のいくつかのコンパクトゾーンに焦点が当てられています。 小さな領域でいくつかの異なるモデルを高解像度でトレーニングすることは非常に魅力的でしたが、これらのゾーンを正しくローカライズするには、最初にすべての手のひらを同じサイズと位置にする必要がありました。 登録します。 したがって、追加のタスクは2つのモデルに削減されました。
- 画像登録用
- セットゾーンの年齢を決定するため
画像の登録。 モデル1
中指の先端、手首の有頭骨の中心(Capitate)、および親指の先端がキーポイントとして選択されました。 手動で800枚の写真にマークを付けました。 なんらかの理由で、ポイントをマークするような単純なタスクのために動作するソフトウェアを見つけることは困難であることが判明しましたが、最終的に私はVGG Image Annotator(VIA)を見つけて完全に適合しました。 画像は2080x1600に縮小され、トレーニング中に16xに縮小されました。
キーポイント(x、y)の座標を決定するために、ブロック64〜128〜256、512ニューロンの完全に接続された2つの層、6つの出力(3 x 2)、および損失関数MSEを含む回帰VGGのようなモデルを使用しました。 VGGブロックは、3x3および1x1フィルター、バッチ正規化、ELUアクティベーション、およびMaxPooling 3-2を備えた2つの畳み込み層です。 通常、私はSGDオプティマイザーを使用しますが、ここではAdamが良好であることが証明され、時間がなくなっていました。 ResnetやInceptionではなくVGGを使用する理由 これが何に関連しているかはわかりませんが、私の仕事ではVGGの方が少し良くなることがよくあります。また、アーキテクチャを選択する時間がありませんでした。 増強で訓練:回転、シフト、ズーム。 ローカリゼーションの精度は約3%であることが判明しましたが、これは明らかに制限ではなく、競争の後、医療画像を登録する他の方法を試してみたいという要望がありました。
キーポイントが見つかると、アフィン変換(スケーリング、回転、シフト、および一部の場所での鏡面反射)を計算し、中指の指先と頭頂部が同じ垂直線、上100ピクセル、下480、右の親指になるようにします。
メインモデル
ご想像のとおり、これは回帰VGGモデルでもありますが、大きな画像以上で動作します:ブロック32-64-128-128-256-384、2048個のニューロンの完全に接続された2つのレイヤー、1つの出力。 競合指標はそれぞれ平均絶対距離であり、モデルは損失関数として平均絶対誤差(MAE)を使用しました。 入力には2080x1600の写真がありますが、このモデルでは、特定のゾーンから特定のサイズのクロップを作成し、拡張とスケーリングを行うジェネレーターが作成されました。 3つのゾーンが選択されました:
A)腕全体、クロップ2000x1500、スケール1:4
B)手首、クロップ750x750、スケール1:2
C)中手骨および近位指骨、600x1400、スケール1:3
そのため、異なるゾーンからの3つのモデルがトレーニングされました。 競技会の終了まで2日間が残されましたが、私は完全なクロス予選を行いませんでした。 モデルは11,600枚の写真でトレーニングされ、1,000枚で検証されました。 増強とドロップアウトにより、収束は非常に均一で、再訓練の兆候はありませんでした。
手首で訓練されたモデル(ゾーンB)は、腕全体(A)のモデルよりも5.3倍大きい面積であることが判明しました。 予期しない結果が中手骨のモデルによって示されました(C)。 TW2方式では中手骨ゾーンは最大の重要性を与えられておらず、その面積は(A)の3.6倍小さくなっていますが、より優れていることが判明しました(B)。
競争の終わりに、私は標準的な方法では、骨の年齢は性別によって決定されることを思い出しました。 男の子と女の子のモデルを個別に調整すると、約1.4か月で大幅に改善され、3つではなく6つのモデルがありました。
そして、公式の終了後、1つの誤解が、適切な時期に到達しなかったアイデア、つまり回帰ではなく分類を実現するのに役立ちました。 主催者は、10月15日の深夜に競技会の終了を予定していました。 ODS.aiのスタッフは15時から16 時の間の真夜中だと思っていましたが、10月14日には終了までに数時間残っていることがわかり、決定を提出する時間がありませんでした。 このような美しい締め切りで予想されたように、誰もが幸運であったわけではありません。 数人の競技者が捕まり、文句を言い始め、競技は1日延長され、私は1日余分になりました。
分類は完全に伝統的なものではありませんでした。 クラスの役割は月単位の年齢によって果たされましたが、ネットワークの出力では、確率ではなく、すべてのクラスの年齢の予想がありました。 量子化のさまざまなバリエーションを検討しましたが、最も単純なものである1か月-1クラス、合計240クラスが最もよく現れました。 最後から2番目のレイヤーで、240個の出力にsoftmaxを配置し、年齢ベクトル([-1、1]に正規化された0、...、239)をスカラーで乗算しました。 回帰の場合と同じラベルと同じ損失関数(MAE)でモデルをトレーニングしました。
分類モデルは個別に回帰モデルをわずかに上回りましたが、より大きな重みで線形アンサンブルに入り、全体的な結果が大幅に改善されました。
おわりに
競争は美しく、すべての中で最速であることが判明したため、私は参加しなければなりませんでした。 非常に興味深いトピックについて主催者に感謝します。V。Iglovikovにこれを引き寄せ 、マスクを手伝ってくれたこと、 A。Stromnov 、 A。Shvets 、 Yu。Kashnitsky 、 P。Nesterovにテキストのコメントと訂正を感謝します。
最終層の機能を強化することを除いて、計画されたほぼすべてが可能でした。 しかし、これにより結果が大幅に改善されることはまずありません。医療MLでよくあることですが、画像の注釈の曖昧さに関連する限界に達しているようです。
私たちの結果が医学に役立つことを願っています。 テストサンプルのODS.ai参加者が示す骨年齢の決定の精度(A. Rakhlin-4.97か月/ 13位、V。Iglovikov-5.41 / 18、A。Shvets-5.50 / 19)は、BoneXpertおよび「Fully Automated Deep Learning」を大幅に上回りました。骨年齢評価システム」は、それぞれ0.65年と0.82〜0.93年です。 受賞者の決定を楽しみにしています。これは、来月開催されるRSNAカンファレンスで発表される予定です。
12月15日を更新します。
bioRxivおよびarXivに関する記事を公開しました。 骨格発達の時系列の段階でのセグメンテーションとさまざまな統計の説明を追加しました。