목록분류 전체보기 (30)
CVAD

과적합(Overfiting)이란, 학습 중인 모델이 학습 데이터셋에 지나치게 편향되어 학습 되는 경우를 의미한다. 쉽게 말해 학습 데이터셋을 너무 잘(?)학습해서 학습 데이터셋의 성능은 엄청 높은데, 검증 데이터셋에서의 성능은 현저히 떨어지는 현상이라고 이해하면 된다. 이러한 현상이 발생하는 이유는 task에 비해 모델의 구조가 너무 복잡하거나, 학습 데이터셋이 너무 적어서 충분히 학습이 이루어지지 않는 경우 등 다양한 요인이 존재한다. 따라서 모델의 구조를 단순화 하거나 증강(augmentation)을 통해 데이터 셋을 늘리는 방법을 통해 해결할 수도 있다. 만약, 데이터셋과 모델 구조에 문제가 없을 때는 어떤 식으로 해결할 수 있을까? 이번 포스팅에서는 이러한 상황에서 많이 사용하는 방법인 L2-re..

이전 포스팅 내용이 궁금하시다면 아래 링크를 참고해주시면 감사하겠습니다! - Semantic segmentation 하기 - 1 - Semantic segmentation 하기 - 2 - Semantic segmentation 하기 - 3 이번 포스팅은 VOC PASCAL 데이터셋 예제의 마지막 포스팅이다. 지난번 모델 학습의 결과를 분석해보고, 정리해보는 내용을 다루겠다. 1. 모델 별 비교 이전 포스팅에서 언급하였듯, FCN 모델과 U-Net 모델을 비교하였다. 먼저 loss를 분석해보자. 두 모델 모두 이전 포스팅에서 정의한 Combined Loss에서 weight를 0.5로 설정해서 사용하였다. 보라색 선이 FCN 모델이고, 노란색 선이 U-Net 모델이다. train과 validation에서 모..
이전 포스팅 내용이 궁금하시다면 아래의 링크를 참고하시면 감사하겠습니다! - [VOC PASCAL 2012] Semantic segmentation 하기 - 1 - [VOC PASCAL 2012] Semantic segmentation 하기 - 2 이번에는 학습 코드를 작성해보자. 모델은 지난 포스팅에 구현한 FCN과 U-Net을 사용할 것이다. 1. 라이브러리 불러오기 및 학습 configuration 작성 학습에 필요한 라이브러리 및 학습 configuration 값을 설정해보자. import torch import torch.nn as nn import matplotlib.pyplot as plt import numpy as np import wandb import torch.optim as opt..
이전 포스팅 내용이 궁금하시면 아래의 링크를 참고하시면 감사하겠습니다! - [VOC PASCAL 2012] Semantic segmentation 하기 -1 지난 번 포스팅에서는 VOC 데이터셋을 준비하고 데이터를 분석하였다. 이번 포스팅에서는 데이터셋에 전처리와 증강을 적용하는 코드를 알아보고 학습에 사용할 코드를 작성해 볼 것이다. 우선, 지난 번 포스팅에서 잘못된 부분이 있어서 그 부분에 대해 먼저 짚고 넘어가겠다. 이전 포스팅에서는 학습과 검증 데이터셋의 이미지에 바로 평균과 표준편차를 구했지만, 이 부분은 resizing을 적용한 데이터에 대해 계산해야한다. 때문에 코드를 아래와 같이 수정해야한다. import torch from tqdm import tqdm from Dataset import..

PASCAL VOC dataset은 다양한 컴퓨터 비전 task를 위한 벤치마크 dataset이다. 다양한 논문에서 사용되었고, dataset을 가져오는 방법도 간단하다. 이번 포스팅 시리즈는 이 VOC dataset을 이용하여 다양한 모델들의 성능을 비교해보는 것과 다양한 조건들을 바꿔보았을 때 성능에 어떤 영향을 미치는지 살펴볼 것이다. 1. VOC dataset 준비하기 http://host.robots.ox.ac.uk/pascal/VOC/ The PASCAL Visual Object Classes Homepage 2006 10 classes: bicycle, bus, car, cat, cow, dog, horse, motorbike, person, sheep. Train/validation/tes..

학습된 모델이 정말로 task를 잘 수행하는지 어떻게 확인할 수 있을까? Loss가 0에 수렴하는지, test 데이터로 결과 보기 등 여러가지 방법이 있겠지만, 수치적으로 표시할 수 있다면 훨씬 편할 것이다. 오늘은 학습된 모델이 얼마나 잘 학습되었는지를 나타내는 방법인 성능 지표(Metric)을 알아보겠다. 1. Confusion Matrix Confusion Matrix를 분류 문제에서 모델의 성능을 시각적으로 표현하는 행렬이다. 질병의 유무를 판별하는 모델을 학습시켰다고 가정해보고, 아래의 예시를 살펴보자. 예측 질병 O 예측 질병 X 실제 질병 O 100 (TP) 30 (FN) 실제 질병 X 70 (FP) 800 (TN) 위의 표의 각 숫자는 각 경우에 해당하는 사람의 수다. 위의 예시처럼 Con..

모델을 학습시킬 때를 생각해보자. 입력 데이터는 모델의 얕은 layer를 따라서 다양한 연산을 거쳐 깊은 layer로 도달하게되고, loss값을 계산한다. 그리고 최적화 함수를 통해서 loss를 줄이기 위한 가중치를 업데이트하게된다. 오늘은 모델을 업데이트하기 위한 과정인 순방향 전파(Feed forward 혹은 Forward propagation)과 역전파 (Back propagation)에 대해 알아보자 1. 순방향 전파(Feed forward) 순방향 전파는Feed forawrd 혹은 Foward propagation이라고도 한다. 순방향 정파의 정의는 모델의 입력된 데이터가 얕은 layer에서 깊은 layer로 이동해가며 최종 출력값을 반환하는 모든 연산 과정이다. 더 직관적인 이해를 위해 아래의..
Task를 잘 수행할 있도록 모델을 학습시킬 때 고려해야할 점에는 무엇이 있을까? 모델의 구조나 데이터셋 등 다양한 요소가 있겠지만, 오차 함수도 모델 학습 결과에 큰 영향을 미친다. 오늘은 이 오차 함수(Loss function)에 대해 알아보자. 1. 오차 함수(Loss function) 오차 함수(혹은 손실 함수라고도 함)는 학습 중 모델이 얼마만큼의 성능을 보이는 지 판단할 수 있는 함수다. 특별한 목적이 없다면, 오차 함수는 거의 대부분 양수값을 갖도록 설계한다. 이는 오차 함수를 해석할 때 편하게 보기위함과 동시에 최적화의 용이성을 고려하여양수로 선택하는 것이다. 대표적으로 사용하는 오차 함수는 평균제곱오차(MSE), 평균절대오차(MAE), Cross entropy 그리고 Dice Loss 등..

원래는 윈도우에서 wsl을 이용해서 ubuntu를 설치하고, ros까지 연결해서 사용해보려고했으나... 중간에 오류가 발생해서 그냥 연구실 컴퓨터처럼 듀얼 부팅으로 세팅했다. CARLA랑 ISSAC Sim도 깔아야하고 할게 태산이지만, 최근에 USB Cam을 사서 이것부터 먼저 ROS로 연결해보고싶었다. 우선, 내가 쿠팡으로 구매한 cam은 로지텍 C920 모델이다. 근데 박스도 중국어로 적혀있고, logitec 로고 옆에 이상한 한자도 붙어있던데...이거 정품이 맞는지 의심이 든다... 의심은 잠시 접어두고 연결 과정을 알아보자. 1. USB 인식 확인 먼저, 컴퓨터에서 정상적으로 USB가 인식되는지부터 확인해 봐야한다. 터미널을 켜주고 아래의 코드를 입력해주자 ls -ltr /dev/video* 그러..

딥러닝 모델이나 퍼셉트론과 같은 신경망을 공부하다보면, 활성화 함수(이하 Activation function)라는 단어를 많이 볼 수 있다. 활성화 함수는 layer의 출력을 결정하는 중요한 함수로서, 다양한 종류가 있다. 오늘은 이 활성화 함수의 개념과 그 종류에 대해 알아보겠다. 1. 활성화 함수란? 일반적으로, 활성화 함수는 layer에 입력된 신호에 가중치가 반영된 값을 출력 값으로 변환해주는 함수를 의미한다. 위 그림에서 $x_{1}$과 $x_{2}$라는 입력을 받았을 때, layer의 출력값 $y$는 $f(W_{1}\cdot x_{1} + W_{2}\cdot x_{2})$로 나타낼 수 있다. 이때, 함수 $f()$가 활성화 함수에 해당한다. 예를 들어, 활성화 함수가 임의의 선형 함수라고 가정..

논문 원본 링크 : https://arxiv.org/abs/1311.2524 R-CNN은 object detection의 대표적인 모델이다. 2013년 (개정 전) 당시에는 recognition 분야는 HOG나 SIFT를 이용한 방법이 많이 사용되었는데 detection task에서는 그닥 좋은 성능을 보이지 못했다. 이때, R-CNN은 CNN을 기반으로 한 모델을 사용하여 detection task에서 SOTA의 성능을 보여준 모델이다. 개인적으로, 이 당시 거의 최초로 CNN 기반의 완벽한 모델을 보여준 논문이 아닌가 생각이 든다. 0. 논문 간략 소개 저자 : Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik 논문 제목 : Rich featu..

논문 원본 링크 : https://arxiv.org/abs/1411.4038 Fully Convolutional Network (FCN)은 Semantic segmentation을 수행한 초창기 모델로서, 당시의 SOTA 모델로서 큰 의의를 갖고있다. 물론 현재는 이를 뛰어넘는 다양한 모델들이 있지만, 초창기의 CV 모델들의 구조와 어떤 식으로 제약들을 해결하고자 하였는지 분석해보는 것도 좋을 것 같아서 리뷰를 하게 되었다. 그리고 솔직하게 말하자면 FCN 논문은 좀... 이해가 난해하다. 때문에 나의 주관적인 해석이 많이 들어가서 저자의 의도와 다를 수도 있다. 1. 논문 간략 소개 저자 : Jonathan Long, Evan Shelhmaer, Trevor Darrell 게재 정보 : Proceedi..