Vision AI/미분류
-
2023. 4. 16 기준 https://github.com/open-mmlab/mmpretrain/tree/mmcls-0.x openmmlab의 mmclassification이 mmpretrain으로 바뀐 것 같습니다. 간략히 살펴본 결과 매커니즘은 크게 바뀌지 않은 것 같으니, 일단은 dev-1.x 브랜치의 config 작성법 위주로 작성해보려고 합니다. mmcls-0.x 브랜치로도 작성할 수 있지만, dev 브랜치의 특정 기능 때문에 dev 브랜치를 사용중입니다. dev와 master 브랜치의 큰 틀은 다르지 않으니 걱정하지 않으셔도 됩니다. mmpretrain 또한 거의 구조가 같습니다. 추후에 mmpretrain도 올려보도록 하겠습니다. 저만의 편한 방법을 찾아서 쓰고 있는 방법이니, 참고자료 ..
mmclassification config 작성법2023. 4. 16 기준 https://github.com/open-mmlab/mmpretrain/tree/mmcls-0.x openmmlab의 mmclassification이 mmpretrain으로 바뀐 것 같습니다. 간략히 살펴본 결과 매커니즘은 크게 바뀌지 않은 것 같으니, 일단은 dev-1.x 브랜치의 config 작성법 위주로 작성해보려고 합니다. mmcls-0.x 브랜치로도 작성할 수 있지만, dev 브랜치의 특정 기능 때문에 dev 브랜치를 사용중입니다. dev와 master 브랜치의 큰 틀은 다르지 않으니 걱정하지 않으셔도 됩니다. mmpretrain 또한 거의 구조가 같습니다. 추후에 mmpretrain도 올려보도록 하겠습니다. 저만의 편한 방법을 찾아서 쓰고 있는 방법이니, 참고자료 ..
2023.04.16 -
VGGnet은 2014년 ISLVRC 대회 (ImageNet 이미지 인식 대회)에서 준우승을 차지한 모델입니다. 이 글에서는 VGG16과 VGG19의 구조를 알아봅니다. 모든 컨볼루션 레이어의 커널사이즈는 3x3이며, 제로패딩이 적용되었습니다. VGG16은 5개의 블록 / 각 블록은 2, 2, 3, 3, 3개의 컨볼루션 레이어 / 각 블록의 컨볼루션 레이어는 64, 128, 256, 512, 512개의 필터수를 가지고 있습니다. 각 블록의 마지막단에는 maxpooling이 적용되었습니다. 이후에 4096개의 hidden layer 두 층이 있고, 1000개의 아웃풋을 softmax 활성화함수로 출력합니다. VGG19는 5개의 블록 / 각 블록은 2, 2, 4, 4, 4개의 컨볼루션 레이어 / 각 블록의 ..
VGGnet의 구조 + keras codeVGGnet은 2014년 ISLVRC 대회 (ImageNet 이미지 인식 대회)에서 준우승을 차지한 모델입니다. 이 글에서는 VGG16과 VGG19의 구조를 알아봅니다. 모든 컨볼루션 레이어의 커널사이즈는 3x3이며, 제로패딩이 적용되었습니다. VGG16은 5개의 블록 / 각 블록은 2, 2, 3, 3, 3개의 컨볼루션 레이어 / 각 블록의 컨볼루션 레이어는 64, 128, 256, 512, 512개의 필터수를 가지고 있습니다. 각 블록의 마지막단에는 maxpooling이 적용되었습니다. 이후에 4096개의 hidden layer 두 층이 있고, 1000개의 아웃풋을 softmax 활성화함수로 출력합니다. VGG19는 5개의 블록 / 각 블록은 2, 2, 4, 4, 4개의 컨볼루션 레이어 / 각 블록의 ..
2021.08.23 -
평소에 Convolution Neural Network (CNN)을 자주 들여다봅니다. 그러다보니 궁금증은 한없이 많고, 저처럼 CNN을 연구, 공부하면서 궁금해하실 분도 많을 것 같아 몇 자 끄적여봅니다. 어디까지나 광활한 정보의 바다에서 정답인지 아닐지 모를 정보를 바탕으로 정립을 해본 것이니, 내용이 틀리다면 언제든 말씀해주셔도 좋습니다. Convolution (합성곱) 아래 이미지에서, 초록색의 이미지에 노란색의 3X3 필터를 왼쪽위부터 오른쪽아래까지 한칸씩 합성곱을 한다. 그러면 핑크색의 feature가 나옵니다. 여기까지는 이론입니다. 실제 합성곱 필터를 적용하여 feature를 시각화해보면, 이런 양상을 띄게 됩니다. CNN은 입력에 가까울수록 edge, 색깔 등 큰 특징을 보고 출력에 가까..
Convolution layer에 대한 고찰평소에 Convolution Neural Network (CNN)을 자주 들여다봅니다. 그러다보니 궁금증은 한없이 많고, 저처럼 CNN을 연구, 공부하면서 궁금해하실 분도 많을 것 같아 몇 자 끄적여봅니다. 어디까지나 광활한 정보의 바다에서 정답인지 아닐지 모를 정보를 바탕으로 정립을 해본 것이니, 내용이 틀리다면 언제든 말씀해주셔도 좋습니다. Convolution (합성곱) 아래 이미지에서, 초록색의 이미지에 노란색의 3X3 필터를 왼쪽위부터 오른쪽아래까지 한칸씩 합성곱을 한다. 그러면 핑크색의 feature가 나옵니다. 여기까지는 이론입니다. 실제 합성곱 필터를 적용하여 feature를 시각화해보면, 이런 양상을 띄게 됩니다. CNN은 입력에 가까울수록 edge, 색깔 등 큰 특징을 보고 출력에 가까..
2021.08.18 -
CIFAR-10 데이터 학습하는 방법을 조금 자세히 보겠습니다. 비교적 간단한 방법을 포스팅 한 것이며, 추후 다른 방법으로도 포스팅 하겠습니다. 먼저 제너레이터를 정의 하겠습니다. 제너레이터는 쉽게 설명하면 데이터를 한번에 메모리에 저장해놓고 한번에 학습하는 것이 아니라, 표현식을 정의만 해놓고 가용 메모리 범위 내에서 조금씩 반복하여 가져오는 아이입니다. 먹을 것으로 예를 들면, 사과 1000개를 먹어야한다고 가정할 때, 한번에 먹을 수 없겠죠?? 우리 위의 용량에는 너무 버겁습니다. 그래서 1개씩 1000일 나눠먹는 것과 같은 이치입니다. 또 써야하는 이유가 여러가지 있는데... 자세한 설명은 다음시간에 하도록 하겠씁니다. from tensorflow.keras.preprocessing import..
tf.keras로 CIFAR-10 데이터 학습하기CIFAR-10 데이터 학습하는 방법을 조금 자세히 보겠습니다. 비교적 간단한 방법을 포스팅 한 것이며, 추후 다른 방법으로도 포스팅 하겠습니다. 먼저 제너레이터를 정의 하겠습니다. 제너레이터는 쉽게 설명하면 데이터를 한번에 메모리에 저장해놓고 한번에 학습하는 것이 아니라, 표현식을 정의만 해놓고 가용 메모리 범위 내에서 조금씩 반복하여 가져오는 아이입니다. 먹을 것으로 예를 들면, 사과 1000개를 먹어야한다고 가정할 때, 한번에 먹을 수 없겠죠?? 우리 위의 용량에는 너무 버겁습니다. 그래서 1개씩 1000일 나눠먹는 것과 같은 이치입니다. 또 써야하는 이유가 여러가지 있는데... 자세한 설명은 다음시간에 하도록 하겠씁니다. from tensorflow.keras.preprocessing import..
2021.02.11 -
CIFAR-10 데이터 분석을 해보겠습니다. CIFAR-10은 대표적인 이미지 분류의 벤치마크 데이터셋입니다. 저는 CIFAR-10을 깃헙에 올려주신 github.com/YoongiKim/CIFAR-10-images 이 분의 레포지토리에서 데이터를 다운받아 작성하였습니다. from glob import glob import os import cv2 import numpy as np import matplotlib.pyplot as plt # base_dir은 현재 CIFAR-10이 들어있는 폴더로 지정해줍니다. base_dir = './' train_data = glob(os.path.join(base_dir, 'train\\*\\*.jpg')) test_data = glob(os.path.join(ba..
CIFAR-10 데이터 분석하기CIFAR-10 데이터 분석을 해보겠습니다. CIFAR-10은 대표적인 이미지 분류의 벤치마크 데이터셋입니다. 저는 CIFAR-10을 깃헙에 올려주신 github.com/YoongiKim/CIFAR-10-images 이 분의 레포지토리에서 데이터를 다운받아 작성하였습니다. from glob import glob import os import cv2 import numpy as np import matplotlib.pyplot as plt # base_dir은 현재 CIFAR-10이 들어있는 폴더로 지정해줍니다. base_dir = './' train_data = glob(os.path.join(base_dir, 'train\\*\\*.jpg')) test_data = glob(os.path.join(ba..
2021.02.04 -
교차 검증 기법 중 하나로, K개의 데이터 셋을 만들어서 K번만큼 각 셋에 학습과 검증평가를 반복적으로 수행하는 방법. 예를 들어, 150장의 영상 데이터로 5 fold cross validation을 한다. 그럼 training data는 120장, validation data는 30장이 된다. 5-fold는 전체 데이터 수를 5로 나눠서 training : validation = 4 : 1 , 10-fold는 전체 데이터 수를 10으로 나눈 후 training : validation = 9 : 1 이런 식으로 나뉘어진다. 나눈 후, K번 만큼 training data, validation data를 바꿔가며 검증을 한다. 이런식으로 5번 검증을 수행하고, 5개의 예측 결과를 평균하여 k-fold va..
K-fold cross validation교차 검증 기법 중 하나로, K개의 데이터 셋을 만들어서 K번만큼 각 셋에 학습과 검증평가를 반복적으로 수행하는 방법. 예를 들어, 150장의 영상 데이터로 5 fold cross validation을 한다. 그럼 training data는 120장, validation data는 30장이 된다. 5-fold는 전체 데이터 수를 5로 나눠서 training : validation = 4 : 1 , 10-fold는 전체 데이터 수를 10으로 나눈 후 training : validation = 9 : 1 이런 식으로 나뉘어진다. 나눈 후, K번 만큼 training data, validation data를 바꿔가며 검증을 한다. 이런식으로 5번 검증을 수행하고, 5개의 예측 결과를 평균하여 k-fold va..
2019.11.09