第2回 roboflow：データのアップロード

:::note info
本記事は、システムズナカシマの[ブログ記事](https://www.systems.nakashima.co.jp/rf/roboflow/blog/)を基に作成しています。
:::

こんにちは、システムズナカシマの松浦です。

今回は、作成したプロジェクトにアノテーション用の**画像をアップロードする手順**について説明します。

本記事をお読みになる前に、アカウントをお持ちでない方（[サインアップ](https://qiita.com/ShingoMatsuura/items/7d7a7940061f8990f50b#%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90)）、ワークスペース・プロジェクトの準備がお済みでない方は以下の記事をご確認ください。

 - [第1回：ワークスペースとプロジェクトの作成（1/2)](https://qiita.com/ShingoMatsuura/items/7d7a7940061f8990f50b)、[(2/2)](https://qiita.com/ShingoMatsuura/items/407bd9122bf07fd0ac4a)

また、roboflowで何ができるか、概要を知りたい方は[「はじめてのroboflow」](https://qiita.com/ShingoMatsuura/items/c2df30e0b6109ab25c32)の記事をご参照ください。

<iframe width="560" height="315" src="https://www.youtube.com/embed/gO-TKCATTII?si=OWwOQpjqitmPD6Sa" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>


## データのアップロード
AIモデルを構築する際にまず必要となるのが、アノテーション用の画像の収集・整理です。
roboflowでは、画像・動画・アノテーションデータをアップロードすることができます。

それぞれ対応しているフォーマットは以下となります。

| 種類 | 対応フォーマット | 
|:-:|:-:|
| 画像  | jpg、png、bmp、webp、avif  | 
| アノテーションデータ  | [26種類](https://roboflow.com/formats)  | 
| 動画  | mov、mp4  | 
| PDFファイル  | pdf  | 


以下、画像、動画、アノテーションデータのアップロードについて順に説明していきます。

## 画像のアップロード
まず、前回作成したプロジェクトを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/6d773be6-f5ad-0fee-cd5a-ae9226ade1fe.png)

アップロード用の画面が表示されるので、画面中央にある「**Select Files**」または「**Select Folder**」ボタンを押下し、画像の選択または、画像が保存されているフォルダを選択します。

その他、画面上にファイルをドラッグ＆ドロップすることでアップロードすることもできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/c055c0f0-6cd9-7189-1e18-61403dea2d72.png)


読み込まれたファイルの内容を確認し、問題なければ画面右上の「**Save and Continue**」ボタンを押下しアップロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/7aa109cd-7d5e-cc10-1989-b405eef94910.png)

続けて、アノテーションをどのように行うかを選択します。以下の3通りの方法でアノテーションを行うことができます。

|アノテーション方法|説明|
|-|-|
|Auto Label|roboflow上で学習したモデルを利用し自動でアノテーションを行います。|
|Manual Labeling|一般的な方法です。ワークスペース内のメンバーに画像を割り当てアノテーションを行います。|
|Roboflow Labeling|Roboflowのパートナー企業にアノテーションを依頼ます。英語です!!|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/2ba070b9-de12-fb33-5d31-0bf4b7c83ff0.png)

通常は、各担当に何枚の画像を割り当てるかを設定しますが、ここでは、自分自身に全ての画像を割り当てるので「**Assign to Myself**」ボタンを押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/b8fa4bba-21cc-05f4-9b73-e0fe7647b220.png)

割り当てられた画像が一覧表示されるので、画面右上の「**Start Annotating**」ボタンを押下しアノテーション画面に移動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/f575ac72-afec-0f01-5511-7d24a76a188f.png)

## 動画のアップロード
スマートフォン等で撮影した動画データから画像を切り出し、アノテーション用の画像として利用することができます。便利ですね。:wink:
アップロード画面にて「**Select Files(s)**」ボタンを押下し動画ファイルを選択します。

以下の画面のように**1秒間あたり何フレーム取り込む**かを設定する画面が表示されるのでフレーム数をスライダーで選択します。サムネイル画像の下にある黄色のスライダーで切り出す画像の範囲も変更することができます。

スライダーを左右に動かし（ここでは、3フレーム/秒）、フレーム数を選択すると「**Output size**」に切り出される画像枚数が表示されます。問題なければ、「**Choose Frame Rate**」ボタンを押下し、画像を切り出します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/1d6ac261-de19-d32d-2704-6f6930c3c4ad.png)


## アノテーションデータのアップロード
最後に、アノテーションデータのアップロードについて説明します。

他のツール等を利用し、既にアノテーションを行ったデータがある場合、そのデータをそのままアップロードすることができます。:astonished:
画像とアノテーションデータをセットでアップロードすることで、アノテーションされた状態で画像をアップロードすることができます。

ここでは、[Pascol VOC XML](https://roboflow.com/formats/pascal-voc-xml)をサンプルに説明します。
Pascol VOC XMLフォーマットでは、以下のような形式で画像、アノテーション情報（クラス、バウンディングボックスの座標など）が記載されています。


``` Pascol VOC XMLサンプル.xml
<annotation>
	<folder></folder>
	<filename>8G914EKALC5Q_jpg.rf.8e7aa46db907a48057f5e7b6dfaf159b.jpg</filename>
	<path>8G914EKALC5Q_jpg.rf.8e7aa46db907a48057f5e7b6dfaf159b.jpg</path>
	<source>
		<database>roboflow.ai</database>
	</source>
	<size>
		<width>224</width>
		<height>224</height>
		<depth>3</depth>
	</size>
	<segmented>0</segmented>
	<object>
		<name>shiba</name>
		<pose>Unspecified</pose>
		<truncated>0</truncated>
		<difficult>0</difficult>
		<occluded>0</occluded>
		<bndbox>
			<xmin>17</xmin>
			<xmax>204</xmax>
			<ymin>9</ymin>
			<ymax>219</ymax>
		</bndbox>
	</object>
</annotation>

```

画像データとXMLのデータを、ドラッグ＆ドロップでアップロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/ba80302d-fdc3-5369-906f-bdc2a9288940.png)

アップロードが完了すると、アノテーションされた状態で画像が読み込まれます。:tada:　:100:　Super cool:bangbang:

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/268e0623-a4fe-bd57-158d-62809881391e.png)

画像をクリックするとアノテーションの状態を確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/5056ef95-ac93-8b1d-5ed0-933ee766ffc0.png)

## 最後に

次回は、[第3回 roboflow：アノテーション（1/2）](https://qiita.com/ShingoMatsuura/items/23d241ec31727efd2e66)にてアノテーションの方法について説明します。
自動でアノテーションを行う「**Label Assist**」機能などユニークな機能があるので楽しみにしておいてください。:wink:



システムズナカシマでは、roboflowに関する個別相談・無料デモを行っております。
是非お気軽にご相談ください。

https://www.systems.nakashima.co.jp/inquiry/roboflow/contact/