2021 네이버 부스트캠프 - Ai tech 42

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...

Week_3 Pytorch - view vs. reshape

두번째로 헷갈리는 개념은 view 와 reshape이다. reshape함수는 numpy에서도 자주 쓰이는 함수여서 친숙할 것이다. 이름 그대로 shape를 '다시' 정해준다. view도 거의 똑같다. 같은 기능을 하지만 하나의 차이점은 데이터 값의 복사 유뮤 인데, 이를 이해하기 위해서는 우선 Contiguous라는 개념을 알아야한다. Contiguous : Torch의 Array의 값이 연속적인 메모리 위치를 가지는 상태 [ Contiguous vs. Noncontiguous ] 왼쪽 그림을 보면 이해가 쉬운데, 맨 윗줄이 메모리 공간을 쭉 펴논거라고 하자. 왼쪽은 앞에서부터 순차적으로 메모리 위치가 이어진다. 오른쪽은 메모리 위치가 섞여 있다. view : contiguous tensor에서만 작동함..

Week_3 Pytorch - Squeeze vs. Unsqueeze

Python과 Pytorch의 특장점 중 하나는 미리 구현된 라이브러리와 모듈들이 풍부하다는 점이다. 하지만 풍부할 수록 알아야할 가짓수는 n만개,, 그중에서도 헷갈리지만 유용한 개념 몇가지에 대해 리뷰하겠다. 우선 Squeeze 와 Unsqueeze! 기본적으로 data dimension manipulation에 관한 함수이다. 딥러닝 모델을 구축하다보면 input data의 차원을 맞춰야 하는 경우가 생기는데, 그럴때 유용하게 사용가능하다. Squeeze : Tensor의 차원을 줄이는 것 squeeze_tensor = torch.rand(size=(2,1,2)) #tensor([[[0.1117, 0.8158]], # [[0.2626, 0.4839]]]) squeeze_tensor.squeeze() ..

Week_2 딥러닝에서 비선형성이 중요한 이유

이전 시간에 다뤘던 MLP의 내용을 다시 떠올려봅니다! Multi-Layer-Perceptron이란 여러층의 퍼셉트론으로 이루어진 신경망으로, 왼쪽은 퍼셉트론의 예시입니다. 어떤 신호를 입력받아 y라는 결과를 출력하는 흐름을 가지고 있습니다. 흔히, 딥러닝에서는 Activation Function을 사용하는게 중요하다고들 하는데, 활성화 함수가 뭐가 특별하기에 중요한걸까요? cs231n_6 ☜ 활성화 함수 대한 정리 정답은 바로 비선형성에 있습니다! 1900년대 인공지능의 침체기를 야기한 영구미제(지금은 아님ㅎㅎ) XOR problem에 대해 알아보겠습니다. x1, x2입력이 있을때, 출력값 y를 0과 1로 나누는 기준선을 찾고싶은데, w1x1 + w2x2 = y의 일반적인 선형회귀로는 찾을 수 없었습니..

Week2_뉴럴 네트워크 , MLP

딥러닝이란 무엇일까 ? 인공지능의 정의는 매우 광범위하다. 간단하게 사람의 지능, 사고의 과정을 모방한 모든것을 '인공지능'이라고 할 수 있다. 그 중에서도 딥러닝은 Neural Network의 구조를 사용한 인공지능이다. 이 점을 유의하며 MLP에 대해 정리해보겠다. Multi-Layer Perceptron Neural Network라는 이름을 갖게 된 이유는 딥러닝의 기본 단위하고 할 수 있는 Perceptron 의 구조 때문이다. 그림의 왼쪽은 인간의 신경게를 구성하는 신경 세포이다. 어떤 자극을 입력 받았을때 그거를 활성화시키고 다음 세포로 전달하고 등등... 이런 일련의 과정을 뉴런은 반복한다. Perceptron의 개념도 뉴런으로부터 왔다.(?) 정확히 같은 기능을 하는것은 아니지만, 활성화 ..

Week_2 Optimization, 중요한 개념

Optimization , 최적화는 convex optimization, gradient-free optimization 등등 분야가 굉장히 많다. 각각 한학기는 잡고 깊게 팔만한 내용이지만, 핵심만 추려서 정리해보겠다. Important Concepts in Optimization _ 확실히 짚고 넘어가야하는 개념 ⭐️⭐️ 1. Gradient Descent : First-order iterative optimization algorithm for finding a local minimum of a differentiable function Loss function, 손실 함수에 대해 1차 편미분을 해서 구한 Gradient에 learning_rate를 곱한값을 parameter(ex.Weight, b..