お知らせ

変化検出ライブラリ「opencd-lite」をオープンソースで公開しました

このたび当社は、2枚の画像の「違い」を AI で見つけ出す**変化検出(差分検知)ライブラリ「opencd-lite」**を、オープンソース(Apache License 2.0)として GitHub で公開しました。

「差分検知」とは何か

差分検知(変化検出、Change Detection)とは、同じ場所・同じ対象を写した2枚の画像を見比べて、変わった部分だけを浮かび上がらせる技術です。

もともとは衛星写真の分野で発展した技術で、災害前後の建物の変化や、都市開発の進み具合を自動で把握するために研究されてきました。近年は深層学習(ディープラーニング)の進歩により、明るさの違いやわずかな位置ずれに惑わされず、「本当に意味のある変化」だけを取り出せるようになってきています。

印刷分野への応用

当社は長年、この差分検知の技術を印刷分野に応用することに取り組んできました。

印刷の現場では、「正しい原稿(見本)」と「実際に刷り上がったもの」を見比べ、汚れ・かすれ・文字の欠け・色の違いといった不良を見つける検査が欠かせません。これはまさに「2枚の画像の違いを探す」作業であり、差分検知そのものです。

一方で、印刷物の検査には衛星写真とは異なる難しさがあります。紙のわずかな伸縮や、印刷機ごとの色の癖、スキャン時のゆがみなど、「不良ではない違い」がたくさん混ざるためです。当社はこうした課題に向き合いながら、変化検出モデルを印刷検査に活かすための研究開発を続けてきました。

そしてこの過程で、差分検知の可能性は印刷に留まらないと確信するようになりました。設備の劣化点検、製品の外観検査、医用画像の経過観察、文書や図面の版管理──「以前と今を比べたい」場面は、あらゆる業種に存在します。

この技術を、もっと広く、さまざまな方に使っていただきたいと考えております。

Open-CD とは

変化検出の研究分野には、Open-CD という優れたオープンソースのツールボックスがあります。Open-CD は、世界中の研究者が発表してきた代表的な変化検出モデル(BIT、Changer、SNUNet、ChangeFormer など)を一つの枠組みに集め、学習済みの重み(モデルのパラメータ)とともに公開しているプロジェクトです。

opencd-lite は、この Open-CD、そして Open-CD が実装している各モデルを考案・発表された研究者の皆さまの成果の上に成り立っています。

本家Open-CDとの違いについて

Open-CD はとても優れたツールボックスですが、実際に使おうとすると一つの壁があります。OpenMMLab と呼ばれる大規模な研究用フレームワーク群(mmcv、mmengine、mmseg、mmpretrain)に依存しているため、

  • 環境構築に時間がかかり、バージョンの組み合わせによって動かなくなることがある
  • 自社のアプリケーションや製品に組み込むのが難しい
  • 研究者以外の開発者にとって、学習コストが高い

といった課題がありました。opencd-lite は、Open-CD の各モデルを、深層学習の標準的なライブラリである PyTorch だけで動く形に書き直しました。

opencd-lite の特長

特長一般の方向けの説明
pip install だけで導入完了特別なツールやソースコードのビルドは不要。Python が使える環境ならすぐ試せます。
PyTorch ベースの軽量実装各モデルは PyTorch の標準的な部品(nn.Module)として実装。他のソフトウェアに組み込みやすく、中身も読みやすい構造です。
Open-CD の学習済みモデルがそのまま使えるOpen-CD が公開している設定ファイルと学習済み重みを再学習なしで読み込めます。積み重ねられた研究成果をそのまま活用できます。
ONNX に書き出して、PyTorch なしで動かせる学習したモデルを ONNX という共通形式に変換すれば、PyTorch を入れていない環境でも onnxruntime だけで推論できます。製品への組み込みや軽量な機器での動作に向いています。
学習・データ準備の道具も同梱自分のデータで学習し直すためのツールや、変化前後の画像を位置合わせ・切り出しするツールも含まれています。
from opencd_lite import build_model

detector = build_model(
    "configs/cgnet/cgnet_256x256_40k_levircd.py",  # Open-CD の設定ファイルをそのまま利用
    checkpoint="cgnet_levircd.pth",                 # Open-CD の公開済み学習済み重み
)
mask = detector.predict(before_image, after_image)  # 1 = 変化あり

開発について

本ライブラリの開発には、AI コーディング(AI によるコード生成・支援)を活用しています。移植したモデルはいずれも、本家 Open-CD の実装と出力が一致することを検証したうえで公開しています。

今後について

opencd-lite は、当社の印刷検査に関する研究開発から生まれましたが、その用途は印刷に限りません。変化検出の技術に興味をお持ちの研究者・開発者・事業者の皆さまに広くお使いいただき、フィードバックや改善のご提案(Issue・Pull Request)をお寄せいただければ幸いです。

opencd-lite に関するお問い合わせは、当社お問い合わせ窓口までお寄せください。


Open-CD および各モデルの著作権は、それぞれの開発者・研究者に帰属します。

TOP