😽

Data-Centric AI Competitionでの操作手順

2022/08/23に公開

はじめに

おはようございます。今回は、2021年に発足したAIのコンペ「Data-Centric AI Competition」において、成果物を提出するまでの手順を中心に説明します。
https://https-deeplearning-ai.github.io/data-centric-comp/

Data-Centric AI Competitionとは

予測や推論の高精度を目指す点では、同じAIのコンペであるKaggleやSignateと同様です。違いは、そのやり方です。
KaggleやSignateでは、基本的に「モデルの作成」を通して高精度を目指します。
それに対してData-Centric AI Competitionでは、用いる学習用や検証用の「データの編集」によって高精度を目指します。その際、用いるモデルの型(たとえばResNet50)は固定されています。ちなみにここでいうデータの編集とは、例えばデータの入力値やラベルの貼り替え、データの取捨選択、データの拡張などのことです。

すでに解説や体験談のページを作成してくださっている方々がいらっしゃるので、共有します。

https://qiita.com/tt20210824/items/ca1fbdccceaff31ac511
https://www.slideshare.net/KazuyukiMiyazawa/datacentric-ai

今回の記事は、あくまでも操作手順に特化した内容です。

本題:当コンペでの操作手順

最低限必要なもの

まず当コンペのアカウントです。加えて、強いて挙げるとファイルの圧縮や解凍をするための環境くらいです。最低限、tarファイルの解凍くらいができれば十分です。
アカウントは、当コンペのサイトから取得できます(下の「提出用のzipファイルの作成」において少し触れているので、適宜ご参照ください)。

大まかな手順

大きく、二段階に分けることができます。前半は、提出用のzipファイル(データセットを圧縮したもの)の作成です。後半では、そのzipファイルをアップロードして所定の操作を行います。

提出用のzipファイルの作成

まず、下の黄緑で囲った箇所をクリックします。

https://https-deeplearning-ai.github.io/data-centric-comp/

次に、小さくて見づらいですが右上のほうにある「LOGIN」ボタンをクリックし、ログインします。アカウント未作成の場合は、隣の「SIGN UP」を選んでアカウントを作成します。

ログインすると、このような画面になります。

少し下のほうに行くと、このようなものがあります。黄緑で囲った文字列をクリックします。

すると、別タブで次のような画面が出てきます。左下にあるダウンロードのマークのボタンをクリックし、data.tar.gzというファイルをダウンロードします。

一例としては、tarファイルを解凍できる環境に作業用フォルダを作り、落としたtarファイルをそのフォルダに格納します。そして、そのtarファイルを解凍します。
そうすると、「data」フォルダが作成され、そのフォルダの直下に「train」フォルダと「val」フォルダがあることを確認できます。そして、各フォルダの中に、ラベル(今回だと各ローマ数字)ごとの画像データがあることが分かります。

高精度を目指すなら、これらのデータをうまく編集していくところです。ですが、今回の記事は操作手順についてなので、データの編集は見送ることにします。

後続の作業として、「data」フォルダの名称を「sample_submission」に改名します(名づけ方は任意ですが、この名称を前提として説明を続けます)。
そして、その「sample_submission」フォルダをzip形式で圧縮し、「sample_submission.zip」ファイルを作成します。これで、提出用のzipファイルの作成が完了です。

後半の作業

先ほどのページ(ログイン直後のページ)に戻ります。

さらに下のほうに行くと、Submissionという項目があります。後半の作業は、このSubmissionに書かれた作業になります。

まず、Worksheetというものの作成です。右上のほうにあるボタン(ファイルのようなマークで、真ん中に「+」のあるボタン)をクリックします。

すると、このような小さなウインドウが出てきます。Worksheetの名称を任意に設定し、Confirmボタンを押します。

そうすると、下のような画面になると思います。UPLOADというボタンを押し、先ほど作成したzipファイル(「sample_submission.zip」)をアップロードします。

ここから先は、バンドルというものをいくつか追加していきます。バンドルの説明はいったん省略しますが、推論の精度を評価するために作成する必要のあるものです。

そのためにまず、右のほうにあるSHOW TERMINALというボタンを押します。

すると、ターミナルというものが出てきます。

そうしたら、次の各コマンドラインを1つずつ実行します(1つずつ、コマンドラインをコピーし、ターミナルの「CodaLab > 」の行に貼り、Enterキーで実行)。

cl add bundle data-centric-utils//train.py
cl add bundle data-centric-utils//label_book
cl run :train.py :sample_submission :label_book 'python train.py sample_submission label_book' -n run-train --request-docker-image jupyter/tensorflow-notebook
cl make run-train/predictions.json -n sample_submission
cl edit sample_submission --tags mnist-roman

ここまで正常に実行できれば、次のように5つのバンドルが出来上がっていると思います。

作業完了まで、あと少しです。

作成したバンドルの中に、次のようなバンドルがあると思います。下を向いた小さな矢のようなマークをクリックします。

すると、その中身が表示されます。そこで、右のほうにあるDESCRIPTIONを修正します。下の画像はその一例です。詳しくは、公式ページをご参照ください。

ここまで無事に終われば、各バンドルは次のようになっていると思います。こちらは、公式ページにある完成形の見本です。

https://worksheets.codalab.org/worksheets/0x48ac66ba7d99418d9a2560082e800bcb

最後に、こちらのアンケートに回答します。これで完了です。

https://docs.google.com/forms/d/e/1FAIpQLScpcF8UNtYKGkYUf0OPeWJxQJCC7zEjIl7E-huio7bRAhgnUw/viewform

補足:当コンペに対する私見

操作手順については以上です。最後に補足です。

データセットの編集に注力できる

モデルの型やコードなどが固定であり、代わりにデータセット編集のみにより精度を争うこの仕組みは、画期的だと思いました。
もちろん普通のコンペでも、コードの作成だけでなくデータセットの編集もよく行われます。ですが、どうしてもコーディングやモデリングに時間を割きがちです。その点、今回紹介したコンペならコードを編集できないため、かえってデータセットの編集に注力できそうです。

そのメリット

データセットの編集に注力することのメリットとして、精度を大きく向上させる可能性が挙げられます。この旨は、公式ページや前述の解説サイトにて解説されています。
ただ、副次的ながらも見落とせないメリットが他にあると思います。特に大きなものとしては、データを観察する力や習慣が身に付くと思います。ここでいう観察とは、データをただ単に眺めたり、視覚化したりすることではないです。今後目指す事柄(精度向上など)に向けて、データの正常性や、どういうデータが足りないかなども考察することです。データを観察する力は、精度向上だけでなく、データセットの監視や保守においても有用になると思います。

終わりに

最後までお読みいただき、ありがとうございました!

Discussion