はじめに
近年、AI(Artificial Intelligence:人工知能)の急速な発展に伴い、それらを用いた技術が活用され始めています。例えば、AIによる画像認識技術として物体検出などがあります。物体検出は「画像の中から特定の物体の位置、種類、個数などの情報を認識する技術」であり、AIを用いて比較的高速に画像内の物体情報を取得することができます。この技術を用いて製造業では品質評価、外観検査、異常検知などに活用されています。
リアルタイムに物体検出を行うアルゴリズムにYOLO(You Only Look Onse)と呼ばれるものがあり、CNN(Convolutional Neural Network:畳み込みニューラルネットワーク)を用いたアルゴリズムとなっています。2021年8月に公開された最新の物体検出モデルにYOLOXがあり、これはYOLOv5を超える性能と、使いやすいライセンス(Apache License)を両立しています。
このような画像認識では学習モデルが用いられており、そのモデルの生成や精度向上をする際の前処理としてアノテーションを行います。アノテーションでは教師(正解)データを生成することで、YOLOXなどの物体検出でのアノテーションでは画像内の物体にバウンディングボックスと物体名を付与します。
本記事では、アノテーション・ツールであるVoTTを用いたアノテーションデータの作成方法について紹介します。
YOLOXの完全攻略マニュアルも以下のnote記事で紹介しています。
1. VoTTとは
VoTTはVisual Object Tagging Toolの略語で、マイクロソフトによって開発されています。VoTTは以下のGithubから取得できます。Windowsでは.exeファイルをダウンロードして、インストールしてください。
2. VoTTの使い方
2.1 ローカルフォルダーに接続
まず、VoTTを起動すると以下の画面のようになります。
次に、アノテーション画像が入ったフォルダに接続します。左側にあるコンセントマーク(赤枠)をクリックしてください。
次に、上側の+ボタンをクリックします。
接続設定画面が表示されますので、表示名を任意の名前で記入し、プロバイダーはローカルファイルシステムを指定します。
プロバイダーをローカルファイルシステムにしていしたら、その下側に新たな設定内容が表示されます。「フォルダーを選択」をクリックして、アノテーション画像が保存されているローカルのフォルダーを指定します。
指定し終わったら、一番下の「接続を保存」をクリックする。
2.2 新規プロジェクトの作成
2.1の作業が終わると先ほどの接続先が追加されています。それが確認できたら、左端のメニュー欄の一番上のhomeマークをクリックしてください。
home画面が表示されたら、「新規プロジェクト」をクリックしてください。
プロジェクト設定の画面が表示されます。
表示名は任意の名前を指定し、ソース接続とターゲット接続を先程作成した接続先を指定します。
下側にスクロールすると、タグの欄があります。そこには物体検出させたい物体名(クラス)を指定します。
YOLOXで物体検出をさせたい場合には以下のcoco_classes.pyに記載されているクラス名の中から指定すると良いと思います。
今回はpersonだけ物体検出したいと思いますので、タグにpersonと打ち込み、Enterキーを押すと以下の画面のようになります。
ここまで来たら「プロジェクト保存」ボタンをクリックします。
2.3 アノテーション作業
それではアノテーション作業を始めていきます。「プロジェクト保存」ボタンをクリックした後は以下の画面のようになります。
検出したい物体にバウンディングボックスを描画していきます。今回はpersonのみにアノテーションをしていきます。バウンディングボックスを描画するには画像上でドラッグします。そうすると、以下のように灰色の長方形で物体が囲まれます。
検出したい物体に対してドラッグが終わったら、右側のTAGS内の対応する物体名を選択します。ここでは緑色の「person」を選択します。選択すると以下の画像のようにバウンディングボックスが緑色になって、タグが付与されます。
画像内に映っている人物に対してアノテーションをすると以下のようになります。
もし他の物体もアノテーションをしたくなったら、下図のようにTAGSの「+」ボタンをクリックして新しいタグを追加します。
2.4 PascalVOC形式データの出力
すべての画像に対してアノテーション作業が終わったら、そのアノテーションデータをPascalVOC形式のデータとして出力します。
以下の画像にあるように、左側の欄にある「エキスポート」ボタンをクリックしてください。
そうすると以下のように「エクスポート設定」画面が表示されます。
次に、「プロバイダー」は「Pascal VOC」を選択してください。
アセット状態は基本的に「訪問済みアセットのみ」でいいですが、タグが付与されていない画像が1枚でもあれば、「タグ付きのアセットのみ」を選択してください。
また、未割り当てをエクスポートは、物体名(クラス名)のタグを付与していないもののデータも出力するか聞いています。基本的にタグを付与していないものはないと思いますので、チェックしたままでいいと思います。しかし、すべての写真に1つでもタグを付与していないものがある場合にはチェックを外してください。
ここまで来たらページ最下部の「エクスポート設定を保存」をクリックしてください。
次に、以下の画像にあるように左側の「Home」ボタンをクリックしてください。
再度、作成していたプロジェクトを開いて、以下の画像のように上側のメニューバーの「プロジェクトをエキスポート」をクリックしてください。これでPascal VOC形式のデータが出力されます。
いかが終了すると、接続先のフォルダにPascal VOC形式のデータが格納されたフォルダが作成されています。フォルダ名は「{プロジェクト名}-PASCALVOC-export」となっています。以下の例ではプロジェクト名が「yolox_test」であったため、フォルダ名は「yolox_test-PASCALVOC-export」というフォルダ名になっています。
このデータを用いてYOLOXの学習で精度向上することができます。そちらについては以後、記事を更新します。
オススメ書籍
物体・画像認識と時系列データ処理入門
現場で使える!PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装
PyTorchで作る!深層学習モデル・AIアプリ開発入門
スキル修得&転職
近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。
以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
おわりに
アノテーション・ツールであるVoTTを用いたアノテーションデータの作成方法について紹介しました。このアノテーション作業は大変ですが、物体検出の推論結果の精度向上に効果的な手法ですので、根気よく頑張りましょう。しかし、2000枚の画像にひたすら手動でアノテーションするのはコストがかかりすぎます。それを解決するために、アノテーションを自動化することが望まれます。そこで、アノテーションを自動化するツールを作成したので、次回以降の記事で紹介したいと思います。