전 게시물에서 CNN을 활용해서 졸음운전을 분류하는 프로젝트를 정리해보았는데, 이번엔 이어서 VGG와 ResNet을 사용해서 진행해본 부분을 정리해보겠다. https://y8jinn.tistory.com/65 VGG - 적절한 kernel(=filter)의 크기나 layer의 수 등을 찾는 것에 초점을 맞춘 모델. - 특히 11x11, 5x5 등 다양한 크기의 kernel을 사용한 AlexNet과 달리 처음부터 끝까지 일관되게 3x3 크기의 kernel만 사용한 것이 VGGNet 모델의 특징임. - VGG는 신경망의 깊이가 모델의 성능에 미치는 영향을 조사하기 위해 시작된 연구로 3x3 convolution을 이용한 Deep CNN 제안. - VGG 모델은 3x3 convolution, max-pooli..
ION Lab에서 CNN을 활용하여 졸음운전을 분류해보는 프로젝트를 진행해보았다. 운전자의 특징 변화를 측정함으로써 졸음여부를 판단하는 방법으로 CNN 기반 모델이 운전자의 '눈'을 인식하여 졸음운전 여부를 판단하는 프로젝트이다. 최종 목표는 운전자 CCTV나 블랙박스에서 찍힌 운전자의 사진을 보고 YOLO 등의 모델을 사용하여 Object Detection을 써서 졸음운전을 판단해보는 것인데, 현재로서는 일단 캐글에 있는 Drowsiness Detection 데이터셋을 활용하여 운전자의 눈 사진만 보고 감고 있는지, 뜨고 있는지 분류해보는 간단한 이진분류 프로젝트를 소개하겠다. https://www.kaggle.com/datasets/kutaykutlu/drowsiness-detection/data D..
[딥러닝 파이토치 교과서]를 기반으로 공부한 내용입니다. 전이 학습 : 이미지넷처럼 아주 큰 데이터셋을 써서 훈련된 모델(사전 훈련된 모델(네트워크))의 가중치를 가져와 우리가 해결하려는 과제에 맞게 보정해서 사용하는 것을 의미함 => 비교적 적은 수의 데이터를 가지고도 우리가 원하는 과제를 해결할 수 있음 특성 추출 기법 특성 추출은 ImageNet 데이터셋으로 사전 훈련된 모델을 가져온 후 마지막에 완전연결층 부분만 새로 만듦. 즉, 학습할 때는 마지막 완전연결층(이미지의 카테고리를 결정하는 부분)만 학습하고 나머지 계층들은 학습되지 않도록 함. -> 합성곱층과 데이터 분류기(완전연결층)으로 구성 합성곱층 : 합성곱층과 풀링층으로 구성 데이터 분류기(완전연결층) : 추출된 특성을 입력받아 최종적으로 ..
앞의 전처리 과정은 MNIST 데이터로 실습한 DNN 학습과정과 같음. 합성곱 네트워크 생성 class FashionCNN(nn.Module): def __init__(self): super(FashionCNN, self).__init__() self.layer1 = nn.Sequential( #1 nn.Conv2d(in_channels=1, out_channels=32, kernel_size=3, padding=1), #2 nn.BatchNorm2d(32), #3 nn.ReLU(), nn.MaxPool2d(kernel_size=2, stride=2) #4 ) self.layer2 = nn.Sequential( nn.Conv2d(in_channels=32, out_channels=64, kernel_si..
목차 1) CNN 기본 구성요소 2) Pytorch와 CNN 3) CNN 모델 구성 Convolutional Neural Network CNN 역시 변형된 backpropagation 알고리즘으로 학습 최소한의 전처리 만으로도 픽셀로부터 시각적 패턴을 인식 1) CNN 기본 구성요소 ** Stride stride는 필터를 얼마만큼 움직여주는가를 의미. 기본적으로 stride는 1이지만, 테스트에 따라서 stride를 1 이상의 값으로 설정할 수도 있음 **stride와 padding을 적용했을 때의 최종 -입력데이터 높이 : H -입력 데이터 너비 : W -필터 높이 : FH -필터 너비 : FW -Stride 크기 : S -패딩 사이즈 : P -output 너비 = (W + 2P - FW) / S +1..
Image Convolution 이미지는 1차원 형태의 데이터로 만들면, 공간적/지역적 정보가 손실되고, 별도의 추상화 과정 없이 바로 raw data로 연산 과정에 넣어지므로 학습 효율성이 저하됨. → CNN ** 이 자리에 이 kernel만큼의 component가 얼마나 들어있냐 ** padding = 이미지와 heat map의 사이즈가 같게 나오도록 값을 채워주는 것. → padding의 크기는 kernel의 크기가 결정, 이왕이면 양 옆 위아래로 대칭되게. 주어진 kernel의 모양이 이미지 안의 각각의 위치에서 얼마나 강하게 들어가 있는지를 구하는게 convolution