본문 바로가기

AI/딥러닝12

ViT 모델로 YOLO 미검출 객체 실험-1 이번에 비전트렌스포머를 논문리뷰한 후 더불어서 모델에 대한 지식적인 측면과 코드단에서돌려보는것이 피드백이었는데 ViT모델을 읽은 후 모델 특징을 이용해서 간단하게 돌려보려고 한다. 일단 ViT의 모델에 대해 크게 기억해야할 부분은 매우 큰 데이터셋으로 사전학습을 했기때문에 큰 모델이라는점 작은 모델로 파인튜닝시 더 좋은 성능을 낸다는 점이다. 조금 더 딥하게 들어가서 생각하면  ✅ ViT와 CNN의 근본적인 차이로CNN은 합성곱연산을 통해 국소적인(local)특징을 학습하지만ViT는 이미지를 패치로 나눈 후 Transformer의 Self-Attention을 사용하여 글로벌 관계를 학습한다.즉 cnn은 작은 영역에서 점진적으로 특징을 추출하는 반면, ViT는 전체 이미지에서 중요한 패치들을 한 번에 비교.. 2025. 2. 27.
[DL] 딥러닝 기초_파일 형식, open cv 1. 영상(Image) - 픽셀이 바둑판 모양의 격자로 나열되어 있는 형태(2차원 행렬) - 픽셀 :  이미지를 구성하는 가장 작은 단위 2. 그레이스케일 영상 - 흑백 사진처럼 색상 정보가 없는 영상 - 밝기 정보만으로 구성된 영상을 말합니다. - 밝기 정보는 총 256단계로 표현 가능(0 ~ 255) - 1픽셀은 8bit에 저장 = 1 byte - 가로크기 * 세로크기 = 이미지 용량     예) 28 * 28 = 784 bytes 3. 트루컬러 영상 - 컬러 사진처럼 색상 정보를 가지고 있기 때문에 다양한 색상을 표현할 수 있는 영상 - red, green, blue 색 성분을 사용하고 각 256단계로 표현합니다. - 픽셀을 표현할때 튜플로 표현합니다 -> (255, 255, 255) - 1픽셀은 .. 2024. 8. 7.
[DL] 포켓몬 분류해보기, 나와닮은 포켓몬 찾아보기 1. 포켓몬 분류Train데이터Validation 데이터이번에는 포켓몬데이터를 가지고 분류를할건데트레인 데이터는 149종, Vaildation은 898종이 들어있습니다.둘의 데이터가 달라서 898종을 149종으로 줄일거입니다.import osos.environ['KAGGLE_USERNAME'] = '닉네임'os.environ['KAGGLE_KEY'] = 'key'!kaggle datasets download -d thedagger/pokemon-generation-one-d는 몇번하니까 디렉토리에 같은 이름폴더가 있어서.. 삭제를 해주었습니다.그리고 나서 다시 압축파일 풀기!unzip -q /content/pokemon-generation-one.zip # 테스트로 쓸 데이터셋 api!kaggle dat.. 2024. 8. 1.
[ML/DL] 전이학습, 케글 데이터셋 활용해서 에일리언vs프레데터 예측하기 1. 전이 학습(Transfer Learning)하나의 작업을 위해 훈련된 모델을 유사 작업 수행 모델의 시작점으로 활용할 수 있는 딥러닝 접근법신경망은 처음부터 새로 학습하는 것보다 전이학습을 통해 업데이트하고 재학습하는 편이 더 빠르고 간편함전이학습은 여러 응용 분야(검출, 영상인식, 음성인식, 자연어처리, 검색분야...)에서 많이 사용됨2. 케글 데이터셋케글에 로그인우측 상단의 계정을 클릭 -> Your Profile -> 우측의 Setting 클릭 -> Account 에서 하단 API의 Create New API Token을 클릭 -> Kaggle.json 파일이 다운로드 됨kaggle.json 파일을 메모장으로 열기 {"username":"아이디","key":"내 고유 키 번호"}import o.. 2024. 7. 30.
[DL] CNN 모델만들기,MNLIST 분류 1. 간단한 CNN모델 만들기import torchimport torch.nn as nnimport torch.optim as optimCNN모델을 간단하게 만들기 위해서 필요한 모듈들을 임포트해주었씁니다. # 배치크기 * 채널 (1: 그레이스킬, 3: 트루컬러) *너비 * 높이inputs = torch.Tensor(1, 1, 28, 28)print(inputs.shape)#torch.Size([1, 1, 28, 28])괄호의 의미는 순서대로(배치크기, 채널, 너비, 높이) 입니다.# 첫번째 Conv2Dconv1 = nn.Conv2d(in_channels=1, out_channels=32, kernel_size=3, padding='same')out = conv1(inputs)print(out.shape.. 2024. 7. 28.
[DL] CNN 기초, 체험사이트 1. CNN(Convolutional Neural Networks)합성곱 인공 신경망전통적인 뉴럴 네트워크에 컨볼루셔널 레이어를 붙인 형태컨볼루셔널 레이어를 통해 입력 받은 이미지에 대한 특징(Feature)을 추출하게 되고, 추출한 특징을 기반으로 기존의 뉴럴 네트워크에 이용하여 분류  1-1. CNN을 사용하는 이유이미지를 분류할 때 DNN(Deep Neural Network)의 문제점일반적인 DNN은 1차원 형태의 데이터를 사용해야 함2차원 이상의 데이터가 입력되는 경우 FLATTEN 시켜서 한 줄로 데이터를 변환 후 넣어야 합니다.이미지(영상)의 공간적/지역적 정보가 손실CNN은 이미지를 그대로 (Raw Input)받음으로 공간적/지역적 정보를 유지1-2. CNN에서의 이미지데이터컬러 이미지는 3.. 2024. 7. 27.
[DL] 비선형 활성화 함수, 역전파 1. 비선형 활성화 함수(Activation Functions)신경망의 성능을 향상시키기 위해 사용합니다.선형 함수는 입력값과 가중치를 곱한 결과를 그대로 출력하기 때문에 신경망에서 여러개의 레이어를 사용한다면 최종 출력값은 입력값과 가중치의 선형 조합으로 표현되므로 입력 데이터의 비선형 관계를 표현할 수 없음신경망이 입력 데이터의 비선형 관계를 잘 학습할 수 있도록 하기 위해 비선형 활성화 함수가 필요.1-1. 시그모이드import numpy as npimport matplotilb.pylab as plt#함수만들기def sigmoid(x): return 1 / (1 + np.exp(-x)) x = np.arange(-5.0, 5.0, 0.1)y = sigmoid(x)plt.plot(x, y.. 2024. 7. 26.
[DL] 딥러닝_뉴런, 퍼셉트론,히든레이어... 1. 뉴런(neuron) 1-1. 생물학적 뉴런인간의 뇌는 수십억 개의 뉴런을 가지고 있음뉴런은 화학적, 전기적 신호를 처리하고 전달하는 연결된 뇌신경 세포1-2. 인공 뉴런1943년에 워렌 맥컬록, 월터 피츠가 단순화된 뇌세포 개념을 발표신경 세포의 이진 출력을 가진 단순한 개념 -> 논리 게이트라고 설명생물학적 뉴런의 모델에 기초한 수학적 기능으로 각 뉴런이 입력을 받아 개별적으로 가중치를 곱하여 나온 합계를 비선형 함수로 전달하여 출력을 생성 2. 퍼셉트론(Perceptron)1957년 인공 신경망의 가장 기본적인 형태로 처음 소개됨입력과 출력을 가진 단일 뉴런 모델을 기반초기에 기계 학습 알고리즘 중 하나로 이진 분류 문제를 해결하기 위해 설계2-1. 논리 회귀(단층 퍼셉트론)로 AND 문제 풀기.. 2024. 7. 25.
[ML/DL] 데이터로더의 의미를 확인 후 손글씨 데이터셋으로 테스트해보기 1. 데이터 로더(Data Loader)데이터 양이 많을 때 배치 단위로 학습하는 방법을 제공데이터를 쪼깬 후 그 작은 데이터를 학습시키고 다시 또 내보내는 역할을 합니다.  2. 손글씨 인식 모델 만들기import torchimport torch.nn as nnimport torch.optim as optimimport matplotlib.pyplot as pltfrom sklearn.datasets import load_digitsfrom sklearn.model_selection import train_test_split #디바이스를 쿠바로 사용할 수 있도록 하려고 합니다.device = 'cuda' if torch.cuda.is_available() else 'cpu'device #데이터셋 가져오.. 2024. 7. 25.
[ML/DL] 파이토치로 구현한 논리회귀 1. 단항 논리회귀(Logistic Regression)분류를 할 때 사용하며, 선형 회귀 공식으로부터 나왔기 때문에 논리회귀라는 이름이 붙여짐회귀 분석을 기반을 하지만 분류 문제에 사용주로 시그모이드 함수를 사용예측값을 0에서 1사이의 값으로 되도록 만듦0에서 1 사이의 연속된 값을 출력으로 하기 때문에 보통 0.5(임계값)을 기준으로 구분을 많이 합니다.S자 곡선을 그리므로 미분 가능한 형태를 가지고 있어서 최적화가 용이합니다.주어진 입력값이 특정 클래스에 속할 확률을 계싼. 이진 분류 문제를 해결논리회귀는 입력 데이터 x에 대한 선형 결합 계산 -> 그 결과를 시그모이드 함수에 통과 시켜서 출력갑을 0과 1 사이의 값으로 변환 -> 이 값을 특정 클래스에 속할 확률로 해석import torchimp.. 2024. 7. 23.
[ML/DL] 파이토치,텐서,GPU 에서는 용어 정말 중요하니까 용어!!!꼭!!! 숙지해두기1. 파이토치(Pytorch)텐서플로우와 함께 머신러닝, 딥러닝에서 가장 널리 사용되는 프레임워크초기에는 Torch라는 이름으로 Lua언어 기반으로 만들어졌으나, 파이썬기반으로 변경한 것이 파이토치입니다.뉴욕대학교와 페이북(메타)이 공동으로 개발하였고, 현재 가장 대중적이고 사용자가 많은 머신러닝, 딥러닝 프레임워크 입니다.import torchprint(torch.__version__) #파이토치 버전확인방법#2.3.0+cu1211-1. 스칼라(Scalar)하나의 상수를 의미 var1 = torch.tensor([10]) #텐서함수의 표현방법var1# tensor([10])type(var1)# torch.Tensorvar2 = torch.tenso.. 2024. 7. 18.
[ML/DL] 파이토치로 구현한 선형회귀_단항,최적화, 다중 선형회귀 1.단항 선형 회귀한 개의 입력이 들어가서 한 개의 출력이 나오는 구조import torchimport torch.nn as nn import torch.optim as optimimport matplotlib.pyplot as plttorch.manual_seed(2024)파이토치에서 토치 변수가 랜덤한값을 2024로 고정하는 것입니다 .데이터를 3개를 만들었습니다. 3번들어가는겁니다. 레이블이 3개! 1->2 2->43->6 이렇게 되는거죠x_train = torch.FloatTensor([[1], [2], [3]])y_train = torch.FloatTensor([[2] ,[4], [6]])print(x_train, x_train.shape)print(y_train, y_train.shape)시각.. 2024. 7. 18.