タイトルがこの記事の結論となりますが、マスクが学習にどう影響するかを具体例で解説します。
[マスク機能]
はじめに、マスクはタスクの[接続設定]で設定できる機能です。
注目する領域以外を隠すことで検出精度を上げたいときに使用します。こちらの例では、MENOUロゴが繰り返し出ている青の領域がマスクされた領域、日付が書かれた帯の部分がマスクされていない領域となります。
[どういうときに使う?]
実は、MENOU-TEユーザーの皆さまにはまずはじめにマスクなしでAI解析をしていただきたいと考えています。ディープラーニング画像処理はルールベース画像処理と異なり、抽出したい対象物と少し似た特徴のものが写りこんでいてもほとんどの場合問題になりません。例えば、抽出したいボルトと同じような色や明るさのナットが写り込んでいても形状や位置など周囲の情報を含めてAIが学習し検出できるからです。追加学習だけではダメなときや、より汎用的に画像処理を構成する必要があるときに初めてマスクの使用を検討していただきたいと思います。
[例]
ここでは記事の説明の都合上、「マスクが実際は不要だけれどもマスクが使えそうな場面」が登場する例を使って説明します。卵に貼られたラベルシールから真ん中の日付の文字列だけを抽出し、周囲にある賞味・期限の文字は抽出しないようにしたいとします。
タスク構成は2段で、まずシール中央の帯を抽出し、次のその帯の中にある日付文字列を抽出します。
日付帯タスクの検出結果は外接矩形として下の日付文字タスクに渡されますが、そのままですと日付文字だけでなく賞味・期限の文字も入ってしまいます。
MENOUの領域検出タスクなら中央の黒色の文字列だけアノテーションすれば、周囲の緑色の文字列に反応し過検出を起こしてしまうことはありませんが、ここではあえて帯以外の領域をマスクで隠したいと思います。設定は[マスク使用]にチェックを入れるだけです。柄は3種類ある中から[MENOU]を選びました。
アノテーションはこのようにマスクされていない帯の日付を塗ります。
[マスクされた領域は学習に影響するのか?]
ここで本題の問いです。マスクされた領域は学習に影響するのでしょうか?
答えは、タイトル通り「マスクは透明なら学習に影響がなく、色付きなら影響がある」です。
[色]に[透明]を設定したとき、学習はマスクされた領域も含めて原画像のまま行われますが、推論された結果はマスクによって隠されて表には出てきません。
[色]に[黒]や[白]を設定したとき、学習はマスクされた領域はその色で塗りつぶされた状態で行われます。
ですので、黒や白のマスクを使っていて、上位タスクの影響でマスク領域が変わった場合は追加学習を行ってください。
[精度と速度について]
なお、マスクを使用すると過検出抑制効果はありますが、処理が高速化されるわけではありません。精度と速度に関して支配的な要因は別にあります。
精度を上げるには?
- 対象物がはっきり写った画像を用意する
- 矛盾なく正確にアノテーションする
- いちどに何枚も学習せず、1-2枚ずつ追加学習して徐々に精度を上げる
- など
速度を上げるには?
- 対象物が目視で確認できる限り前処理設定のサイズ変換で縮小する
- 解析領域を限定する
- 上位モデルのGPUを使用する
精度や速度向上に関するベストプラクティスはMENOUフォーラムの他の記事でも多数紹介していますのでぜひご覧になってください。