てつまぐ

アノテーション作業について 注意点や工夫点、外注コストを解説

初めて機械学習に触れる方は、アノテーション作業そのものも初耳だと思います。

アノテーション作業とはどんな作業なのでしょうか?

この記事ではアノテーションについて詳しく説明します。

AIの画像処理システムについて

アノテーションの説明に入る前に、画像処理システムの概要について説明します。

画像処理システムは4種類に大別される

画像処理システムは4種類のタスクが存在しており、それぞれのタスクに合ったライブラリを使用して学習データを集めていきます。

位置特定(localization)


出展:Deep Spectral Methods: A Surprisingly Strong Baseline for Unsupervised Semantic Segmentation and Localization”

位置特定(localization)では、1つの物体のラベルとその矩形位置を特定します。

クラス分類(classification)

クラス分類(classification)では、何の画像なのか特定します。

物体・位置検出(detection)


出典: “ You Only Look Once:Unified, Real-Time Object Detection ”

物体・位置検出(detection)では、すべての物体のラベルとその矩形位置を特定します。

セグメンテーション(Segmentation)


参照:PSPNet

セグメンテーション(Segmentation)では、物体・位置検出で得られたすべての物体のラベルとその位置をピクセル単位で特定します。

建設業や製造業と相性が良い

建設業のAI導入事例を紹介

建設現場の安全管理

立入禁止エリアへの侵入を検知したり、機械や車両と人が接触しそうになったときにアラームを出したり、人物の転倒を監視カメラから検知、作業時間以外に不審者が侵入したときにアラームを出す等。

設備点検の品質向上・効率化

部品の取り付け、コンクリートのひび割れ・腐食、部品のサビ・傷、水漏れなど、従来は人が目視で確認・検査していたものを、AIが正常/異常判定をしたり、異常の種類ごとに分類。

技術の伝承と維持

ベテラン作業員の言語化しにくい技術を記録・可視化する等。

AIの出力結果を最終的には人間が判断し、付加価値を加える

AIに似たようなシステムにRPAというものがあります。

RPA(ロボティックプロセスオートメーション:Robotic Process Automation)とは、型にはまった単純作業をロボットが作業するシステムであり、Excelのマクロなどがこれにあたります。

RPAの問題点は、定型業務にしか適用できない点です。

実際の作業は、一見単純そうに見えても複数の複雑な情報を人間が長年の経験から処理していることがほとんどです。

後述する「鉄筋の本数を数える」という作業も、一見単純な作業に見えます。

しかし実際は、鉄筋にもさび付いた古い鉄筋や新しい鉄筋で見た目が違ったり、貯蔵品や仕損品を再利用したりと、作業の付加価値は小さいながらもロボットには判別が難しい情報を人間が処理しているのです。

ポイント

AIの画像認識システムの特徴
・建設業や製造業と相性が良い
・AIの出力結果に最終的には人間が付加価値を加える
・複雑な非定型業務にも適用可能

アノテーションとは?

AIによる部資材(鉄筋)の個数カウントについて課題から開発手順まで解説!

画像認識システムの概要が理解できたところで、さっそくアノテーションについて学んでいきましょう。

アノテーションとはAIの学習データを作成する作業

建設業のAI導入事例を紹介

AIというものを簡単に説明すると、

学習用プログラム(機械学習)から学習済みモデルを作成し、この学習済みモデルから各種の推論(識別、予測、実行)を行うシステム

ということができます。

学習済みのデータがなければAIは撮像したものがどのような物質なのかを推論することができません。

アノテーション作業はAIに「これはバナナ」「これは鉄筋」とひとつひとつ学習させる作業になります。

AIによる部資材(鉄筋)の個数カウントについて課題から開発手順まで解説!

labelImgのインストール

学習データ作成には、物体検出のアノテーションでよく使われる、四角を囲っていくツールを使用します。

一般的に使用されているのはlabelImgというツールです。

github labelImg

labelImgの手順

具体的には下記手順を行い、2-4を繰り返すことで学習画像を増やしていきます。

下記は、AIで作ったデータを読み込んだ例です。

いくつか誤検出があるので削除したり、未検出は人が四角を追加して正しいアノテーションデータを作成します。

AIの学習による推論結果を反映しない場合、手作業で大量のデータを一つ一つアノテーションする必要があります。

実際に作業してみるとわかりますが、この作業はとても時間がかかり大変な作業です。

2-4を繰り返すことが時短ポイントですので注意しましょう。

アノテーション枚数と精度について

必要な精度を出すにはどの程度アノテーション作業をすればよいのでしょうか?

目的は課題の解決であって、アノテーションの枚数ではない

機械学習システムの一番大変なところは、作成した後の運用です。

目的を見失ってしまうと、永遠とアノテーション作業をする羽目になります。

例えば、錠剤や半導体のような付加価値の高いものに機械学習システムを導入する場合は高精度が必須条件になり、アノテーション枚数も数万枚必要な場合もあります。

低精度+低精度を補完する別のシステムであればアノテーション枚数は少なくて済む

一概に何万枚と目標枚数を設定するのではなく、目標を達成するために必要最低限の枚数を見定めて運用していきましょう。

予算をかけられない中小企業の場合、5000枚用意するのが限界だと思います。

目標達成の手段は機械学習システムだけではありません。

ハンコによるダブルチェックや指差し呼称など、小さな工夫で改善できることもたくさんあります。

機械学習システムでの精度を極限まで追い求めるのではなく、人的な管理システムを+αで導入し、目標の精度や人的削減コストを達成していく等の工夫をしていきましょう。

簡易アノテーションの作成方法(編集中)

labelImgの特徴は、「一度出力したxmlファイルを(自動で)再読み込みしてくれる」機能にあります。

持ちの物体検出アルゴリズムで物体検出をかけた出力結果を同じフォーマットで保存すれば、画像のアノテーション処理が半自動化(簡易アノテーション)ができます。

Segmentation Models Pytorch(編集中)

Segmentation Models Pytorchは、Pytorch用のSegmentationライブラリです。

このライブラリを用いることで様々なアーキテクチャ(Unet、Feature Pyramid Networkなど)や、バックボーン(VGG, ResNet, EfficientNetなど)のSegmentationモデルを簡易に実装できます。

(編集中)

実装の流れ(編集中)

データ収集>アノテーション>学習>テスト

アノテーションで出力しているファイルと同じフォーマットで出力

具体例

では実際にアノテーション作業をやってみます。

アノテーション作業はAI導入プロセスのうち最も過酷な作業といっても良いと思います。

googleがきゅうり農家に導入したAIの場合は3万6千枚もの画像を処理している例が公開されています。

目標をどの精度までにするかをしっかり設定しないとアノテーション作業は永遠に続くことになるので注意が必要です。

最初の1000枚が地獄

最初のうちは自身ですべての画像をアノテーションする必要があります。

上記の画像のように一つ一つの鉄筋を四角で囲い、アノテーションしていきます。

他の鉄筋や部材に隠れている鉄筋のも今回はアノテーションしていきます。

会社の状況は様々ですので、それぞれの会社に合った形でアノテーション作業を行っていきましょう。

今回の鉄筋のアノテーション作業に関しては、一日30枚前後が限界でした。

簡易アノテーションの活用

上記の手作業によるアノテーションデータがある程度集まってくると、学習の精度がすこしずつ上がってきます。

学習の精度が上がってくれば、自動的に簡易アノテーションが可能になるので、アノテーション作業も少しづつ楽になってきます。

中には完璧にアノテーションをしてくれるものもありますが、不完全なアノテーションのものもまだまだあります。

上記の画像のように、一つ一つの鉄筋を識別していなかったり、全く別の物質を鉄筋と識別してしまう事も多々あります。

AIの推論結果を見ながら、正しくアノテーションする作業も大変な作業です。

今回は、鉄筋自動切断機の作業台に切断された鉄筋をカウントできるように学習させていきます。

1100枚学習後

1300枚学習後

D13の鉄筋は85%程度は認識できるようになりましたが、この程度の精度では実際の作業では使用できません。

D10の鉄筋に関しては60%程度しか認識できていません。

カメラの位置をもっと近くにできれば精度も上がるかもしれませんので、作業性を考慮しつつカメラの位置を決定していきます。

簡易アノテーションがうまく活用できる例が増えてきたので少しだけ作業が楽になりました。

学習データ量に比例して精度も上がってきているようなので、引き続き学習データを増やしていきます。

1500枚学習後

カメラの位置を近づけて撮影したものを追加で200枚学習しました。

若干ですが、密接した鉄筋であっても一つ一つを識別しているように見えます。

簡易アノテーションの精度は、密接した鉄筋を1つしか識別しなかったり、体感で正答率75%程度です。

ただ、アノテーションの位置をずらしたり、新規に追加する数は減ってきたので、作業自体は非常に楽になりました。

1700枚学習後

D13の鉄筋はほとんどカウントできるようになっています。

しかし、D10の鉄筋をうまくカウントできていません。

検出方法自体を小さいものに合わせて修正します。

2000枚学習後(実用化が現実味を帯びてくる)

D10の径が小さい鉄筋でも認識できるように修正し、正答率は85%程度にあがってきました。

端部の鉄筋がうまく認識されていないようですが、内部の密集した鉄筋はほとんど認識されています。

アノテーション作業効率は200本程度の鉄筋数であれば3分程度で終了できるほどになりました。

この調子で学習の数をさらに増やしていきます。

学習数が2000枚を超えてくると、正答率も85%となり、画像認識AIを実際の現場に導入することが現実味を帯びてきます。

D16以上の鉄筋であればほぼ正確に認識できますし、ズーム機能を搭載した高画質カメラを使用すればもっと正答率も上がるかもしれません。

学習枚数は難しい問題ですが、2000枚が1つの基準になるのではないかと思いました。

ポイント

直感的に学習枚数は最低2000枚必要

アノテーションの外注について

このようにアノテーション作業は非常に大変な作業です。

アノテーション作業を外注するとどれくらいのコストがかかるのか見てみます。

個人では月500枚前後が限界

今回の鉄筋カウントのように非常にたくさんのものを分類する場合、個人でアノテーション作業をするとなると月に500枚が限界でしょう。

例えば3万枚必要だとすると、単純計算で60か月(5年)かかってしまう事になります。

現場の改善が早急に必要な場合はアノテーション作業の外注も選択肢に入れる必要があります。

1ラベル5円~7円が相場(TASUKIの例)

アノテーション作業を外注すると、1ラベル5円~7円の費用が発生します。

ソフトバンク株式会社 TASUKI

上記の画像を外注すると、この1枚のアノテーション作業だけで約5000円の費用が発生します。

普通なら「高すぎ!それなら自分でやるわ」となりますよね。

自社で簡易アノテーションシステムを開発しよう

中小企業にAIが普及しない原因の一つは、このアノテーション作業コストが高すぎるためです。

AIの利活用は国の方針でもあるので、アノテーション作業の外注費を補助金経費で確保したり、独自で海外企業に契約したりと、工夫する必要があります。

【自力で申請】建設業のものづくり補助金の申請について

われわれ中小企業にとってはアノテーション作業を外注することはコスト的に非常に困難です。

簡易アノテーションのシステムだけを外注し、自社で地道に取り組むのがベストかと思います。

簡易アノテーションシステムの開発依頼も当サイトで承っています。

良ければ問い合わせフォームからご連絡ください。

問い合わせ

ポイント

アノテーションの外注コストは高い
自社で簡易アノテーションシステムを開発すること

まとめ

この記事では、画像分類の機械学習には必須のアノテーション作業について説明しました。

アノテーション作業は非常に大変な作業です。

必要となるコストや工期を見定めたうえでアノテーション作業に取り掛かりましょう。

簡易アノテーションの開発依頼のご連絡もお待ちしております。

【AIを活用】建設業界で、AIはどう活きる?これからの課題は?

DeepLearningで画像分類を学習させる

お買い物カゴ