
毎月、階段下の物置に潜り込み、懐中電灯でガスメーターを照らして8桁の数字を読み取り、ガス会社に報告する。アイルランド在住のCian Gallagher氏はこの作業を終わらせるため、物置にRaspberry Piとカメラを据え付け、ニューラルネットワークにメーターを読ませることにした。製作の全工程はブログで公開しており、コードとデータセットも入手できる。
構成は単純だ。Raspberry Pi 4とRaspberry Pi Camera Module 3、それに照明を1つ。10分ごとに起動するcronジョブが写真を撮り、上下反転させ、メーター部分を切り出して保存する。この状態で数週間動かし、ぼやけた写真を除いて3229枚の使える画像を集めた。
写真を集めたら、1枚ずつ正解の数値を人力で入力していく。この作業を3000回以上、数日の夜を費やして終えた。モデルはゼロから作らず、物体検出でよく使われる「YOLOv8」の軽量版を出発点にした。約12万枚の一般的な写真で学習済みのモデルは、輪郭や曲線がどういうものかをすでに理解している。そこに自分のメーター写真を追加学習させ、数字を見つける仕事だけに特化させた。ノートPCのGPUで約1時間かかり、学習に使っていない2割の画像で検証したところ、適合率は約0.9995、再現率はほぼ1.0だった。
設計で効いたのは、切り出す範囲をあえて広く取ったことだ。表示部にぴったり合わせるのではなく、上下左右に300ピクセルの余白を付けて学習させた。「数字はこの広い帯のどこかにある」と覚えさせることで、物置の扉にぶつかってカメラが数センチずれても、再調整なしで読み取りが続く。
失敗も率直に書かれている。最初の版は手書きのルールと画像処理で数字を読もうとしたが、朝8時と午後3時ではメーターの見え方がまるで違い、晴れた火曜の午後に崩壊した。この脆さが、光の条件ごと学習させる方式へ切り替えた理由だという。反射で9桁目を検出したり、ぶれて7桁しか読めなかったりする問題は、メーターが必ず8桁である事実で処理した。多すぎれば確信度の低いものを捨て、少なければ画像を破棄する。
学習済みモデルはONNX形式に変換してRaspberry Piへ移す。PyTorchのまま動かすとクラッシュするためだ。Pi上での1回の推論は約300〜500ミリ秒で終わる。読み取った数値はHome Assistantのセンサーとして送られ、エネルギー管理画面でガス使用量を追える。
数値を鵜呑みにしない仕掛けも入れた。モデルの平均確信度が0.80を下回れば投稿せず、確認用に写真を残す。さらに、ガスメーターは減らないという物理的な事実を使い、前回より小さい値や、10分で2立方メートル以上増えた値は誤読とみなして捨てる。両方を通過した数値だけが、月に一度、ガス会社の投稿フォームへ自動送信される。人の手はどこにも入らない。

