본문 바로가기

AI 컴퓨터 비전프로젝트/[ML,DL]머신러닝,딥러닝19

[DL] 케글을 활용한 강아지 품종 분류 지금까지는 1개 VS 2개 를 이용해서 문제를 풀었다면지금은 강아지 품종 분류를 여러개를 해볼 수 있습니다.!pip install timmimport osimport randomimport shutilimport matplotlib.pyplot as pltimport globimport torchimport torchvisionimport torch.nn.functional as Fimport timmimport torch.nn as nnimport torch.optim as optimfrom torchvision import datasets, models, transformsfrom PIL import Imagefrom tempfile import TemporaryDirectoryfrom time im.. 2024. 9. 24.
[DL] VGG19를 활용한 균열 VS 정상 벽 분류해보기 VGG19를 활용한 균열VS정상 벽 분류해보려고 합니다. 먼저 필요한 라이브러리를 임포트 해주도록 하겠습니다.import osimport globimport matplotlib.pyplot as pltimport torchimport torch.nn as nnimport torch.optim as optimimport torchvision.transforms as transformsimport torchvision.models as modelsimport numpy as npfrom torch.utils.data import DataLoader, Dataset, SubsetRandomSamplerfrom torchvision.datasets import ImageFolderfrom PIL import I.. 2024. 9. 20.
[DL] VGG19을 이용한 산타VS일반인 분류해보기 import osimport globimport matplotlib.pyplot as pltimport torchimport torch.nn as nnimport torch.optim as optimimport torchvision.transforms as transformsimport torchvision.models as modelsimport numpy as npfrom torch.utils.data import DataLoader, Dataset, SubsetRandomSamplerfrom torchvision.datasets import ImageFolderfrom PIL import Imagedata_root = '/content/drive/MyDrive/경로'device = torch.dev.. 2024. 9. 10.
[DL] AlexNet을 활용한 안경착용 vs 안경 미착용 구분/완료 이번에는 알렉스넷을 활용해서 안경착용, 미착용을 구분하려고합니다.받은 이미지를 보면 사진 위에 글씨가 있었는데 그 부분을 하나하나 자를수있겠지만 양이 많을때는 사실상 그러기 너무 힘드니까 크롭하는 코드까지 추가해서 예제를 진행해보려고 합니다. import osimport globimport matplotlib.pyplot as pltimport torchimport torch.nn as nnimport torch.optim as optimimport torchvision.transforms as transformsimport torchvision.models as modelsfrom torch.utils.data import DataLoader, Datasetfrom torchvision.datasets.. 2024. 9. 8.
[DL] AlexNet을 활용한 <깔끔한 방 VS 지저분한 방> 분류하기 [DL] 컴퓨터 비전 데이터셋 활용링크 (tistory.com)를 이용해서 데이터셋을 활용할 수 있지만 AlexNet을 이용하면 연습해보고 공부하기 좋은 데이터셋을 이용해서 프로젝트를 해보려고 합니다. 각 train, test, validation 데이터들을 강사님이 주셨고, 파일을 나눠서 작업을 했습니다.AlexNet자체로는 전이학습이 가능하니 다음으로 덧데어서 받은 데이터로 예측을 해보려고 합니다. 필요한 라이브러리 임포트import osimport globimport matplotlib.pyplot as pltimport torchimport torch.nn as nnimport torch.optim as optimimport torchvision.transforms as transformsimpo.. 2024. 8. 26.
[DL] 컴퓨터 비전 데이터셋 활용링크 1. 컴퓨터 비전인공지능(AI)의 한 분야로, 컴퓨터와 시스템을 통해 디지털 이미지, 비디오 및 기타 시각적 입력에서 의미 있는 정보를 추출한 다음에 이러한 정보를 바탕으로 작업을 실행하고 추천할 수 있게 하는 것AI -> 생각컴퓨터 비전 -> 보기, 관찰 2. 컴퓨터 비전과 데이터셋컴퓨터 비전의 모델은 데이터의 모음(일반적으로 이미지, 비디오, 시각적 정보)을 학습데이터셋은 모델의 성능을 결정하는데 중요(양이 많아야하고, 품질이 좋아야 합니다) -> 데이터셋의 크기는 모델이 학습 중에 본 예제의 수를 나타내기 때문입니다.데이터셋의 품질은 주석이 잘 못 지정되거나, 레이블이 잘 못 저장된 경우 모델의 성능에 부정적 영향을 줄 수 있음다양한 객체 변형의 존재, 조명 조건, 배경 등을 포함한 데이터셋의 다양.. 2024. 8. 25.
[DL] open cv2 필터(블러링, 평균, 가우시안, 미디언, 바이레터럴) 1. 블러링(blurring) - 초점이 맞지 않은 듯 영상을 흐릿하게 하는 작업- 평균 블러링 : 일반적인 블러링 방법. 균일한 값을 정규화된 커널을 이용한 이미지 블러링 방법- 가우시안 블러링 : 가우시안 분포를 갖는 커널로 블러링 하는 방법특징1. 대상 픽셀에 가까울수록 많은 영향을 주고, 멀어질수록 적은 영향을 주기때문에 원래의 영상과 비슷하면서도 노이즈를 제거하는 효과가 있음 - 미디언 블러링 : 커널의 픽셀 값 중 중앙값을 선택 픽셀을 정렬하는 방법 소금-후추 잡음 제거하는 효과 - 바이레터럴 필터 블러링 : 기존 블러링의 문제점을 해결하기 위한 방법. 일반적인 블러링은 잡음을 제거하는 효과는 뛰어났지만 해당 잡음의 경계도 흐릿하게 만드는 문제가 발생. 경계도 뚜렷하고 노이즈도 제거되는 효과가.. 2024. 8. 24.
[DL] ROI함수 활용하여 마우스 클릭 이벤트 구현하기 /완료 1. 관심 영역(ROI, Region of Interest)- 영상 내에서 관심이 있는 영역 cv2 모듈을 이용해서 이미지를 확인하고 이미지를 확인하여서 태양부분의 이미지만! 스퀘어 처리를 하고 그 옆으로 카피를 해보려고 합니다.ROI 는 관심영역 이라고 생각하면 되고 내가 액션을 취할 부분(구간)이라고 이해하면 좋을것같습니다. 이번 시간에는중에서 태양만 옆으로 하나 더 복사하고 , 2개의 태양을 테두리 치는것을 해보았습니다.import cv2img = cv2.imread('./sun.jpg')# x, y, w, hx = 182y = 21w = 120h = 110# 태양을 복사roi = img[y: y+h, x: x+w]roi_copy = roi.copy()img[y: y+h, x+w: x+w+w] = .. 2024. 8. 22.
[DL] 영상이어붙이기, 키이벤트, 사진 효과(add,blending...) 영상 2개를 이어붙였습니다.import cv2import syscap1 = cv2.VideoCapture('./sea.mp4')cap2 = cv2.VideoCapture('./213026_tiny.mp4')w = round(cap1.get(cv2.CAP_PROP_FRAME_WIDTH))h = round(cap1.get(cv2.CAP_PROP_FRAME_HEIGHT))frame_cnt1 = round(cap1.get(cv2.CAP_PROP_FRAME_COUNT))frame_cnt2 = round(cap2.get(cv2.CAP_PROP_FRAME_COUNT))fps1 = cap1.get(cv2.CAP_PROP_FPS)fps2 = cap2.get(cv2.CAP_PROP_FPS)# print(w)# print(.. 2024. 8. 9.
[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.
[ML/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] 파이토치,텐서,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.