チュートリアル3 :Tensorflowで物体検出① – Tensorflow Object Detection APIの導入

チュートリアル3では独自にアノテーションしたデータをSSD(Single Shot Multibox Detector)で学習し、物体検出モデルを構築します。 このページではTensorflow2とTensorflow Object Detection APIを導入し、物体検出のための開発環境を整えます。 Tensorflow2の導入 まずはTensorflowの公式ページに従ってTensorflow2を導入します。python3.5以上が必要条件となっているので注意してください。 https://www.tensorflow.org/install pipが使える場合にはpipでインストールするのが最もシンプルです。 正しくインストールされたか確認するためには、pythonでTensorflowがimportしてみてください。 エラーがでなければ正常にインストールされています。以上でTensorflow2の導入が完了しました。 Tensorflow Object Detection APIの導入 次にTensorflow Object Detection APIを導入します。 https://github.com/tensorflow/models/tree/master/research/object_detection Tensorflow Object Detection APIとは物体検出モデルの構築、学習、活用をサポートするためもライブラリです。CenterNet、EfficientDet、SSD、FasterRCNNなどの著名なモデルの実装も含まれており、自分でモデルを構築することなくすぐに学習、活用することができます。 まずはローカルの適当なフォルダにクローンしましょう。 次にcloneしたフォルダ内に移動してpip installをします。 インストールには少し時間がかかります。終わったら以下のコマンドでテストを動かしましょう。 無事テストが動けば導入は完了です。今後はimport object_detectionで必要なモジュールをインポートすることができるようになります。 次に 今回で必要なライブラリの導入が完了しました。次回は学習済みのモデルを使って画像内に写る物体の検出を行います。…

Continue reading →

アノテーションとは?

このページでは教師あり用の学習用データを作成する作業であるアノテーションについて説明します。 教師あり学習とアノテーション アノテーションとは教師あり学習で使用するための 学習用データを作成する作業のことです。アノテーションについて詳しく知る前に教師あり学習について説明しましょう。 教師あり学習とはAI・機械学習の一分野で、入力データと出力データのペアを用意して両者の間の関係性を AIモデルに学習させる手法です。学習済みのAIモデルに新しい・未知の入力データを読み込ませることで予測を出力させることができます。 具体的な例として以下のような応用があげられます。 ユーザーの特性と広告のクリック率を学習させ、ユーザーに合わせた広告を提供 画像と画像の内容を学習させ、画像の内容判断を自動化 会話の音声データと文字データのペアを学習させ、音声文字変換機能を実現 近年では教師あり学習の一分野である深層学習・DeepLearningが注目を浴びています。 深層学習は主に画像処理・音声処理・自動翻訳などの領域において目覚ましい発展を続けており、実際に商品・サービスへの応用が始まっています。 教師あり学習に必要なもの では実際に教師あり学習を試すには何が必要なのでしょうか。まずはプログラムです。データの読み込み処理、核となる学習アルゴリズムなどを記述したプログラムを作成する必要があるます。 ではプログラムさえあれば問題ないでしょうか。いいえ、教師あり学習を行うためにはデータ間の関係性を教えるための学習用データが必要不可欠です。 アノテーションとは用意した入力データに対して注釈を加えた出力データを用意する作業です。例えば画像内に映る物体を検出するAIを作成したい場合には、入力に用いる画像データに映る内容を人の手によって注釈していくことで、AIが学習できるデータにします。 アノテーションの種類 アノテーションとは入力データに注釈を付けていくことで、教師あり学習で使用可能な学習用データを用意することだと説明しました。 では具体的にどのような注釈を付ける必要があるのでしょうか。これは取り組みたい教師あり学習のタスクによって異なります。 具体的な例を以下に示します。 画像認識タスク:写っている内容を表すラベル 物体検出タスク:写っている物体のラベルと位置 音声認識タスク:書き起こしたテキストデータ 自動翻訳タスク:入力データの翻訳 anntは物体検出タスク用のアノテーションツールなので、このページでは画像領域に絞って説明をします。 画像認識 画像認識タスクとは、画像に写っている物体が何かを認識するタスクです。 犬が写っている画像では「犬」という出力を 猫が写っている画像を入力すれば「猫」という出力を出すようにモデルを学習させます。 予め「犬」や「猫」などのラベルを定義しておき、画像がそれぞれどのラベルに該当するかアノテーションします。 物体領域検出(Region Prposal) 物体検出タスクとは画像の内部に写る物体が何かだけでなく、物体が写る領域も合わせて予測するタスクです。 多くの場合専用のアノテーションツールを用いて、バウンディングボックスと呼ばれる四角形で物体のラベルと位置をアノテーションしていきます。 他にも多角形(ポリゴン)を用いて物体をより精緻にアノテーションしたデータを用いて学習する方法もあります。…

Continue reading →

チュートリアル2 : pythonでアノテーションした画像を読み込む

このページではanntでアノテーションした画像をpythonで読み込む方法を紹介します 事前準備 1. このチュートリアルではpython3.6を使って作業を行います。まずはpipからanntのライブラリをインストールします。 2. 次にアノテーションされたファイル類が存在しているかを確認します。 まだアノテーション作業を行っていない場合にはチュートリアル1を参考にアノテーション作業をしてください。 読み込み処理の実装 早速アノテーションした画像を読み込んでみましょう。project_nameには読み込むプロジェクト名を入れてください。 上のスクリプトではプロジェクトから画像などの情報を読みこんでannotationsに格納しています。 annotationsは画像の情報を返すジェネレーターです。 for文などを用いて画像データをAnnotationオブジェクトとして一つづつ取り出すことができます。 AnnotationオブジェクトとBoxオブジェクト 1. Annotationオブジェクトは画像データとアノテーション情報を保持し、それらに関する基本的な操作を提供します。まずは読み込んだデータを表示してみましょう。 表示するにはshowプロパティを使用します。正しく動いていれば下の例のように画像とバウンディングボックスの情報が表示されます。 2. 次にAnnotationオブジェクトが持つプロパティを確認しましょう。 imageプロパティにはnumpyの配列として読み込まれた画像が格納されています。 boxesプロパティには次の項で説明するBoxオブジェクトのリストが格納されています。 バウンディングボックス情報のタグや位置情報はこのBoxオブジェクトに格納されています。 3. 次はBoxオブジェクトの中身を確認してみましょう。Boxオブジェクトはバウンディングボックス1個のタグと位置情報を格納しています。 Boxオブジェクトは2通りの座標形式でデータにアクセスできます。 まずはx, y, h, w形式です。 これはバウンディングボックス左上の位置x, yと バウンディングボックスの幅と高さの情報h, wを用いて表現する方法です。 もうひとつの形式は画像端からの距離で表現する方法です。 left, top,…

Continue reading →

チュートリアル1 : anntを使った画像のアノテーション

このページではanntを使って物体検出用に画像のアノテーションを行う方法を紹介します 事前準備 1. アカウントをお持ちで無い方は新規登録ページから新しくアカウントを作成してください。 2. アカウントが作成したらログインしてプロジェクト選択画面に移動します。 3. 次に新しくプロジェクトを作成します。New Projectボタンを押して、プロジェクト作成ダイアログを開きます。 プロジェクト名と使用するクラウドサービス(現在はDropboxのみが選択可能です)を選択してください。 これまで一度も選択したクラウドサービスを利用したことがなかった場合には、そのクラウドサービスの認証許可画面に遷移しますのでanntでの利用を許可してください。 アノテーション用の画像の配置 1. プロジェクトの作成が終わったら、次にクラウドサービスに画像を配置します。 今回はクラウドサービスとしてDropboxを利用した例を示します。 プロジェクトを作成してしばらくすると、’Dropbox/アプリ/annt’の下に作成したプロジェクト名のディレクトリが作成されます。 ディレクトリの中身を確認してみましょう。ディレクトリ内にはimagesと annotationsのフォルダがあるのがわかります。 プロジェクトに画像を追加する場合にはimagesの中に画像をコピーします。 今回は例としてPASCAL VOC2007 の画像をコピーしました。 この状態でanntのプロジェクトを開いてみましょう。 既に開いている方は一度更新してください。左にあるサイドバーに追加した画像のリストが並んでいます。これで画像の準備は整いました。 次にタグの準備を行います。画面右端にタグの管理画面があります。+ボタンを押してみましょう。入力画面が表示されるのでタグ名を入力してみてください。今回のチュートリアルでは‘Cat’,‘Dog’,‘Person’,‘Car’,‘Train’,の5種類のタグを使用します。 実際にアノテーションしてみる 前の章まででアノテーションするのに必要な準備はすべて整いました。ここからは実際にアノテーションしてみましょう。 1. 中央の画像上でアノテーションしたい範囲を左クリックで選択しましょう。そうすると選択範囲に新しいバウンディングボックスが生成されます。 その状態で右のサイドバーからタグを選択すると、作成したバウンディングボックスとタグが紐付けされます。 2. 画像内のすべての対象に対してアノテーションが終わったら次の画像のアノテーションに移ります。左のサイドバーから画像を選択するか、 Nextボタンを押すことで次の画像に切り替わります。 次の画像に移動する際に自動でアノテーションした情報は保存されますが、保存ボタンで手動で保存することも可能です。 3….

Continue reading →