【FastLabelエンジニア一押し機能】動画アノテーションツール

# はじめに

こんにちは！FastLabelのDevelopment Deptの植野です。

今回は私が特に思い入れのある「動画アノテーション」機能についてご紹介したいと思います。

こちらは私がFastLabelに副業として携わっていた時代に初めて開発させていただいた機能で、そういう意味でも思い入れが深いのですが、開発の際には如何に動画アノテーションの大変さを解決するか、というところに特に注力したこともポイントの1つです。

そんなFastLabelの動画アノテーションの便利な点や、それを実現するためにこだわったポイントについて解説していきたいと思います！

# 動画アノテーションとは

以前に「Annotation Unitの紹介」記事にて [アノテーションとは？](https://www.notion.so/Annotation-Unit-77ff51f76b624e9e9c49080c94a4ec80)  という部分で「画像」に対するアノテーション作業の一例をご紹介させていただきました。

それに対して「画像」ではなく「動画」に対してアノテーションを行うのが動画アノテーションです。

![スクリーンショット 2023-03-17 13.50.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192099/d0bad909-fe52-877a-b6c6-41f3b3adf870.png)

動画というのは簡単にいうと連続した画像の集合体のようなもので、動画にアノテーションする、ということはすなわち「たくさんの画像に対してアノテーションを行う」ということと捉えてもらっても良いかと思います。

上記は実際にFastLabelの動画アノテーションの画面の一例ですが、上記でいうと動画の総フレーム数が3000=3000枚の連続する画像に対してアノテーションを行う、というイメージです。

## 全てのフレームにアノテーションするのはとても大変な作業

さて、ここまでで作業の大変さが想像ついた方もいらっしゃるかもしれないのですが。。

大変さを実感するために、上記事例の動画アノテーションで1〜5フレーム目くらいまで、すべて手動作業のみでアノテーションしてみたいと思います。

![video-annotation-manual.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192099/46a23d46-fe7c-43dd-e291-e41835799f0a.gif)


お分かりいただけるでしょうか。。？

動画内の車は1フレーム単位で少しづつ動いていくため、その微妙に動いた分を移動させたり、また画面手前に近づくにつれて車自体の幅などが大きく(拡大)なってくるためのその幅の微調整を1フレームごとに行なっています。。

例としての紹介のため、ここでは車3つ分にしかアノテーションしていませんが、もちろん動画内には他の車もあり、それら全てにアノテーションが必要です。

また、紹介しやすくするために上記の参考キャプチャ自体は2倍速で再生しているため、実際には3つの車を5フレーム分アノテーションするだけで、この2倍の作業時間がかかっています。

これらを合計3000フレーム分作業しなければならない、、と考えていただくと普通にやっているとどれだけ大変な作業かが少しご想像いただけたかなと思います。

# 動画アノテーション機能のこだわり

## とにかく作業を効率化できるように

先ほどご紹介させていただいた通り、普通にアノテーション作業をしていたのでは動画1つのアノテーションを終えるだけでも大変な作業となってしまいます。

FastLabelの動画アノテーションではこのような大変な作業を如何にもっと早く、効率よく行えるか、という観点でいろんな機能を提供させていただいておりますので、いくつかご紹介させていただきます。

### フレーム間補完

まず1つ目は「フレーム間補完」の機能です。

さきほどの事例では1フレーム目, 2フレーム目, 3フレーム目…と1つずつアノテーションを調整していましたが、こちらを利用すると1フレームずつ作業する手間を軽減することが可能です。

![frame-interpolation.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192099/c81a7772-bed1-950d-157b-55aebbaccff9.gif)


上記の例では「1フレーム目」と「10フレーム目」にだけアノテーション作業を行いましたが、その間の 2〜9フレーム目に関しては自動で補完されて車の移動に追随するようなアノテーションがされていることがわかるかと思います。

もちろん補完した内容に対して微調整が必要な場合もありますが、全てを1から手作業するよりも大幅に効率化が行えます。

### 物体追跡

先ほどは1フレーム目と10フレーム目など特定の始点・終点を手動でアノテーションして、その間を補完する機能のご紹介でしたが、それ以外の便利機能も用意しています。

それがこちらの「物体追跡」の機能です。

![object-tracking.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192099/481f8d75-e729-4918-e7df-0ecf4eb3e65c.gif)


上記では1フレーム目にだけアノテーション作業を行い、あとは「物体追跡」のボタンを押しただけです。

これだけで20フレーム目まで車のアノテーションが追跡されて付与されていることがわかると思います。

このようにFastLabelの動画アノテーションではアノテーション効率を上げるための様々な機能を提供させていただいております！

## 動画特有のケースに対応

### フレーム選択

また、画像とは違い動画では

- AフレームからBフレームまでは車が走っている状態である
- CフレームからDフレームまでは車が止まっている状態である

といったように動画内での状態を表す付帯情報をアノテーションとして付与したいケースもあります。

こういったケースにも対応できるように動画アノテーションでは「フレーム選択」という機能を提供しています。

![スクリーンショット 2023-03-31 14.04.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192099/0c26283a-b7ee-efa8-57fc-15320547042c.png)


上記のように「1-10フレーム目は走行中」「31-40フレームは停止」といった情報を付与できるようになっています。

このような動画特有のケースにも対応した機能がFastLabelの動画アノテーションには搭載されています。

# さいごに

いかがだったでしょうか。少しでもFastLabelの動画アノテーション機能についての魅力が伝わっていれば幸いです。

最後に、冒頭お話した通り、この機能についてはFastLabelで私が初めて手がけた機能開発だったためそれなりに苦労した覚えがありますが、

リリース後、お客様のお声をいただいたり、Twitterでも「便利だ」というツイートをいただいたりしました。

そういったお声をいただけるのがやはり嬉しい瞬間ですね。。！！

FastLabelでは一緒にプロダクトを開発・成長させていくメンバーを絶賛募集中です！

[採用ページ](https://fastlabel.notion.site/)から、もしくは[私のTwitter](https://twitter.com/ueno_k0108)のDMどちらでも構わないのでお気軽にコンタクトください！お待ちしております！！