Tag: データアノテーション

Blog

最良の データラベリングアウトソーシング ベンダーの選び方

 

ベトナム、中国、インドなどの新興BPOの目的地へのデータラベリングサービスのアウトソーシングは、最近の傾向になっています。 ただし、多くの企業の中から最適な データラベリングアウトソーシング ベンダーを選択することは容易ではありません。 この記事では、LQAが最適なベンダーを見つけるためのアドバイスを紹介します。

 

1.明確なプロジェクト要件を準備します

 

まず第一に、最終結果に対する自分の期待のすべてを示す明確で詳細な要件を準備することが重要です。 リクエストにプロジェクトの概要、タイムライン、予算を含める必要があります。 適切な要件は下記のようになります:

    • アノテーターはどのようなデータ型を処理するか?
    • どのようなアノテーションタイプをするか?
    • データにラベルを付けるには、専門知識が必要か?
    • データセットに高精度の注釈を付ける必要があるか?
    • 注釈を付けるファイルはいくつか?
    • プロジェクトの締め切りはいつか?
    • このプロジェクトの費用はいくらか?
    • 要件に一致するアノテーションタイプを提供していますか?

 

2.ベンダーを評価するための必須基準

 

要件を確定したら、どのベンダーと契約したいかベンダーリストから評価する必要があります。 多額の費用をかけ、品質低いデータセットを貰わないよう、この段階は非常に重要です。 経験、品質、効率、セキュリティ、チームメイトに基づいて評価することをお勧めします。

 

経験

 

データのラベル付けは簡単な作業のように見えますが、大規模のデータを効率的かつ正確に実行するには、細部に細心の注意を払い、特別なスキルが必要です。各ベンダーが具体的にあるデータアノテーション量でどのくらいの期間作業してきたか、及びアノテーターがどの程度の経験を持っているかをしっかりと理解する必要があります。評価するために、長年の経験、ドメインに関する知識、およびアノテーションタイプについてベンダーに問い合わせる必要があります。 例えば:

    • データアノテーションに何年の経験がありますか?
    • 以前に特別なドメインに関する知識を要求するプロジェクトでやったことがありますか?
    • 要件に一致するアノテーションタイプを提供していますか?

 

品質

 

データサイエンティストは、多くの場合、ラベルがどの程度正確に配置されているかによって、モデルトレーニングのデータセットの品質を定義します。ただし、1〜2回正しくラベル付けすることではなく、一貫して正確なラベル付けが必要です。下記のようにベンダーの高品質のラベル付きデータを提供する能力があるかどうか確認できます:

    • 以前のアノテーションプロジェクトのエラー率
    • ラベル配置の正確度
    • アノテーターは各ラベルに適切タグを付けたの頻度

 

次の動画でデータ品質の詳細をご覧ください :

 

効率

 

アノテーションは想像以上に時間がかかります。例えば、5分間のビデオでは、1文に平均24フレームがあり、ラベル付け画像が最大7200枚になります。アノテーターが1枚の画像のラベル付けに使う時間が長いほど、タスクを完了するために必要な時間が長くなります。プロジェクトを完了するための必要な工数を正しく見積もるには、ベンダーに下記のように確認する必要があります:

    • 各ラベルを配置するの平均時間
    • 各ファイルでラベルを付けるの平均時間
    • 各ファイルの品質チェックの時間

 

ベンダーのアノテーションチームがプロジェクトを直接実行するため、アノテーションチームの能力を理解することは重要です。ベンダーは、十分に訓練されたチームを提供すること。 さらに、テキストにラベルを付ける場合、ラベル付けチームがその言語を話せるかどうかを確認する必要もあります。また、ベンダーに、アノテーションチームを短期間でスケールアップまたはスケールダウンする準備ができているかどうかを確認することが重要です。プロジェクトのサイズは時間の経過とともに変化する可能性があります。

 

参考 :

 

3.パイロットプロジェクトを要求する

 

パイロットプロジェクトは、プロジェクトの実行可能を検証するために使用される最初の小規模なプロジェクトです。パイロットプロジェクトでは、新しいプロジェクトのリスクを管理し、本格的なリソースが投入する前に欠陥を分析できます。

ベンダーにパイロットプロジェクトを依頼する場合は、データセットからいくつかのサンプルデータを選択する必要があります。 様々なデータタイプ(データセットの複雑度に応じる。10〜15ファイル)を含む少量データから始めることができます。

ベンダーを正しく評価できるように、デモの詳細なガイドラインを提供することは重要です。最後に、デモテストの進行状況を確認する方法を聞くことが必要です。 その結果、品質とパフォーマンスの追跡ツールまたはプロセスが要件を満たしているかどうかを評価できます。

データラベリングのアウトソーシングベンダーと契約を結ぶ前に、注意すべきポイントを全て述べました。 この記事は、あなたが最良なパートナーを見つけるのに役立つなら何よりです。

 

データラベリングベンダーリストが立っているなら、LQAも含めてみませんか?ヘルスケア、自動車、eコマースなどのさまざまな分野でデータにラベルを付ける経験が豊富です。LQAの経験と以前のプロジェクトについて詳しい知りたい場合、お問い合わせください。

データアノテーション用 ツール

データアノテーション用 ツール

機械学習では、データの処理 と分析が 非常に重要であるため、仕事を簡単にするために データに注釈を付けるための ツール をいくつかご紹介いたします。

アノテーションの詳細 については、こちらを参照してください。

 

PixelAnnotationTool

このツールは、診断をサポートするために 医学の車、道路、細胞を見つけるなど のセグメンテーション問題に 適している。

データアノテーション用ツール

データアノテーション用 ツール

セグメンテーション画像の例

 

このツールは、OpenCVのウォーターシェッドマークアルゴリズムを使用している。 バイナリリンクに アクセスして、ツールをダウンロードして 使用できる。

 

データアノテーション用 ツール

ツールインターフェース

 

使用法:

ソースコードの設定ファイルで 色を変更し、色分けしたい領域に 色の数を対応させることが できる。 次に、マウスを使用して 色を「ドット」にし、目的の色領域に応じて「Enter」キーを押す。

 

データ生成ツール

データアノテーション用 ツール

 

Text Recognition Data Generator は、テキストを生成するために 使用されるツール。

 

このツールを使用すると、テキスト検出の問題に対して さまざまなフォント と 色を生成できる。 cn.txtファイルをdictsに 保存し、フォントも 常にcnディレクトリに保存するだけで、次のコードに従って コードを実行できる。

python run.py -l cn -c 1000 -w 1 -t 6 -k 3 -rk -b 3 -bl 1 -rbl

 

問題の要件に従ってデータを生成するには、ドキュメントを注意深く考察する必要が ある。

 

LabelImgツール

データアノテーション用 ツール

 

LabelImgは、データに注釈を付けるツールでも ありますが、Pixeltool以外では、LabelImgを使用して 周囲の4つのコーナーを取り出す。 ツールをインストールするには、githubのクローンを作成するか、pipを使用する。

 

pip3 install pyqt5 lxml # Install qt and lxml by pip

 

make qt5py3

python3 labelImg.py

python3 labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]

 

アノテーションサービスの詳細 については、こちらを参照してください。


Lotus Quality Assurance (LQA)

電話番号: (+84) 24-6660-7474
メール: [email protected]
ウェブサイト: https://www.lotus-qa.com/

Youtube: Lotus QA チャネル

 

画像アノテーション の保存方法

画像アノテーション の保存方法

ディープラーニングについて、最初によく出てくるのは、大量のデータまたは大量の画像でしょうか。持っている画像の数が多いほど、コンピュータのストレージスペースはより多くのメモリを消費する。ImageNetは、分類、検出、セグメンテーションなどのタスクのモデルをトレーニングするために収集されるよく知られた画像データベースだ。 1400万枚以上の画像が含まれている。

 

この記事では、画像アノテーション を保存する3つの方法をご紹介いたします。

 

画像アノテーション

1)png形式の画像ファイルとして保存

このディスクに 画像アノテーション を保存するには シンプルで業務効率化のために Pillowをインストールをする必要がある。

$pip install pillow

 

ファイルをアーカイブするには?

 

from PIL import Image

import csv

 

def store_single_disk(image, image_id, label):

 

    Image.fromarray(image).save(disk_dir / f”{image_id}.png”)

 

    with open(disk_dir / f”{image_id}.csv”, “wt”) as csvfile:

        writer = csv.writer(

            csvfile, delimiter=” “, quotechar=”|”, quoting=csv.QUOTE_MINIMAL

        )

        writer.writerow([label])

 

ディスクに保存されているデータを処理するときは、すべてのファイルを開かなくても済むように、別のファイルラベルを.csvファイルに保存する必要がある。

 

2) Lightning メモリマップデータベース(LMDB)に保存

LMDBは、各項目がバイト配列として格納されるキー値ストレージシステムである。キーは各画像の一意の識別子になり、値は画像自体になる。データベース全体メモリマップし、すべてのフェッチデータは、マップされたメモリからデータを直接返す。他のほとんどのデータベースと違いし、メモリに何もコピーすることなく、キーと値の両方のメモリアドレスへのポインタを直接返すということだ。 LMDBをインストールして試してみましょう!

 

$ pip install lmdb

 

CIFARを使って取得する

 

class CIFAR_Image:

    def __init__(self, image, label):

        # Dimensions of image for reconstruction – not really necessary 

        # for this dataset, but some datasets may include images of 

        # varying sizes

        self.channels = image.shape[2]

        self.size = image.shape[:2]

 

        self.image = image.tobytes()

        self.label = label

 

    def get_image(self):

        “”” Returns the image as a numpy array. “””

        image = np.frombuffer(self.image, dtype=np.uint8)

        return image.reshape(*self.size, self.channels)

 

画像アノテーション の保存

 

import lmdb

import pickle

 

def store_single_lmdb(image, image_id, label):

 

    map_size = image.nbytes * 10

 

    # Create a new LMDB environment

    env = lmdb.open(str(lmdb_dir / f”single_lmdb”), map_size=map_size)

 

    # Start a new write transaction

    with env.begin(write=True) as txn:

        # All key-value pairs need to be strings

        value = CIFAR_Image(image, label)

        key = f”{image_id:08}”

        txn.put(key.encode(“ascii”), pickle.dumps(value))

    env.close()

 

3) HDF5形式に保存

HDF5を使用すると、複数のデータセットを保存し、データを分割して保存できる。最初にpipをインストールしましょう。

 

$ pip install h5py

 

HDF5ファイルを作成

 

import numpy as np

import h5py

data_order = ‘tf’  # ‘tf’ for Tensorflow

# check the order of data and chose proper data shape to save image

train_shape = (len(train_addrs), 224, 224, 3)

val_shape = (len(val_addrs), 224, 224, 3)

test_shape = (len(test_addrs), 224, 224, 3)

# open a hdf5 file and create earrays

hdf5_file = h5py.File(hdf5_path, mode=’w’)

hdf5_file.create_dataset(“train_img”, train_shape, np.int8)

hdf5_file.create_dataset(“val_img”, val_shape, np.int8)

hdf5_file.create_dataset(“test_img”, test_shape, np.int8)

hdf5_file.create_dataset(“train_mean”, train_shape[1:], np.float32)

hdf5_file.create_dataset(“train_labels”, (len(train_addrs),), np.int8)

hdf5_file[“train_labels”][…] = train_labels

hdf5_file.create_dataset(“val_labels”, (len(val_addrs),), np.int8)

hdf5_file[“val_labels”][…] = val_labels

hdf5_file.create_dataset(“test_labels”, (len(test_addrs),), np.int8)

hdf5_file[“test_labels”][…] = test_label

 

ロードして保存する方法は?

 

mean = np.zeros(train_shape[1:], np.float32)

# loop over train addresses

for i in range(len(train_addrs)):

# print how many images are saved every 1000 images

if i % 1000 == 0 and i > 1:

print ‘Train data: {}/{}’.format(i, len(train_addrs))

# read an image and resize to (224, 224)

# cv2 load images as BGR, convert it to RGB

addr = train_addrs[i]

img = cv2.imread(addr)

img = cv2.resize(img, (224, 224), interpolation=cv2.INTER_CUBIC)

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# add any image pre-processing here

# if the data order is Theano, axis orders should change

if data_order == ‘th’:

img = np.rollaxis(img, 2)

# save the image and calculate the mean so far

hdf5_file[“train_img”][i, …] = img[None]

mean += img / float(len(train_labels))

# loop over validation addresses

for i in range(len(val_addrs)):

# print how many images are saved every 1000 images

if i % 1000 == 0 and i > 1:

print ‘Validation data: {}/{}’.format(i, len(val_addrs))

# read an image and resize to (224, 224)

# cv2 load images as BGR, convert it to RGB

addr = val_addrs[i]

img = cv2.imread(addr)

img = cv2.resize(img, (224, 224), interpolation=cv2.INTER_CUBIC)

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# add any image pre-processing here

# if the data order is Theano, axis orders should change

if data_order == ‘th’:

img = np.rollaxis(img, 2)

# save the image

hdf5_file[“val_img”][i, …] = img[None]

# loop over test addresses

for i in range(len(test_addrs)):

# print how many images are saved every 1000 images

if i % 1000 == 0 and i > 1:

print ‘Test data: {}/{}’.format(i, len(test_addrs))

# read an image and resize to (224, 224)

# cv2 load images as BGR, convert it to RGB

addr = test_addrs[i]

img = cv2.imread(addr)

img = cv2.resize(img, (224, 224), interpolation=cv2.INTER_CUBIC)

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# add any image pre-processing here

# if the data order is Theano, axis orders should change

if data_order == ‘th’:

img = np.rollaxis(img, 2)

# save the image

hdf5_file[“test_img”][i, …] = img[None]

# save the mean and close the hdf5 file

hdf5_file[“train_mean”][…] = mean

hdf5_file.close()

 

アノテーションの詳細 については、こちらを参照してください。


Lotus Quality Assurance (LQA)

電話番号: (+84) 24-6660-7474
メール: [email protected]
ウェブサイト: https://www.lotus-qa.com/

Youtube: Lotus QA チャネル

データアノテーター

データアノテーター

 

人工知能は 今最も 急速に成長している 分野の一つで、私たちの日常生活にも 広く利用されています。携帯電話、自動車、金融 システム、都市インフラなど 様々なところで AIが 重要な役割を果たしています。

AIが 身近なものとなり、多くの人が AIについて 知っているように見えますが、AIを構築する作業の中で 最も 重要であるアノテーションについて 知っている人は ごくわずかです。

AIは データの学習から 構成されており、それはまるで ブロックを組み上げていくようなものと言っても 過言ではありません。機械学習 アルゴリズムは 何もないところからは 生まれません。彼らは ラベルが 付いたデータを取り込むことで、一定のパターンを認識できるようになります。つまり、学習が 必要なのです。

そのためAI 開発者は、機械学習 アルゴリズムを学習させるために、人の手によって ラベルが 付けられた、数千ものデータを用意することが 必要となります。

私は 今こそ、AI開発の裏に 隠れた秘密兵器である、データアノテーター の仕事 を紹介したいと思います。

 

AI 開発の秘密兵器

アノテーションとは

データアノテーター とは テキスト や 動画、画像など あらゆる形態のデータに ラベルを付ける作業のことです。

はじめは データに 構造や順序がないので、機械は データを判別できません。

写真に何が 写っているか、音の判別、異なる言語の文字に 人がラベルを付けないと、データは 単なるノイズになってしまいます。

しかし、データアノテーター 作業により ラベルを付けていけば、このノイズは 集中的な学習マニュアルになり、機械は 入力されたパターンを簡単に、明確に 判別できるようになります。

アノテーター達は 機械が 人間の世界を理解できるようにするために、ハードワークをこなしています。

 

アノテーションはどのように処理するのか

それでは、もし あなたが AIを搭載した 自動運転の車の開発に 取り組んでいて、写真の中の車を識別するアルゴリズムを持っているとします。

そのアルゴリズムの中では、「車」とは エンジン、4つの車輪、いくつかの 座席を備えたものと 定義づけられています。

簡単そうですね。

しかし、コンピュータは そもそもエンジン、車輪、座席とは 何なのかを判別できません。

ここで データアノテーター が 登場します。

 

データアノテーター

 

コンピュータが「車」を認識できるようにするために、写真の中に「車」が あるというラベル付けされている 何百万枚もの写真が 必要になります。

このような画像を認 識するための 教師データの学習を通じて、機械学習アルゴリズムをトレーニングしていきます。

ですから、基本的には アルゴリズムに対して、何が 車かを伝えることは ありません。その代わり、数百万のラベリングされた 写真のデータを与えることで、アルゴリズム 自身に パターンを認識させる手助けをします。

「データアノテーションは 非常に 労働集約的であり、収集されるデータの1時間ごとに 注釈を付けるのに 800時間近くかかります。」

はい。データアノテーター は 依然として 手作業を必要とする、アナログなプロセスです。Cognilytica’s data preparation & labelling 2019 reportによると、現在 AI開発のうち 80%は データの準備に費やされているようです。データの小さなエラーでさえ 大きな損害 をもたらすことが あります。この分野では、人間は 実際に機械に 足を踏み入れています。人間は 主観性の管理、意図の理解、曖昧さへの対処において 機械より 優れています。これらは 全て データアノテーションの重要な要素です。

そこに は何のタネも 仕掛けもありません。ただあるのは 人間による大変な労働です。

機械は、人間が アウトプットした分だけ 良いものになります。そして、次のデジタル 革命の立役者は、PCの前に座って データ注釈 を付けているアノテーターです。

彼らが いなければ、人工知能は 存在しません。

 

アノテーションサービスの詳細 については、こちらを参照してください。


Lotus Quality Assurance (LQA)

電話番号: (+84) 24-6660-7474
メール: [email protected]
ウェブサイト: https://www.lotus-qa.com/

Youtube: Lotus QA チャネル

annotationannotationannotationannotation

データアノテーション の手順?

 基本的なディープマシンラーニングの データアノテーション の手順は 次のとおりである。

 

1、データ収集

正しいな教師データを収集するには、まず課題の内容 とそのビジネス上の価値を理解する必要がある。 課題データアノテーションの分類については、名前から 類推して キーワードを作成し、インターネットからのデータ検索ツールを使用して、画像を検索することが できる。 または、写真、ソーシャルネットワークサイトの動画、Googleの衛星画像、公共のカメラ や車(Waymo、Tesla)から 無料で 収集されたデータ、または 第三者からデータを購入することも できる(データの正確性については自己責任)

収集されたデータのほとんどは、高さ、幅、比率が異なるデータであるため、データを収集した後、前処理を行う必要がある。したがって、ディープラーニングモデルに直接組み込むことはできません。 Open CV、Scikit-Imageなどの組み込みライブラリを使用して、イメージを前処理する。

 

2、データの注釈付け

 

データアノテーション

 

AI開発において、一2、データの注釈付け番時間 と 手間がかかるのが 教師データの収集。まずは 収集した生のデータに注釈をつける必要がある。

ここは機械がうまく機能するかどうか を左右するため、重要なステップである。データのラベル付けが 間違っていると、機械が誤って 学習して、対象を認識してしまうので、この学習データを 準備するのに 多くの時間と労力を費やしす。注釈付けをする上で、注意すべきポイントが 二つある。

・注釈付けのやり方

・誰がやるのか

 

2−1、注釈付けのやり方

要件を満たすデータセットを準備したら、次は どのような方法で アノテーションをするのか を決める必要がある。分類なのか、オブジェクト検出なのか、セグメンテーションなのか、…

データは 決まったやり方に応じて 処理されていく。例えば 分類の場合は、インターネットからデータを見つけてクロールするプロセスで 使用されるキーワードである。インスタンスセグメンテーションの場合、画像の各ピクセル の 注釈が 必要。

その後、ツールを使用して 画像注釈(画像のラベルとメタデータを設定)を実行する必要がある。 一般的なツールには Comma Coloring, Annotorious, LabelMe などが ある。これらのツールは、画像の各セグメントに ラベルを付けるためのGUIを サポートする。

 

2−2、誰がやるのか

二種類ある。

社内:データを自社で ラベル付けす

・長所:データの精度管理が容易、低コスト。

・短所:データの収集とラベル付けに 時間がかかる。

アウトソース:データの提供を専門とする企業に 依頼する。

・長所:データを すぐ集められる。

・短所:データの透明性、正確性がわからない。費用が かかる。

 

3、テストと評価のモデル

適切なディープラーニングモデル を選択 → トレーニングを実施 → テスト と 評価を実施

 

4、品質の基準を満たす

問題の要件を満たすまで、上記の手順を繰り返す。

 

データアノテーション

 

 

アノテーションサービスの詳細 については、こちらを参照してください。


Lotus Quality Assurance (LQA)

電話番号: (+84) 24-6660-7474
メール: [email protected]
ウェブサイト: https://www.lotus-qa.com/