LoginSignup
1
1

More than 1 year has passed since last update.

[CVAT]大量の画像(数千〜数万枚)をアタッチする

Posted at

概要

  • クラウドストレージ(Amazon S3)からアタッチするのが良い
  • manifest.jsonlの生成までの速度は、おそらくディスクI/Oに依存している

CVATとは?

  • CVATとは、intel謹製の画像・動画アノテーションツールです。CVATの説明についてはこの記事では割愛します。

たくさんの画像をアノテーションしたい

  • 数万枚(~5MBを5万枚とか)の画像をアノテーションしたい、という課題がありました。
  • Web上に上がっている記事を見る限り、これとかこれとかCVATそのものの紹介記事はあるのですが、GitHubの公式のissueを見ても、「えと、当方は数万枚とか一気に上げないといけないんですけど・・・」と良い記事が見当たらず、試行錯誤することになりました。ということで、この記事を書いて情報を共有する次第です。

環境

  • CVATサーバ: CVATはEC2のインスタンスタイプr6i.2xlargeで運用。versionは2.2.0です。
  • 前準備サーバ: 別途、manifest.jsonlを生成するためにEC2のインスタンスタイプc5.2xlargeを使用し、ここにcvatをcloneしてmanifestファイルを生成しています。
  • 画像データの流れは、
    • ローカルHDDからAmazon S3に画像数万枚の入ったフォルダをupload
    • 前準備サーバでフォルダを作り、goofysでS3バケットをアタッチ。manifestファイルをS3バケット内で直接作成。
    • あとは、CVATのGUIからS3をアタッチして、完了!

ボトルネック

  • この作業でのボトルネックは、ローカル→S3へのアップロードでした。AWS CLIの設定値もいじったのですが、大して効果がありませんでした。
ssaitoh@ubuntu123:~$ cat ~/.aws/config
[default]
region = ap-northeast-1
output = json
s3 =
    max_queue_size = 10000
    max_concurrent_requests = 100
    multipart_chunksize = 16MB
    multipart_threshold = 64MB
    max_bandwidth = 100MB/s
  • manifest.jsonl自体は、時間がかかるとはいえ、EC2にS3をアタッチして7~8it/sは出ました。また、複数スレッドで別々のフォルダのmanifestファイルを作っても、特に速度低下はありませんでした。
  • ローカル(MacBookPro 2019, 2.6 GHz 6コアIntel Core i7, RAM32GB)のSSD内に画像ファイルを置いてmanifest.jsonlを生成すると、10~11it/s程度だったので、こちらもディスクI/Oが原因なのかもしれません。
  • 一旦S3に画像ファイルとmanifestファイルを上げてしまえば、CVATのGUI上でアタッチするのはあまり時間はかかりませんでした。3万枚程度でも、1〜2分で終わり、エラーが出ることはありませんでした。

なぜローカルフォルダから直接CVATに上げないの?

  • 数枚〜数百枚程度ならおそらくGUI経由で行けるのですが、数千枚〜になるとCVATが500エラーや413エラーを返してきますし、その上一からやり直しになります。数千枚〜のオーダーで画像を上げる際は、Amazon S3経由をオススメします。

なぜローカルフォルダでmanifestファイルを作らないの?

  • ファイルが合計で1TB以上もあり、とても自分のマシンの中に置いておきたくなかったからです。ファイルの実体は会社のサーバールームのファイルサーバにあり、私はリモートワークで100km以上離れたところにいるため、自分のマシンに持ってくるとVPN回線を圧迫します。
  • そのため、サーバールーム内のLinuxマシンでS3にアップし、EC2でmanifestファイルを生成しました。
  • なお、サーバールーム内のLinuxマシンでmanifestファイルを作ってもよかったのですが、こちらはファイルアップロードに専念してもらう、ということで役割分担をしました。

おわり

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1