inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정판] 딥러닝 컴퓨터 비전 완벽 가이드

yolonas augmentation

303

작성자 없음

작성한 질문수 0

0

안녕하세요.

배운 내용을 기반으로 yolonas를 학습해보는 과정에서 질문이 있습니다.

nas에서 기본적으로 사용하고 있는 transforms 대신에 albumentations 라이브러리를 사용하고 싶은데 계속해서 image 가 없다는 에러가 뜹니다.

코드를 어떻게 수정해야하는지 궁금합니다.

############## 기존 학습 코드

from super_gradients.training import Trainer
from super_gradients.training import dataloaders
from super_gradients.training.dataloaders.dataloaders import (
    coco_detection_yolo_format_train, 
    coco_detection_yolo_format_val
)
from super_gradients.training import models
from super_gradients.training.losses import PPYoloELoss
from super_gradients.training.metrics import (
    DetectionMetrics_050,
    DetectionMetrics_050_095
)
from super_gradients.training.models.detection_models.pp_yolo_e import PPYoloEPostPredictionCallback
from tqdm.auto import tqdm

import os
import requests
import zipfile
import cv2
import matplotlib.pyplot as plt
import glob
import numpy as np
import random

ROOT_DIR = '/home/바탕화면/test_data'
train_imgs_dir = 'train/images'
train_labels_dir = 'train/labels'
val_imgs_dir = 'val/images'
val_labels_dir = 'val/labels'
classes = ['fallen', 'normal']

dataset_params = {
    'data_dir':ROOT_DIR,
    'train_images_dir':train_imgs_dir,
    'train_labels_dir':train_labels_dir,
    'val_images_dir':val_imgs_dir,
    'val_labels_dir':val_labels_dir,
    'classes':classes 
}




EPOCHS = 50
BATCH_SIZE = 16
WORKERS = 8




train_data = coco_detection_yolo_format_train(
    dataset_params={
        'data_dir': dataset_params['data_dir'],
        'images_dir': dataset_params['train_images_dir'],
        'labels_dir': dataset_params['train_labels_dir'],
        'classes': dataset_params['classes']
    },
    dataloader_params={
        'batch_size':BATCH_SIZE,
        'num_workers':WORKERS
    }
)

val_data = coco_detection_yolo_format_val(
    dataset_params={
        'data_dir': dataset_params['data_dir'],
        'images_dir': dataset_params['val_images_dir'],
        'labels_dir': dataset_params['val_labels_dir'],
        'classes': dataset_params['classes']
    },
    dataloader_params={
        'batch_size':BATCH_SIZE,
        'num_workers':WORKERS
    }
)






train_params = {
    'silent_mode': False,
    "average_best_models":True,
    "warmup_mode": "linear_epoch_step",
    "warmup_initial_lr": 1e-6,
    "lr_warmup_epochs": 3,
    "initial_lr": 5e-4,
    "lr_mode": "cosine",
    "cosine_final_lr_ratio": 0.1,
    "optimizer": "Adam",
    "optimizer_params": {"weight_decay": 0.0001},
    "zero_weight_decay_on_bias_and_bn": True,
    "ema": True,
    "ema_params": {"decay": 0.9, "decay_type": "threshold"},
    "max_epochs": EPOCHS,
    "mixed_precision": True,
    "loss": PPYoloELoss(
        use_static_assigner=False,
        num_classes=len(dataset_params['classes']),
        reg_max=16
    ),
    "valid_metrics_list": [
        DetectionMetrics_050(
            score_thres=0.1,
            top_k_predictions=300,
            num_cls=len(dataset_params['classes']),
            normalize_targets=True,
            post_prediction_callback=PPYoloEPostPredictionCallback(
                score_threshold=0.01,
                nms_top_k=1000,
                max_predictions=300,
                nms_threshold=0.7
            )
        ),
        DetectionMetrics_050_095(
            score_thres=0.1,
            top_k_predictions=300,
            num_cls=len(dataset_params['classes']),
            normalize_targets=True,
            post_prediction_callback=PPYoloEPostPredictionCallback(
                score_threshold=0.01,
                nms_top_k=1000,
                max_predictions=300,
                nms_threshold=0.7
            )
        )
    ],
    "metric_to_watch": 'mAP@0.50:0.95'
}


trainer = Trainer(
    experiment_name='yolo_nas_m', 
    ckpt_root_dir='checkpoints'
)

model = models.get(
    'yolo_nas_m', 
    num_classes=len(dataset_params['classes']), 
    pretrained_weights="coco"
)

trainer.train(
    model=model, 
    training_params=train_params, 
    train_loader=train_data, 
    valid_loader=val_data
)
############## 기존 학습 코드에서 변경 시킨 부분 

train_data = coco_detection_yolo_format_train(
    dataset_params={
        'data_dir': dataset_params['data_dir'],
        'images_dir': dataset_params['train_images_dir'],
        'labels_dir': dataset_params['train_labels_dir'],
        'classes': dataset_params['classes'],
        'transforms' : [ A.CLAHE(p=1.0),
            A.RandomBrightnessContrast(p=1.0),
            A.RandomGamma(p=1.0),
                ]
    },
    dataloader_params={
        'batch_size':BATCH_SIZE,
        'num_workers':WORKERS
    }
)

val_data = coco_detection_yolo_format_val(
    dataset_params={
        'data_dir': dataset_params['data_dir'],
        'images_dir': dataset_params['val_images_dir'],
        'labels_dir': dataset_params['val_labels_dir'],
        'classes': dataset_params['classes'],
        'transforms' : [ A.CLAHE(p=1.0),
            A.RandomBrightnessContrast(p=1.0),
            A.RandomGamma(p=1.0),
                ]
    },
    dataloader_params={
        'batch_size':BATCH_SIZE,
        'num_workers':WORKERS
    }
)

 

python 머신러닝 딥러닝 keras tensorflow 컴퓨터-비전

답변 1

0

권 철민

안녕하십니까,

제 강의에 나오는 패키지가 아닌것 같습니다만,

해당 패키지는 제가 사용해 보지 않아서 제대로 답해 드리기가 어려울 것 같습니다. 다만 오류 메시지상 apply_transform() 메소드 호출 될때 'image' key가 없다는 오류로 봐서는 albumentation 적용이 안되거나 뭔가 다른 방식으로 적용하셔야 할 것 같습니다.

감사합니다.

강의 환경설정 질문

0

43

2

Custom Dataset에서의 polygon 정보 관련

0

85

3

cvat.ai 보안 수준이 궁금합니다

0

81

2

캐클 nucleus 챌린지 runpod 실습 코드 에러 질문드립니다.

0

96

3

추론 결과의 Precision(또는 mAP) 평가 방법

0

86

2

mmdetection mask rcnn inferenct 실습 시 runpod 템플릿 관해서 질문드립니다.

0

61

2

runpod에서 google drive 연결 시 오류 발생

0

110

2

로드맵 선택

0

67

1

mmcv

0

59

2

Anchor box의 Positive 처리 위치

0

63

2

해당 강의 runpod 적용 후 에러 제보드립니다

0

87

2

run pod credit 관련 제보

0

100

2

mmdetection 2.x과 3.x 호환 관련 표기

0

78

2

mm_faster_rcnn_train_kitti.ipynb 실행 오류

0

99

3

질문 드립니다.

0

82

3

mm_faster_rcnn_train_coco_bccd 실행 오류 질문드립니다.

0

79

1

강사님께 수정을 제안드리고 싶은 것이 있습니다.

0

94

1

google automl efficientdet 다운로드 및 설치 오류

0

74

1

이상 탐지에 사용할 비전 기술 조언 부탁드립니다.

0

103

2

OpenCV 관련 질문드립니다.

0

71

2

mmcv 설치관련해서 문의드려요

0

333

3

강의 구성 관련해서 질문이 있습니다

1

138

2

모델 변환 성능 질문드립니다.

0

123

1

NMS 로직 문의 드려요

0

115

2