월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
SPP 문의드립니다~
안녕하세요. 강의 너무 잘 들었습니다. 명확하게 설명해주셔서 감사합니다. 크게 2가지 질문이 있습니다. 1) SPP 가 분면이 예를 들어주신 것이 1x256-d, 4x256-d, 16x256-d 라면... 최소 object, 또는 image의 크기가 최소 16x16보다는 커야 겠네요? Selective search 에서 region proposal을 할 때, 어느 정도 큰 region로 한정, 필터를 하나요? 2000개로 설정하면 SS로 설정된 Region Proposal List는 거의 filter 없이 들어가진다고 생각해야 되는지 아니면 그 안에서도 우선순위 필터링이 있는지 궁금해서 입니다. 또 필터링이 없다면 너무 많은 수의 region proposal이 들어가는게 아닌가 해서요. 혹시 SPP Layer에 넣기 전에 많이 중첩된 box는 합친다거나 하는 과정이 (NMS 같은..) S.S 결과에 적용되서 나오는 건가 해서요. 2.) 이전 강의에서 feature Map의 VGG를 Image net으로 pre-training을 하고 IOU 0.5 이상인 object image로 fine tuning한다고 들었는데, SPP-Net을 하치면 Image net으로 pretraining 을 VGG로 한 후에 Pascal 같은 Object image로 SPP Layer과 FC Layer을 학습시키고 그 이후에 SVM Classifier를 학습시킨다고 보면 될까요? (이전 강의에서 3-step으로 학습시킨 것 같아 동일한지 문의드렸습니다.)
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
mAP에 대해 질문드리려고 합니다.
안녕하세요. 강의 너무 잘 듣고 있습니다. 그 전에 저 혼자 독학 할때는, mAP가 multi-class이다 보니, class별 AP를 계산해서 average 취한 개념인줄 알았습니다. CoCo나 다른 object detection할때 class별로 잘 인식하는 class가 있고 힘든 class가 있고 할 것 같은데요. (예로 imbalanced 문제를 들수도 있구요) 이렇게 class간 AP를 비교한다거나 하진 않나요?
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
예제 오드리햅번 사진 selective search에서 질문드립니다.
안녕하세요. 강의 설명 잘 들었습니다. selective search 알고리즘 설명하시면서, 이전 edge detection, 색상, 질감으로 초기 segmentation을 하고 그 다음 큰 영역으로 결합하는 것으로 이해했는데요. 오드리햅번 사진 예제를 보면 오드리 햅번 얼굴을 bounding 박스가 찾아내는데요. 머리와 얼굴 피부 부분이 색감이나 edge 부분이 전혀 달라 보이는데 하나의 객체로 인식할 수 있는 알고리즘? 조건이 있는건가요?
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Graph execution error
안녕하세요.. efficietdet_train_esi_challenge를 windows에서 구현하려고 하는데 train할떄나 inference할떄 graph execution error 가 생깁니다. Detected at node 'efficientnet-b2/stem_1/conv2d_1/Conv2D' defined at 혹시 해결할 방법이나 원인은 알수 없나요. model.fit(,또는 boxes, scores, classes, valid_len = export_model.f(img_tensor) 이곳에서 발생합니다.
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Yolo 학습 결과와 관련 질문 있습니다
안녕하십니까 교수님 항상 좋은 강의 잘 듣고 있습니다 YOLOv5 학습 결과와 관련하여 궁금한것이 있어 질문남깁니다 이미지 1752 장을 사용하여 Batch 8 , Epochs 80 파라미터를 사용하여 1개의 클래스를 식별할수 있는 모델을 만들었고 아래와 같이 결과가 나왔습니다 근데 이중 metrics/mAP_0.5:0.95 값이 0.71195 밖에 나오지 않았더라고요 metrics/mAP_0.5 값보다 작게 나온다는건 알고 있는데 metrics/mAP_0.5:0.95 값이 0.71195 인거면 학습이 제대로 안되었다고 보면 되는건가요? 아니면 PR 곡선과 metrics/mAP_0.5 값만 확인하면 될까요...?ㅠㅠ 막상 실제 테스트에 적용하면 탐지율이 거이 100%(ex: 1500장데이터 중 1500개인식)인데.... 학습 결과랑, 탐지 정확도(ex:객체 정확도 70%) 너무 안좋습니다,.... Run summary: best/epoch 78 best/mAP_0.5 0.99298 best/mAP_0.5:0.95 0.712 best/precision 0.98595 best/recall 0.99159 metrics/mAP_0.5 0.99298 metrics/mAP_0.5:0.95 0.71195 metrics/precision 0.98594 metrics/recall 0.99159 train/box_loss 0.02711 train/cls_loss 0.0 train/obj_loss 0.01559 val/box_loss 0.02213 val/cls_loss 0.0 val/obj_loss 0.00911 x/lr0 0.00035 x/lr1 0.00035 x/lr2 0.00035
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
CVAT로 Annotation을 만들고 Yolo 포맷 변환 수행 중 Dump annotations 메뉴가 없네요.-
CVAT로 Annotation을 만들고 Yolo 포맷 변환 수행- CVAT 메뉴에 Dump annotations 강좌에서 나오지만 실제 해보니 메뉴 위치가 변경이 되었는지 현재는 찾을 수가 없네요. Dump annotations 메뉴가 어디에 있을까요 ?
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
mmcv import에러 질문
안녕하세요! 저는 윈도우로 mmcv를 구동하고 있습니다. 그리고 faster rcn coco bccd 실습중에 mmcv 임포트 에러가 뜨는데 읽어보니 넘파이 버전을 맞춰야 하는것 같은데 맞는지 모르겠습니다.. 아래 텍스트는 오류가 난 것을 복붙했습니다. IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE! Importing the numpy C-extensions failed. This error can happen for many reasons, often due to issues with your setup or how NumPy was installed. We have compiled some common reasons and troubleshooting tips at: https://numpy.org/devdocs/user/troubleshooting-importerror.html Please note and check the following: * The Python version is: Python3.9 from "C:\ProgramData\Anaconda3\envs\openmmlab\python.exe" * The NumPy version is: "1.21.5" and make sure that they are the versions you expect. Please carefully study the documentation linked above for further help. Original error was: DLL load failed while importing _multiarray_umath: 지정된 모듈을 찾을 수 없습니다. During handling of the above exception, another exception occurred: File "C:\Users\torme\Desktop\faster_RCNN\Faster_RCNN.py", line 3, in <module> import mmcv
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Mmdetection 학습 중 unexpected keyword가 발생했습니다
현재 제공해주신 코드 바탕으로 mmdetection에서 ssd300 모델을 학습시키는 실습을 진행 중입니다. 그런데 train용 데이터셋을 생성하는 코드에서 아래와 같은 오류가 나타납니다. # train용 Dataset 생성. datasets = [build_dataset(cfg.data.train)] TypeError: DisasterDataset: __init__() got an unexpected keyword argument 'times' 제가 대충 찾아본 결과 config 파일 내 data 부분에서 repeatdataset에 times라는 인수가 있고, 이 부분에 문제가 있다고 합니다.(저는 지금 파일을 수정해서 disasterdataset으로 바뀌고 times=5 인수만 남아있는 상태) data = dict( samples_per_gpu=8, workers_per_gpu=3, train=dict( type='DisasterDataset', times=5, dataset=dict( type='CocoDataset', ann_file='data/coco/annotations/instances_train2017.json', img_prefix='data/coco/train2017/', (출처: https://github.com/open-mmlab/mmdetection/issues/5980) 그래서 cfg를 수정하면서 이 부분을 없애거나 주석처리 해서 해결하고자 하는데, 아래처럼 cfg내 요소를 수정할 수는 있는데, 없애거나 주석처리 하는 방법은 모르겠습니다. cfg.data.train.type = 'DisasterDataset' cfg.data.train.data_root = '/content/train/' cfg.data.train.ann_file = 'xBD_train.json' cfg.data.train.img_prefix = 'images 이 문제를 해결하는 방법에 대해 답변 듣고싶습니다. 이 repeatdataset 부분(코드에서는 data 밑 disasterdataset)을 수정하는 방법 이외에도 다른 방법이 있다면 꼭 배우고 싶습니다. 늘 좋은 강의 잘 듣고 있습니다. 감사합니다. 맨 아래는 문제가 생긴 cfg 전체 파일을 작성합니다. input_size = 300 model = dict( type='SingleStageDetector', backbone=dict( type='SSDVGG', depth=16, with_last_pool=False, ceil_mode=True, out_indices=(3, 4), out_feature_indices=(22, 34), init_cfg=dict( type='Pretrained', checkpoint='open-mmlab://vgg16_caffe')), neck=dict( type='SSDNeck', in_channels=(512, 1024), out_channels=(512, 1024, 512, 256, 256, 256), level_strides=(2, 2, 1, 1), level_paddings=(1, 1, 0, 0), l2_norm_scale=20), bbox_head=dict( type='SSDHead', in_channels=(512, 1024, 512, 256, 256, 256), num_classes=4, anchor_generator=dict( type='SSDAnchorGenerator', scale_major=False, input_size=300, basesize_ratio_range=(0.15, 0.9), strides=[8, 16, 32, 64, 100, 300], ratios=[[2], [2, 3], [2, 3], [2, 3], [2], [2]]), bbox_coder=dict( type='DeltaXYWHBBoxCoder', target_means=[0.0, 0.0, 0.0, 0.0], target_stds=[0.1, 0.1, 0.2, 0.2])), train_cfg=dict( assigner=dict( type='MaxIoUAssigner', pos_iou_thr=0.5, neg_iou_thr=0.5, min_pos_iou=0.0, ignore_iof_thr=-1, gt_max_assign_all=False), smoothl1_beta=1.0, allowed_border=-1, pos_weight=-1, neg_pos_ratio=3, debug=False), test_cfg=dict( nms_pre=1000, nms=dict(type='nms', iou_threshold=0.45), min_bbox_size=0, score_thr=0.02, max_per_img=200)) cudnn_benchmark = True dataset_type = 'DisasterDataset' data_root = '/content/train/' img_norm_cfg = dict(mean=[123.675, 116.28, 103.53], std=[1, 1, 1], to_rgb=True) train_pipeline = [ dict(type='LoadImageFromFile'), dict(type='LoadAnnotations', with_bbox=True), dict( type='Expand', mean=[123.675, 116.28, 103.53], to_rgb=True, ratio_range=(1, 4)), dict( type='MinIoURandomCrop', min_ious=(0.1, 0.3, 0.5, 0.7, 0.9), min_crop_size=0.3), dict(type='Resize', img_scale=(300, 300), keep_ratio=False), dict(type='RandomFlip', flip_ratio=0.5), dict( type='PhotoMetricDistortion', brightness_delta=32, contrast_range=(0.5, 1.5), saturation_range=(0.5, 1.5), hue_delta=18), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[1, 1, 1], to_rgb=True), dict(type='DefaultFormatBundle'), dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels']) ] test_pipeline = [ dict(type='LoadImageFromFile'), dict( type='MultiScaleFlipAug', img_scale=(300, 300), flip=False, transforms=[ dict(type='Resize', keep_ratio=False), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[1, 1, 1], to_rgb=True), dict(type='ImageToTensor', keys=['img']), dict(type='Collect', keys=['img']) ]) ] data = dict( samples_per_gpu=8, workers_per_gpu=3, train=dict( type='DisasterDataset', times=5, dataset=dict( type='CocoDataset', ann_file='data/coco/annotations/instances_train2017.json', img_prefix='data/coco/train2017/', pipeline=[ dict(type='LoadImageFromFile'), dict(type='LoadAnnotations', with_bbox=True), dict( type='Expand', mean=[123.675, 116.28, 103.53], to_rgb=True, ratio_range=(1, 4)), dict( type='MinIoURandomCrop', min_ious=(0.1, 0.3, 0.5, 0.7, 0.9), min_crop_size=0.3), dict(type='Resize', img_scale=(300, 300), keep_ratio=False), dict(type='RandomFlip', flip_ratio=0.5), dict( type='PhotoMetricDistortion', brightness_delta=32, contrast_range=(0.5, 1.5), saturation_range=(0.5, 1.5), hue_delta=18), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[1, 1, 1], to_rgb=True), dict(type='DefaultFormatBundle'), dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels']) ]), data_root='/content/train/', ann_file='xBD_train.json', img_prefix='images'), val=dict( type='DisasterDataset', ann_file='xBD_train.json', img_prefix='images', pipeline=[ dict(type='LoadImageFromFile'), dict( type='MultiScaleFlipAug', img_scale=(300, 300), flip=False, transforms=[ dict(type='Resize', keep_ratio=False), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[1, 1, 1], to_rgb=True), dict(type='ImageToTensor', keys=['img']), dict(type='Collect', keys=['img']) ]) ], data_root='/content/train/'), test=dict( type='DisasterDataset', ann_file='xBD_test.json', img_prefix='images', pipeline=[ dict(type='LoadImageFromFile'), dict( type='MultiScaleFlipAug', img_scale=(300, 300), flip=False, transforms=[ dict(type='Resize', keep_ratio=False), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[1, 1, 1], to_rgb=True), dict(type='ImageToTensor', keys=['img']), dict(type='Collect', keys=['img']) ]) ], data_root='/content/test/')) evaluation = dict(interval=10, metric=['bbox']) optimizer = dict(type='Adam', lr=0.0001, weight_decay=0.0001) optimizer_config = dict() lr_config = dict( policy='step', warmup=None, warmup_iters=500, warmup_ratio=0.001, step=[16, 22]) runner = dict(type='EpochBasedRunner', max_epochs=30) checkpoint_config = dict(interval=10) log_config = dict( interval=10, hooks=[ dict(type='TextLoggerHook', interval=10), dict( type='WandbLoggerHook', interval=1, init_kwargs=dict(project='xBD', name='test')) ]) custom_hooks = [ dict(type='NumClassCheckHook'), dict(type='CheckInvalidLossHook', interval=50, priority='VERY_LOW') ] dist_params = dict(backend='nccl') log_level = 'INFO' load_from = '/content/mmdetection/checkpoints/mask_rcnn_r101_fpn_1x_coco_20200204-1efe0ed5.pth' resume_from = None workflow = [('train', 1)] opencv_num_threads = 0 mp_start_method = 'fork' auto_scale_lr = dict(enable=False, base_batch_size=64) work_dir = '/content/drive/MyDrive/xBD/log_task1' seed = 0 gpu_ids = range(0, 1) device = 'cuda'
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
training 할때 오류가 발생하는데.. 왜이럴까요 ㅠㅠ
항상 좋은강의 잘듣고 있습니다. necleus 데이터를 학습시키는 중에 아래 처럼 오류가 나요ㅜ train이 잘 돌다가 데이터로더쪽에 오류가 나는데.. 검색해봐도 잘모르겠어요 ㅜㅜ 데이터 변환할때 이런 오류가 뜨던데 이것때문인거 같기도 하고.. 도와주세요 ㅜ
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
YOLOR 독학 중 질문드립니다.
안녕하세요. 강의의 yolo 파트를 혼자 수강하고, 스스로 추가 실습으로 현재 real time detection의 sota인 YOLOR을 혼자 독학하고 있습니다. 5일 간 train evaluation에서 에러를 수정하지 못해서, 혹시나 하는 마음에 이렇게 도움을 요청해봅니다. https://drive.google.com/file/d/1mNBu7aLV61pdet9X2dE2uGiacxFbKpAo/view?usp=sharing 현재 제가 작업하고 있는 colab파일인데, train까지는 문제 없이 잘 진행 됩니다. 근데 test.py를 통해서 mAP 값을 구하려고 하는데, 자꾸 에러가 뜨고, 아무리 구글링하고 찾아봐도 방법을 모르겠습니다. !python test.py --data ./test.yaml --weights /content/drive/MyDrive/best.pt --img 416 --device 0 으로 실행시키면 Namespace(augment=False, batch_size=32, cfg='cfg/yolor_p6.cfg', conf_thres=0.001, data='./test.yaml', device='0', exist_ok=False, img_size=416, iou_thres=0.65, name='exp', names='data/coco.names', project='runs/test', save_conf=False, save_json=False, save_txt=False, single_cls=False, task='val', verbose=False, weights=['/content/drive/MyDrive/best.pt']) Using torch 1.7.0 CUDA:0 (Tesla T4, 15109MB) Model Summary: 665 layers, 36843816 parameters, 36843816 gradients, 80.379953800 GFLOPS WARNING: --img-size 416 must be multiple of max stride 64, updating to 448 Scanning labels valid/labels.cache3 (202 found, 0 missing, 70 empty, 0 duplicate, for 272 images): 272it [00:00, 21758.26it/s] Class Images Targets P R mAP@.5 mAP@.5:.95: 0% 0/9 [00:01<?, ?it/s] Traceback (most recent call last): File "test.py", line 330, in <module> save_conf=opt.save_conf, File "test.py", line 226, in test plot_images(img, output_to_target(output, width, height), paths, f, names) # predictions File "/content/yolor/utils/plots.py", line 108, in output_to_target return np.array(targets) File "/usr/local/lib/python3.7/dist-packages/torch/tensor.py", line 630, in __array__ return self.numpy() TypeError: can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Faster RCNN regression 출처?
안녕하세요 강의 정말 잘 듣고 있습니다.ㅎㅎ 다름이 아니라 RCNN부분에서 RPN부분이 이해하지 못하여 질문드리게 됐습니다 Q. RPN부분에서 GT와 Anchor Box를 비교 , 그리고 GT와 예측값을 비교하여 RPN Bounding Box Regression을 진행하는 것으로 알고 있습니다. 제가 궁금한 점은 최초(맨 처음)의 Predicted값은 어떻게 만들어지는지가 궁금합니다. 처음에는 그저 랜덤값으로 정해지는 것인가요??
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
MAK-RCNN 관련 질문드립니다
안녕하세요 MASK-RCNN 강의 듣던중 Bilinear Interpolation 예시 관련해서 weighted sum을 할때, S1*pixel(3,3) + S2*pixel(2,3) + S3*pixel(3,2) + S4*pixel(2,2) 대각성분은 교차해서 곱하고 비대각성분은 위치에 있는대로 곱하고 있는데 별도로 이유가 있는건가요? S1*pixel(2,2) + S2*pixel(2,3) + S3*pixel(3,2) + S4*pixel(3,3) 이 될거라고 생각했거든요//..
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
train_detector()에서 오류가 납니다ㅜㅠ
train_detector()에서 "AttributeError: 'ConfigDict' object has no attribute 'device'" 이런 오류가 나는데 뭐가 문제인가요..?
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
추가로 업데이트했으면 하는 것이 있습니다.
좋은 강의 정말 정말 고맙습니다. ^^ 계속 관련 강의의 진화와 업데이트 위해서 다음이 포함되면 좋겠습니다. (1) 메타의 detectron2 메타의 detectron2 도 포함하여 설명을 해주시면 좋을 것 같습니다. 메타가 주도을 하고 있고 아직 많은 mmdetection보다 fork 및 contributor가 조금 적지만 무시할 수 없는 framework인 것 같습니다. (2) FCOS(Fully Convolutional One-Stage object detection)FCOS는 anchor box를 사용하지 않는 one-stage detector로 semantic segmentation처럼 픽셀마다 예측하는 방법으로 object detection 문제를 해결한다고 들었는데 이를 소개하면 좋을 것 같습니다. (3) Semantic Segmentation과 Instance Segmentation 명확한 구분Semantic Segmentation과 Instance Segmentation를 명확하게 구분하여 설명을 해주시면 좋을 것 같습니다.혼재되어 있어서 아직 혼란스럽니다.
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
bdd10k 데이터셋 coco형식 변환 중 경로설정 문의
안녕하세요 강사님. 저번 답변은 갑사합니다!! 한가지 더 궁금한 것이 있어 질문드립니다. coco 데이터셋으로 변환할 때 경로설정에 관한 오류가 있어서 그런데요 보내주신 사이트에서 coco데이터셋으로 변경하려면 아래와 같이 명령어를 치면 된다고 나와있습니다. python3 -m bdd100k.label.to_coco -m det|box_track|pose \ -i ${in_path} -o ${out_path} [--nproc ${process_num}] 그래서 직접 하기 위해 우분투에 아래와 같이 입력했습니다. python3 -m bdd100k.label.to_coco -m det \ -i ${home/jkh} -o ${home/jkh} [--nproc ${4}] 입력 후 실행하니 아래와 같은 오류가 나왔습니다.(home/jkh는 다운받은 json파일이 있는곳입니다.) usage: to_coco.py [-h] [-i IN_PATH] [-o OUT_PATH] [-m {det,track}] [-ri] [-ic]to_coco.py: error: argument -i/--in-path: expected one argument 경로설정에 대한 오류인것 같은데 리눅스가 처음이라 경로설정을 어떻게 해야될지 모르겠습니다. 다운받은 json파일의 경로와 내보낼 경로를 설정할때 어떻게 입력해야 하는지에 대해 조금 더 자세하게 알려주실수 있을까요?
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Fast R-CNN 구현 질문
Fast R-CNN 구현중에 가장 난감한 부분이 RoI pooling layer 였는데, 논문에서 보면 mini-batch를 이미지 2개에 roi box를 128개 사용한다고 써있더라구요. 그러면 학습할 때 입력 데이터로 이미지 2개 + roi box(region proposal된 roi)가 들어간다고 이해했습니다. 그런데 여기서 이해가 안되는 점이 여러개가 있습니다 . 1. 이론상 fast rcnn은 입력 크기가 정해지지 않아도 되는데, tensorflow 에서 pre-trained vgg16 모델을 사용하려면 입력 크기가 224x224x3으로 고정되어 있어서 결국 mini-batch를 구성할 때 입력 사이즈를 모두 224x224x3으로 맞춰줘야 하는건가요? 2. 이미지 + roi box가 입력으로 들어가면 multi input으로 인풋값을 동시에 두 가지를 분리해서 넣어줘야 하나요? 3. 마지막에 box regressor와 classifier에서 box regressor는 x,y, w,h 좌표를 output으로 / classifier는 K(클래스 개수) + 1(배경) 총 K+1개 output이 도출되어야 하는데 입력 데이터 구성이 이미지 데이터 + roi box에 주어진 target 데이터는 ground truth box여서 mini-batch 구성할 때 Pascal IoU 기준에 따라 ground truth box와 이미지당 roi box 64개를 roi 비교하여 0.5이상인 경우는 1 0.2이상 0.5 미만을 0으로 구성한 후에 학습을 해야 하는건가요? 여기서 예를 들어 클래스가 4개라고 가정했을 때 target 데이터는 [N, 64, 4] (N은 데이터 개수) 크기로 구성하는게 맞을까요? (64개는 roi 개수 4개는 클래스입니다) 추가 설명 : [1, 64, 4]라고 했을 때 1개 이미지에 해당하는 64개 roi 각각 4개 클래스 중 overlap되는 roi가 0.5이상 되는 경우 1을 추가하고 클래스가 강아지, 고양이, 사람, 배경이라고 했을 때 강아지가 2마리 사람이 1명 이면 [2, 0, 1, 0] 이렇게 target 데이터가 구성되는게 맞나요..? ㅠㅠ 4. Roi pooling layer에 들어가는 input값이, 14x14x256(input 크기가 224x224x3이라고 가정했을 때) feature map + roi 인걸로 이해 했는데, tensorflow 구현시 roi는 input으로 어떻게 넘겨 줘야 할지 모르겠습니다..ㅠㅠ 5. Pre-trained model로 imagenet 데이터로 학습된 vgg16모델을 쓴다고 했을 때, 만약에 한식 이미지를 detection 해야 하는 문제가 있으면 fine tuning 한 후에 적용해야 정확도가 올라가겠죠? pre trained 된 이미지와 새로 detection할 이미지가 유사한지 유사하지 않은지는 추론해보고 결과가 좋지 못하면 fine tuning을 해야겠다 판단하는 건가요 아니면 사전에 학습된 이미지와 새로 학습하거나 추론할 이미지와 유사성을 분석 해보고 fine tuning을 하나요..? 당연히 추론해보고 결과가 좋지 못하면 할것 같지만, fine tuning을 해야 겠다 판단하는 기준이 혹시 따로 있을지 궁금합니다 논문보고 이해가 안가는 부분은 블로그도 보고 이것 저것 참조하다 보니 엄청 헷갈리는 상태가 돼서 질문이 정갈하지 않는 점 양해부탁드립니다 ㅠㅠ
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
fast RCNN에서 region proposal 영역 이미지를 feature map에 매핑하는 방법
안녕하세요 강사님!! fast RCNN에서 region proposal 영역 이미지를 feature map에 매핑하는 방법에 대해 질문드립니다! fast RCNN을 보면 원본 이미지를 cnn에 통과시켜 feature map을 만들고 별도로 원본 이미지를 selective search를 통해 영역 이미지를 만들어서 이 영역 이미지를 feature map에 매핑한다라고 되어 있는데 혹시 어떤 식으로 매핑이 되는건지 궁금합니다. 예를 들면 feature map의 사이즈가 (7,7,256)이라고 할 때 영역 이미지를 feature map에 매핑하려면 같은 사이즈인 (7,7,256)으로 만들어서 매핑을 하는 건지 아니면 (7,7)사이즈로 만들어서 256개의 채널에 동일하게 적용을 하는 건지 알고 싶습니다.
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
build_dataset 수행시간을 줄이는 방법이 있나요?
선생님 안녕하세요. 코로나는 다 나으셨는지요. 항상 건강하셔서 계속 좋은 강의 해주시길 기원합니다! 아래에서 드리는 질문의 내용은 다음과 같습니다. 1. build_dataset 수행시간을 줄이는 방법이 있는지 궁금합니다. 2. train 데이터셋 처럼 validataion 데이터셋을 미리 처리하여 바이너리 파일로 덤프 하여 재사용 가능한지 궁금합니다. 첫번째로 load_annotation 함수 처리 속도 또는 다른 부분에서 속도를 개선할 방법이 있을까요? 한장의 데이터셋을 처리하는데 1초 조금 넘는 시간이 소요됩니다 (1.xx it/s). 4만장의 학습데이터셋을 처리하는데 7시간 정도 걸렸습니다. 보통 이정도의 처리 속도가 걸리는지, 개선 방법이 있다면 알려주시길 부탁드립니다. 두번째로 validataion 데이터셋을 미리 빌드하여 바이너리로 저장 가능한지 궁금합니다. 학습 데이터셋을 예제에서 학습 전에 미리 빌드하여 변수 dataset에 저장 하였습니다. 저는 이 변수의 값을 pickle 라이브러리를 이용하여 바이너리(.bin) 파일로 저장하였다가 학습할때 로드하여 사용하였습니다. 다만 validation 데이터셋은 학습 과정중에 빌드가 되어 학습때마다 데이터셋 빌드에 많은 시간이 소요가 됩니다. 혹시 미리 데이터셋을 빌드하는 방법이 있을까요? 아래 코드는 dataset 변수의 값을 바이너리 파일로 저장할 때 사용한 코드입니다. import pickle # write pickle target_dataset_path = os.path.join(ROOT, 'dataset.bin') with open(target_dataset_path, 'wb') as f: pickle.dump(datasets, f) print(f"New dataset: {target_dataset_path}") # read pickle with open(target_dataset_path, 'rb') as f: my_datasets = pickle.load(f)
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
clear_output() 관련
안녕하세요. 파이토치 버전과 GPU를 확인하는 셀에서 clear_output() 메서드를 실행하셨는데요, clear_output()은 셀의 출력 결과를 지우는 기능을 하는 걸로 알고 있습니다. 그런데 해당 셀에서는 clear_output()을 넣지 않아도 될 것 같은데, 넣으신 이유가 따로 있으신가요? 넣든 넣지 않든 결과는 print()로 명확히 출력한 결과만 떠서요. ㅎㅎ
- 미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
customdataset 구성 질문
안녕하세요!! 저는 bdd100k dataset을 이용해 mmdetection framework를 이용해 보려고 하는데요 bdd100k는 json파일로 이루어져있고 우선 강의를 통해 mmdetection의 customdataset으로 만들때 data_info와 data_anno을 만들어 dict파일을 만들어야 된다는 것은 이해했습니다. 그러면 data_info와 data_anno를 구성하기 위해 bdd100k의 json파일에서 필요한 정보를 가져와야되는데 강의의 dataset과는 많이 다른 방식이다보니 어떻게 가져와야될지에 대해 했갈리는 부분이 많아서 강사님이라면 어떻게 접근하셨을지에 대해서 여쭙고 싶습니다. 아래는 json파일의 일부이며 데이터가 이미지 갯수만큼 있는 파일입니다. { "name": "0000f77c-6257be58.jpg", "attributes": { "weather": "clear", "timeofday": "daytime", "scene": "city street" }, "timestamp": 10000, "labels": [ { "id": "0", "attributes": { "occluded": false, "truncated": false, "trafficLightColor": "G" }, "category": "traffic light", "box2d": { "x1": 1125.902264, "y1": 133.184488, "x2": 1156.978645, "y2": 210.875445 } }, { "id": "1", "attributes": { "occluded": false, "truncated": false, "trafficLightColor": "G" }, "category": "traffic light", "box2d": { "x1": 1156.978645, "y1": 136.637417, "x2": 1191.50796, "y2": 210.875443 } }, { "id": "2", "attributes": { "occluded": false, "truncated": false, "trafficLightColor": "NA" }, "category": "traffic sign", "box2d": { "x1": 1105.66915985699, "y1": 211.122087, "x2": 1170.79037, "y2": 233.566141 } }, { "id": "3", "attributes": { "occluded": false, "truncated": true, "trafficLightColor": "NA" }, "category": "traffic sign", "box2d": { "x1": 0.0, "y1": 0.246631, "x2": 100.381647, "y2": 122.825696 } }, { "id": "4", "attributes": { "occluded": false, "truncated": false, "trafficLightColor": "NA" }, "category": "car", "box2d": { "x1": 49.44476737704903, "y1": 254.530367, "x2": 357.805838, "y2": 487.906215 } }, { "id": "5", "attributes": { "occluded": false, "truncated": false, "trafficLightColor": "NA" }, "category": "car", "box2d": { "x1": 507.82755, "y1": 221.727518, "x2": 908.367588, "y2": 441.0052451528153 } }, { "id": "6", "attributes": { "occluded": false, "truncated": true, "trafficLightColor": "NA" }, "category": "traffic sign", "box2d": { "x1": 0.156955, "y1": 0.809282, "x2": 102.417429, "y2": 133.411856 } } ] }