目的
-
Ultralytics HUB
の理解を深める。 -
Ultralytics HUB
で学習したモデルを利用し、手持ちのiOS端末で物体検出をする。
背景
YOLOv5
について理解を深めていたところ、Ultralytics HUB
(投稿時点ではbeta版)という機械学習プラットフォームを知った。
このプラットフォームはどういったことができるのか、どういった可能性を秘めているのか深めようと思った。
前提知識・条件
-
YOLOv5
を使って学習と検出の操作を行ったことがある -
YOLOv5
で読み込める形式のデータセットが手元にある - iOS端末を所持している
Ultralytics HUBとは
Ultralytics HUB
とは、機械学習モデルの学習、デプロイを行うことができるWebプラットフォームです。
機械学習フレームワークとしては、内部でYOLOv5
が動いています。
学習設定はUIから行うことができます。
UIは非常にシンプルで、分かりやすく、とっつき易いです。(個人の感想です)
また、iOSやAndroidでリリースされているUltralytics
アプリから、Ultralytics HUB
に登録してある学習済みモデルを読み込み、物体検出を試すことができます。
今回はサングラス
を検出してみました。こんな感じになります。
もちろんですが、Ultralytics HUB
から学習済みモデルをダウンロードし利用することもできます。(ただし、beta版のため出力形式は限られているようです)
利用プランについて、投稿時点ではbeta版のため無料プランのみ、データセットや学習モデルの保存容量は合計で100.0GBまでのようです。
学習実行環境は現段階ではGoogle Colab
と自端末のみとなります。
今後、Ultralytics Cloud
という学習を実行できるクラウド環境が利用可能になるとのことです。
内容
1.サインアップ
Ultralytics HUB
のページへアクセスし登録します。
GoogleやGithubとの連携も可能なため、お好きな方法を選択し登録してください。
2.プロジェクトの作成
左のProjects
メニューを選択し、表示された右側画面の右上Create Project
ボタンを押します。
プロジェクト作成画面にて、必要情報を入力し、Create Project
ボタンを押します。
作成したプロジェクトが一覧に追加されていることを確認します。
3.データセットのアップロード
左のDatasets
メニューを選択し、表示された右側画面の右上Upload Dataset
ボタンを押します。
データセットをアップロードする画面にて、必要情報の入力とデータセットのzipファイルをドラッグドロップし、Upload Dataset
ボタンを押します。
今回はサングラス
を検出したかったため、サングラスが写っている画像のデータセットを事前に準備しました。
中身の形式に誤りがある場合は、画面上にエラーが表示されますので、内容に従い修正してください。
参考として、私がアップロードした際のデータセット構成を下記に掲載します。
ちょっと雑ですが、データセットの形式については本投稿のメインではないため簡単な説明に留めます。
- rootフォルダ
- trainフォルダ
- imagesフォルダ
- 画像ファイル
- labelsフォルダ
- アノテーション座標が記述された画像ファイルと1対1のテキストファイル
- imagesフォルダ
- validフォルダ
- trainフォルダ以下と同様
- testフォルダ
- trainフォルダ以下と同様
- data.yamlファイル
- trainフォルダ
data.yaml
ファイルの中身は下記です。
画像が格納されているフォルダを指定していますが、data.yaml
が格納されているフォルダからの相対パスとなります。少しだけハマってしまったので皆様もご注意ください。
names: [Sunglasses]
nc: 1
test: test/images
train: train/images
val: valid/images
しばらくするとアップロードが完了し、一覧のStatus
がReady
となることを確認します。
4.モデルの作成
4.1.モデル作成画面表示
左のProjects
メニューを選択し、2.プロジェクトの作成
にて作成したプロジェクトを選択します。
右上のCreate Model
ボタンを押します。
4.2.モデル情報入力
モデル情報を入力する画面にて、必要情報を入力しNext
ボタンを押します。
モデルについては検出精度や性能を加味した上でベストなモデルを選択してください。
4.3.データセット選択
データセットを選択する画面にて、アップロードしたデータセットを選択し、Next
ボタンを押します。
ラベルやデータの分割具合を確認することもできますので、選択したデータセットに誤りがないよう、確認した上で進めるようにしてください。
4.4.学習設定
学習設定画面にて学習環境、学習設定を選択します。
(Ultralytics Cloud
はまだ提供されていないため選択できません。)
その後、Step1のAPI key
をコピーし、Step2のOpen Colab
ボタンを押します。
Done
ボタンはこの時点では押せません。
4.5.学習
Colabノートブック
にて、Setup
セクションのセルを実行します。
実行時、下記のような警告が出ますが、特に問題ないためこのまま実行
ボタンを押し、完了を待ちます。
Start
セクションのセルのソースコードを編集します。
API_key
文字列を、先程コピーしたAPI keyに置き換えてください。置き換えたら、Start
セクションのセルを実行し、完了を待ちます。
学習が終わったら、Colabノートブック
を開いた元のページを表示します。
まだDone
ボタンを押していない場合は押します。
モデル一覧に学習済みのモデルが表示され、Status
がTrained
であることを確認します。
5.学習結果の確認
左のProjects
メニューを選択し、先程学習が終わったモデルがあるプロジェクトを選択します。
モデルを選択します。
画面上部にバッチサイズ、キャッシュ、デバイス、エポック等が表示され、学習時の設定を確認することができます。
Train
、Preview
、Export
タブについては以降順に説明します。
-
Exportタブ
学習済みモデルをエクスポートします。
beta版のため、選択できる形式が2つのみですが、今後のアップデートや、プランによって選択できる形式が変わってくると予想されます。
真ん中より少し右下にComing Soon
が表示されてます。待ち遠しいですね。

6.iOS端末にて検出
ここから先は手持ちのiOS端末での操作に移ります。
使用した端末はiPad Mini 5
です。
App Store
にて、Ultralytics
アプリをインストールします。
他にも似たようなアイコンのアプリが存在しますが、間違えないよう注意してください。
アプリをインストールしたらSettings
タブにてサインインします。アプリ初回起動時にもサインインを促されるため、そのタイミングでも問題ありません。
学習済みモデルを利用する場合、サインインは必須となりますが、初期状態から存在する学習済みモデルを利用し検出する場合は不要です。
サインイン後にプロフィール入力がありますが、入力完了し待ってても画面が戻らないことがあります。アプリを終了し再度アプリを開くとサインイン状態になっています。同じ状況に陥った場合はお試しください。
Projects
タブにて学習済みモデルがあるプロジェクトを選択します。
プロジェクト情報画面が表示されるので、赤枠のダウンロードボタンを押します。
ちょっと分かりにくいのですが、ダウンロードが完了するとダウンロードボタンがあったところがチェックボックスになります。これをチェックします。
チェック状態になっていることを確認します。
画面下にある青いDetect
ボタンを押し、画面上部にモデル名が表示されていれば学習済みモデルが選択された状態です。
ちゃんと検出できていますね。
これで以上となります。
最後に
Ultralytics HUB
を利用し、簡単に学習と検出ができました。
一度でもYOLOv5
を使って学習と検出を行ったことがある方であれば、操作も迷うことなく簡単に進めれると思います。
YOLOv5
のtrain.py
に指定できる大体のオプションは存在しましたが、細かなオプションは実装されていないようなので、今後のアップデートに期待しています。もしかするとそこもプランで変わってきたりするのでしょうか?
総じて今後が非常に楽しみなプラットフォームだと思いました。
ぜひ皆様も試してみてください。