전체 글 79

Week 8/9/10 - What is Object Detection?

Object Detection Level 2에서는 본격적으로 Object Detection을 다룹니다. Object Detection tast를 처음 접할때 Classification과 헷갈릴 수 있습니다. 간단히 짚고 넘어가자면, - Classification : 이미지가 무엇을 나타내는지, label(정답)이 한개 - Object Detection : 이미지 속에 있는 모든 객체 식별. 어디에 있고? 무엇인지. 모두 고르시오 느낌 ㅎㅎ 현실 세계에서 정말 많이 쓰이고, 중요도가 점점 중요해지는 (원래도 중요했던) task 입니다. Two-stage Vs. One-stage object detection은 투스테이지, 원스테이지 크게 두 가닥으로 나뉩니다. 뒤에서 자세히 배우겠지만, 보통 two-sta..

Week 8/9/10 Level2- P Stage [Object Detection]

Object Detection Bible Level2 U Stage + P Stage 2021.09.27 ~ 2021.10.14 1. What is Object Detection? Introduction, history 2. Object Detection - Evaluation Metric mAP, FPS, Flops 3. 2 Stage Object Detectors R-CNN SPPNet Fast R-CNN Faster R-CNN 4. 대표 Library mmdetection detectron2 5. Neck Neck이란? FPN PANet DetectorRS BiFPN, NASFPN, AugFPN 6. 1 Stage Object Detectors YOLO SSD RetinaNet 7. Efficien..

Week_7 CV-Perceptual Loss

Perceptual Loss 는 GAN에서 사용되는 loss중 하나로 MAE(L1), MSE를 보완하기 위해 만들어진 손실함수입니다. Perceptual loss는 Content loss와 style loss 두 가지 종류가 있는데 Feature map을 그대로 사용하는 Content loss와 Gram matrix 연산을 한번 거쳐 Loss를 계산하는 Style loss가 있습니다. ▲ 왜 MAE, MSE가 적합하지 않은가?!! 더보기 MAE와 MSE는 둘 다 mean, 평균오차입니다. 여러가지 샘플이 존재할때, 그 평균에서 크게 벗어나지 않는것을 목표로 합니다. 따라서 generator의 목표가 진짜같은 이미지 a'보다는 a,b,c,d의 평균에서 최대한 가까운 a+b+c+d/4를 타겟으로 합니다. 그..

Week_7 CV-Autograd

Autograd 는 Automatic Gradient calculating API의 약자로서, 자동으로 gradient를 계산해주는 Deep Learning 특화 library 이다. 과거에는 backward pass로 미분값을 구할때 수식으로 전개해 일일히 대입하는 방법을 썼다. autograd는 아래와 같은 computational graph를 사용해 자동으로 구할 수 있다. Autograd 1. backward backward는 backpropagation이다. 위 예시에서 눈에 띄는것은 보통 미분값을 구하고자 하는 변수가 y 라 할때, y.backward()를 사용하는데, 사진에서는 backward(gradients)라고 되어 있다. 이 기능은 backprop의 chain rule을 살짝쿵 적용한..

Week_6 CV-Focal Loss

Focal Loss 잘 찾은 class에 대해서는 loss를 적게 줘서 loss 갱신을 잘 못하게 하고, 잘 찾지 못한 class에 대해서는 loss를 크게 줘서 loss 갱신을 크게 하는 것. Focal Loss는 object detection에서 파생된 Loss이다. 아래의 object detection 예시를 살펴보면, 일반적인 영상에서 실제 object보다 background의 비중이 훨씬 더 많음을 알 수 있다. positive sample

Week_6 CV - Object Detection

Object Detection은 CV분야에서도 여러 기업이 확보하고자 하는 중요한 기술이다. 지난 시간에 배웠던 semantic segmentation의 연장선이라고 볼 수 있다. 위 그림에서 semantic segmentation과 Instance segmentation/Panoptic segmentation의 차이는 무엇일까? -> 바로 객체하나하나를 분리해서 생각한다는 점이다. 사람들이 사람1, 사람2, 사람3...이 되고, 자동차도 자동차1, 2.. 의 개별적인 객체로 나뉘어진다. 이 기술의 근본은 바로 Object Detection, 객체 탐지이다. Object Detection 이란? 간단하게 말하면 Classification + Bounding Box이다. 어떤 물체가 몇개인지 어디에 있는지..

Week_6 Knowledge Distilation

Knowledge Distilation "미리 잘 학습된 큰 네트워크(Teacher network) 의 지식을 실제로 사용하고자 하는 작은 네트워크(Student network) 에게 전달하는 것" 1x1 CONV 1x1 컨볼루션은 커널사이즈가 1x1로 채널수를 변형시키는게 목표인 레이어이다. 예를 들어, 1x1x512x714라면 HxWx512의 피처맵을 resolution 손실 없이 HxWx714로 바꿀수 있게 된다. Week 6 회고 이번주는 강의와 과제를 매우 안정적으로 다 끝낼 수 있어서 좋았다. 팀결성에 좀 더 치중하라고 여유를 준거 같다. 그래서 밀린 visualization 강의를 들을 수 있었다. 밀린 블로그글을 다시 다 써야지...

Week_3 Pytorch - Out of Memory, OOM 해결

Out Of Memory 딥러닝 모델을 돌리다 보면 종종 OOM 에러가 뜨면서 프로그램이 중단되는 현상이 발생한다. gpu내부 메모리가 꽉차서 발생하는 현상인데, 해결하기 어려운 이유들은 아래와 같다. - 왜 발생했나? → 알기 어려움 - 그럼 어디서 발생했나? → 알기 어려움 - 어찌저찌 Error backtracking해봄 → 엉뚱한데로 감 - 실행하자마자 띡 하고 종료되는게 아니라 누적돼서 특정 시점에 빵하고 터진경우일수 있는데, 이럴때 중단 전 메모리 상황파악이 어려움. 등등,, 가지각색의 이유로 발생하는 OOM은 처리하기 까다롭지만 무시할수 있는 에러가 아니기 때문에 해결해야한다. 해결방법 우선, GPUUtil 사용해서 iter마다 메모리 쌓이는지 확인해보자 #!pip install GPUtil..

Week_3 Pytorch - Dataset & Dataloader

Pytorch에서는 Data를 처리할때 Dataset과 Dataloader라는 클래스를 사용한다. 오늘은 각각의 클래스들이 어떤 구조를 갖고 있고 무슨 역할을 하는지 알아보겠다. 모델을 학습시키기 위해서는 Data가 필수적이다. 데이터 수집부터, 클렌징(쓰레기 값 제거), 전처리 등등을 거친 Data가 주어졌을때, 이 Data는 크게 두개의 과정을 거쳐서 실제 모델에 피딩된다. 과정을 나누는 기준은 data를 어떤 묶음으로 보느냐로 생각하면 편하다. 예를들면, 공장에서 내가 좋아하는 초코파이를 생산할때, Dataset : 초코파이 하나하나를 같은 형식으로 만듬 Dataloader : 초코파이 8개를 한상자에 넣어서 출고시킴. 정도로 이해하면 된다. 이제 각각의 클래스가 어떤 역할을 하는지 살펴보자. 1...

Week_3 Pytorch - Transfer Learning, 모델 저장 및 불러오기

딥러닝 모델을 짜다보면 모델 or 가중치들을 공유하거나 불러오는 일이 다분합니다. 불러온 pretrained 모델에 input 형식만 잘 맞춰줘도 어느정도 성능은 보장이 됩니다. 이를 Transfer Learning, 전이학습이라고 합니다. Transfer Learning : 이미지넷과 같이 아주 큰 데이터셋에 훈련된 모델의 가중치를 가지고 와서 우리가 해결하고자 하는 과제에 맞게 재보정해서 사용하는 것 전이학습을 위해서는 모델을 불러와야하는데, Pytorch에서 모델을 불러오는 법에는 크게 두가지가 있습니다. 1. Model의 state_dict를 저장 및 불러오기 모델의 파라미터를 저장 torch.save(model.state_dict(),PATH) model.load_state_dict(torch...