建物・構造物の点検で撮ったコンクリートの写真からひび割れの位置・幅・長さを測り、補修の要否を判断する材料と点検記録の下書きを作る
点検で撮ったコンクリートの写真から、ひび割れの画素を見分け、写し込んだマーカーの大きさを手がかりに、ひび割れごとの位置・最大幅・長さ・間隔をmmで測ります。測った値から評価区分の候補と点検記録の下書きを作り、技術者に渡します。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Python
- 対象業界
- 不動産/建設/自治体
- 対象部門
- 品質管理/研究開発
- 対象業務
- 内容確認・チェック/記録・議事録作成
- 主な課題
- 入力作業が多い/判断に時間がかかる/属人化している
- AIで行う処理
- 画像認識
- 主な効果
- 判断支援/品質標準化/工数削減
- 導入難易度
- ★★★★★
- 実装レベル
- 本格構成
- 費用感
- 個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 現地で近接目視を行い、代表的なひび割れの幅をクラックスケールで測って野帳に書く
- ひび割れの範囲を撮影する。部材番号と位置を黒板に書いて写し込む
- 事務所で写真を部材ごとに整理する
- 写真を拡大し、ひび割れを1本ずつたどって長さと最大幅を読み取る
- 読み取った位置と長さを、CADの損傷図に描き起こす
- 最大幅と最小の間隔から、評価区分を当てはめる
- 点検調書の所見の欄を書く
- 人現地で、大きさの分かる正方形のマーカーを部材の面に貼り、面にほぼ正対して撮影する。代表的なひび割れはクラックスケールで測り、野帳に書く
- 自動写真を共有フォルダに入れると、Python の処理が動き、マーカーを見つけて写真ごとの画素の大きさ(mm/画素)を計算する
- 自動マーカーの四隅から、斜めに撮った写真を正面から見た形に補正する
- 自動学習済みの画像の区分けのモデルが、ひび割れの画素を見分ける
- 自動ひび割れの芯線をとり、1本ずつの長さと、芯線の各点での幅を測る
- 自動画素の大きさに近い幅は「画素の大きさ未満」とし、最大幅、長さ、本数、最小の間隔をまとめる
- 自動評価区分の候補を規則で当てはめ、境目に近いものに印を付ける
- 自動生成AIが、測った値から点検調書の所見の下書きを書く
- 人技術者が、ひび割れを重ねた画像と測った値を見て、見落としと誤検出を直す
- 人技術者が、境目に近いもの、画素の大きさ未満のものを、野帳の実測値と照らして決める
- 人技術者が、評価区分と補修の要否を判断し、所見を直して調書を確定する
各工程の詳しい説明を読む
- 現地で近接目視を行い、代表的なひび割れの幅をクラックスケールで測って野帳に書く
- ひび割れの範囲を撮影する。部材番号と位置を黒板に書いて写し込む
- 事務所で写真を部材ごとに整理する
- 写真を拡大し、ひび割れを1本ずつたどって長さと最大幅を読み取る
- 読み取った位置と長さを、CADの損傷図に描き起こす
- 最大幅と最小の間隔から、評価区分を当てはめる
- 点検調書の所見の欄を書く
(a)4番と5番が内業の大半を占める。 1枚の写真に数本から十数本のひび割れが写っていることがあり、1本ずつ拡大してたどり、長さを測り、CADに描き起こすのに時間がかかります。月480枚では、これが内業のほとんどです。
(b)読み取りの細かさが人によって違う。 細いひび割れをどこまで拾うか、枝分かれをどう数えるかが、技術者ごとに違います。最小の間隔が0.5mを挟むかどうかで評価区分が変わるので、拾い方の違いがそのまま区分の違いになります。
(c)写真から幅を読むのは難しい。 写真の画素の大きさを意識せずに拡大すると、細いひび割れの幅を太めに読みます。 現地で測っていないひび割れの幅は、読み取った人の目に依存します。
(d)区分の当てはめに迷う時間がある。 最大幅が区分の境目付近にあるとき、野帳と写真のどちらを正とするかで迷い、調書の作成が止まります。
- 【人】 現地で、大きさの分かる正方形のマーカーを部材の面に貼り、面にほぼ正対して撮影する。代表的なひび割れはクラックスケールで測り、野帳に書く
- 【自動】 写真を共有フォルダに入れると、Python の処理が動き、マーカーを見つけて写真ごとの画素の大きさ(mm/画素)を計算する
- 【自動】 マーカーの四隅から、斜めに撮った写真を正面から見た形に補正する
- 【自動】 学習済みの画像の区分けのモデルが、ひび割れの画素を見分ける
- 【自動】 ひび割れの芯線をとり、1本ずつの長さと、芯線の各点での幅を測る
- 【自動】 画素の大きさに近い幅は「画素の大きさ未満」とし、最大幅、長さ、本数、最小の間隔をまとめる
- 【自動】 評価区分の候補を規則で当てはめ、境目に近いものに印を付ける
- 【自動】 生成AIが、測った値から点検調書の所見の下書きを書く
- 【人】 技術者が、ひび割れを重ねた画像と測った値を見て、見落としと誤検出を直す
- 【人】 技術者が、境目に近いもの、画素の大きさ未満のものを、野帳の実測値と照らして決める
- 【人】 技術者が、評価区分と補修の要否を判断し、所見を直して調書を確定する
9番目と10番目が、この設計の分かれ目です。 技術者は、ひび割れをたどる作業から外れ、機械が引いた線が正しいかを確かめる側に回ります。たどるより確かめるほうが速く、しかも誰が確かめても同じ線を出発点にします。
7番目の区分の候補を規則で出すのも、意図してのことです。 区分の当てはめを生成AIに任せると、なぜその区分なのかを数値で説明できません。 最大幅と最小の間隔という2つの数値から、表に従って候補を出します。
02今回想定するシステム構成
現地の撮影(マーカーを写し込み、面に正対して撮る) ▼【トリガー】共有フォルダへの保存 Python ├──▶ マーカーの検出 → 画素の大きさ(mm/画素)と、正面への補正 ├──▶ 画像の区分けのモデル(torchvision の DeepLabV3 を自社の写真で学習) │ ひび割れの画素の地図 ├──▶ scikit-image ── 芯線(skeletonize)と、境界までの距離(medial_axis) │ 1本ずつの長さ、各点の幅、最大幅、本数、最小の間隔 ├──▶ 区分の候補(規則)、境目に近いもの・画素の大きさ未満の印 ▼ Claude API ── 点検調書の所見の下書き(JSON) ▼ 確認の画面(ひび割れを重ねた画像と値の一覧)── 技術者が直して確定 ▼ 損傷図の下書き(CADに取り込む形)と点検調書
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Python(PyTorch・torchvision の DeepLabV3、scikit-image) | OpenCV、MATLAB |
| 生成AI | Claude API(点検調書の所見の下書き) | OpenAI API、Gemini API |
| 写真の保管 | 社内の共有フォルダ | クラウドのストレージ |
| 損傷図 | 既存のCAD(下書きの線を取り込む) | 写真の整理ソフト |
| 点検調書 | 既存の調書の表 | 発注者指定の様式 |
CADと調書の表は、新しく足すものではありません。 この構成が出すのは、CADに取り込める形の線の下書きと、調書の所見の下書きまでです。確定した値を書き込むのは技術者です。
ひび割れの画素を見分けるのは、torchvision の DeepLabV3 です。 写真の画素ごとに「ひび割れか、そうでないか」を分ける画像の区分けのモデルで、torchvision には ResNet-50、ResNet-101、MobileNetV3-Large を骨格にした3つの組み立て方があり、学習済みの重みあり・なしのどちらでも作れるとされています。学習済みの重みから始め、自社の点検写真に技術者がひび割れを塗った画像で学習し直します。
幅と長さを測るのは scikit-image です。 skeletonize は細線化で芯線をとり、medial_axis は return_distance を指定すると、芯線とあわせて、各画素から境界までのユークリッド距離を返します。芯線上の距離の2倍が、その点でのひび割れの幅の画素数になり、画素の大きさを掛ければmmになります。 remove_small_objects は、決めた画素数より小さいかたまりを取り除くので、汚れや型枠の跡の小さな誤検出を落とすのに使います。
03どうやって実装するのか
処理の起点を決める
写真を共有フォルダの「計測待ち」に保存したことを起点にします。 現地から戻った技術者が、構造物ごとのフォルダに写真を入れると、1枚ずつ処理が動きます。処理が終わった写真は「確認待ち」へ移し、失敗したものは「計測できず」へ移します。 フォルダの中の枚数が、そのまま各段階の残りの数になります。
夜間にまとめて動かす設定も持たせます。 画像の区分けのモデルは、画像処理用の計算機(GPU)があれば1枚数秒で終わりますが、無い環境では1枚に時間がかかります。点検が集中する時期は、夕方に入れた写真を夜のうちに処理し、翌朝に確認できるようにします。
現地での撮影の決まりも、トリガーの一部と考えます。 マーカーが写っていない写真、面に対して大きく斜めの写真は、処理の入口で「計測できず」に回ります。撮影の決まりを守った写真だけが、測る対象になります。 現地の撮影の手引きに、マーカーの貼り方と撮る角度を書いておきます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 点検写真 | 部材の面を撮った写真。マーカーと黒板が写っている | 現地の撮影 |
| 写真の付帯情報 | 構造物、部材番号、要素番号、撮影日。RC か PC か | 黒板と点検の計画表 |
| マーカーの仕様 | 正方形の一辺の長さ(mm)と模様 | 自社で決めた仕様 |
| 野帳の実測値 | クラックスケールで測った代表的なひび割れの幅と位置 | 現地の野帳 |
| 学習済みのモデル | 自社の点検写真で学習したひび割れの区分けのモデル | 学習の工程で作る |
| 評価区分の表 | 最大幅と最小の間隔から区分を決める表 | 発注者の点検要領 |
質を決めるのは、マーカーと部材の種類です。 マーカーが無ければ画素の大きさが分からず、mmで測れません。RC か PC かが無ければ、区分の境目の幅が決まりません。 国土交通省の資料に載っている橋梁の点検要領の評価区分では、ひびわれの最大幅の境目が RC 構造物と PC 構造物で違います。
野帳の実測値は、答え合わせに使います。 機械が測った幅と、現地でクラックスケールで測った幅を、同じひび割れについて並べます。ずれが大きい写真は、撮影か補正に問題があります。
データの取得方法を決める
| 取るもの | どこから | 方法 |
|---|---|---|
| 写真 | 共有フォルダの「計測待ち」 | 新しいファイルを1枚ずつ読む |
| 部材番号と RC/PC | 点検の計画表 | 構造物と部材番号で引く。黒板の読み取りは補助 |
| 野帳の実測値 | 野帳を入力した表 | 構造物と部材番号で引く |
| 評価区分の表 | 発注者の点検要領を表にしたもの | 発注者ごとに持つ |
部材番号は、黒板を読むより計画表から引くほうを正にします。 黒板の文字は写り方で読めないことがあります。撮影のときにタブレットで部材を選び、写真のファイル名に入れる運用にすると、取り違えが減ります。
評価区分の表は、発注者ごとに持ちます。 橋梁、トンネル、建物で使う要領が違い、同じ橋梁でも発注者が独自の要領を定めていることがあります。どの表を当てはめたかを、写真ごとの記録に残します。
AIへ渡す前に整形する
- マーカーの検出 … 写真の中から正方形のマーカーを探し、四隅の位置を取ります。見つからなければ「計測できず」
- 正面への補正 … 四隅が正方形になるように写真全体を変換します。四隅の歪みが大きすぎる写真は、補正しても精度が出ないので「計測できず」
- 画素の大きさの計算 … 補正後のマーカーの一辺の画素数で、一辺の長さ(mm)を割ります
- 測れる下限の計算 … 画素の大きさの2倍を、その写真で幅を測れる下限とします
- 計測の範囲の限定 … マーカーから離れた場所は、面の凹凸や奥行きで画素の大きさが変わります。マーカーを含む面の範囲だけを測ります
- 明るさの補正 … 影や照明のむらを弱めます。チョークの線も写るので、チョークの色を区分けのモデルの学習で「ひび割れでない」として教えておきます
4番目の「測れる下限」が、この構成の要です。 画素の大きさが0.15mmの写真なら、下限は0.3mmです。この写真では、0.2mmと0.3mmの境目を区別できません。 下限が区分の境目より大きい写真は、幅については「画素の大きさ未満」とし、現地の実測値で決めます。
数字の例で確かめます。 一辺50mmのマーカーが、補正後の写真で625画素に写っていれば、画素の大きさは50÷625=0.08mmです。測れる下限はその2倍の0.16mmで、RC の0.2mmの境目は区別できますが、PC の0.1mmの境目は区別できません。 同じ写真でも、部材が RC か PC かで、幅を確定できるかどうかが変わります。
撮影の決まりは、ここから逆算して決めます。 RC の境目の0.2mmを区別したいなら、画素の大きさを0.1mm以下にする必要があり、カメラの画素数と撮影の距離から、何m以内で撮るかが決まります。
AIに処理させる
画像の区分けのモデルにさせるのは、画素ごとに「ひび割れらしさ」を出すことだけです。 幅と長さは、その後の計算で求めます。
| 段階 | 方法 | 出すもの |
|---|---|---|
| ひび割れの画素を見分ける | DeepLabV3 を自社の写真で学習 | 画素ごとのひび割れらしさ |
| かたまりにする | しきい値で二値にし、remove_small_objects で小さなものを落とす | ひび割れの領域 |
| 芯線と幅 | medial_axis で芯線と境界までの距離 | 芯線の各点の幅(距離×2×画素の大きさ) |
| 1本ずつに分ける | 芯線の分かれ目で区切る | 1本ずつの長さ、最大幅、向き |
| 間隔 | 平行に近いひび割れの芯線どうしの最短の距離 | 最小の間隔 |
区分けのモデルの良し悪しは、画素の一致ではなく、ひび割れの延長で測ります。 国土交通省の要求性能(案)では、ひびわれについて、近接目視で検出した延長に対して技術で自動検出できた延長の割合(検出率)と、自動検出した延長のうち近接目視でも検出された延長の割合(的中率)が評価の指標に挙げられています。本構成でも同じ考え方で、技術者が確定した線を正として、検出率と的中率を部材の種類ごとに毎月数えます。画素の一致で測ると、細いひび割れの見落としが数字にほとんど表れません。
区分の候補は規則で当てはめます。 国土交通省の資料に載っている橋梁の点検要領の付録の区分では、ひびわれは最大幅と最小の間隔の組み合わせで分けられています。
| 候補 | RC 構造物 | PC 構造物 | 最小の間隔 |
|---|---|---|---|
| b | 0.2mm未満 | 0.1mm未満 | 0.5m以上 |
| c | 0.2mm未満、または 0.2〜0.3mm | 0.1mm未満、または 0.1〜0.2mm | 前者は0.5m未満、後者は0.5m以上 |
| d | 0.2〜0.3mm、または 0.3mm以上 | 0.1〜0.2mm、または 0.2mm以上 | 前者は0.5m未満、後者は0.5m以上 |
| e | 0.3mm以上 | 0.2mm以上 | 0.5m未満 |
この表は、発注者が使う要領の版に合わせて置き換えます。 ここに示したのは、資料に引用されている区分を読みやすく並べたものです。実務では、受託した点検の要領の原文の表をそのまま規則にします。
境目に近いものには印を付けます。 最大幅が境目の±0.05mm以内、最小の間隔が0.5mの±0.1m以内なら「境目」とし、候補は出しても確定の扱いにはしません。
| させないこと | 理由 |
|---|---|
| 補修の要否の判断 | 現地の近接目視と構造の知識で技術者が決める |
| 健全性の診断 | 同上 |
| 測れる下限を下回る幅の推定 | 画素より細いものを推し量らない |
| マーカーの無い写真の計測 | 画素の大きさが分からない |
| ひび割れの原因の断定 | 乾燥収縮か、荷重か、鉄筋の腐食かは、技術者が判断する |
生成AIにさせるのは、測った値から点検調書の所見の下書きを書くことだけです。 画像は渡しません。渡すのは、部材、RC/PC、ひび割れの本数、最大幅、長さの合計、最小の間隔、区分の候補、印(境目・画素の大きさ未満)です。
指示内容を固定する
あなたは構造物の点検の技術者を補佐し、点検調書の所見の下書きを書きます。
根拠は、渡した計測の値だけです。
【入力】
- 部材、要素番号、RC/PC
- ひび割れの計測の値(本数、最大幅、長さの合計、最小の間隔、向き)
- 区分の候補と、その根拠の規則
- 印:near_boundary(境目に近い)、below_resolution(画素の大きさ未満)
【書くもの】
1. 所見(150字程度)。ひび割れの向き、本数、最大幅、範囲を書く
2. 技術者に確かめてほしい点
【厳守事項】
- 数値は渡した値をそのまま写してください。丸めない、言い換えないでください。
- below_resolution の付いた幅は数値で書かず、
「写真の解像度では幅を確定できない」と書いてください。
- near_boundary が付いている場合は、区分の候補を確定のように書かず、
「区分の境目に近く、現地の実測値との照合が必要」と書いてください。
- 補修が必要か不要かを書かないでください。
- 健全性の診断を書かないでください。
- ひび割れの原因(乾燥収縮、荷重、鉄筋の腐食など)を断定しないでください。
- 漏水、遊離石灰、錆汁の有無は、入力に無ければ書かないでください。
- 区分の記号は、渡した候補以外を書かないでください。
【計測の値】{measurements}
【区分の候補と根拠】{grade_candidate}
【印】{flags}
「原因を断定しない」を明記します。 生成AIは、向きと位置から「乾燥収縮によるものと考えられる」と書きたがります。原因の見立ては、技術者が現地で見たことと構造の知識で行うもので、写真の値から書いてよいものではありません。
漏水と遊離石灰を「入力に無ければ書かない」としているのも同じ理由です。 写真の区分けはひび割れだけを見ており、白い析出物の有無は測っていません。 書かれていないことを、ありそうだからと書かせません。
出力形式を固定する
計測の結果は、写真1枚ごとに次の形のJSONで残します。
{
"photo_id": "",
"structure": "",
"member": "",
"material": "RC | PC",
"mm_per_px": 0.08,
"min_measurable_mm": 0.16,
"cracks": [
{ "crack_id": "", "length_mm": 0, "max_width_mm": 0,
"width_flag": "measured | below_resolution",
"orientation": "horizontal | vertical | diagonal | mesh",
"polyline_px": [[0, 0]] }
],
"min_spacing_m": 0,
"grade_candidate": "a | b | c | d | e",
"grade_rule": "",
"near_boundary": false,
"status": "measured | not_measurable",
"not_measurable_reason": ""
}
1つ目の理由は、polyline_px から損傷図の下書きを作れることです。 芯線の折れ線を、補正前の写真の座標に戻してCADの取り込みの形に変えます。技術者はたどるのではなく、引かれた線を直します。
2つ目は、mm_per_px と min_measurable_mm を写真ごとに持てることです。 後から「この幅は測れていたのか」を確かめられます。width_flag が below_resolution のひび割れは、幅の数値を空にして残します。
3つ目は、grade_rule に当てはめた規則を書けることです。 「RC、最大幅0.24mm、最小の間隔0.62m → c」のように残し、どの要領のどの行で決めたかを説明できるようにします。
所見の下書きは、Claude API の構造化出力で受け取ります。 output_config.format に type: "json_schema" とスキーマを渡すと、スキーマに沿ったJSONで返ります。所見の文と、確かめてほしい点を別の欄で受け取ります。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 共有フォルダ | Python の監視 | 新しい写真を読み、段階ごとのフォルダへ移す |
| 点検の計画表・野帳の表 | 読み取り | 部材番号、RC/PC、実測値を引く |
| Claude API | API呼び出し | 所見の下書きをJSONで受け取る |
| 確認の画面 | 社内のWeb画面 | ひび割れを重ねた画像と値を並べ、技術者が直す |
| CAD | 取り込み用のファイル | 確定した線を損傷図の下書きとして渡す |
| 点検調書 | 確定後に技術者が転記 | 所見と区分 |
調書には自動で書き込みません。 技術者が確認の画面で確定にしたものだけを、調書の形のファイルに書き出します。確定前の値が調書に入る経路を作りません。
確認の画面は、ひび割れの線を写真に重ねて表示し、線を消す・足す・つなぐ操作ができるようにします。 直した線から幅と長さを計算し直すので、技術者が直した結果も、同じ計算で数値になります。
人が確認する
- 見落としを探す … 写真を見て、線が引かれていないひび割れが無いかを確かめます。細いもの、影に入ったものが落ちやすいです
- 誤検出を消す … 型枠の継ぎ目、チョークの線、汚れ、補修の跡に線が引かれていれば消します
- 境目と画素の大きさ未満を決める … 野帳の実測値と照らし、幅を確定します。実測値が無いものは、次の点検で測る対象として記録します
- 区分を確定する … 候補と規則を見て、要領に照らして確定します
- 補修の要否と所見を決める … 現地で見たことと合わせて判断し、所見の下書きを直します
1番目を省かないでください。 機械の見落としは、確認の画面に何も表示されないので気づきにくい誤りです。写真全体を一度は見る決まりにします。
2番目で消した誤検出は、学習の材料に戻します。 型枠の継ぎ目を毎回ひび割れと見るなら、継ぎ目の写った写真を学習に足します。
確認は、現地に行った技術者が行います。 写真だけを見た人が線を直すと、現地で見た漏水の跡や、写真では分かりにくい段差の情報が入りません。外業と内業を別の人が担う体制なら、外業の担当者が野帳に残した所見を確認の画面に並べて表示します。
例外に対処する
| 起きること | 対応 |
|---|---|
| マーカーが写っていない・見つからない | 「計測できず」。ひび割れの検出だけを行い、幅と長さは出さない |
| 四隅の歪みが大きい | 「計測できず」。撮り直しの対象として記録 |
| 測れる下限が区分の境目より大きい | 幅は below_resolution。長さと本数は出す |
| 部材の RC/PC が計画表に無い | 区分の候補を出さない |
| ひび割れが写真の端で切れている | 長さに「写真の端で切れている」の印を付ける。隣の写真とつながりを人が確かめる |
| 漏水・遊離石灰がある | 区分けのモデルは見ていない。技術者が現地の記録で判断 |
| 野帳の実測値と0.1mm以上ずれる | 撮影か補正の問題として、その写真の幅を確定扱いにしない |
| 生成AIの所見に入力に無い事項が入る | 下書きを捨てて再生成し、2回目も入れば所見なしで渡す |
5行目の「写真の端で切れている」は、長さの合計を小さく見せます。 1本のひび割れが2枚にまたがると、それぞれの写真で短く測られます。隣り合う写真をつなぐ処理は難しいので、印を付けて人に任せます。
記録を残す
- 元の写真と、補正後の写真
- 写真ごとの
mm_per_px、min_measurable_mm、計測できなかった理由 - 区分けのモデルの版と、出した画素ごとの結果
- 計測の結果のJSONと、当てはめた評価区分の表の版
- 技術者が消した線・足した線と、確定した値
- 生成AIに渡した値と、返ってきた所見の下書き、直した後の所見
4つ目の「区分の表の版」を残すのは、要領が改定されるためです。 同じ写真でも、表の版が変われば区分の候補が変わります。5年ごとの点検で前回と比べるとき、どの表で決めた区分かが分からないと比べられません。
5つ目は、次の学習の材料です。 技術者が直した線は、そのまま正解の画像になります。直した量が減っていけば、モデルが自社の写真に慣れてきたということです。
04実装レベルの3段階
半自動化だけでも、1件10分は6分程度になります。 線の下書きが出て、たどる作業が「直す作業」に変わるからです。本格構成で3分になり、これが本記事の想定です。 差が出るのは、損傷図への描き起こしと所見の書き出しが下書きになるためです。 区分けのモデルの学習には、正解の画像が数千枚単位で要ります。 過去の描き起こしを使えますが、写真と線の位置が合っていないものが多いので、最初の数か月は、新しい点検の写真に確認の画面で線を直す作業そのものを、正解の画像づくりとして扱います。
05工数削減シミュレーション
導入後 480件 × 3分 ÷ 60 = 24 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 橋梁・トンネル・建物などのコンクリートの点検を毎月受託し、ひび割れの写真を月に数百枚整理している建設コンサルタント・点検会社。写真から幅と長さを読み取って損傷図に描き起こす内業が、点検の外業より長くかかっている場合。点検の写真を、大きさの分かるマーカーを写し込んで撮る運用に変えられる場合。過去の点検で、技術者がひび割れを描き起こした写真が数千枚単位で残っている場合。
- 点検の件数が年に数件で、写真の枚数が少ない場合。写真の撮り方を現場でそろえられず、撮影の距離も角度もばらばらな場合。幅0.1mmを下回るひび割れの有無そのものが判定の決め手になる部材だけを扱う場合(写真の解像度で測れる範囲を超えます)。なお、補修の要否と健全性の診断は、近接目視を行った技術者が行うもので、この構成では代替しません。
07最小構成で試す方法
- 過去の点検で、技術者がひび割れを描き起こした写真を、RC の部材から30枚選ぶ(マーカーかスケールが写っているものに限る)
- 1枚ずつ、写り込んだスケールの長さから画素の大きさを手で求める
- 写真の画素の大きさで、0.2mmと0.3mmの境目を区別できる写真が何枚あるかを数える
- 区別できる写真について、技術者が描いた線を白黒の画像にし、scikit-image の
medial_axisで幅を測る - 測った最大幅を、当時の野帳の実測値と比べる
ここでは区分けのモデルを作りません。 技術者が描いた線から幅を測る部分だけを確かめます。線が正しければ幅は正しく測れるのかを先に確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 実測値と0.05mm程度で合う | 区分けのモデルの学習に進む |
| 境目を区別できる写真が少ない | 撮影の決まりが先。 距離とカメラを見直す |
| 幅が実測値より大きく出る | 線の描き方が太い。学習の正解の画像の作り方を決め直す |
| 写真によって合ったり外れたりする | 斜めに撮った写真。正面への補正が要る |
2行目が出ることは珍しくありません。 過去の写真は、測るつもりで撮っていないからです。撮影の決まりを変えてから3か月分の写真をためるところから始めても、遠回りにはなりません。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 画素より細い幅を数値で出す | 測れる下限を写真ごとに計算し、下回るものは below_resolution |
| マーカーの無い写真で測る | 測らない。撮影の決まりにマーカーを入れる |
| 斜めに撮った写真で幅がずれる | 四隅で補正し、歪みが大きいものは測らない |
| マーカーから離れた場所を測る | マーカーを含む面の範囲に限る |
| 型枠の継ぎ目やチョークをひび割れと見る | 学習で「ひび割れでない」として教える |
| 学習の正解の線が太い | 正解の画像の描き方を決め、幅の実測と合わせる |
| 区分の表を固定で持つ | 発注者ごとの要領の版で持ち、版を記録する |
| RC と PC を取り違える | 計画表から引き、無ければ区分の候補を出さない |
| 生成AIが原因や補修の要否を書く | 禁止を明記し、入力に無い事項は捨てる |
| 見落としに気づかない | 写真全体を一度は見る決まりにする |
| モデルの良し悪しを画素の一致で測る | 延長の検出率と的中率で測る |
| 1本のひび割れが2枚にまたがる | 写真の端の印を付け、つながりは人が確かめる |
下の2行は、運用を始めてから効いてきます。 画素の一致の数字が良くても、細いひび割れを見落としていることがあります。点検の記録として使えるかは、延長で測った検出率でしか分かりません。 写真の端で切れるひび割れも、長さの合計を小さく見せ、前回の点検との比較を狂わせます。
上の2行が、この構成の失敗のほとんどです。 画像から数値が出ると、その数値はどれも同じ確からしさに見えます。写真ごとに「どこまで測れるか」を計算して数値に添える設計が、計測として使えるかどうかを決めます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 構造物の点検写真、部材の情報、計測の値、点検調書の所見です。個人の情報は原則として扱いませんが、写真に通行人や車のナンバーが写り込むことがあります。
- 補修の要否と健全性の診断を機械に任せない … 国土交通省の資料でも、写真による記録とは別に、専門的な知識と技能を有する技術者が近接目視を行ったうえで健全性の診断を行うことが前提とされています
- 測れないものを測れたように見せない …
below_resolutionとnot_measurableを、調書の段階まで消さずに残します - 生成AIに写真を渡さない … 渡すのは計測の値だけです。写り込んだ人や車の情報が外に出る経路を作りません
- 発注者の写真の扱いの決まりを守る … 点検の写真は発注者の成果品です。学習に使ってよいか、外部の計算資源に置いてよいかを、契約で確かめます
- モデルの版と区分の表の版を記録する … 後の点検で比べられるようにします
- 写り込みの処理 … 成果品として出す写真に人の顔や車のナンバーが写っていれば、発注者の決まりに従って処理します
誤りが起きた場合のリスクは、ひび割れの幅を細く測って区分を軽く誤ることと、見落としで記録から漏れることの2つです。 前者は測れる下限の扱いから、後者は確認の省略から起きます。どちらも、写真ごとの下限の計算と、写真全体を見る確認の決まりで防ぎます。
10まず何から始めるか
1週目:撮影の決まりを決める
マーカーの大きさと模様、貼り方、撮る距離と角度を決めます。RC の境目0.2mmを区別したいなら、画素の大きさを0.1mm以下にする距離を、手持ちのカメラで計算します。
2週目:過去の30枚で幅を測る
技術者が描き起こした写真から、マーカーかスケールの写ったものを選び、medial_axis で幅を測って野帳と比べます。区別できる写真が何枚あるかを最初に数えます。
3週目:新しい撮影の決まりで点検する
次の点検から、マーカーを写し込んで撮ります。野帳の実測値を、マーカーのある写真と対応づけて記録します。
4週目:正解の画像づくりを始める
新しい写真に、技術者がひび割れを塗った画像を作ります。描き方の決まり(線の太さ、枝分かれの扱い)を、最初の10枚で合わせます。
2か月目以降: 正解の画像が数千枚たまったところで区分けのモデルを学習し、半自動化に進みます。その後: 確認の画面と損傷図の書き出し、所見の下書きを足します。技術者の仕事が「たどる」から「直す」に変わり、機械の値と野帳の実測値のずれを毎月確かめる運用が回り始めた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 道路橋の点検記録の作成を支援する技術の要求性能(案)で、写真による記録とは別に、専門的な知識と技能を有する技術者が近接目視を行ったうえで健全性の診断を行うことが前提とされていること。ひびわれについて、橋梁定期点検要領(平成26年6月)付録の評価区分が、RC構造物・PC構造物ごとの最大ひびわれ幅(RC:0.2mm未満/0.2〜0.3mm/0.3mm以上、PC:0.1mm未満/0.1〜0.2mm/0.2mm以上)と最小ひびわれ間隔(0.5m以上/未満)の組み合わせで示されていること。記録の対象として RC:0.2mm以上、PC:0.1mm以上のひび割れが挙げられていること。ひびわれの検出率・的中率が延長の比で定義されていること | 国土交通省: 道路橋点検記録作成支援ロボット技術 要求性能(案) | 2026-10-07 |
skeletonize が細線化で芯線をとること。medial_axis が return_distance の指定で各画素から境界までのユークリッド距離を返すこと。remove_small_objects が指定より小さいかたまりを取り除くこと | scikit-image: skimage.morphology | 2026-10-07 |
| torchvision に DeepLabV3 の組み立て方が3つ(MobileNetV3-Large、ResNet-50、ResNet-101)あり、学習済みの重みあり・なしで作れること | PyTorch: torchvision DeepLabV3 | 2026-10-07 |
Claude の API で output_config.format に type: "json_schema" を渡すと、スキーマに沿ったJSONで応答を受け取れること | Claude API Docs: Structured outputs | 2026-10-07 |
評価区分は、受託した点検の要領の最新の版の原文で確かめてください。 本記事の区分の表は、国土交通省の資料に引用された橋梁定期点検要領(平成26年6月)付録の区分を読みやすく並べたもので、建物やトンネル、各発注者の要領では基準が異なります。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0841)についてのご相談はこちらから。
