Pytorchに歩行者データセットオブジェクト検出する
    • PDF

    Pytorchに歩行者データセットオブジェクト検出する

    • PDF

    Article Summary

    VPC環境で利用できます。

    PyTorchで歩行者物体を検出するプログラムを作成して、シングルバッチとしてDLアプリを提出する方法を説明します。

    Step 1. アカウントとアプリの作成

    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にデータセットをアップロードする方法は以下のとおりです。

    1. HUEアプリにログインします。
      • Data Forestユーザー名とパスワードでログイン
    2. 画面右上の [Upload] ボタンをクリックします。
    3. [Select Files] ボタンをクリックします。
    4. ファイルをアップロードします。
    5. HDFSにファイルがアップロードされたか確認します。
      af-torch_hue_vpc_ko.png

    Step 4. ワークスペースの作成

    ワークスペースを作成する方法は以下のとおりです。

    1. NAVERクラウドプラットフォームコンソールで、Services > Big Data & Analytics > Data Forestメニューを順にクリックします。

    2. AI Forest > Workspace > [ワークスペースの作成] > [Advancedワークスペース] をクリックします。

    3. Data Forestアカウントを選択してワークスペース名を設定し、ワークスペースタイプは「Singlebatch」を選択します。

    4. DockerイメージはPyTorchを選択し、イメージのバージョンはv1.7を選択します。
      df-af-coco_1-4_vpc_ja

      参考

      PyTorchはPythonプログラム用オープンソース機械学習ライブラリです。詳しい内容はPyTorchの公式サイトをご参照ください。

    5. GPUモデルの名前、GPUコア数、メモリ容量を選択します。
      この例ではデフォルト値で行います。
      df-af-mnist_1-5-1_vpc_ja

    6. データの設定領域に情報を入力して [追加] ボタンをクリックします。

      • 入力:「/user/{username}/data_in」、「data_in」
      • 出力:「/user/{username}/data_out」、「data_out」
        df-af-mnist_1-6_vpc_ko
    7. [次へ] ボタンをクリックします。ワークスペース作成が完了します。

    Step 5. サンプルコードのダウンロード

    以下は、例を実行するために必要なサンプルコードです。

    バージョンファイル
    Pytorch v1.7od-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にアップロードします。

    1. NAVERクラウドプラットフォームコンソールで、Services > Big Data & Analytics > Data Forestメニューを順にクリックします。
    2. AI Forest > Workspace Browserをクリックします。
    3. アカウントとワークスペースを選択して [アップロード] ボタンをクリックします。
      af-torch_04_vpc_ko.png
    4. アップロード画面が表示されたら、「od-torch1.zip」の圧縮を展開したファイルをアップロード画面にドラッグアンドドロップします。
    5. [転送開始] ボタンをクリックします。
    6. アップロードが完了したら [確認] ボタンをクリックします。

    Step 7. シングルバッチとしてDLアプリを提出

    シングルバッチとしてDLアプリを提出する方法は以下のとおりです。

    1. NAVERクラウドプラットフォームコンソールで、Services > Big Data & Analytics > Data Forest > AI Forest > Workspace Browserメニューを順にクリックします。

    2. アカウントを選択してワークスペースを選択します。

    3. 「run.sh」のチェックボックスをクリックして [実行] ボタンをクリックします。
      af-torch_03_vpc_ko.png

    4. 以下のように情報を入力します。
      af-torch_05_vpc_ja.png

    5. [確認] ボタンをクリックします。DLアプリが実行されます。

    Step 8. DLアプリログと結果の確認

    DLアプリの実行後、実行ログと結果を確認する方法は以下のとおりです。

    1. NAVERクラウドプラットフォームコンソールで、Services > Big Data & Analytics > Data Forest > Appメニューを順にクリックします。
    2. アカウントを選択して詳細情報を確認するアプリをクリックします。
    3. アプリの詳細情報でQuick Links > AppMaster UI項目のURLにアクセスします。
      df-af-coco_appmaster_vpc_ja
    4. ログイン画面が表示されたら、Data Forestアカウントの作成時に入力したアカウント名とパスワードを入力します。
    5. ApplicationsメニューでDLアプリの実行時に入力したアプリ名で実行されたIDを探してクリックします。
      df-af-coco_appid_vpc_ko
    6. そのアプリケーションIDのLogsをクリックします。実行したアプリのログを確認できます。
      df-qs_logs_vpc_ko.png
    7. DLアプリの結果を確認するには、{出力HDFSパスに入力したパス}/{--log_dirパラメータで渡した値}のパスを確認します。
      df-af-coco_result_vpc_ja.png

    この記事は役に立ちましたか?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.