Pytorch로 보행자 데이터셋에서 객체 탐지하기
    • PDF

    Pytorch로 보행자 데이터셋에서 객체 탐지하기

    • PDF

    Article Summary

    VPC 환경에서 이용 가능합니다.

    Pytorch로 보행자 객체를 탐지하는 프로그램을 작성하고 Singlebatch로 AI 앱을 제출하는 방법을 설명합니다.

    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

    Step 4. Workspace 생성

    Workspace를 생성하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔에서 Services > Big Data & Analytics > Data Forest 메뉴를 차례대로 클릭해 주십시오.

    2. AI Forest > Workspaces > [워크스페이스 생성] > [Advanced 워크스페이스] 를 클릭해 주십시오.

    3. Data Forest 계정을 선택하고 워크스페이스 이름을 설정한 뒤 워크스페이스 유형은 ’Singlebatch’를 선택해 주십시오.

    4. 도커 이미지는 Pytorch를 선택하고 이미지 버전은 v1.7로 선택해 주십시오.
      df-af-coco_1-4_vpc_ko

      참고

      Pytorch는 Python 프로그램용 오픈소스 머신 러닝 라이브러리입니다. 자세한 내용은 Pytorch 홈페이지를 참조해 주십시오.

    5. GPU 모델의 이름, GPU 코어 개수, 메모리 용량을 선택해 주십시오.
      이 예제에서는 기본값으로 진행합니다.
      df-af-mnist_1-5_vpc_ko

    6. 데이터 설정 영역에 정보를 입력하고 [추가] 버튼을 클릭해 주십시오.

      • 입력
        • Input Path: 컨테이너로 복사될 입력 데이터의 경로 입력, ‘/user/{username}/data_in’ 입력
        • Input Container Local Path: 입력 데이터를 저장 할 컨테이너 경로 입력
      • 출력
        • Output Path: 결과물을 저장할 HDFS 경로 입력, ‘/user/{username}/data_out’ 입력
        • Output Container Local Path: 출력 데이터가 존재하는 컨테이너의 경로 입력
        • Overwrite: HDFS에 출력 데이터 저장 시 이미 파일이 있을 경우에 덮어 쓰기 여부 설정
          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 추출 등에 사용 가능한 데이터 셋입니다. 총 330K 개의 이미지 안에 80가지 카테고리로 분류할 수 있는 200K 개의 라벨링된 객체로 구성된 사물 데이터 셋입니다.
    • 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. 네이버 클라우드 플랫폼 콘솔에서 Services > Big Data & Analytics > Data Forest 메뉴를 차례대로 클릭해 주십시오.
    2. AI Forest > Workspace Browser를 클릭해 주십시오.
    3. 계정 및 워크스페이스를 선택하고 [업로드] 버튼을 클릭해 주십시오.
      af-torch_04_vpc_ko
    4. 업로드 창이 나타나면 'od-torch1.zip'의 압축을 푼 파일을 업로드 창에 끌어다 놓으십시오.
    5. [전송시작] 버튼을 클릭해 주십시오.
    6. 업로드가 완료되면 [확인] 버튼을 클릭해 주십시오.

    Step 7. Singlebatch로 AI 앱 제출

    Singlebatch로 AI 앱을 제출하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔에서 Services > Big Data & Analytics > Data Forest > AI Forest > Workspace Browser 메뉴를 차례대로 클릭해 주십시오.
    2. 계정을 선택한 후 워크스페이스를 선택해 주십시오.
    3. 'run.sh'의 체크박스를 클릭한 후 [실행] 버튼을 클릭해 주십시오.
      af-torch_03_vpc_ko
    4. 다음과 같이 정보를 입력해 주십시오.
      af-torch_05_vpc_ko
    5. [확인] 버튼을 클릭해 주십시오. AI 앱이 실행됩니다.

    Step 8. AI 앱 로그 및 결과 확인

    AI 앱을 실행한 후 수행 로그 및 결과를 확인하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔에서 Services > Big Data & Analytics > Data Forest > Apps 메뉴를 차례대로 클릭해 주십시오.
    2. 계정을 선택한 후 상세 정보를 확인할 앱을 클릭해 주십시오.
    3. 앱 상세 정보에서 Quick links > AppMaster UI 항목의 URL에 접속해 주십시오.
      df-af-coco_appmaster_vpc_ko
    4. 로그인 창이 나타나면 Data Forest 계정 생성 시 입력한 계정 이름과 비밀번호를 입력해 주십시오.
    5. Applications 메뉴에서 AI 앱 실행 시 입력한 앱 이름으로 수행된 ID를 찾아 클릭해 주십시오.
      df-af-coco_appid_vpc
    6. 해당 애플리케이션 ID의 Logs를 클릭해 주십시오. 수행한 앱의 로그를 확인할 수 있습니다.
      df-qs_logscheck_vpc_ko
    7. AI 앱 결과물을 확인하려면 {출력 HDFS Path에 입력한 경로}/{--log_dir 인자로 전달한 값}의 경로를 확인해 주십시오.
      df-af-coco_result_vpc_ko

    이 문서가 도움이 되었습니까?

    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.