チュートリアル2. プロジェクトの準備

「プロジェクト」とは、一連のアノテーション作業を用途やチーム別に分けるための単位です。例えば、「ポスターの文字認識」と「犬の表情」のアノテーションは、別々に分けておくほうが作業しやすくなります。AnnoFabでは、そのような「プロジェクト」をいくつでも作成できます。

2-1. プロジェクトの作成

プロジェクト一覧ページ に進み、右上の「プロジェクトを作成」ボタンを押すと、次のようなプロジェクト作成画面が表示されます。

チュートリアルでは以下のようにします。

例:

  • プロジェクト名:Test0
  • 関連文章:(空欄)
  • 所属組織: 先ほど作成した組織(AnnoFab_Organization)
  • 入力データ種類:画像
  • ワークフロー:2phase

項目を埋めて送信すると、作成されたプロジェクトが次のように表示されます。

「プロジェクト開始時のチェックリスト」として、3つのチェックボックスが表示されています。この3つをそれぞれ進めていきます。

AnnoFabのプロジェクトには、 https://annofab.com/projects/XXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX のような一意のURLが自動で発行されます。これにより、他のユーザーのプロジェクトと衝突しないURLを考える手間がなくなります。

2-2. アノテーション仕様の作成

「プロジェクト開始時のチェックリスト」の1つめは「アノテーション仕様の作成」です。

アノテーション全作業を通して、この仕様策定が最も重要な作業になります。

本チュートリアルでの題材は「交通標識の教師データ」でしたので、作りたいアノテーションは

  1. 交通標識にマーキング(矩形/バウンディング・ボックス)して、
  2. そこに何が写っているかラベル付与(文字列属性)をつける

といったものになります。そこで「アノテーション入力仕様」ページに進み、以下のように仕様を作成します。

このうち、 :en で設定するラベル名や属性名は、最終的に生成される教師データ(JSON形式)のキー名にも使われます。そのため、データ利用時にわかりやすい名前を付けることをお勧めします。また :ja のような日本語の名は、アノテーション作業をする人に分かりやすい名前を入力することができます。

合わせて、ショートカットキーを設定しておきましょう。特に大量の画像をさばいていく場合には、強力な武器になります。

AnnoFabで作成できるアノテーションやその属性は、他にも様々なものがあります。組みあわせることで、必要なアノテーション仕様と、それを実現するアノテーションエディタを自由に定義できます。

特徴的なものにしぼって、以下にご紹介いたします。

アノテーション種類「全体」
1枚の画像そのものを事例とする場合に使用します。例えば「顔の画像に見た目年齢をタグ付けする」といったアノテーション作業では、アノテーション種類「全体」のregionラベルを追加し、そこに「数値」属性 age を追加するとよいでしょう。
アノテーション種類「塗りつぶし」

物体が存在する領域を厳密にマーキングしたい場合に使用します。画像処理や機械学習におけるセグメンテーションと呼ばれるタスクのための教師データ作成に使用します。

ただし、作成コストは非常に高い(=時間がかかる)ので、アノテーション種類「多角形」で代用できないか検討することを強くお勧めします。

属性種類「排他選択:ラジオボタン

ラジオボタンでどれか1つ選択する属性です。例えば、じゃんけんの手の写真(「グー」「チョキ」「パー」)など。

選択肢がすべて見えていることから、どれを選ぶか見つけやすい&どれが選ばれているか分かりやすく、選択肢が少ない(2~7件程度)場合に適しています。

属性種類「排他選択:ドロップダウン

選択肢が非常に多い属性の場合(例:動物の種類、植物の種類)は、「ラジオボタン」ではなく、こちらの使用をお勧めします。

ドロップダウンでは、名前の一部を入力すると選択肢が絞り込まれます。数十~数千の選択肢があっても、すばやく入力できます。

アノテーション仕様の作成については、複数のプロジェクトで毎年何十万枚もの画像に大量のアノテーションしてきた弊社(来栖川電算)でも、一筋縄ではいっておりません。

長年の試行錯誤の中で、抑えておくべき点として

  • いきなり量産せず、トライアルで仕様を洗練させる
  • 複数人で教師付け/検査して、個々人のぶれを抑える
  • あれこれ欲張らず、応用に合わせて絞り込んだ仕様にする

を推奨しています。これについては、 別途ページ に詳しく解説しましたので、ぜひご覧ください。

2-3. アノテーションを付けたい画像の登録

「プロジェクト開始時のチェックリスト」の2つめは「画像の登録」です。

  1. 「ファイル選択」ボタンで、対象ファイルを選択(一度に複数枚選択できます)
  2. 「アップロード」ボタンで、アップロード実行

今回は、10枚の画像(=乗用車のドライブレコーダー画像)をアップロードしました。

アップロードできる画像は、以下の制約があります。

  • 容量:1画像4MB以下
  • フォーマット:JPEG、PNG、GIF
  • 解像度:制限はありません。画像ごとに異なる解像度でも問題ありません。

アップロードが完了すると、以下のように、画面左上の「タスク作成」ボタンが有効になります。

複数の画像ファイルをZIPにまとめて一気にアップロードすることもできます。ZIPは、以下のようにサブディレクトリを持っていても構いません。同名の画像ファイルも、ディレクトリ階層によって区別されるので、フラットにする必要はありません。

  • upload.zip
    • 1.jpg
    • dir-A
      • 1.jpg
      • 2.jpg
    • dir-B
      • 1.jpg
      • 2.jpg

2-4. タスク(アノテーション作業)の作成

「プロジェクト開始時のチェックリスト」の最後になる3つめは、「タスクを作成」です。AnnoFabでは、作業を行う単位を「タスク」として扱います。タスクは、何枚かの画像の集まりで、プロジェクトメンバーの誰か1人が教師付けを行います。

先ほど解説した「タスクを作成」ボタンをクリックします。すると次のような画面が表示されます。

項目を入力し、右下の「タスクを作成」ボタンをクリックします。

本チュートリアルでは、

  • 既にタスクに使われている入力データの除外: Off
  • 1タスクに割り当てる入力データ個数: 5
  • 割り当てる順序: 昇順
  • 生成するタスクIDにつけるプレフィックス: "task"

としました。1タスク内の画像枚数(アノテーション対象が画像の場合)は自由ですが、

  • 10~30: 一般的なタスク。ほとんどの場合で1画像に複数の対象が写っている。
  • 50~100: 単純なタスク。1画像に対象がほぼ1つ

程度にしておくのが経験的に妥当です。また、タスクIDのプレフィックスについては、利用者がわかりやすい名前であればどのようなものでも問題ありません。

タスク生成が完了すると、以下のような画面が確認できます。

今回は、

  • 総画像枚数:10
  • 1タスクに割り当てる入力データ個数:5

としたため、2個のタスクが作成されました。これでプロジェクトの準備が完了し、アノテーションを開始できるようになりました。

アノテーション仕様の修正、画像アップロード、タスク作成は、プロジェクトの途中にいつでも行えます。画像を収集するたびにタスクを増やしたり、アノテーションをつける中で仕様を修正したりできます。