10.6K Views
January 20, 25
スライド概要
生成AI全盛の時代にあっても依然としてデータの品質向上は非常に重要なテーマだと認識しています。そこで、1年間一人で品質最重視の本気で大量にアノテーションをした結果どうなったか、また、どのような観点でデータを観察し、場合によってどのようにデータを補強し修正したか。それらに取り組むうえでのメンタリティやテクニックなど、普段私が作業をするうえで意識していることを全てお話します。
Hobby Programmer. Caffe, Tensorflow, NCS, RaspberryPi, Latte Panda, ROS, DL, TPU, OpenVINO. Intel Software Innovator. The remarks are my personal opinion.
データ品質向上のために 1年間一人で取り組んだ アノテーションのリアル 株式会社サイバーエージェント AI Lab Agent Development Team Research Engineer 兵頭 亮哉
自己紹介 兵頭 亮哉 Hyodo Katsuya 株式会社サイバーエージェント AI事業本部 AI Lab Agent Development Team Research Engineer https://www.cyberagent.co.jp/techinfo/info/detail/id=23823 マルチモーダル音声対話プラットフォームの開発 @PINTO03091 @PINTO0309 2
本日のサマリ ● ● ● ● ● ● ● ● アノテーションのメンタリティ アノテーションのテクニック 基準が “あいまい” なときのアノテーション方針 モデルのアーキテクチャごとの得意・不得意 よく質問されがちなデータの偏りの件 よく質問されがちなデータ量の件 よく質問されがちな作業分担の件 よく質問されがちな後継育成の件 3
[前回] 2023年12月 第5回 Data-CentricAI時点 ● データの品質向上によってモデル本来の性能を引き 出すことにある程度成功し、リアル環境下でのノイ ズ耐性が大幅に向上しました ● 副次的効果として画像解像度大幅削減により計算量 を大幅に減らしても一定の精度を維持することがで きるようになりました 第5回 Data-Centric AI勉強会 : https://dcai-jp.connpass.com/event/303111/ 第5回発表資料:https://www.docswell.com/s/PINTO0309/KVVEWQ-2023-12-19-131036#p1 4
[前回] 2023年12月 第5回 Data-CentricAI時点 5
[現在] 2024年12月時点の状況 ● 一人で高品質データを1年以上手作業で作り続けてい ます ● 2024年12月末時点でのアノテーション量は 約600,000個 ● 作業時間は推定 数千時間 ● YOLO で強力な検出性能を実現できました 6
[現在] 2024年12月時点の状況 7
前提(1) ● 引き続き物体検出と骨格検出のアノテーションしか していないので、物体検出・骨格検出の話しかでき ません ● ドメインが「人」に完全に偏っています ● 既知のタスク自体の考え方を根っこから変えたいと いうモチベーションです 8
前提(2) ● 通信環境やお金に制約がほとんど無い人はこの話を 受けて頑張ることに価値はあまり無い気がするので Gemini 2.0 を使ったほうが 1,000万倍 価値がある ものを生み出せると思います ● この取り組みは、研究でも特定の事業とも紐付かな いただの個人の興味本位の取り組みです 9
前提(3) ● 数学的・論理的に何も証明していないので、あくま で経験則の域を出ない話ととらえてほしいです ● 人によって、やり方が合う・合わないは必ずあるの で、ただ真似をするのはオススメしないです 10
アノテーションのメンタリティ ● 私が何か凄いことをしているように見えるとしたら それは違います ● 金銭的コストや時間的コストを言い訳にしてやるべ きことをみんながやっていないだけです ● いずれ機械に代替されることはわかっていますが、 そもそも機械的に正確に処理するために、まずは人 間が正確なデータを与えない限り永遠に機械が人に 近づけないので、これは人類の使命と言えます 11
アノテーションのメンタリティ ● 手作業でデータを作り込むのはとてもコストが高く 本来は現実的ではないことを理解しつつ、それでも やります ● Kaggleなどで提案されているような手法のほうがよ ほどリアリティがある路線だと思います ● 職人技の手作業は大きくスケールしません 12
アノテーションのメンタリティ ● 「うまくいくか分からない」は全人類共通の悩みで すので、小さく初めて早いタイミングで方向性の良 し悪しを見極めるための試行錯誤を大量に繰り返し ます ● そもそも今あなたがやろうとしていることは人類初 なはずです ● 答えは自分で確かめて見つけます 13
アノテーションのメンタリティ ● 残念ながら、いかに注意深く、慎重に、ゆっくり、 丁寧に作業をしていても人間は100%ミスをする、 という前提を置いたタスク設計にしないとダメです ● いっきにゴールを目指そうとしない ● できる限り似たような粒度の作業に細かく分解して 異なる粒度の作業の並列度を上げない ● あいまいな判断基準になる部分の対応セオリーを何 十種類も意識しながら正確に作業、は不可能です 14
アノテーションのメンタリティ ● 作業並列度を上げる代わりに作業サイクル数を増や したほうが良いです ● 前例が無い(と思う)チャレンジしかしないです ● 前例が無いからこの先に何が起こるか気になる、ワ クワクします ● 何が起こっても “失敗” とはとらえません ● 適当に考えた仮説が誤っていたか正解していたか、 が明らかになったにすぎません 15
アノテーションのメンタリティ ● 新しいアルゴリズムを考えるのとは全く違う切り口 で、力技で仮説を証明していくスタイルです ● 儲かる、儲からない、最速で結果を出すべき、納期 ありき、無価値、のような外野のコメントは全て無 視です ● その考え方で直近の世界線で戦えていると明言でき る人が居るなら理解できますが、正直そういう指摘 を正当化できる状態になっているとは思えないです 16
アノテーションのメンタリティ スタート時点の考え方が全世界の 99.997% ぐらいの人は間違っている、 ぐらいの心持ちで居ます。 17
アノテーションのメンタリティ ● ● ● ● ● ● ● しっかり寝ます とてもしんどいと感じたときは止め時 寝る→起きる、で不思議とモチベが復活します 作業サイクル数を実質 ∞ と想定します ファイナルリミットを明確に設定しません 時間はどれだけ掛けてもよいです 人間のメンタルは極めて脆い 18
アノテーションのテクニック ● アノテーションしつつ学習を常に回します ● 現状の作業の方向性がポジティブなのかネガティブ なのか気づくチェックポイントをワントライの中で 数十箇所設けておくイメージです ● 方向性が間違っているなら早い段階で軌道修正して ゼロからすべてやり直します 19
アノテーションのテクニック ● ゼロからのやり直しは少なくとも最悪のシナリオで はなく、手戻りを最小限にとどめることができたこ とに両手を上げて喜ぶべきです ● 対象データセットの5%程度から学習を回します ● どれだけ精度値が乱高下しても気にしてはならない です ● 精度値が乱高下するのが当たり前です 20
アノテーションのテクニック ● 気にすべきところは、精度値の高低ではなくラベル 量やそのバランス、trainセットとvalセットの画像 セット内に含まれる高難易度画像の比率・低難易度 画像の比率から、どのような実利用時の性能が出せ るモデルになっているか、です ● 精度の数値は超参考値 21
アノテーションのテクニック ● 細かく学習して生成した重みを使用して何度も推論 テストを実施し、アノテーションをしながらモデル のウィークポイントを見つけることに集中します ● 明らかなウィークポイントを特定したら自撮りでも なんでもいいので弱点を補間するための画像セット を一定数必ず足します ● 50枚前後 で十分効果は出ます 22
アノテーションのテクニック ● データセットの母数が大きすぎるとウィークポイン ト補間用画像セットの効果が相対的にとても小さく なってしまうので、大量の画像データセットを使え ば性能が上がる、という固定観念は最初に完全に捨 てます 23
アノテーションのテクニック ● あらかじめ 3x3 の最小サイズのボックステンプレー トを用意しておいてコピペしかしません ● CVATブラウザバージョンですが CTRL+C と CTRL+V でボックスをコピペできます ● 常に 3x3 のボックスをコピペしたあとに対象領域境 界まで手動で引き伸ばしてアジャストしています 24
アノテーションのテクニック 25
アノテーションのテクニック 26
アノテーションのテクニック 27
アノテーションのテクニック ● 必ず画像の右下、あるいは右上から徐々に左方向に アノテーションしてできるかぎり人力認識に漏れが 生じないようにしています ● 横方向のラスタスキャンをするイメージ 28
アノテーションのテクニック 29
アノテーションのテクニック ● 対象クラス間にある程度位置関係性があるなら、上 から下、右から左に流れるように処理できるクラス をまとめて処理しています(ブツブツ独り言を発話 しながら作業して心地よい感じのリズムになるよう に) ○ 肩→肩→肘→肘→膝→膝 ○ 手→手→足→足 ○ 目→目→鼻→口→耳→耳 30
アノテーションのテクニック ● 作業粒度・分類粒度ができるだけ近いタスクにまと めて実施した例 ○ ○ ○ ○ ○ ○ ○ ○ ○ 全身(スーパークラス)で1周 頭部で1周 顔で1周 目・鼻・口・耳で1周 手で1周 足で1周 頭部向きで1周 性別で1周 世代で1周 31
アノテーションのテクニック ● バイリニアに極小オブジェクトを引き伸ばして本来 存在しない色情報を捏造してからアノテーションし ているので、極小オブジェクトは本来モデルから見 ると境界がほとんど見えていないはず ● 綺麗に境界を目視で識別できるならしっかりやるべ き、できないならこだわる意味はあまりない、と考 えています 32
アノテーションのテクニック 33
基準が “あいまい” なときのアノテーション方針 ● “あいまい” の定義について考えてみる ○ 境界・サイズが曖昧 ○ 中心位置が曖昧 ○ テクスチャが曖昧 ■ オブジェクト間の位置関係である程度判断できそうな らアノテーションします ■ オブジェクトのテクスチャが全体的にフラット過ぎて 位置関係すらも認識不能ならアノテーションしないで す 34
基準が “あいまい” なときのアノテーション方針 35
基準が “あいまい” なときのアノテーション方針 ● そもそも対象とすべきオブジェクトなのかどうかが 曖昧 ○ 最終的に自分で画像を見て対象オブジェクトと識別でき たか、識別できなかったか、しか無いです ○ 識別できたならアノテーションする、識別できなかった ならアノテーションしません ○ 人力判断の確信度が 50% を上回るか下回るか、ぐらい の判断しかできません 36
基準が “あいまい” なときのアノテーション方針 ● 最小サイズ: 3x3 ピクセル ● 最大サイズ: 画角全体を覆うサイズ ● 480x360 のリアル画像サイズでの例, 000000049338.jpg, 2356 37
基準が “あいまい” なときのアノテーション方針 ● アノテーションすべきかしないべきか迷うような特 殊なパターンでの判断 ○ 目視で識別できるか、できないか、の判断基準以外の小 難しい基準は考えないです ○ 半透明に透過してしまっている場合は識別可能な範囲で アノテーションします 38
基準が “あいまい” なときのアノテーション方針 39
基準が “あいまい” なときのアノテーション方針 ● 高強度のブラーが掛かった画像でも、目視でギリギ リ識別可能な範囲ならば頑張って境界を決めてアノ テーションします ○ ピクセル単位でどこに境界を置くべきか、のようなこだわ りを持ちすぎてはいけないパターン ○ モデル自体が位置関係を少しでも重みとして保持している 前提とするなら、ある程度の位置と大きさが正しく検出で きていれば実運用においても許せる範囲の検出結果が出る はずだ、と考えています 40
基準が “あいまい” なときのアノテーション方針 ○ アノテーションをしない、は許容できないですが、ある程 度頑張って頭をひねりながら正解が分からないけどなんと かアノテーションする、は許容します ○ 人間が正解を言語化できるならちゃんとやる、言語化でき ないならモデルの学習過程での重みの自動調整に頼る感覚 ○ 重みに頼るためにはザックリと正解の位置だけは与えてお く必要があります ○ 完全なる正解を人間が定義できるなら頑張るべきで、そう でないなら無駄に頑張るべきではないです 41
基準が “あいまい” なときのアノテーション方針 42
モデルのアーキテクチャごとの得意・不得意 ● CNNはグレースケール画像が苦手、極小オブジェク トが得意、大量検出が得意、リスケールに強い ● Transformerはグレースケール画像も得意、極小オ ブジェクトが苦手、大量検出が苦手、リスケールに 弱い 43
モデルのアーキテクチャごとの得意・不得意 ● データをしっかり作って複数のアーキテクチャ間で 同一のデータセットを共用するなら、得意・不得意 要素をまんべんなく散りばめたデータセットにする ことが望ましいです ● APの数値を上げるだけなら不得意パターンを含めな いだけで簡単に数値は上げられますが、APの数値を 上げることが最終目的ではないはずです 44
モデルのアーキテクチャごとの得意・不得意 ● mAP, AP の値にとらわれていては本質を見失う ○ 下記の記事で簡易的に検証しています CyberAgent Developers Advent Calendar 2024 : https://developers.cyberagent.co.jp/blog/archives/50303/ 45
よく質問されがちなデータ量の件 ● 画像の合計枚数はあまり大きな意味はないです ● なぜ画像の合計枚数にとらわれがちなのか ○ データセット(画像セット)の中身をすべてチェックし て傾向を把握する最重要にして必須の作業をしていない から ○ めんどくさいし泥臭すぎてやりたくないから、コスパ・ タイパ重視だから ○ 時間がとても掛かるしコストも掛かるから 46
よく質問されがちなデータ量の件 ● ヒストグラム分析などの各種統計的手法だけではな く、レアパターンやデータセットの全体的な傾向を 把握することが重要です ● 構図、対象オブジェクトの距離(サイズ)、ノイズ パターン、明度、アスペクト比、1画像内の最大オ ブジェクト数、オクルージョンパターン、俯角・仰 角、回転、ひねり、など 47
よく質問されがちなデータ量の件 ● MS-COCO データセット: 約 200,000枚 ○ 80クラス分なのでナイーブに枚数が多くなるのは理解で きます ● 自作データセット: 約 12,000枚 ○ 25クラス分、「人」のみの1ドメインに特化 ○ MS-COCO 4,000枚 + フォトメトリックノイズ付加/ア スペクト比変更 4,000枚 + レアケース補強用他データ セット 2,000枚 + 自撮り 2,000枚 48
よく質問されがちなデータ量の件 ● 個人的に取り組んでいる人ドメインでのレアケース は、車椅子、松葉杖、子供、女性 ● 人種ごとの体格差により特に大人・子供の境界の定 義がかなり難易度高めでした ● そもそも文化的に大人・子供の定義が全く異なるう えに、アジア系は幼い容姿に見えがち ● 欧米系・アフリカ系は体格が良いので大人に見えが ち 49
よく質問されがちなデータ量の件 ● MS-COCO は全体的にプロスポーツの画像比率が高 く、選手・観客共に子供の比率がかなり低く偏って います ● 観客席はただでさえ映り込む人の数が膨大なため、 必然的にデータセット全体の属性が偏ります 50
よく質問されがちな作業分担の件 ● ツライし天文学的な時間が溶けるのでできれば作業 分担したい 51
よく質問されがちな作業分担の件 わかります、その気持ち。 52
よく質問されがちな作業分担の件 ● 一人で全部やり切る場合 ○ 俺が、ルールだ。で終わり ○ 自己責任 53
よく質問されがちな作業分担の件 ● 作業分担をする場合 ● PM・PL ○ 予算 ○ スケジュール・納期 ○ ステークホルダーからの外圧をのらりくらりとかわして プロジェクトメンバーを守る役割 54
よく質問されがちな作業分担の件 ● モデル設計者 兼 タスク設計者 兼 レビュアー ○ 精神的にも体力的にも最もツラい ○ 他人の仕事をレビューするのはプログラムを読むのと同 じぐらいストレスが掛かります ○ レビューコストはアノテーションコストの3倍ぐらい高 い感覚です ○ ルール通りかを完璧にチェックする必要があります ○ アノテーションを一人で全部やり直すのと同じです ○ 意味がわからないツラさです 55
よく質問されがちな作業分担の件 ● アノテーター ○ シンプルにツラい ○ 人間がやることじゃない、と思わせるに値する単調作業 ○ それほどまでに単調な作業として成立するようにかなり 細かくルール化してからお願いすべきです ○ 一方で、指示した細かいルールを全て意識しながらメン タル超人のように淡々とこなせる人はおそらく全人類の 0.000000001% ぐらいだと思います 56
よく質問されがちな作業分担の件 ● アノテーター ○ 何故この単調作業が人類全体にとってとても有益な作業 と成り得るか、みたいな、ある意味会社を起業するモチ ベーションに近いような社会貢献への意義や理想を高次 のマインド部分で共感できるような人じゃないとモチ ベートできないはずです ○ アルバイトの方やパートタイマーの方へ求めるモノでは ない気がします ○ 単価は確実に超人単価でなければおかしいです 57
よく質問されがちな作業分担の件 ● 作業分担をする場合 ○ 正直言って、コミュニケーションコストが無駄過ぎてお 金も時間も一人でやるより5倍〜6倍は掛かる感覚です ○ はたして一人で全部やり切るのと、多くの人をアサイン して作業分担してやるのと、どちらが現実的な話に聞こ えますか? ○ アノテーションを作業分担しよう、という話の大前提で あるアノテーターの体力、精神力、マインドセットの話 を置き去りにしてはいけないです 58
よく質問されがちなデータの偏りの件 ● 同時に学習するクラス間でのアノテーション量の偏 り自体にはあまり意味が無いです ● ラベル量は最低でも 3,000 個はあったほうがロバス トなモデルになります ● 単純にラベル量を増やせば良いかというとそういう ことではなく、前述の観点で様々な条件が組み合わ さったラベルで「量」を確保するのが望ましいです 59
よく質問されがちなデータ量の件 ● そもそもリアル環境下でサンプルを集めるのが大変 ○ そうだとしても、どれだけ辛くてもサンプルを頑張って 集める必要があると思います ○ 以下、実際に実施しているアイデア ■ ひとつの画像に対してフォトメトリックノイズを付 加して最低でも1画像を2画像に増やす → 構図は完 全に同じでノイズの入り具合だけが異なる画像を静 的に生成しておく 60
よく質問されがちなデータ量の件 ■ 作業対象ドメインによって生じうるノイズパターン は異なるはずなのでそこはしっかり意識してどのノ イズパターンを適用してもよいかをじっくり検討す る ■ 古典的アルゴリズムで付加したノイズが実利用環境 下でも本当に発生しうるノイズなのか、はじっくり 検討する 61
よく質問されがちなデータ量の件 ■ 対象オブジェクトのみが高速に移動していて強度の ローカルモーションブラーが掛かっている状況と背 景も一緒に高速に移動していてグローバルモーショ ンブラーが掛かっている状況は異なる 62
よく質問されがちなデータ量の件 生成AIで生成すれば良いのでは!? 63
よく質問されがちなデータ量の件 ● Soraで生成したローカルモーションブラーをトレースして 動画生成 ● プロンプト「人が高速に走っていて高強度のローカルモー ションブラーが掛かっている。」 64
よく質問されがちなデータ量の件 んんん!? 65
よく質問されがちなデータ量の件 現状、生成AIで手を抜いて素材を集めるのは 「私は」強くお勧めしません。 66
よく質問されがちな後継育成の件 ● 今のところはほとんど興味がありません ● 同じマインドセットで取り組める人はたぶん世界にもう一人 居るか居ないか、だと思います ● 同等の負荷を乗り越えられる体力と精神力を発揮できる前提 であってほしくて、体力・精神力の強化面までフォローして 育成するのはツライ death ● 育成に時間を掛けている余裕があったら新たに 50,000個 アノテーションできそうです 67
よく質問されがちな後継育成の件 ● 前提として、論文も書かないし、研究のように面白く新しい 発見があるわけではない単調な作業ですのでただしんどいだ けです ● 99.998%ぐらいの人は taker タイプなので自己犠牲呪文を 唱える感じにはならないと思います ● メガザルやメガンテを率先して連打できる人がはたしてどれ ぐらい居るのか、と考えます ● すべてを焼け野原にするほどの鬼気迫る気概が無いと成立し ない、と私は考えます 68
まとめ ● ● ● ● ● ● ● ● ● ● データ品質の確保はとても重要 メンタル面のケアはとても重要 数値上の精度は重要ではない Vision系モデルでは “画像枚数” は重要ではない ラベルのバリエーションは重要 精度数値の乱高下は無視 本質的に頑張る意味のないところは徹底的に頑張らない 人手運用時のミスを防ぐワークフロー検討がとても重要 生成AIは素材生成ツールとしてはまだ期待値未満 泥臭ワークの後継育成はちょっとツライ 69
Appendix ● ● ● CNN < Transformer ? https://developers.cyberagent.co.jp/blog/archives/50303/ 自由入力解像度対応 Detection Transformer を錬成するトリック https://zenn.dev/pinto0309/articles/8dfbd11b2e39a2 459_YOLOv9-Wholebody25 https://github.com/PINTO0309/PINTO_model_zoo/tree/main/459_YOLOv9-Wholebody25 ● 460_RT-DETRv2-Wholebody25 https://github.com/PINTO0309/PINTO_model_zoo/tree/main/460_RT-DETRv2-Wholebody25 ● OpenAI Sora https://sora.com/ 70