0% loading

Pothole Detection with YOLO

Computer Vision YOLO Deep Learning HuggingFace

大学の課題や研究室のリサーチから生まれたわけじゃない。午前2時の「ドゥームスクローリング」という悪い習慣、穴だらけの道路へのウンザリ感、そして度を越した好奇心から生まれた、一つの Computer Vision プロジェクトだ。


アルファがInstagramで無限にドゥームスクローリングをしていて、脳が半分麻痺していた時、突然アルゴリズムが目を覚まさせるようなものを突きつけてきた、そんな奇妙な瞬間があった。その夜、ランダムな動画の合間に、産業界でのYOLO(You Only Look Once)実装の動画が流れてきた。その動画では、工場のカメラがコンベアベルト上の不良品を瞬時に認識していた。カラフルなバウンディングボックスが、少しの遅延もなくリアルタイムでオブジェクトを検出していたんだ。

*AIエンジニア志望(アーメン!)*として(そして穴だらけの道のせいで何度もバイクから落ちそうになっている人間として)、アルファの脳はすぐさま全く関係のない2つのことを結びつけた。「もしこのAIが工場の欠陥を見つけられるなら、アスファルトの欠陥も見つけられるんじゃないか?」

それが小さな執着への入り口だった。ただの受動的なSNSユーザーだったアルファは、手当たり次第に検索し始めた。どうやってそんなAIを作るんだ?何が必要なんだ?そして最終的に、すべてを変える1つのYouTube動画にたどり着いた。EdjeElectronicsTrain and Deploy YOLO Modelsに関するチュートリアルだ。

そのチュートリアルは回りくどくなかった。眠くなるような*畳み込み層(convolutional layers)*の理論を語るだけでなく、産業クラスのモデルを自分たちの環境にどうやって引き込むかを直接見せてくれた。


最初の疑問:このモデルはどうやって道路のくぼみの形を知るんだ?その答えはAIの世界における定番、そう「データ」だ。YOLOのアーキテクチャがどれほど優れていても、正しいデータを食べさせなければ、ただの空の行列の羅列に過ぎない。

アルファはRoboflowでぴったりのデータセットを見つけた。Pothole Detection datasetの、綺麗にアノテーションされた何千枚ものポットホール(くぼみ)の画像だ。そのデータセットを見た時、ある種の悟りを開いた。現実世界でいつも悪態をついている道路の穴が、今や数学的な表現に還元されている。それぞれの穴が [x_center, y_center, width, height] という座標に変換されている。混沌とした現実が、ニューラルネットワークに咀嚼されるために、バウンディングボックスの四角形へと綺麗にパッケージ化されていたんだ。

アルファはEdjeElectronicsのGoogle Colabノートブッククローンした。そこにRoboflowのデータセットを繋ぎ、Googleの無料GPUを起動した。

そして…アルファはRunを押した。


ここが魔法のようなところだ。ゼロからアーキテクチャを書いてイライラするのとは違って、YOLOを使うのはまるでスポーツカーの鍵を渡されたような気分だった。エンジンはすでにそこにあって、あとはハンドルを操作するだけだ。

でも、だからといってエンジニアリングのプロセスがないわけじゃない。トレーニングが走っている間、アルファはただプログレスバーとゆっくり下がっていく*損失関数(loss function)*の数字を見つめることしかできなかった。**mAP(mean Average Precision)*の指標が0.20から…0.50へと…少しずつ上がり、最終的にまともな数値に達するのを見守っていた。その時点で、機械は単に画像を暗記しているのではなく、木の影と、アスファルトの継ぎ接ぎと、本当にバイクのホイールを曲げてしまうような穴とを区別することを「学んで」*いたんだ。

ほんの数時間で、インドネシアの道路について何も知らなかったモデルが、穴だらけの道路を検出するエキスパートになった。

Training Process


でも、モデルがどれだけクールでも、Google Colabの一時ストレージにある .pt(PyTorchの重み)ファイルとして眠っているだけなら意味がない。ノートブックの中でしか生きられないフレームワークは、単なる実験用スクリプトであって、プロダクトではない。

アルファの最後のエンジニアリングの課題:それは**デプロイメントと永続性(persistence)**だ。どうすればこの穴検出器の「脳」を保存して、いつでも、どこでも、誰でも、最初からトレーニングし直すことなく使えるようにできるのか?

その解決策が、HuggingFaceだ。

アルファは最高のモデルの*重み(weights)を持ってきて、HuggingFaceのリポジトリにアップロードした。ドキュメントを作成し、ファイル構造を整理して、このモデルがすぐに使える(ready to use)*状態であることを確認した。今、そのモデルはここで生きている: [DityaEn/Yolo-Pothole-Detection](https://huggingface.co/

W.
Logo

© 2026 Raditya Alfarisi

Github LinkedIn Instagram Kaggle Chess.com