안녕하세요 강사님. 항상 좋은 강의 감사드립니다. 데이터 전처리에 대해서 2가지 궁금점이 있어서 질문드립니다. RandomCrop 이나 Flip 같은 전처리는 데이터 증강을 위해서도 사용된다고 알고있는데 해당 전처리를 적용해주면 원본 데이터가 변경되는 것인지, 혹은 원본 데이터는 유지되고 전처리가 적용된 이미지가 추가되는 것인지 궁금합니다. 전자에 해당된다면 데이터 갯수의 증강을 목적으로 사용하기 위해선 원본 이미지데이터셋을 따로 저장해두고 전처리된 데이터셋과 합쳐줘야 될까요?? RandomCrop에서 패딩을 넣어주는 이유가 정확하게 무엇인지 알고싶습니다.
저는 mmdetection oxford Dataset의 품종에 대한 inference를 수행하였습니다. 의문점이 너무 많이 겹치는 bounding box가 있다는 것입니다. 제가 첨부한 2번 4번 7번 사진의 경우 하나의 개사진에 매우 겹치는 2가지 bounding box가 있음을 알 수 있습니다. 제가 알기로는 RPN 네트워크에서 마지막에 NMS를 수행해 Confidence Score가 높은 순으로 정렬하고 Confidence Score가 가장 높은 bbox와 IOU가 큰 박스는 삭제하는 걸로 알고 있습니다만 제가 잘못 알고 있는 건지 여쭙고 싶습니다.
답변 감사드립니다! 강의를 통해 Head 수에 따라 다양한 영역에 대한 Attention 이 가능하다고 이해했습니다. 이에 따른 추가적인 궁금한 부분이 있습니다. (아래 질문은 배치 사이즈를 배제하고 질문드립니다.) U msa 를 통한 Linear Projection 이전의 shape는 (N x D h x k) 이고, 이후의 shape는 (N x D)로 k가 사라져서 다양한 영역을 Attention 하고자 하는 의도가 사라지는 것 아닌지, 그렇다면 U msa 의 역할이 무엇인지 헷갈렸습니다. U msa 를 통한 Linear Projection을 진행한 후에도 다양한 영역을 Attention하고자 하는 Head의 특성이 반영되기에 상관이 없는건지 궁금합니다. U msa 도 무작위로 주어지고 학습을 통해 최적화되는 것이 맞을까요?
안녕하세요.선생님, 강의 잘 듣고 있습니다. 다름이 아니오라, 현업에서 Ultralytics yolo v3 Onnx를 이용해서 Post Processing을 해보려하는데요, c++ code 참고할만한 것이 있을까요? python은 많이 봤는데 c++은 제대로 동작되는 code찾기가 어렵네요.
안녕하세요 강사님. Transformer 에 대해 처음 공부해보니 헷갈리는 부분들이 있어서 질문남깁니다. 1) k 개의 Multi-Head를 만든 후에 Linear를 해주는 이유가 따로 있는지 궁금합니다. 단순히 Residual Connection을 위해 차원을 맞춰주기 위해 하는 것인가요?? 2) Head의 개수(k)는 CNN에서 필터 개수처럼 사용자가 정해주는 파라미터인가요?? 3) 클래스 토큰까지 Positional Embedding을 더해줘야 하는 이유가 따로 있을까요?? 좋은 강의 덕분에 따라가긴 하는데 한 번에 이해하려하니 과부하가 와서 헷갈리는게 생기네요ㅠㅠ 코드 분석 파트 들어가면 조금 더 이해가 될 것 같은데 우선적으로 질문남겨봅니다.
안녕하세요 , 좋은 강의 감사드립니다 바보 같은 질문일수도있으나 , Ground Truth Box 의 중심좌표값과 예측 BBO의 중심좌표값의 차이가 최소가 되도록 손실함수를 작성하지 않고 , Anchor Box를 Reference 로 해야하는 이유가 있을까요? 분명 제가 제대로 이해를 못한것같은데.. 조금 헷갈리네요..!
안녕하세요! Svm classifier 를 통해 학습시킬떄 IOU가 0.3 이상이지만 Ground-Truth가 아닌 경우가 잘 이해가 되지 않아 질문을 남깁니다! IOU는 Group Truth와 Selective Search Predicted 영역간의 중복되는 사각형의 넓이로 이해하였는데 0.3 이상이지만 Ground-Truth가 아닌 경우가 어떤 경우가 있을까요!
안녕하세요 박사님 덕분에 수업 너무 잘 듣고있습니다! 다름이 아니라 제가 인턴때 환경에서 해볼려고 code를 돌리는 도중 C:\workspace\yolo_oxford\yolov3>python train.py --img 640 --batch 16 --epochs 30 --data C:/workspace/yolo_oxford/ox_pet/ox_pet.yaml --weights yolov3.pt \ --name pet --exist-ok 이 과정에서 Traceback (most recent call last): File "C:\Users\ptj99\anaconda3\envs\ox_petyolo\lib\site-packages\requests\compat.py", line 11, in <module> import chardet ModuleNotFoundError: No module named 'chardet' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\workspace\yolo_oxford\yolov3\train.py", line 43, in <module> import val as validate # for end-of-epoch mAP File "C:\workspace\yolo_oxford\yolov3\val.py", line 39, in <module> from models.common import DetectMultiBackend File "C:\workspace\yolo_oxford\yolov3\models\common.py", line 21, in <module> import requests File "C:\Users\ptj99\anaconda3\envs\ox_petyolo\lib\site-packages\requests\__init__.py", line 45, in <module> from .exceptions import RequestsDependencyWarning File "C:\Users\ptj99\anaconda3\envs\ox_petyolo\lib\site-packages\requests\exceptions.py", line 9, in <module> from .compat import JSONDecodeError as CompatJSONDecodeError File "C:\Users\ptj99\anaconda3\envs\ox_petyolo\lib\site-packages\requests\compat.py", line 13, in <module> import charset_normalizer as chardet File "C:\Users\ptj99\anaconda3\envs\ox_petyolo\lib\site-packages\charset_normalizer\__init__.py", line 23, in <module> from charset_normalizer.api import from_fp, from_path, from_bytes, normalize File "C:\Users\ptj99\anaconda3\envs\ox_petyolo\lib\site-packages\charset_normalizer\api.py", line 10, in <module> from charset_normalizer.md import mess_ratio File "charset_normalizer\md.py", line 5, in <module> ImportError: cannot import name 'COMMON_SAFE_ASCII_CHARACTERS' from 'charset_normalizer.constant' (C:\Users\ptj99\anaconda3\envs\ox_petyolo\lib\site-packages\charset_normalizer\constant.py) 이러한 오류가 떳네요ㅜ 제가 궁금한건 여기서 import를 다 일일히 해야하는건가요? 제가 만든가상환경에서 yolov3에 requirements.txt를 pip 했는데도 이러한 문제가 생겨서요... 긴글 읽어주셔서 감사합니다
안녕하세요! 제가 여쭙고 싶은 질문이 2가지 있습니다. Positional Encoding은 이미지를 패치로 바꿔주었을 때 순서 유지를 목적으로 순서를 기억하는 용도로 이해를 하였는데, 코드에서 랜덤한 값으로 지정하여 이를 단순 더해줍니다. 단순 랜덤한 값을 더해주는 과정인데, 이게 왜 위치를 기억하는 positional encoding이 되는지 이해가 가지 않습니다. Key Query Value 관련해서 셋 모두 Linear Projection을 진행하는데, 같은 representation 하나에 대해서 세개 모두 단순 선형변환을 진행하면 같은 벡터가 나오지 않나 하는 의문이 들었습니다. 만약 그렇다면, 왜 같은 과정을 K Q V 세번이나 진행하는지, 만약 다르다면 nn.Linear를 진행할 경우 벡터 방향이 비슷하게 다른 벡터로 벡터공간에 주입이 되는지 궁금합니다. 강의 너무너무 유익했습니다. 감사합니다!
안녕하세요 강사님 좋은 강의 너무 감사드립니다. colab환경에서 하신 code들 바탕으로 주피터노트북 환경에서 연습하고 있었습니다. 그런 중 잘 안되는 부분이 생겨 질문드립니다. 먼저 mmdetecion 설치를 한 제 코드입니다. 오류 메세지는 다음과 같습니다 pycocotools 다운 받고 런타임 재시작부터 다 해봤습니다ㅠ 파일도 다운 받아있는데 왜 import가 안될까요? 감사합니다
안녕하세요. 이렇게 좋은 강의 들을 수 있는 기회 주셔서 감사드립니다. 강의를 들을때마다, 강의의 내용과 질에 감탄하고 있습니다. 강의를 듣다, 궁금한 점이 있어 질문드립니다. 섹션 4의 MMDetection의 이해와 Faset RCNN 적용 실습 01의 ‘tiny kitti 데이터로 MMDetection Train 실습 - Train 실행 후 이미지 Inference’ 에서 궁금한 점이 있습니다. 저는 GPU를 가지고 있어 우분투 환경에서 아나콘다의 spyder를 에디터로 사용하고 있습니다. 첫번째 질문입니다. mm_faster_rcnn_train_kitti.py 파일의 225라인 train_detector(model, datasets, cfg, distributed=False, validate=True) 에서 12epoch 동안 학습을 하고, 다음과 같이 00000068.jpeg 파일에 대해 추론을 했습니다. --추론부분 시작------------- img = cv2.imread('./kitti_tiny/training/image_2/000068.jpeg') model.cfg = cfg result = inference_detector(model, img) show_result_pyplot(model, img, result) --추론부분 종료------------- 그런데, 추론을 할때 여전히 pretrained model로서 faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth 을 이용하여 학습을 하는 것 같습니다. (혹시 tiny kitti 데이터를 이용하여 학습한 결과의 파라미터가 faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth에도 적용되는지도 궁금합니다. faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth의 속성을 찍어보면 최종 modified date는 2021년 11월 3일로 되어있어서 적용이 안되는것으로 추정됩니다.) print(model.cfg)로 찍어보면 다음과 같이 되어 있습니다. load_from = '../mmdetection/checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth' 제 소견에는 학습을 했으면 0000068.jpeg 파일에 대해 추론을 할때 사전학습을 통해 새롭게 만들어진 epoch_12.pth이나 latest.pth을 pretrained model로서 사용하는것이 어떤가 하는것입니다. 만약 그렇게 하자면, 다음과 같이 바꾸면 되는지도 궁금합니다. ---추론부분 수정 시작------------------------------- img = cv2.imread('../kitti_tiny/training/image_2/777.jpeg') cfg.load_from = './tutorial_exps/latest.pth' ; pretrained 모델 바꾸는 부분 model.cfg = cfg result = inference_detector(model, img) show_result_pyplot(model, img, result) ---추론부분 수정 종료---------------- 두번째, 질문입니다. 위에서 추론을 할때 model.cfg=cfg를 하고 print(model.cfg)를 출력을 해보면, 다음과 같이 roi_head 부분에 train_cfg, test_cfg가 하나씩 생기고 바로 그 밑에 보면 train_cfg, test_cfg가 하나씩 더 있는데 내용이 pos_iou_thr, neg_iou_thr, pos_iou 등 설정값이 서로 다르게 되어 있습니다. train_cfg, test_cfg가 서로 다르게 2개씩 설정되어 있다면 추론이나 학습이 어떤 cfg가 적용되는지 궁금합니다. 세번째, 질문입니다. 만약 resnet을 transfer learning이나 fine tuning을 하려면, /mmdetection/mmdet/models/backbones/resnet.py를 수정하면 되는지 문의드립니다. 강의를 듣다보니, 지식이 짧아 제대로 질문드렸는지 모르겠습니다. 강의를 이해하지 못해 드리는 우문이라면, 수강생의 열정으로 생각해주시고 너그러이 이해하여 주시기 바랍니다. 좋은 강의, 열강에 감사드리며 앞으로 이런 강의가 많이 만들어지기를 희망합니다. 감사합니다.