はじめに
機械学習名古屋 第22回勉強会の発表資料です
自己紹介
来栖川電算のyuji38kmwtです。
- not 機械学習エンジニア
- not データサイエンティスト
- not Web開発者
- not アノテータ(教師データ作成者)
- アノテーションの効率化などを考えるエンジニア?
- アノテーションの生産性や品質
- アノテーションルール
- アノテーションツール
機械学習ではデータセットが重要
来栖川電算で考えている機械学習の工程と、その重要度
アノテーションとは?
画像などのデータに「意味付け」することです。
たとえば、画像に映っている自動車の部分を囲って、「この部分は自動車です」と意味付けすることです。
AnnoFabとは?
- 来栖川電算の開発・提供しているクラウド型のアノテーションツール
- チーム作業の効率化や品質管理の機能を備え、カンタンにカスタマイズができる
- 無料で利用可能
AnnoFabハンズオンの概要
AnnoFabハンズオンを実施するために必要なこと
以下の条件を満たしていないと、ハンズオンを実施できません。
- インターネットにアクセスできること
- AnnoFabにログインできること
- AnnoFabの組織 https://annofab.com/organizations/ML-NAGOYA-201911 にアクセスできること
AnnoFab組織にアクセスできない方は、AnnoFabハンズオンの事前準備に従って、作業してください。
AnnoFabハンズオンの内容
- 説明:ハンズオンで利用するデータセットとアノテーションルール
- ハンズオン
- ハンズオン1:簡単なアノテーションを実施
- ハンズオン2:様々なアノテーションを実施
- ハンズオン3:AnnoFabプロジェクトを作成
- 説明:ハンズオンで説明しなかったAnnoFabの機能
- 最後に
タイムスケジュール
13:00-13:15 はじめに、AnnoFabハンズオンの事前準備
13:15-13:25 ハンズオンで利用するデータセットとアノテーションルール
13:25-14:00 ハンズオン1(自由時間10分)
14:00-14:30 ハンズオン2,3
14:30-15:00 自由時間&休憩
15:00-15:25 ハンズオンで説明しなかった機能
15:25-15:45 機械学習プロジェクトの話 @n_kats_
ハンズオンで利用するデータセットとアノテーションルール
ハンズオンで利用するデータセット BDD100K
BDD100Kの概要
ハンズオンでは、BDD100K(Berkley DeepDrive 100K Dataset)を使います。
自動運転用のオープンなデータセットです。
BDD100Kの詳細情報
- 前方車載カメラの映像のデータセット
- 1本約40秒の動画が100,000本
- HD動画(1280x720)
- アノテーションの種類
- 物体検出
- セグメンテーション
- 走行エリア
- レーンマーキング
BDD100K:物体検出(Object detection)
https://medium.com/@karol_majek/bdd100k-dataset-25e83e09ebf8 引用
BDD100K:セグメンテーション(Segmentation)
https://medium.com/@karol_majek/bdd100k-dataset-25e83e09ebf8 引用
BDD100K:走行エリア(Driving Area)
https://medium.com/@karol_majek/bdd100k-dataset-25e83e09ebf8 引用
ハンズオンで使うアノテーションルール
アノテーションルールを考える前にロールプレイング
あなたは自動運転プロジェクトの開発者です。
前方の車載カメラの情報から、いくつかの課題を解決していきます。
課題と目標
あなたは自動運転プロジェクトの開発者として2つの課題を挙げました。
それぞれの課題を解決するために達成すべき目標は以下の通りです。
- 課題1:前方の自動車にぶつからないよう運転する
- 目標:前方にいる車を認識する。
- 課題2:自車レーンの区画線(白線/黄色線)に沿って運転する
- 目標:自車レーンの区画線を認識する
目標を達成するために必要なアノテーション
以下のデータがあれば前方の自動車と区画線を認識できそうですね。
- 前方の自動車を矩形で囲ったアノテーション
- 自車レーンの区画線を線で引いたアノテーション
前方の自動車を矩形で囲ったアノテーション
自車レーンの区画線を線で引いたアノテーション
評価用の情報
以下の情報はモデル訓練時には利用しませんが、認識結果を評価するときに利用できそうですね。
- 自動車が他の物体によって隠れているかどうか
- 自動車が画像端で見切れているかどうか
- 区画線の色が白か黄色か
アノテーションルール
というわけで、以下のルールに従ってアノテーションします。
- 前方の自動車を矩形で囲う
- 自車レーンの区画線の中心を線で引く
- 以下の属性を付与する
- 自動車が他の物体によって隠れているかどうか
- 自動車が画像端で見切れているかどうか
- 区画線の色が白か黄色か
ハンズオン1: 簡単なアノテーションを実施
「1-BDD100K-画像」プロジェクト画面に遷移
AnnoFabにログインして、プロジェクト一覧画面に遷移する
AnnoFabにログインして、https://annofab.com/projects にアクセスしてください。
参加しているプロジェクトの一覧が表示されます。
【説明】ハンズオン用のAnnoFabプロジェクト[5分]
ハンズオンでは以下のプロジェクトを使用または参照します。
プロジェクト一覧に以下のプロジェクトが表示されていない場合は、ハンズオン担当者にお伝えださい。
- 1-BDD100K-画像:「ハンズオン1: 簡単なアノテーションを実施」で使います
- 2-BDD100K-画像-全種類:「様々なアノテーションを実施」で使います
- 3-BDD100K-動画:「様々なアノテーションを実施」で使います
- 4-BDD100K-アノテーション済:「説明:ハンズオンで説明しなかった機能」で参照します
「1-BDD100K-画像」プロジェクトにアクセスする
プロジェクト一覧の「1-BDD100K-画像」を選択してください。以下のページに遷移します。
https://annofab.com/projects/cd45639f-695e-45f6-9a7c-bd73f393f1f8
アノテーションするタスクを自分に割り当てる
タスク一覧画面に遷移する
タスク(作業を行う単位)の一覧が表示されます。
【説明】AnnoFabの用語の整理
- 入力データ:アノテーション対象の画像または動画
- タスク:作業を行う単位。複数の入力データで構成されている。
├── タスク1
│ ├── 入力データ1
│ ├── 入力データ2
│ ├── ...
│ └── 入力データ10
├── タスク2
│ ├── 入力データ11
│ ├── 入力データ12
│ ├── ...
│ └── 入力データ20
├── ...
教師付けするタスクの担当を自分に割り当てる
「教師付けタスクを取得」ボタンを押してください。ランダムに選ばれたタスクが自分に割り当てられます。
さらに「{task_id}を開いて、一覧に戻る」ボタンを押すと、アノテーションエディタ画面に遷移します。
アノテーションエディタ画面でアノテーションする
【説明】アノテーションエディタ画面のタブ
アノテーションエディタ画面の各機能は「タブ」で整理されています。
タブはドラッグ&ドロップでドッキングできます。
タブの配置をデフォルトに戻すには、「表示」タブの「初期化」ボタンを押してください。
自動車を矩形で囲う
「アノテーション」タブの「自動車」を選択してから、「編集」タブの「作図」ボタンを押してください。画像上に矩形を作図できるようになります。
画像上で左クリックすると矩形の作図が開始し、右クリックで作図が確定します。作図が確定すると、「アノテーション」タブの「自動車」配下に項目が追加されます。
自動車の属性を付ける
以下のアノテーションルールに従って、「属性」タブのチェックボックスを操作してください。
- 隠れているチェックボックス:囲った自動車が他の物体によって隠れている場合、チェックボックスをONにする
- 見切れているチェックボックス:囲った自動車が画像端で見切れている場合、チェックボックスをONにする
区画線をポリラインで引く
「アノテーション」タブの「右側の区画線」(or 左側の区画線)を選択してから、「編集」タブの「作図」ボタンを押してください。
左クリックで作図を開始、右クリックで作図を確定します。
※下の動画では、"Ctrl+マウスホイール"で、ズームイン/ズームアウトを行っています
※区画線が見つからない場合は、適当な箇所に線を引いてください。
区画線の属性を付ける
以下のアノテーションルールに従って、「属性」タブのチェックボックスを操作してください。
- 色ラジオボタン:白か黄色か選択する
2枚目の画像に移動する
このプロジェクトではタスクに2枚の画像が含まれています。
1枚目の画像のアノテーションが終わったものとして、次に2枚目の画像をアノテーションしましょう。
「タスク」タブの「2」を選択してください。2枚目の画像に移動します。
タスクの提出
アノテーション作業が完了したらタスクを提出する
アノテーション作業が終わったら、「タスク」タブの「提出」ボタンを押して、さらにモーダルウィンドウの「提出」ボタンを押してください。
提出が完了したら、アノテーションエディタ画面のタブを閉じてください。
タスクのフェーズを確認(教師付け⇒受入)
提出ボタンを押すと、タスクのフェーズが「教師付」から「受入」に変わります。
タスク一覧画面で確認しましょう。
タスク一覧画面を開き、「過去の担当者」セレクトボックスで「自分」を選択してください。
過去に自分自身が担当したタスクの一覧が表示されます。
【説明】タスクのフェーズの説明
このプロジェクトでは、タスクのフェーズは2つあります。
- 教師付け: 画像にアノテーションを付与する作業のこと
- 受入: 教師付が完了したタスクが品質基準を満たしているか判断すること。品質基準を満たしていない部分を指摘することができる。
受入作業を実施することで、アノテーションの品質を保証することができます。
※受入作業は後述参照
【説明】Annofabでのアノテーション作業のフロー
- 教師付作業者が、タスクXに対して教師付を行う
- 受入作業者が、教師付されたタスクXを受入する
- 品質基準を満たしていなければ、その旨を指摘して、教師付作業者にタスクXを差し戻す。ステップ1へ。
- 品質基準を満たしていれば、受入作業は終了し、タスクXは受入完了になる。
タスクの確認方法
【説明】タスクの中身を確認する
タスク一覧の「タスクID」リンクを選択すると、閲覧モードでアノテーションエディタ画面が開きます。
タスク内の画像やアノテーションを確認できます。
【説明】タスクにかかった作業時間の詳細を確認する
タスク一覧の「累積実作業時間」を選択すると、タスク履歴画面に遷移します。
各フェーズの開始日時、完了日時、作業時間を確認できます。
自由時間[10分]
いろいろ触ってみてください。
以下のスライドも参考にして、AnnoFabをいろいろ触ってみてください。
※ タスクはたくさんあるので、「教師付けタスクを取得」ボタンを何回押してもOKです
【説明】ショートカットキーの確認
アノテーションエディタ画面の「ヘルプ」タブで確認、または各ボタンのツールチップで確認できます。
以下の機能をショートカットキーを使うと、素早くアノテーションできます。
- アノテーション(矩形)の移動:矢印キー
- 矩形のリサイズ:Shift+矢印キー
- ズームイン/ズームアウト:Ctrl+マウスホイール
【説明】アンドゥ/リドゥ
「編集」タブの「元に戻す」ボタン、「やり直し」ボタンで、アンドゥ/リドゥができます。
【説明】アノテーションの表示方法
以下の設定を変更すると、アノテーションの表示方法が変わります。
- アノテーションラジオボタン
- 十字カーソルチェックボックス
- 図形塗りつぶしチェックボックス
ハンズオン2:様々なアノテーションを実施
AnnoFabで作成できるアノテーション
ハンズオン2の概要
ハンズオン1では矩形、ポリラインアノテーションを使いました。
AnnoFabは矩形やポリライン以外にも、ポリゴンや塗りつぶしアノテーションが利用できます。
ハンズオン2では様々なアノテーションを試して、どんなアノテーションを作成できるか試してみましょう。
【説明】AnnoFabで作成できるアノテーションの種類
画像だけでなく動画にもアノテーションできます。
- 画像
- ベクタ形式
- 矩形
- ポリライン
- 点
- ポリゴン
- ラスタ形式
- 塗りつぶし
- 全体
- ベクタ形式
- 動画
- 区間
- 全体
https://annofab.com/docs/faq/#jna0nm 参照
【説明】AnnoFabで付与できる属性の種類
- チェックボックス
- ラジオボタン
- セレクトボックス
- 数値
- テキスト(1行)
- テキスト(複数行)
- アノテーションリンク
- トラッキングID
https://annofab.com/docs/faq/#jna0nm 参照
ハンズオン2で試すアノテーション
- 動画:区間
- 画像:ポリゴン
- 画像:塗りつぶし
区間アノテーション(動画)を試す
【説明】区間アノテーション(動画)
動画の区間に対して、何が起きているかをアノテーションできます。
大量の動画からアノテーション対象画像を選出するときなどに利用できます。
【説明】動画アノテーションのルール(例)
- 目的:前方の車載カメラの動画から、交差点付近を重点的にアノテーションするため、交差点部分の画像を抽出する
- アノテーションルール:自車が交差点にいる間を「交差点」であると指定する
「3-BDD100K-動画」プロジェクトに遷移する
左上のAnnoFabアイコンを選択して、プロジェクト一覧に遷移してください。
そして「3-BDD100K-動画」を選択してください。
教師付け作業の開始
タスク一覧の「教師付けタスクを取得」ボタンを押して、教師付け作業を開始してください。
※前述参照
交差点区間をアノテーションする
「タスク」タブの「再生」ボタンを押してください。動画が再生されます。
「自車が交差点にいる」区間で、タイムラインタブの交差点チェックボックスをONにしてください。そして、交差点から抜けたらチェックボックスをOFFにしてください。
チェックボックスをONにしていた部分が、「交差点」区間のアノテーションということになりました。
※ BDD100K-動画 プロジェクトで試すことができます。
ポリゴンアノテーション(画像)を試す
「2-BDD100K-画像-全種類」プロジェクトに遷移する
左上のAnnoFabアイコンを選択して、プロジェクト一覧に遷移してください。
そして「2-BDD100K-画像-全種類」を選択してください。このプロジェクトでは、すべてのアノテーション種類、すべての属性種類が利用できるようになっています。
教師付け作業の開始
タスク一覧の「教師付けタスクを取得」ボタンを押して、教師付け作業を開始してください。
※前述参照
【説明】ポリゴンアノテーションの概要
ポリゴンアノテーションは、矩形では表現できない物体/領域を囲うときに利用します。
ポリゴンアノテーションを試す
「アノテーション」タブの「ポリゴン」を選択してから、「編集」タブの「作図」ボタンを押してください。
作図ツールの「自由形状」ボタンを押せば、一般的なポリゴンを作成できます。
左クリックして作図を開始し、右クリックで作図が終了します。
塗りつぶしアノテーション(画像)を試す
【説明】塗りつぶしアノテーションの概要
塗りつぶしアノテーションは、錆や傷などポリゴンでは表現できない細かい領域をアノテーションするときに利用します。
https://annofab.com/#case-examples 引用
塗りつぶしアノテーションを試す
「アノテーション」タブの「塗りつぶし」を選択、「編集」タブの「作図」ボタンを押してください。
作図ツールの「ポリゴン」ボタンを押せば、ポリゴン形状のラスタ形式でアノテーションを作成できます。
左クリックして作図を開始し、右クリックで作図が終了します。
「追記」を選択してから作図ツールの「フリーハンド」を押せば、塗りつぶしの微修正が可能です。
ハンズオン3:AnnoFabプロジェクトを作成
ハンズオン3の概要
ハンズオン3の概要
ハンズオン1,2では、あらかじめ用意してあるハンズオン用プロジェクトでアノテーションを実施しました。
ハンズオン3では、AnnoFabプロジェクトを作成して、アノテーションできる状態にしましょう。
今回は、「麻雀牌を認識するためのアノテーション」プロジェクトを作成します。
ハンズオン3を経験すれば、自分で用意した画像を自分でアノテーションできるようになるでしょう。
ハンズオン3の作業手順
以下の順に作業していきます。
- 組織を作成する
- プロジェクトを作成する
- アノテーション仕様を設定する
- 入力データを作成する
- タスクを作成する
組織を作成する
組織一覧画面に遷移する
右上の個人メニュを開き、「所属組織」を選択してください。所属組織一覧画面 に遷移します。
新しい組織を作成する
所属組織一覧画面の「新しい組織を作成」ボタンを押してください。
組織名、メールアドレスを入力して、「同意して組織を作成」ボタンを押してください。組織が作成されます。
※組織名は好きな名前(ただし重複しないこと)にしてください。
※組織名は後で変更できます
組織のプロジェクト一覧画面に遷移する
ヘッダメニュの「組織のプロジェクト」を選択してください。
プロジェクトを作成する
プロジェクトを作成する
組織配下のプロジェクト一覧画面で「プロジェクトを作成」ボタンを押してください。
プロジェクト名に好きな名前を入力して、「プロジェクトを作成」ボタンを押してください。プロジェクトが作成されると、プロジェクトトップ画面に遷移します。
※ハンズオンでは「画像」に対してアノテーションします。
入力データを作成する
入力データを作成する
アノテーション対象の画像をアップロードして、入力データを作成します。
ヘッダメニュの「入力データ」を選択して、入力データ一覧画面に遷移してください。
アノテーション対象画像をGitHubからダウンロード
GitHubから麻雀画像のzipファイルをダウンロードしてください。zipファイルには麻雀画像が3枚含まれています。
アノテーション対象画像のアップロード
GitHubからダウンロードしたzipファイルを、AnnoFabにアップロードします。
アップロードボタンを押してから入力データが登録されるまで、数分待ちます。
先にアノテーション仕様を設定しましょう。
アノテーション仕様を設定する
アノテーション仕様画面に遷移
ヘッダメニュの「仕様」を選択して、アノテーション仕様画面に遷移してください。
この画面で、どのようなアノテーションを作成するかを設定します。
旧アノテーション仕様画面に遷移
左下の「旧画面に戻る」ボタンを押して、旧アノテーション仕様画面に遷移してください。
v0.66.4(2019/11/13)時点では、アノテーション仕様画面が新旧2種類あります。
旧画面の方がプリミティブな方法で操作できること、新画面では一部使いにくい部分があるため、ハンズオンでは旧画面で操作します。
なお、旧アノテーション仕様画面は2019/12に刷新いたします。
アノテーションルール
数牌と字牌をそれぞれ矩形で囲います。
牌の種類は属性で指定します。
「数牌」ラベルを設定
「ラベル追加」ボタンを押して、アノテーション仕様を設定します。
以下の通りラベルを設定してください。
ラベル名en: numbers
ラベル名ja: 数牌
アノテーション種類: 矩形
「数牌」ラベルの「種類」属性を設定
「属性を追加」ボタンを押して、「種類」属性を設定します。
以下の通り属性を設定してください。
属性名en: type
属性名ja: 種類
属性種類: 排他選択:ラジオボタン
「数牌」ラベルの「種類」属性の選択肢を設定
「選択肢を追加」ボタンを押して、選択肢を以下の通り入力してください。
characters, 萬子
dots, 筒子
bamboo, 索子
「数牌」ラベルの「値」属性を設定
1~9を入力するための「値」属性を設定します。
「属性を追加」ボタンを押して、以下の通り属性を設定してください。
属性名en: value
属性名ja: 値
属性種類: 数値
アノテーション仕様を保存する
「数牌」のアノテーション仕様を入力したら、「アノテーション仕様を保存」ボタンを押してください。
ハンズオンでは時間の都合上「数牌」のアノテーション仕様だけを設定します。
※作成済のアノテーションがある状態でも、アノテーション仕様は変更できます。
【説明】「字牌」ラベルの設定
以下の通り設定しました。
* honors, 字牌
* value, 値, ドロップダウン
* east, 東
* south, 南
* west, 西
* north, 北
* white, 白
* green, 発
* red, 中
アップロードした画像の確認
入力データ画面で、アップロードした画像が入力データして作成されていることを確認します。
タスクを作成する
タスクの作成
入力データ画面の左上の「タスク作成」ボタンを押してください。
必要な項目を入力してタスクを作成する。
以下の通り入力して、「タスクを作成」ボタンを押してください。
- タスクの作成方法:n個ずつ1タスクとする
- 1タスクに割り当てる入力データ個数:
1
- 生成するタスクIDにつけるプレフィックス:
20191116
タスクが作成されたことを確認
タスク一覧画面に遷移してください。作成されたタスクが表示されます。
これで、アノテーションができる準備が整いました。
アノテーションエディタでアノテーションする
タスク一覧画面で「教師付けタスクを取得」ボタンを押して、教師付け作業を開始してください。
自分で登録した画像に対して、自分で設定したアノテーション仕様で、アノテーションすることができます。
休憩&自由時間[30分]
いろいろ触ってみてください
- 不明な点がありましたら、適宜ご質問ください
- 「1-BDD100K-画像」、「2-BDD100K-画像-全種類」プロジェクトをいろいろ触って、遊んでみてください。
その他の機能の紹介
アノテーションデータのダウンロード
アノテーションデータのダウンロード
プロジェクトのトップ画面で、アノテーションデータをダウンロードできます。
※zipファイル
ダウンロードできるハンズオン用のプロジェクト
| プロジェクト名 | ダウンロードできるか |参加者のロール|
|:---|---|---|---|
| 1-BDD100K-画像 | × |チェッカー|
| 2-BDD100K-画像-全種類 | × |チェッカー|
| 3-BDD100K-動画 | × |チェッカー|
| 4-BDD100K-アノテーション済 | 〇 |アノテーションデータ|
| 自分自身で作成したプロジェクト | 〇 |オーナ|
※プロジェクトメンバロールが「アノテーションデータ」or「オーナ」でないと、アノテーションデータzipをダウンロードできません。
アノテーションデータのディレクトリ構成
ダウンロードしたアノテーションデータのディレクトリ構成です。
アノテーションデータのルートディレクトリ
├─{task_id}/
│ ├──{input_data_id}.json (アノテーションJSON)
│ └──{input_data_id}/ (塗りつぶしアノテーションがあるときのみ)
│ └─{annotation_id} (塗りつぶしのPNG画像)
アノテーションデータ
├── 20191116_0000
│ ├── 0c1be04d-8449-4266-b7b5-e6be23276919.json
│ └── a2b7cfd3-0578-4d93-8ed6-f9c497c321ee.json
├── 20191116_0001
│ ├── 1c523939-39ed-4699-8055-8bfab44e27f9.json
│ └── c2b1bb5d-1e13-414a-b278-c38fe67bfa64.json
│
アノテーションJSONの中身(全体像)
アノテーションデータの中身はdetails
キーに記載されています(後述参照)。
各キーの説明は https://annofab.com/docs/api/#section/Simple-Annotation-ZIP を参照してください。
{
"project_id": "cd45639f-695e-45f6-9a7c-bd73f393f1f8",
"annotation_format_version": "1.2.0",
"task_id": "20191116_0061",
"task_phase": "acceptance",
"task_phase_stage": 1,
"task_status": "not_started",
"input_data_id": "01a5faa3-9701-4801-ab8b-69e38de95b58",
"input_data_name": "test.zip/test/b5050293-00000000.jpg",
"details": [
{
"label": "right-line",
"annotation_id": "2c1797d6-063b-4d5c-9d1a-b8c3ff5a926a",
省略
},
{
"label": "left-line",
"annotation_id": "1514ad94-9eaa-4b8a-8aeb-65df63a045cb",
省略
},
{
"label": "car",
"annotation_id": "d574b17f-2afd-4f52-af0c-6570dda5550f",
省略
}
],
"updated_datetime": "2019-11-11T18:31:34.313+09:00"
}
上のJSONは、以下の画像に対するアノテーションJSONです。
https://annofab.com/projects/cd45639f-695e-45f6-9a7c-bd73f393f1f8/tasks/20191116_0061/editor#01a5faa3-9701-4801-ab8b-69e38de95b58
アノテーションJSONデータの中身(自動車)
data
キーに、左上のxy座標(left_top
)、右下(right_bottom
)のXY座標が記載されています。
属性はattributes
キーに記載されています。
{
"label": "car",
"annotation_id": "d574b17f-2afd-4f52-af0c-6570dda5550f",
"data": {
"left_top": {
"x": 373,
"y": 378
},
"right_bottom": {
"x": 808,
"y": 634
},
"_type": "BoundingBox"
},
"attributes": {
"occluded": false,
"truncated": false
}
}
アノテーションJSONデータの中身(左側の区画線)
data
キーに、各頂点のxy座標記載されています。
{
"label": "left-line",
"annotation_id": "1514ad94-9eaa-4b8a-8aeb-65df63a045cb",
"data": {
"points": [
{
"x": 145,
"y": 682
},
{
"x": 212,
"y": 566
},
{
"x": 305,
"y": 429
},
{
"x": 340,
"y": 389
}
],
"_type": "Points"
},
"attributes": {
"color": "white"
}
}
アノテーションデータzipをPythonで扱う
annofab-api-python-client ライブラリで、アノテーションデータJSONを読み込めます。
$ pip install annofabapi
$ pip list | grep annofabapi
annofabapi 0.21.1
from pathlib import Path
from annofabapi.parser import SimpleAnnotationDirParser
def first_true(iterable, default=None, pred=None):
return next(filter(pred, iterable), default)
# アノテーションデータJSONを読み込む
parser = SimpleAnnotationDirParser(Path("annotation/20191116_0061/01a5faa3-9701-4801-ab8b-69e38de95b58.json"))
annotation = parser.parse()
# 自動車アノテーションの座標値と属性を出力する
car_detail = first_true(annotation.details, pred=lambda e: e.label == "car")
print(car_detail.data)
print(car_detail.attributes)
検査コメント
受入フェーズでは、間違っているアノテーションに対して「検査コメント」で指摘することができます。
検査コメントを使って、タスクを差し戻すまでの手順を簡単に説明します。
受入するタスクの担当を自分に割り当てる
タスク一覧画面の「受入タスクを取得」ボタンを押すと、受入作業ができます。
間違っているアノテーションに指摘する
「編集」タブの「検査」ボタンを選択して、画像上で間違っている部分をクリックすると、そこに対して指摘できるようになります。
「検査コメント」タブのテキストボックスに指摘内容を入力して、「確定」ボタンを押します。
タスクを差し戻す
間違っている部分に対して指摘し終えたら、「タスク」タブの「差戻」を選択して、タスクを教師付けフェーズに差し戻します。
タスクのフェーズを確認(受入⇒教師付け)
差し戻すと、タスクのフェーズが「受入」から「教師付け(2回目)」に変わります。
アノテーション一覧画面
アノテーション一覧画面の概要
作成したアノテーションの一覧が表示されます。
アノテーション一覧画面で"BDD100K"の「列車」を確認する
BDD100Kの「列車」アノテーションに間違いが多いことが、BDD100K-アノテーション済 の アノテーション一覧画面 から確認できます。
統計画面
統計画面
タスクの進捗状況や作業時間などを確認できます。
予定通り作業が完了するか、期待通りの生産性を満たしているかなどを把握するのに利用できます。
作業ガイド画面
作業ガイド画面
アノテーションルールなど、作業するためにチームで共有すべき情報を、WYSIWYGで記述できます。
https://annofab.com/projects/cd45639f-695e-45f6-9a7c-bd73f393f1f8/instruction
AnnoFab Web API
AnnoFab Web API
Web APIを使ってAnnoFabを操作することも可能です。外部システムと連携するときなどに利用できます。
https://annofab.com/docs/api/
Pythonならば、 annofab-api-python-client ライブラリで簡単にWeb APIにアクセスできます。
アノテーションリンク
【説明】アノテーションリンクの概要
アノテーションリンク属性は、「頭と胴体」や「車両全体とナンバープレート」など複数のパーツから構成されて、関連付けたいときに使います。
【説明】アノテーションリンクを試す
属性タブの「アノテーションリンク」の「変更」ボタンを押してから、他のアノテーションを選択すると、そのアノテーションと関連づきます。
※Escapeキーでリンクモードを解除できます
プロジェクトメンバ一覧画面
プロジェクトメンバのロール
プロジェクトメンバ一覧画面で、ロールの設定/閲覧ができます。
今回のハンズオンで使用/参照したプロジェクトでは、皆様を以下のロールで設定しました。
プロジェクト名 | ダウンロードできるか | 参加者のロール |
---|---|---|
1-BDD100K-画像 | チェッカー | |
2-BDD100K-画像-全種類 | チェッカー | |
3-BDD100K-動画 | チェッカー | |
4-BDD100K-アノテーション済 | アノテーションデータ | |
自分自身で作成したプロジェクト | オーナ |
プロジェクトメンバのロールの詳細
注意事項
- チェッカー:
- 入力データ一覧画面が閲覧できない
- アノテーションzipをダウンロードできない
- アノテーションユーザ:
- 教師付け、受入など変更を伴う作業ができない。
最後に
AnnoFabでできること
- アノテーション作業
- 画像アノテーション
- 矩形、ポリライン、ポリゴン、塗りつぶし
- 属性
- 動画アノテーション
- 区間指定
- 属性
- 画像アノテーション
- アノテーション作業以外
- 受入作業による品質チェック
- 統計画面での生産性・品質、スケジュールの確認
- 作業ガイド画面でアノテーションルールの管理
- Web APIで外部ツールとの連携
AnnoFabは無料で利用できるので、趣味で機械学習用のデータを作成するときなどに利用できるかもしれません。
アノテーション業務で考えること
実際にアノテーション業務を実施すると、アノテーション作業以外のことも考える必要があります。
- いつ、アノテーション作業が完了するか?
- アノテーションコストはどれくらい?
- アノテーションの品質をどう担保するか?
- 作業者ごとの生産性・品質は期待通りか?
AnnoFabではアノテーション作業以外の機能もサポートしています!
AnnoFabの利用事例
- 事例1. 道路標識や看板などの文字認識、車載カメラ写真や航空写真からの物体検出
- 事例2. 汚れ、さび、傷など不良箇所の精密な塗り分け(セグメンテーション)
- 事例3. 車載カメラや監視カメラの動画にアノテーション
https://annofab.com/#case-examples
アノテーションツールの比較
高度なアノテーションの量産を行う場合は、AnnoFabがよいかもしれません。
https://speakerdeck.com/exoego/annotation-strategy-to-accelerate-using-ai-for-business?slide=33 引用
備考
ハンズオン用のAnnoFabプロジェクト
ハンズオン用の以下のAnnoFabプロジェクトは、2020/12/31までご利用いただけます。ご自由にお使いください。
利用できなくなる1週間前にはアナウンスするようにいたします。
- 1-BDD100K-画像
- 2-BDD100K-画像-全種類
- BDD100K-動画
- BDD100K-アノテーション済
実行環境
- AnnoFab v0.66.4
- annofabapi v0.21
- Python 3.7
参考サイト
AnnoFabの利用実績
[TRY] F-Zeroのアノテーションを見せる
AnnoFabの利用実績
- AnnoFabチュートリアル(2019/11/16時点では、情報が少し古いです)
- JAWS FESTA 20191102 - 機械学習の事例
- AIのビジネス利用を加速する教師データ作成の戦略
- Annfoabで物体検出を試みる