AI 개발 공부 공간

AI, 머신러닝, 딥러닝, Python & PyTorch, 실전 프로젝트

딥러닝/딥러닝: 이미지 분류 10

CNN 사전 학습모델(Pre-trained Models)

1. 사전 학습 모델1.1. 사전학습 AI 모델이란사전 학습된 AI 모델은 대규모 데이터셋을 사용해 특정 작업을 수행 하도록 미리 훈련된 신경망 알고리즘입니다. 이러한 모델은 초기 가중치와 바이어스를 제공하여, 특정 작업에 맞게 쉽게 미세 조정할 수 있습니다. AI 모델을 처음부터 구축하는 대신, 개발자는 사전 학습된 모델을 사용하여 요구사항에 맞게 조정할 수 있습니다. 1.2 일반 모델 vs 사전 학습 모델 ※ 일반 모델1. 데이터 준비모델 학습에 사용할 데이터를 준비합니다. 이 과정에는 데이터 수집, 전처리, 분할(훈련/검증/테스트 데이터셋)이 포함됩니다. 2. 모델 초기화모델의 구조를 정의하고 초기 가중치를 설정합니다. 초기 가중치는 일반적으로 무작위로 설정됩니다. 3. 모델 학습데이터를 사용하여 ..

이미지 증강 1

1. 라이브러리 로드import torchimport torchvision.transforms as transformsfrom PIL import Imageimport numpy as npimport matplotlib.pyplot as pltimport albumentations as Afrom albumentations.pytorch import ToTensorV2  2. 이미지를 시각화하는 함수 정의def show_image(img, title): plt.imshow(img) plt.title(title) plt.axis('off') 3. 뒤집기 (Flip)3.1. torchvision을 활용하여 원본이미지 좌우 뒤집기 적용HorizontalFlip과 VerticalFlip은 이미지..

Fashion MNIST 이미지 분류 실습

1. Fashion MNIST 이미지 분류1.1. 라이브러리 로드import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.model_selection import train_test_splitfrom tqdm import tqdmimport torchimport torch.nn as nnimport torch.nn.functional as Ffrom torchvision import transformsfrom torch.utils.data import DataLoader, Dataset 1.2.train 데이터셋 로드 및 구조 확인train_df = pd.read_csv('train.csv')train_df.head(..

데이터 증강(Data Augmentation)

1. 데이터 증강(Data Augmentation) 이란?데이터 증강(Data Augmentation)은 학습 이미지 데이터의 다양성을 인 위적으로 증가시켜 모델의 성능을 향상시키고, 과적합(오버피팅) 문제를 완화하는 데 큰 도움이 됩니다. 특히, 컨볼루션 신경망(CNN)과 같은 모델에서는 다양하고 충분한 양의 훈련 데이터가 성능을 결정짓는 중요한 요소입니다. 하지만, 고품질의 이미지 데이터를 충분히 확보하는 것은 많은 경우에 어려운 일입니다. 이를 해결하기 위해 데이터 증강은 원본 이미지 데이터에 다양한 변형을 적용함으로써 마치 더 많은 데이터를 가진 것과 같은 효과를 내며 학습을 진행합니다. 이 과정에서 각 이미지에는 회전, 크기 조정, 색상 조정, 노이즈 추가 등의 변형이 무작위로 적용됩니다. 이는..

PyTorch의 torchvision 패키지

1. PyTorch torchvision 패키지 소개PyTorch는 강력한 딥러닝 프레임워크로, 많은 연구자와 개발자들이 이미지 처리와 관련된 작업을 수행할 때 사용합니다. PyTorch의 서브 패키지 중 하나인 torchvision은 이미지 데이터셋의 "로드"와 "변환 " 을 간편하게 할 수 있도록 돕는 도구입니다.torchvision 패키지는 다음과 같은 주요 구성 요소로 이루어져 있습니다.1) Datasets(데이터셋): 여러 유명한 이미지 데이터셋을 손쉽게 불러올 수 있는 기능을 제공합니다. 예를 들어, CIFAR-10, ImageNet, MNIST 등 다양한 데이터셋을 지원합니다. 2) Transforms(변환): 이미지 데이터를 전처리하고 변환할 수 있는 다양한 기법을 제공합니다. 이는 데이터..

평탄화 레이어(Flatten Layer)와 완전 연결 레이어(Fully Connected Layer)

1.평탄화 레이어 (Flatten Layer)  1.1. 평탄화 레이어 (Flatten Layer)란?CNN의 구조에서 평탄화 레이어는 신경망이 처리하는 다차원의 특징 맵을 일차원 벡터로 변환하는 역할을 하며, 이는 다음에 나오는 완전 연결 레이어(Fully Connected Layer)에 적합한 형태로 데이터를 준비하는 과정입니다. 평탄화는 구조적인 정보를 1차원 데이터로 단순화하여, 완전 연결 레이어가 이를 분석하고 학습할 수 있도록 합니다. 위 이미지에서 평탄화(Flatten)를 적용했더니 Max Pooling을 거친 후의 특징 맵을 일렬로 나열합니다. 이 과정은 특징 맵을 1차원 벡터로 변환하여, 완전 연결 레이어(Fully Connected Layer)가 처리할 수 있도록 준비합니다. 평탄화된 ..

풀링(pooling) 기법: Max, Min, Average

1.Pooling Layer(풀링층)CNN의 구조 내에 자리잡고 있는 풀링(Pooling) 층은 신경망이 다루는 이미지의 크기를 줄이는 역할을 하면서도, 중요한 특징을 보존하는 기능을 합니다. 이미지에 나와 있는 것처럼, 풀링 레이어는 보통 여러 개의 합성곱+ReLU 레이어 뒤에 오며, 특징 추출기(Feature Extractor)의 한 부분을 구성합니다. 풀링 레이어는 학습 가능한 매개변수를 가지고 있지 않다는 점이 특징입니다. 즉, 풀링은 순전히 고정된 연산을 수행하며, 네트워크의 학습 과정에서 업데이트되지 않습니다. 합성곱 레이어가 이미지로부터 특징들을 감지해내면, 풀링 층은 이러한 특징들의 가장 강력한 신호만을 남기고 나머지는 버림으로써 데이터의 차원을 축소시킵니다. 1.1. Max Pooling..

CNN의 핵심 기술: 스트라이드(Stride)와 패딩(Padding)

1. 비선형성신경망이 선형 변환만을 사용하면, 그 능력은 매우 제한적입니다. 데이터의 복잡한 패턴과 관계를 학습하기 위해서는 비선형성이 필수적인데, 이는 신경망에게 다차원 공간에서 데이터를 비틀고 구부릴 수 있는 능력을 부여합니다. CNN에서도 이 비선형성은 매우 중요한데, 합성곱 레이어의 결과에 비선형 함수를 적용하여 더욱 복잡 한 특성을 추출할 수 있게 합니다. 합성곱 후에 주로 사용되는 비선형 함수 중 하나가 ReLU(Rectified Linear Unit) 입니다. ReLU 함수는 각 픽셀 값에 대해 단순히 음수를 0으로 바꾸는 역할을 합니다. 이 작은 변화는 신경망에 큰 영향을 미치는데, 이를 통해 네트워크가 음수 데이터를 무시하고 양수에 더 중점을 둘 수 있게 되기 때문입니다. ReLU의 적용..

CNN 기초

1. CNN 기초1.1. CNN이란컨볼루셔널 신경망(Convolutional Neural Network, CNN)은 생물학적 인식 과정과 컴퓨터 과학이 결합된 것처럼 보이며, 주로 이미지 인식과 처리에 사용되는 딥러닝의 한 유형입니다. 이 네트워크는 특히 시각적 데이터의 계층적 특성을 효과적으로 학습할 수 있는 구조를 갖추고 있어, 이미지를 '보는' 방식을 모방하여 작동합니다. CNN은 이미 지의 형태나 색상과 같은 구체적인 특성을 이용해 사물을 식별합니다. 우리의 뇌가 정보를 처리하는 방식과 비슷합니다. 예를 들어, 커피잔을 보았을 때 우리는 그 손잡이와 모양을 통해 커피잔임을 알아차립니다. 마찬가지로, CNN도 저수준의 세부 사항부터 시작해 점차적으로 더 복잡하고 추상적인 개념을 학습합니다. 이러한 ..