日頃の点検では、目視で異常を検出する、傷みの進行を確認する、修繕したところのその後を確認する・・など、正常/異常の判定の他にも、状態の変化を観察すると言ったことも行われていると思います。
以前「【機械の目 Vol.5】撮影日の異なる同一地点の映像から差分抽出は可能か?」の中で、微小に変化した事物を、人の目で見つけることの難しさと、差分画像で違いを見つけようとしても、「逆に変化部分が強調され過ぎて、本当に着目すべき部分が良く分からない」といった課題に触れました。
そこで、最近ではディープラーニングによる画像検出技術を使って、「異常・正常箇所を探す」→異常個所の密集度を使って"本当に見るべきところ"をピックアップする手法に取り組んでいるところです。
前回、前々回では、AIが検出した損傷個所を、GIS(Q-GIS)で可視化したり、GISで作成したデータからKMLを生成し、4D-dbのマップと重ねるといった手法を行いましたが、ひと手間かかることや、即時性に欠けること、検索結果をダイレクトに反映したい・・といった課題がありました。
【オープンイノベーション】Vol.29:鉄道保線用遊間検出AIによる南阿蘇鉄道遊間検出結果
【オープンイノベーション】vol.30:4D-dbにkmlレイヤ追加(地図画面で遊間箇所特定)
今回は、AIで検出した損傷個所(損傷の気づき情報)の情報を登録する手段を整備し、その後"4D-dbのヒートマップ機能で損傷個所の粗密を可視化する手法"を紹介します。
まずは、今回の結果(結論)です。
・4D-dbのテーブル(損傷個所情報)
4D-dbのテーブル構造は、画像一枚一枚に対して"ラベル値"というレコードを関連づけており、この"ラベル値"は、YOLOの検出結果のアノテーション図形情報や、物体検出クラスID、損傷レベル値というレコードを保有しています。
・ヒートマップの描画
4D-dbのマップビューで生成されるヒートマップは、検索結果の各画像に紐づけられた"損傷レベル値"の実数を集計してその値に応じて(相対的に)赤~緑の色相のヒートマップとして描画します。
損傷のレベルが大きく、かつ密になっている部分ほど合計値が大きくなるので赤くなります。
※損傷レベルが低くて蜜になっている場合と、損傷レベルが高くて疎になっている場合の区別は付きませんが、検索条件として損傷レベル値を指定すれば"より状態が悪い部分のみ"を指定して描画できます。
![]() |
画像から検出したい事象を、AIモデルとして構築しました。
【オープンイノベーション】vol.28:鉄道保線用物体検出AI「遊間」モデル作成
ここでは、保線作業の目印となる"遊間(レールの継ぎ目部分)"が広がっている/狭くなっているの状態を読み取る"遊間狭い"検出モデルを作成しました。
最新のYOLO(YOLOv8)の検出結果テキストデータを読み込んで、4D-dbのラベルデータインポートフォーマット(TSV形式)に変換するツールを準備しました。
このツールは、
を想定した作りをしており、今後は、3:の"複数のパラメータを活用したより高度な推定(多変量解析)"が出来るように進化していく予定です。
今回は、1の検出結果を単純にあり/なしで評価する手法でヒートマップを生成しています(AI検出の確からしさやクラスごとの重みなどを評価していないという意味です)
損傷管理DB"4D-DB"にラベル情報として物体検出の結果と、損傷レベル値を登録します。
※従来は、TSVフォーマットを準備してLinuxコンソールからコマンドを実行していましたが、今回、GV-Syncにも改修を加え、WebブラウザでTSVをアップロードして、GV-Syncがコマンドを実行する機能を追加しました。
実際に"遊間狭い"と検出された箇所をヒートマップ表示してみます。
赤い部分が密なところ、黄色は中間、緑は疎なところです。
![]() |
営業キロ全域を見渡して、一目で遊間が狭くなっている部分を知ることが出来ます。
次に、ヒートマップの赤い部分で何が起きているのかを詳細に見るべく、対象の絞り込みと、写真での確認をしてみます。
ヒートマップで赤い部分にある撮影地点(青い丸)をクリックすると、その地点の前方画像のサムネールが現れます。
![]() |
![]() |
地図と画像の二画面表示に切り替えて、地点と画像を並列に表示します。
損傷(この場合は遊間が狭いと検出された)部分がアノテーションで囲われています。
特定の損傷理由のみのヒートマップとするため、検索条件に、物体検出クラス"遊間狭い"を指定して、全件検索します。
![]() |
"遊間狭い"が検出されますので、その中から任意の撮影地点を選んでみてみます。
![]() |
実際に"遊間狭い"検出モデルが検出した結果が、画像で確認できます。
![]() |
物体検出クラスを選択することで、別のヒートマップを描くこともできます。
![]() |
今回の4D-dbによるヒートマップ描画によって、"自然災害の前後、改修工事の対策前後で、状態がどう変わったのか?"を、二時期のヒートマップの違いで示すことも出来てきます。
これまでに何度か引用させていただいている、南阿蘇鉄道管理機構様で実施した2023年6月と2024年3月の遊間の分布を比較してみます。 (これらはすべての画像に対して遊間検出AIで検出させた結果をヒートマップ化しています)
2023/06/25時点![]() |
2024/03/15時点![]() |
2023年6月と2024年3月のヒートマップ比較によって、遊間が狭い部分が変化が生じている(2024年3月の時点で遊間の狭い部分が減っている)ことを大域的に・視覚的に把握できました。
現在の4D-dbでは、マップ表示を複数並べて表示する機能が実装されていません。
先に紹介した、損傷ヒートマップの二時期比較を可能にするためには、
の二通りのやり方がありますが、「検索などで条件を切り替えながらあれこれしたい」ので"ブラウザを二枚並べる方法を"実行してみます
同じ個所を同じ縮率で表示したい時に利用したいのが"URLコピー機能"です。
同じ場所の撮影日の異なるヒートマップを描く裏技→URLコピー機能
URLコピー![]() |
コピーされたURL![]() |
もう一枚ブラウザウィンドウを出して、コピーしたURLを貼り付けると、全く同じ画面が表示されますので、新しく出したウィンドウの方で、日付を変更すると"別の日に撮影された状態のヒートマップ"が全く同じ縮尺と位置で表示されます。
ヒートマップで大域的に確認した後、損傷個所部分を二時期で比較してみます。
2023年6月と2024年3月の同じ個所を見てみましょう。
2023/06/15時点![]() |
2024/03/15時点![]() |
今回は、それ自体は損傷ではない"遊間狭い"状態を可視化しましたが、本来は"枕木損傷が進んでいる"、対策済みの箇所="PC枕木に変更した箇所"、"枕木の犬釘が浮いている箇所"、"レールに傷がある箇所"のAIモデルを作成し、それぞれの損傷個所を細かく抽出出来た上で、粗密をヒートマップ表示できれば、注目すべき損傷を"より直感的に"広域的に"把握できるようになります。
より本質的には、現在人間が点検をして結果を台帳に記録しているので、これらを教師データとして、AI画像検出の結果との関連付け(機械学習でアルゴリズム化)できれば、人間が行っている"複数の視点から総合的に判断した結果"と同じようなことを、複数のAIモデルの結果や、他の属性から割り出せるはず・・・と思っていますし、そこを狙っていきます。
※今回の記事で紹介した技術は、当社の下記の特許技術を利用しています。
参考:
特許を取得しました "点検支援システム、撮影位置同定システム、及び、プログラム"(特許7440855)"
特許を取得しました "点検支援システム、撮影位置同定システム、及び、プログラム"(特許7515805)"
▼この記事を書いたひと
R&Dセンター 松井 良行
R&Dセンター センター長。コンピュータと共に35年。そしてこれからも!
●富士見事務所 TEL : 052-228-8744(交通部営業課) FAX : 052-323-3337(交通部共通)
〒460-0014 愛知県名古屋市中区富士見町13−22 ファミール富士見711 地図
PoCのお問い合わせ:交通部営業課
技術的なお問い合わせ:R&Dセンター