본문 바로가기

2020. 11. 28. 23:17
시각에 대한 생각들 이미지는 근본적으로 무엇일까? 영상은? 사람에게 있어 시각의 핵심은 뭘까? - 사실 : 색깔, 경계, 재질, 방향(위치), 원근, 명암 - 지식 : 접혀있다, 푹신하다, 가려졌다, 오염되었다, 텍스트이다 등 어떤 물체인지 알고 어떤 것을 의미하는 지 아는 것 - 기억 : 경험, 그곳에 있을 것이라는 기대, 자동으로 연상되는 것 우선 경계(edge)가 핵심인 것 같다. 색이나 재질, 명암에 대한 정보가 없어도 시각은 성립하지만 물체 간에 경계가 없다면 그 물체를 보고 있다고 할 수 없다. 색깔, 재질, 명암은 경계를 구성하거나 알려주는 요소로서 작용한다. 원근은 나에게서 얼마나 떨어져있는지 아는 것. 시각 체계에서 원근감을 뺀다면 근본적으로 다른 시각이 되므로 원근도 핵심 요소인 것 같다. 위치는 컴퓨터나..
2020. 11. 7. 06:34
[강연] 컴퓨터 비전과 딥러닝의 현재와 미래 by 서울대학교 한보형 교수님 / 카오스재단 비전 : 이미지나 비디오의 내용을 컴퓨터로 자동으로 이해하는 기술 딥러닝 : 기계학습의 한 종류로, 많은 층을 가지고 있는 신경망을 통한 학습방법. 다른 기계학습법과의 차이점은 데이터의 표현법을 학습한다는 점. 기존에는 컴퓨터가 이해할 수 있는 벡터나 행렬로 만들어주어야 학습을 시작하는데, 딥러닝은 데이터 자체를 주면 데이터로부터 무엇을 중요하게 봐야 하는지 알아채서 데이터를 표현하는 방법까지도 학습함. CNN : 합성곱 신경망. 2차원의 데이터를 학습할 때 주로 사용. Convolutoin = filter. 이미지를 변환시키는 것. RNN : 재귀적 신경망. 이미지보다는 시간에 따라 데이터가 달라지는 경우(비디오, 주식, 텍스트 등)에 사용. 신경망의 출력이..
2020. 11. 3. 04:11
YOLO object detection for autonomous driving YOLO(You Only Look Once) 알고리즘은 이미지에서 한 번의 CNN 연산으로 multiple object의 bounding box를 찾아낼 수 있다. 과제 : 자율주행 환경에서의 object detection task. 목표 : 주어진 주행 환경 이미지에서 object의 bounding box를 그리고 카테고리(클래스)를 알아내는 것. 이미지 전처리 from PIL import Image image = Image.open(/path/) resized = image.resize((608, 608), Image.BICUBIC) image_data = np.array(resized, dtype='float32') image_data /= 255. 그리드화 이미지를 인풋으로 받아 19*19의 그리..
2020. 10. 29. 22:59
[논문] Video object segmentation using space-time memory networks Author : Seoung Wug Oh, Joon Young Lee, Ning Xu, Seon Joo Kim 1. 모델 기본 구조 비디오에서 움직이는 물체를 tracking 하는 모델을 만들 때 어떤 프레임의 정보를 참고하는 것이 가장 좋을까? 첫 번째 프레임에는 오브젝트의 정확한 경계선이 주어지기 때문에 reliable 하고, 직전 프레임은 가장 유사한 정보를 담고 있기 때문에 accurate 하다. 그래서 두 프레임을 모두 이용해 현재 프레임에서의 오브젝트를 찾는 것이 효과적이라고 알려져 있다. 이 연구에서는 더 나아가 첫 번째와 직전 프레임뿐 아니라 5 프레임 간격으로 수많은 프레임을 학습해 정확도를 높이는 방법을 개발하였다. 현재 프레임이 쿼리로서 메모리에 저장된 데이터를 바탕으로 오브젝트를 찾..
2020. 10. 5. 00:27
Image style transfer 이미지를 원하는 스타일로 바꿔주는 image style transfer에서는 정해진(또는 이미 학습된) DNN 모델을 사용한다. 모델의 파라미터를 업데이트하는 대신 generated image를 랜덤하게 초기화시켜놓고 이미지의 픽셀값을 업데이트하면서 content image, style image의 특징을 담은 이미지로 변화시킨다. import scipy content = scipy.misc.imread("content_image.jpg") style = scipy.misc.imread("style_image.jpg") content = np.reshape(content, ((1,) + content.shape)) style = np.reshape(style, ((1,) + style.shape)) ge..
2020. 9. 28. 20:36
Sign language image recognition (TensorFlow) Sign Language Dataset 수화로 숫자를 표현한 1200개의 이미지 데이터셋이다. 10%인 120개를 test set으로 두고 나머지는 training set으로 활용한다. 인풋 이미지는 64*64 사이즈로 화질을 낮춰 계산량을 줄여주었다. 훈련용 인풋 데이터 로드 시 (1080, 64, 64, 3) 형태인데, reshape함수를 이용해 샘플을 구분하는 index 0만 남기고 나머지는 flatten 하여 (1080, 12288) 형태로 만든다. 그 후 이미지 하나를 하나의 column으로 만들기 위해 transpose하고, 정규화를 위해 데이터를 255로 나누어준다(zero mean). X_train, Y_train, X_test, Y_test, classes = load_dataset() ..
2020. 9. 23. 16:10
Implementing convolution, padding, pooling, stride framework 없이 convolution 구현하기. Padding array = np.random.randn(3,3) pad = 1#(3,3) shape array에 padding을 1씩 줌 np.pad(array, (pad,pad), mode='constant', constant_values=(0,1)) # output [[ 0. 0. 0. 0. 1. ] [ 0. 0.16003707 0.87616892 0.31563495 1. ] [ 0. -2.02220122 -0.30620401 0.82797464 1. ] [ 0. 0.23009474 0.76201118 -0.22232814 1. ] [ 0. 1. 1. 1. 1. ]] * constant_values는 optional. 명시하지 않으면 zero-..
2020. 9. 9. 04:50
forward/back propagation 코드 구현 시 헷갈렸던 내용 정리 나중에 또 궁금할까봐 적어놓는데 나만 알아볼 수 있을듯. 1) Z = W.T · X에서 왜 transpose를 해야하는가? - data matrix X에서 하나의 열에 하나의 샘플이 배정되어있는데, W에는 데이터 샘플 하나가 가지는 여러 feature에 대한 w값들이 column vector로 나열되어있기 때문에 X와 매칭해서 dot product를 수행하려면 transpose해주어야 한다. 2) cost를 계산할 때는 np.sum으로 각 샘플의 loss를 더한 다음 m(샘플 개수)으로 나눠줘야 한다. 샘플이 하나가 아니니까 그냥 loss funtion을 통과시키면 각 샘플의 loss들이 벡터로 나오기 때문에 그걸 더하고 나눠서 하나의 실수값으로 만드는 것. 1) w에 대한 derivative (dw)를..
2020. 8. 25. 20:36
Face recognition using model-encoded vector Siamese Network 두 입력데이터를 같은 네트워크에 통과시켜 다른 output을 얻어낸다. 마지막에 fully connected layer를 두어 output vector를 얻어내면 데이터베이스에 인코딩된 벡터를 저장하여 메모리 사용량을 줄일 수 있다. 얼굴 인식 태스크에서는 미리 얼굴 이미지들을 벡터로 인코딩해 저장해놓고, 테스트 환경에서 새로 인풋이 들어오면 같은 네트워크 모델을 이용해 벡터로 인코딩한 후 이를 데이터베이스와 비교한다. image = cv2.imread(image_path, 1) image_encoded = model.predict(np.array([image])) min = 100 for name, encoding in database.items():# 데이터베이스 내 인코..
2020. 8. 20. 14:04
Coursera 딥러닝 과정 수강 - 배운 내용 정리 컴퓨터 비전에 관심을 가지게 되면서 딥러닝 분야를 공부해야겠다고 생각해서 coursera의 심층학습 특화과정(Deep Learning Specialization)을 수강하였다. 강좌 1) Neural Networks and Deep Learning - 신경망 및 딥 러닝 강좌 2) Improving Deep Neural Networks - 하이퍼파라미터 튜닝, 정규화, 그리고 최적화 강좌 3) Structuring Machine Learning Projects - 머신 러닝 프로젝트 구축하기 강좌 4) Convolutional Neural Networks - 합성곱 신경망 (CNN) 강좌 5) Sequence Models - 시퀀스 모델 Neural Network란? 우리는 인풋 x가 주어졌을 때 결과값..