- 印刷する
- PDF
Pytorchに歩行者データセットオブジェクト検出する
- 印刷する
- PDF
VPC環境で利用できます。
PyTorchで歩行者物体を検出するプログラムを作成して、シングルバッチとしてDLアプリを提出する方法を説明します。
Step 1. アカウントとアプリの作成
- Data Forestアカウントを作成する方法はアカウントの作成と管理をご参照ください。
- アプリを作成する方法はアプリの作成と管理をご参照ください。
Step 2. データセットのダウンロード
この例では、モデル学習のためにObject Detection Combining Recognition and Segmentation. Liming Wang, Jianbo Shi, Gang Song, I-fan Shen. To Appear in ACCV 2007研究で使用されたデータを使用します。
データセットのダウンロードからデータセットをダウンロードします。
Step 3. HDFSにデータセットをアップロード
ユーザーのHDFSにデータセットをアップロードする方法は以下のとおりです。
- HUEアプリにログインします。
- Data Forestユーザー名とパスワードでログイン
- 画面右上の [Upload] ボタンをクリックします。
- [Select Files] ボタンをクリックします。
- ファイルをアップロードします。
- HDFSにファイルがアップロードされたか確認します。
Step 4. ワークスペースの作成
ワークスペースを作成する方法は以下のとおりです。
NAVERクラウドプラットフォームコンソールで、Services > Big Data & Analytics > Data Forestメニューを順にクリックします。
AI Forest > Workspace > [ワークスペースの作成] > [Advancedワークスペース] をクリックします。
Data Forestアカウントを選択してワークスペース名を設定し、ワークスペースタイプは「Singlebatch」を選択します。
DockerイメージはPyTorchを選択し、イメージのバージョンはv1.7を選択します。
参考PyTorchはPythonプログラム用オープンソース機械学習ライブラリです。詳しい内容はPyTorchの公式サイトをご参照ください。
GPUモデルの名前、GPUコア数、メモリ容量を選択します。
この例ではデフォルト値で行います。
データの設定領域に情報を入力して [追加] ボタンをクリックします。
- 入力:「/user/{username}/data_in」、「data_in」
- 出力:「/user/{username}/data_out」、「data_out」
[次へ] ボタンをクリックします。ワークスペース作成が完了します。
Step 5. サンプルコードのダウンロード
以下は、例を実行するために必要なサンプルコードです。
バージョン | ファイル |
---|---|
Pytorch v1.7 | od-torch1.zip |
coco2017データセットでpre-trainingされたモデルを読み込みます。パラメータが予め学習されたモデルを読み込み、run.sh
でダウンロードしたデータセットでfine tuningします。
- cocodataset2017は、物体検出の他にもsegmentation、captioning、key pointの抽出などに使用できるデータセットです。合計33万個の画像の中に、80種類のカテゴリに分類できる22万個のラベリングされた物体で構成された物のデータセットです。
- fine tuningは、予め学習されたweightを目的に合ったデータセットに再学習させることをいいます。
以下はモデルを学習させるコードの一部です。
...
dataset = PennFudanDataset('PennFudanPed', get_transform(train=True))
dataset_test = PennFudanDataset('PennFudanPed', get_transform(train=False))
# split the dataset in train and test set
indices = torch.randperm(len(dataset)).tolist()
dataset = torch.utils.data.Subset(dataset, indices[:-50])
dataset_test = torch.utils.data.Subset(dataset_test, indices[-50:])
# define training and validation data loaders
data_loader = torch.utils.data.DataLoader(
dataset, batch_size=2, shuffle=True, num_workers=1,
collate_fn=utils.collate_fn)
data_loader_test = torch.utils.data.DataLoader(
dataset_test, batch_size=1, shuffle=False, num_workers=1,
collate_fn=utils.collate_fn)
# get the model using our helper function
model = get_model_instance_segmentation(num_classes)
# move model to the right device
model.to(device)
print(device)
# construct an optimizer
params = [p for p in model.parameters() if p.requires_grad]
optimizer = torch.optim.SGD(params, lr=0.005,
momentum=0.9, weight_decay=0.0005)
lr_scheduler = torch.optim.lr_scheduler.StepLR(optimizer,
step_size=3,
gamma=0.1)
num_epochs = FLAGS.max_steps
for epoch in range(num_epochs):
train_one_epoch(model, optimizer, data_loader, device, epoch, print_freq=5)
lr_scheduler.step()
# evaluate on the test dataset
evaluate(model, data_loader_test, device=device)
print("done training")
torch.save(model.state_dict(), FLAGS.log_dir+'/model.pth')
print("saved model")
...
Step 6. Workspace Browserにアップロード
ダウンロードしたサンプルファイルの圧縮を展開してWorkspace Browserにアップロードします。
- NAVERクラウドプラットフォームコンソールで、Services > Big Data & Analytics > Data Forestメニューを順にクリックします。
- AI Forest > Workspace Browserをクリックします。
- アカウントとワークスペースを選択して [アップロード] ボタンをクリックします。
- アップロード画面が表示されたら、「od-torch1.zip」の圧縮を展開したファイルをアップロード画面にドラッグアンドドロップします。
- [転送開始] ボタンをクリックします。
- アップロードが完了したら [確認] ボタンをクリックします。
Step 7. シングルバッチとしてDLアプリを提出
シングルバッチとしてDLアプリを提出する方法は以下のとおりです。
NAVERクラウドプラットフォームコンソールで、Services > Big Data & Analytics > Data Forest > AI Forest > Workspace Browserメニューを順にクリックします。
アカウントを選択してワークスペースを選択します。
「run.sh」のチェックボックスをクリックして [実行] ボタンをクリックします。
以下のように情報を入力します。
[確認] ボタンをクリックします。DLアプリが実行されます。
Step 8. DLアプリログと結果の確認
DLアプリの実行後、実行ログと結果を確認する方法は以下のとおりです。
- NAVERクラウドプラットフォームコンソールで、Services > Big Data & Analytics > Data Forest > Appメニューを順にクリックします。
- アカウントを選択して詳細情報を確認するアプリをクリックします。
- アプリの詳細情報でQuick Links > AppMaster UI項目のURLにアクセスします。
- ログイン画面が表示されたら、Data Forestアカウントの作成時に入力したアカウント名とパスワードを入力します。
- ApplicationsメニューでDLアプリの実行時に入力したアプリ名で実行されたIDを探してクリックします。
- そのアプリケーションIDのLogsをクリックします。実行したアプリのログを確認できます。
- DLアプリの結果を確認するには、{出力HDFSパスに入力したパス}/{--log_dirパラメータで渡した値}のパスを確認します。