본문 바로가기

Deep Learning & Machine Learning/Computer Vision

(7)
UNet Image segmentation을 위한 알고리즘 중 하나* 이미지 세그멘테이션: 이미지의 모든 픽셀이 어떤 카테고리에 속하는지 분류하는 것 "U-Net: Convolutional Networks for Biomedical Image Segmentation"이라는 논문에서 제안한 구조이다오토인코더(autoencoder)와 같은 인코더-디코더(encoder-decoder) 기반 모델에 속한다 보통의 경우인코딩 단계에서, 입력 이미지의 특징을 포착할 수 있도록 채널의 수를 늘리면서 차원을 축소해 나가며디코딩 단계에서, 저차원으로 인코딩된 정보만 이용하여 채널의 수를 줄이고 차원을 늘려서 고차원의 이미지를 복원한다하지만, 이러한 문제점이 발생한다인코딩 단계에서 차원 축소를 거치면서 이미지 객체에 대한 자세한 ..
[코드없는 프로그래밍] 딥러닝, CNN options 이전 포스팅에서는 pytorch의 CONV2D 인자들 중 in_channels, out_channel, kernel_size에 대해 알아보았다. 이번에는 stride, padding, dilation에 대해 알아보고자 한다. padding 가로 224, 세로 224, 채널의 수가 3개인 인풋 이미지로부터 채널이 16개인 아웃풋 텐서를 만들려면, Conv2D의 파라미터는 ? in_channels = 3, out_channels = 16, kernel_size = 3 가로 222, 세로 222, 16개의 depth를 가지는 아웃풋 텐서가 나온다. (16 x 222 x 222) (만약, kernel_size가 5라면 가로 220, 세로 220, 16개의 depth를 가지는 아웃풋 텐서가 나올 것 (16 x 2..
[코드없는 프로그래밍] 딥러닝, CNN Depth Channel 이전 포스팅 요약 특정 이미지에 어떤 커널을 적용하느냐에 따라 서로 다른 특징이 강조된 이미지들이 아웃풋으로 나온다고 했다. 어떠한 이미지들은 세로 엣지들이 강조된 이미지가 나올수도 있고 어떤 이미지들은 가로 이미지가 강조된 이미지가 나올 수도 있다. 이렇게 만들어진 아웃풋 이미지들을 반복적으로 컨볼루션 연산을 다시 적용하면, 더 복잡한 수준의 피처를 뽑아내는 것이 가능하다. Low level feature들은 간단한 특징을 뽑아낼 수 있고, High level feature들은 복잡한 특징을 뽑아낼 수 있다. CNN에서의 Depth Channel Pytorch에서도 컨볼루션을 정의하는 클래스에 첫번째 두번째 인자가 input channel과 output channel이다. 예시: torch.nn.Con..
[코드없는 프로그래밍] 딥러닝 CNN CNN(Convolutional Neural Network) FC(Fully Connected Layer)는 이미지상에 공간정보 없이 하나의 벡터로만 보고 그 픽셀 값들을 NN에 넣는다. 이러한 방식은, 학습 데이터가 충분히 많으면 트레이닝은 이루어지지만 비효율적일수밖에 없음 이미지는 그 데이터 자체로 눈의 위치, 코의 위치 등 공간적인 의미를 가지지만 이를 무시하기 때문 따라서, Convolution이라는 연산을 Neural Network와 조합함으로써 추출이 가능하다. 이러면 수달 이미지를 수달로 인식하고, 호랑이 이미지를 호랑이로 잘 인식할 수 있게 된다. Convolution ? 덧셈, 뺄셈, 곱하기와 같은 아주 간단한 연산이다. - 이미지(흰색), 연산(녹색), 커널(분홍색) 이미지와 커널의 연..
[코드없는 프로그래밍] 딥러닝 이미지 전처리 CIFAR 데이터셋 x Pytorch ToTensor() PIL 이미지 또는 ndarray를 텐서로 변환하고 그에 따라 값의 크기를 조정합니다. 이 변환은 torchscript를 지원하지 않습니다. PIL 이미지가 속하는 경우 [0, 255] 범위의 PIL 이미지 또는 numpy.ndarray(H x W x C)를 [0.0, 1.0] 범위의 모양(C x H x W)의 torch.FloatTensor로 변환합니다. 모드(L, LA, P, I, F, RGB, YCbCr, RGBA, CMYK, 1) 중 하나 또는 numpy.ndarray에 dtype = np.uint8이 있는 경우 다른 경우에는 텐서가 크기 조정 없이 반환됩니다. 출처: https://pytorch.org/vision/main/generate..
[코드없는 프로그래밍] 딥러닝, 컴퓨터비전, 이미지 읽기 Computer vision 분야에서는 '컴퓨터가 이미지를 어떻게 읽는지'를 먼저 이해해야 한다. MNIST 데이터셋을 이용하여, 컴퓨터가 이미지를 읽어들이는 방식을 이해하기 인간은 손글씨 그림을 이미지로 잘 인식하지만, 컴퓨터는 각각 픽셀의 값을 숫자로 인식한다. 가장 밝은 부분은 255, 아무 value가 없는 부분은 0 CIFAR 데이터셋을 이용하여, 컴퓨터가 이미지를 읽어들이는 방식을 이해하기 컬러 이미지의 .shape을 출력해보면 (32, 32, 3)이다. 가로가 32 픽셀, 세로가 32 픽셀이고 컬러이기 때문에 RGB 총 3개의 채널을 가진다는 것을 의미 그렇게 되면 Neural Network의 input_size는 32 x 32 x 3 = 3072가 되는데, 이게 이미지 벡터의 크기이다. 이..
컴퓨터 비전 개요 Computer vision 컴퓨터 공학의 한 분야로 컴퓨터 시각(vision) 데이터를 처리하는 분야로 영상 처리와 패턴 인식을 포함한다. 어떻게 적용되는가? 이미지의 각 픽셀을 2D 벡터로 표현하고, 2D 벡터를 사용하여 이미지 데이터를 조작하고 분석한다. 2D 벡터 기반의 기계 학습 알고리즘을 사용하여 패턴 인식 문제를 해결하는 데에도 활용된다. 사용 예시 손글씨 인식 얼굴 및 물체 인식 ex. 아이폰의 Face ID: 적외선 카메라를 이용한 보안성 높은 얼굴 인식 가장 흔히 볼 수 있는 컴퓨터 비전으로, 휴대폰 카메라로 할 수 있는 QR 코드/바코드 스캐닝, 페이스북의 얼굴 인식 등 생각보다 많은 일상생활 분야에 사용된다. 모션 트래킹: 광학식 모션 캡쳐, 립모션을 이용한 손의 움직임 감지, 오큘..