ビジョン検査プロジェクトが行き詰まる原因をさかのぼると、モデルよりも画像に起因することが多くあります。欠陥が画像にぼんやり写っていると、学習データをいくら増やしても精度は上がりません。逆に、欠陥がはっきり見える画像であれば、単純なルールでも判定できます。
カメラと解像度
解像度は「何メガピクセルのカメラを使うか」ではなく、見つけるべき最小の欠陥が何ピクセルで写るかから逆算します。
- 検査する視野(FOV)の横幅を決めます。例: 60 mm。
- 最小の欠陥サイズを決めます。例: 0.2 mm。
- その欠陥が最低何ピクセルにわたれば安定して見えるかを決めます。現場では通常、3〜5ピクセル以上を目標にします。
- 必要な横方向のピクセル数 = 60 ÷ 0.2 × 4 ≈ 1,200ピクセル。これに余裕を持たせてカメラを選びます。
部品が動いている最中に撮影する場合は、露光時間も合わせて確認します。露光中に部品が1ピクセル以上動くと、境界がにじみます。長尺の部品や回転体のように1枚に収めにくい対象には、1ラインずつ連続して撮影するラインスキャンカメラを使います。fineAi Viewer Pro がラインスキャン用です。
照明はコントラストをつくる道具
同じ部品でも、照明によって欠陥が見えたり消えたりします。照明を選ぶときは、「欠陥が周囲と比べて光をどのように異なって反射するか」を考えます。
| 照明 | よく見えるもの | 例 |
|---|---|---|
| リング照明 | 全体を均一に照らす、色・ムラ | 一般的な外観検査 |
| 同軸照明 | 平坦で光沢のある面のキズ・打痕 | 金属加工面 |
| バックライト | 外形、穴、寸法 | シルエット計測 |
| 方向(斜光)照明 | 表面の凹凸、浅いキズ | 微細な打痕 |
方向照明を複数配置して順に点灯しながら撮影すると、表面の高低まで計算できます。この方法は、講義フォトメトリックステレオで扱います。
トリガー — いつ撮影するか
部品がコンベア上を通過する場合、カメラはまったく同じ位置で撮影しなければなりません。センサー信号をカメラに直接入力するハードウェアトリガー(GPIO)を使うと、ソフトウェアの遅延に関係なく、一定の位置で撮影できます。ロボットが部品を持ってカメラの前に位置決めするセルでは、ロボットコントローラーが Modbus 信号で撮影を要求します。
レシピで条件を固定する
学習データを集めるときと現場で検査するときの条件が異なると、モデルは見たことのない画像を受け取ることになります。そこで、カメラの露光・ゲイン、照明のチャンネルと明るさ、レンズ設定をレシピとして保存します。fineAi Viewer で作成したレシピは Multi-Inspector 用に変換して持ち出せるため、収集段階と検査段階を同じ条件で動かせます。
モデルに入力する前の前処理
撮影した画像はそのまま使うこともありますが、いくつかの処理を加えると学習が安定します。Multi-Inspector の検査モード設定(modeN_type)で選べる前処理は次のとおりです。
- histogram-eq / clahe — 明るさの分布を広げ、暗い領域の欠陥を目立たせます。CLAHE は画像を小さな区画に分け、区画ごとにコントラストを調整するため、片側だけ暗い画像に有利です。
- live_canny — Canny エッジで部品の輪郭マスクを作り、部品だけを残して画面中央へ移動します。背景のコンベアの模様や治具が判定に影響しません。
- rotation-fix — 部品を同じ向きに回転させて揃えます。次の講義位置合わせで詳しく説明します。
現場のチェックリスト
- 最小の欠陥が3〜5ピクセル以上で写っていますか。
- 同じ部品を10回撮影したときに、明るさと位置が一定ですか。
- 欠陥のあるサンプルとないサンプルを並べて見たとき、人の目で違いがはっきりわかりますか。
- レシピを保存し、収集と検査で同じレシピを使っていますか。
最後の質問に自信を持って「はい」と答えられれば、モデルを選ぶ段階に進んでかまいません。