묻고 답해요
129만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨최신 딥러닝 기술 Vision Transformer 개념부터 Pytorch 구현까지
positional embedding 학습이 잘 안되는 문제
cifar10 말고 다른 이미지셋을 가지고 학습을 시켜보았는데, 시각화를 해 보니 수업에서 보여주셨던 것과는 다르게 positional embedding 학습이 잘 안되었습니다. 어디를 봐야할지 조언을 부탁드려도 될까요?
-
해결됨[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
YOLOv3 loss 계산 질문
안녕하세요. YOLOv3 논문을 읽고 정리하다가 궁금한 점이 생겨서 질문 드립니다. 해당 논문에 다음과 같은 문단이 나오는데요."YOLOv3 predicts an objectness score for each bounding box using logistic regression. This should be 1 if the bounding box prior overlaps a ground truth object by more than any other bounding box prior. If the bounding box prior is not the best but does overlap a ground truth object by more than some threshold we ignore the prediction, following [17]. We use the threshold of .5. Unlike [17] our system only assigns one bounding box prior for each ground truth object. If a bounding box prior is not assigned to a ground truth object it incurs no loss for coordinate or class predictions, only objectness." [17]은 Faster R-CNN에 해당합니다. YOLOv3의 경우 logistic regression을 이용하여 anchor box의 objectness를 예측하는데 ground truth와의 IoU가 최고인 anchor box의 경우에만 1을 할당하고 나머지 anchor box의 objectness score는 무시한다고 이해했습니다. 그러면 이미지에 객체가 하나가 있을 경우, 생성된 전체 anchor box 중에 객체의 ground truth와 IoU가 가장 높은 하나의 objectness score만 1이고 나머지 anchor box의 objectness score는 모두 0이 되는 건가요? 그리고 이 값을 이용해서 Object Confidence Loss가 계산되는건가요? YOLOv1의 경우 나눠진 각 grid cell의 책임 BBox의 (Object일 확률 x ground truth와의 IoU값)으로 Object Confidence Loss가 계산된 걸로 아는데 너무 헷갈리네요 ㅜㅜ
-
해결됨[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
코랩 세션 다운
안녕하세요. 학습에 관련하여 질문이 있어 남깁니다. 현재 코랩에서 이미지 데이터에 대한 학습을 진행 중에 있습니다. import os.path as osp mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir)) train_detector(model, datasets, cfg, distributed=False, validate=True)위와 같은 코드를 진행하였을 때, epoch 1번 수행 후 세션이 종료 됩니다. 위와 같은 문제로 validate=false로 진행 할 경우, 학습은 잘 작동하지만 validation에 대한 loss값만 표시되고 AP 값은 나오지 않아 학습된 모델의 평가를 어떻게 진행해야 할지 의문입니다.
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
2-8 fully connected NN answer 코드 중 torch.nn.Linear 질문드립니다!
안녕하세요. 강의 잘 듣고있습니다 :D아래 코드에서 torch.nn.Linear에 해당하는 부분이 강의서 말씀해주신 aggregation에 해당되는 부분일까요? 편의상 bias 벡터는 생략된걸까요..? class Model(torch.nn.Module) : def __init__(self) : super(Model, self).__init__() self.layers = torch.nn.Sequential( # 첫번째 레이어 torch.nn.Linear(in_features = 128, out_features = 64, bias = True), # 첫번째 레이어의 activation 함수 torch.nn.Tanh(), # 두번째 레이어 torch.nn.Linear(in_features = 64, out_features = 16, bias = True), # 두번째 레이어의 activation 함수 torch.nn.Tanh(), # 세번째 레이어 torch.nn.Linear(in_features = 16, out_features = 1, bias = True), # 세번째 레이어의 activation 함수 torch.nn.Sigmoid() ) def forward (self, x) : return self.layers(x)
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
안녕하십니까! 질문이 있습니다.
32 32 에서는 보다 작은 이미지들이 검출되고4 * 4에는 보다 큰 이미지들이 검출된다고 말씀하셨는데. FC layer은 사이즈 마다 실행되는건가요?예를들어 32 32에서는 사람이 검색되고 4 4에서는 자동차가 검출되었다고 했을 때 32 32에서도 FClayer가 수행이되고 4 4에서도 FClayer가 수행되서 결과로는 자동차 & 사람 모두가 검출되는 원리 인건가요?
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
ToTensor와 DataLoader관련질문드립니다!
안녕하세요! 이론적 이해가 아직까지는 잘되나 코드에서 잘 이해가 가지않는 부분이 있어 질문드립니다~ToTensor에서 왜 0~255를 0~1값으로 스케일링 하는 이유는 무엇인가요?DataLoader 에서 데이터를 미니배치로 넘기면 가로,세로 길이가 32로 바뀌는 이유는 무엇인가요? squeeze 함수를 찾아보니 길이가 1인 차원이 없는 행 백터, 열백터, 스칼라 배열을 삭제한다고 하는데, 아래에서 사용되는 이유는 무엇인가요?train_features, train_labels = next(iter(train_dataloader)) # train_features.size()는 64개로 세분화된 미니배치 크기, 채널, 가로, 세로 길이를 보여준다. print("Feature batch shape : {}".format(train_features.size())) # train_labels.size()도 미니배치 크기만큼 있는 것을 확인할 수 있다. print("Labels batch shape : {}".format(train_labels.size())) img = train_features[0].squeeze() # squeeze() 길이가 1인 차원이 없는 행 백터, 열백터, 스칼라 배열을 삭제한다. label = train_labels[0] plt.imshow(img.permute(1,2,0)) plt.show print("Label : {}".format(labels_map[label.item()]))
-
미해결최신 논문과 유튜브 동영상으로 만드는 2D Pose estimation 실전 프로젝트 따라하기
키포인트 추가관련
안녕하세요, dcpose에 발 키포인트를 추가하여 학습시키고 싶은데, 1. posetrack 데이터셋 없이 가능한지요? 그래도 posetrack 데이터셋이 필요해서 찾는데 공식 네트워크에서는 찾을 수가 없습니다. 확보할 수있는 방법이있을까요? 제 이메일은 valtop@gmail.com 입니다. 감사합니다.* 질문에 대한 답변은 일주일 정도 걸릴 수 있습니다.
-
미해결따라하면서 배우는 3D Human Pose Estimation과 실전 프로젝트
cuda toolkit 설치 문제
cuda toolkit 설치 시 터미널에 마지막 명령 실행하면 "E: sub-process /usr/bin/dpkg returned an error code (1) " 메시지 나오면서 종료됩니다. 어떻게 해야 할까요?
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
13 표준화에 관한 질문
1.위의 그림에서 weight가 정규분포(Gaussian distribution)를 따르기 때문에 각 layer의 input의 분포도 정규분포를 따른다고 말씀해주셨는데 그 이유가 궁금합니다..2.표준화(Z~N(0,1))를 위해서는 확률분포가 정규분포여야 한다고 알고 있습니다..그래서 batch normalization의 위의 식에서 x가 정규분포를 가져야 한다고 생각했는데 학습 데이터셋은 직접 정규분포를 가지게 넣는다고 가정하더라도 그 다음에 있는 convolutional layer의 weight가 gradient descent에 의해 업데이트 되어 더이상 정규분포를 따르지 않으면 출력값이 정규분포를 따르지 않을수도 있지 않을까요...?
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Jupyter Notebook환경 관련 질문
9강 [실습] PyTorch 기초 - Tensor 강의에서 질문 있습니다.Lesson/inflearn_practicals 폴더에 아무 파일도 들어있지 않은데, 폴더가 원래 구성이 되어 있는 것이 아니고 파일을 직접 다운로드해서 폴더를 알아서 구성하는건가요?Jupyter notebook 상에서 강사님처럼 section이 모두 뜨지 않아 질문 드립니다.
-
해결됨[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
데이터 세트에 대한 기능 부분 질문입니다.
안녕하세요.. 데이터세트에 대한 질문이 있습니다.강의에서 train, validation으로 테이터 세트를 나누어서 진행하는 부분에서, 훈련용 데이터세트는 당연히 훈련 전용일것이고,Validation의 경우 epoch 를 반복하면서 모델 검정 간격을 정해주면 그때 사용 하는것 같은데.. 여기서 질문이 있습니다.Validation에서 객체를 잘못 구분할 경우 이것이 피드백이 되어 모델 훈련에 반영이 되는것인지요? 아니면 단순하게 mAP, mAR 만 확인하는 것인지요?만약 mAP, mAR 을 확인하는 것이라면 시간을 절약하기 위해서 validation 데이터 세트에 대한 검정간격을 자주 하지 않아도 되지 않을까 싶은데 이러한 판단이 맞는 것인지 궁급합니다.만약 반대로 validation. 데이터 세트에 대한 검정자체가 모델 훈련에 직접적으로 피이드백을 해서 훈련 결과에 개선효과가 있다면 검정을 자주 하는 것이 좋은것인지요??이와는 별개로 GPU 성능에 따라서 동일한 데이터세트와 동일한 조건에 대한 학습 결과가 달라질수 있는지요??? 만약 그렇다면 GPU 성능을 높이고 batch size를 많이 할수록 학습 결과가 개선이 되는 것으로 이해하는 것이 맞는지요??항상 좋은 강의 고맙습니다.
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
6-5 수식에 관한 질문
6-5 섹션에서 Loss를 W(3)로 미분한 결과( = tW(3))를 계산하는 수식에 관련해서 질문이 있습니다..!위의 사진과 같이 계산을 해보았는데 결과가 tW(3)이 아닌 2tW(3)으로 나오게 되었습니다..Jacobian 개념이 생소하여 제대로 계산을 하였는지 잘 모르겠어서.. 혹시 계산에서 잘못된 부분을 알려주실 수 있을까요...??
-
미해결딥러닝 이론 + PyTorch 실무 완전 정복
여기 질문 드려도 되는지 모르겠지만
학습 관련된 질문 같아서 남깁니다.다름이 아니라 아이폰15프로맥스에서 모바일 인프런 영상 재생시무한 버퍼링이 걸리면서 영상 재생이 되질 않습니다다른 강의 영상들은 잘 재생되는데 현재 딥러닝 강의만 영상 재생이 안됩니다.유일하게 3강 Window 환경설정 영상만 재생이 잘 됩니다혹시 무한 버퍼링을 없애는 해결 방법을 알 수 있을까요
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Ultralytics Yolo v3 pip dependency 오류 재발생 (pillow 버전)
안녕하세요 좋은 강의 감사드립니다.그런데 이번에도!cd yolov3;pip install -qr requirements.txt여기서 오류가 발생합니다. 그 내용은 아래와 같습니다.ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. imageio 2.31.6 requires pillow<10.1.0,>=8.3.2, but you have pillow 10.2.0 which is incompatible.저번과 같이 requirements.txt 에서 해당 내용을 주석 처리하면 되는 걸까요?
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
2-7번 강의 수업 자료 관련
큰 문제는 아니지만 Section2의 '[실습] PyTorch 기초 - Transforms' 강의의 수업 자료가 이전 강의의 수업 자료로 잘못 업로드 되어 있는것 같아서 질문드려봅니다!
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
yolonas augmentation
안녕하세요.배운 내용을 기반으로 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 } )
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
코드가 에러가 납니다
for i, img in enumerate(imgs): length = valid_len[i] img = inference.visualize_image( img, boxes[i].numpy()[:length], classes[i].numpy().astype(np.int)[:length], scores[i].numpy()[:length], label_map=config.label_map, min_score_thresh=config.nms_configs.score_thresh, max_boxes_to_draw=config.nms_configs.max_output_size) output_image_path = os.path.join('/content/data_output', str(i) + '.jpg') Image.fromarray(img).save(output_image_path) print('writing annotated image to %s' % output_image_path)AutoML Efficientdet Inference수행 결과 분석 및 시각화 강의입니다. (8분 48초)여기에서 Image.fromarray(img).save(output_image_path) 부분에서 TypeError: function takes at most 14 arguments (17 given) 이라고 뜹니다. (강의에서는 정상적으로 작동하네요...)뭐가 문제일까요?
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
from torchvision.models.resnet import model_urls 에러
첨부된 9-5 ipynb 에 resnet weight 를 불러올 때 from torchvision.models.resnet import model_urls에서 오류가 나와 찾아보니 torchvision 0.13 버전 이후에model_urls 는 없어졌다고 하네요. https://github.com/pytorch/vision/blob/main/torchvision/models/resnet.py 아래와 같이 해결을 해보았습니다.from torchvision.models.resnet import ResNet50_Weights checkpoint = load_state_dict_from_url(ResNet50_Weights.IMAGENET1K_V2.url)
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
강의를 듣다 잘못표기된게 있는것같아서 적습니다.
'Fast RCNN의 이해 14x7ROI 부분이 12x7로 보이는데 14x7이였다면 전체를 표기해야하지않나' 가 제 질문입니다.
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
섹션 6. Partial Diffentiation 예시
12 page 2번째 문재에서 x1 에 대해 미분할 때 log(x2) 항은 사라져야하는 것이 맞죠?그리고 x2 에 대해 미분할 때는 sin(x1) 항이 사라져야하는 것이 맞죠?