본문 바로가기

AI

(144)
[ML] Support Vector Machine(SVM)
[PyTorch] numpy.mean() Python Numpy.mean() - 산술 평균 numpy.mean() 함수는 지정된 축을 따라 배열의 산술 평균을 계산합니다. www.delftstack.com
[PyTorch] torch.tensor.sum(), torch.tensor.mean(), torch.tensor.max() dim 은 해당 dim을 모두 합친다. 하나의 그룹이라 생각하고 계산한다.
[ML] LSTM (Long Short-Term Memory, 장단기 메모리) 2 위 그림에서 A는 RNN의 한 덩어리이다. A는 input xtxt를 받아서 htht를 내보낸다. A를 둘러싼 반복은 다음 단계에서의 network가 이전 단계의 정보를 받는다는 것을 보여준다. 이러한 RNN의 반복 구조는 혹여 불가사의해 보일 수도 있겠지만, 조금 더 생각해보면 RNN은 기존 neural network와 그렇게 다르지 않다는 것을 알 수 있다. RNN을 하나의 network를 계속 복사해서 순서대로 정보를 전달하는 network라고 생각하는 것이다. 아예 반복을 풀어버리면 좀 더 이해하기 쉬울 것이다. 이렇게 RNN의 체인처럼 이어지는 성질은 곧장 sequence나 list로 이어지는 것을 알려준다. 이런 데이터를 다루기에 최적화된 구조의 neural network인 것이다. 그리고 진..
[ML] LSTM (Long Short-Term Memory, 장단기 메모리) 1 바닐라 아이스크림이 가장 기본적인 맛을 가진 아이스크림인 것처럼, 앞서 배운 RNN을 가장 단순한 형태의 RNN이라고 하여 바닐라 RNN(Vanilla RNN)이라고 합니다. (케라스에서는 SimpleRNN) 바닐라 RNN 이후 바닐라 RNN의 한계를 극복하기 위한 다양한 RNN의 변형이 나왔습니다. 이번 챕터에서 배우게 될 LSTM도 그 중 하나입니다. 앞으로의 설명에서 LSTM과 비교하여 RNN을 언급하는 것은 전부 바닐라 RNN을 말합니다. 1. 바닐라 RNN의 한계 앞 챕터에서 바닐라 RNN은 출력 결과가 이전의 계산 결과에 의존한다는 것을 언급한 바 있습니다. 하지만 바닐라 RNN은 비교적 짧은 시퀀스(sequence)에 대해서만 효과를 보이는 단점이 있습니다. 바닐라 RNN의 시점(time s..
[Keras] RNN 구현하기 인자를 사용할 때를 보겠습니다. hidden_size = 은닉 상태의 크기를 정의. 메모리 셀이 다음 시점의 메모리 셀과 출력층으로 보내는 값의 크기(output_dim)와도 동일. RNN의 용량(capacity)을 늘린다고 보면 되며, 중소형 모델의 경우 보통 128, 256, 512, 1024 등의 값을 가진다. timesteps = 입력 시퀀스의 길이(input_length)라고 표현하기도 함. 시점의 수. input_dim = 입력의 크기. RNN 층은 (batch_size, timesteps, input_dim) 크기의 3D 텐서를 입력으로 받습니다. batch_size는 한 번에 학습하는 데이터의 개수를 말합니다. (여기서부터는 텐서의 개념을 반드시 이해해야 하므로 벡터와 행렬 연산 챕터의 텐..
[ML] RNN (Recurrent Neural Network, 순환 신경망) 앞서 배운 신경망들은 전부 은닉층에서 활성화 함수를 지난 값은 오직 출력층 방향으로만 향했습니다. 이와 같은 신경망들을 피드 포워드 신경망(Feed Forward Neural Network)이라고 합니다. 그런데 그렇지 않은 신경망들이 있습니다. RNN(Recurrent Neural Network) 또한 그 중 하나입니다. RNN은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로도 보내면서, 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징을 갖고있습니다. 이를 그림으로 표현하면 위와 같습니다. x는 입력층의 입력 벡터, y는 출력층의 출력 벡터입니다. 실제로는 편향 b도 입력으로 존재할 수 있지만 앞으로의 그림에서는 생략합니다. RNN에서 은닉층에서 활성화 함수를 통해 결과를 내..
[OD] Mask R-CNN (논문리뷰&재구현) Mask R-CNN 설명 및 정리 이전글 : (논문리뷰) Faster R-CNN 설명 및 정리 Faster R-CNN 설명 및 정리 이전글 : Fast R-CNN 설명 및 정리 Fast R-CNN 설명 및 정리 이전글 : Object Detection, R-CNN 설명 및 정리 Object Detection, R-CNN.. ganghee-lee.tistory.com Mask R-CNN 정리 R-CNN 계열 모델 소개 R-CNN은 CNN에 Region Proposal 을 추가하여 물체가 있을법한 곳을 제안하고, 그 구역에서 object detection을 하는 것이다. R-CNN 계열 모델은 R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CN.. mylifemy..
[OD] YOLO v3 갈아먹는 Object Detection [9] yolo v3 들어가며 이번 시간에 리뷰할 논문은 지난 시간에 이은 yolo v3입니다. yolo v3는 사실 논문이라기 보다는 저자의 표현에 따르면 tech report라고 합니다. 저자인 Redmon이 yolo 모델에 당시에 등장한 기법 yeomko.tistory.com yolo v3는 사실 논문이라기 보다는 저자의 표현에 따르면 tech report라고 합니다. 저자인 Redmon이 yolo 모델에 당시에 등장한 기법들을 적용하여 성능을 향상시킨 모델을 공개하며, 어떻게 구현했는 지를 정리한 보고서 같은 느낌입니다. 먼저 결과부터 보시죠. 해당 피규어는 당시 SOTA 모델이었던 Facebook의 Retinanet 논문에 기재된 피규어를 그대로 따와서 y..
[OD] YOLO v2 갈아먹는 Object Detection [8] yolov2, yolo9000 들어가며 이번에 살펴볼 논문은 1 step Object Detection의 포문을 연 yolo의 후속편 yolo v2입니다. 저자인 Redmon은 상당히 괴짜인데요, 이번 논문의 형식부터 상당히 재미있습니다. 저는 이렇게 첫 장의 yeomko.tistory.com 기존 yolo 모델을 보완하여 정확도를 높인 yolo v2 모델을 제시합니다. 그리고 이 yolo v2 모델을 기반으로 무려 9000 종류의 물체를 구분할 수 있는 yolo 9000 모델을 공개합니다. 이전까지 Object Detection 분야에서 가장 많이 사용되었던 데이터 셋인 coco가 약 80종류의 클래스를 가진 것과 비교하면 가히 파격적입니다. Better ..
[OD] FPN: Feature Pyramid Network 갈아먹는 Object Detection [7] Feature Pyramid Network 들어가며 오늘 살펴볼 논문은 등장할 당시에도 영향력이 엄청났지만 이 후에 등장하는 모델들에 큰 영향을 준 Feature Pyramid Network 입니다. 현재 State of the Art를 기록하고 있는 EfficientDet 모델도 이 yeomko.tistory.com Feature Pyramid Object Detection 분야에서 풀리지 않았던 고질적인 난제는 바로 작은 물체를 탐지해내기가 어렵다는 것입니다. 이를 위해서 이미지나 피쳐맵의 크기를 다양한 형태로 rescale하는 접근 방식이 있어왔습니다. (a)는 입력 이미지 자체를 여러 크기로 resize 한 뒤, 각각의 이미지에서 물체를 탐지하는 기법..
[PyTorch] CNN 설계 11. Transfer Learning 1. Package load 2. 데이터셋 다운로드 및 훈련, 검증, 테스트 데이터셋 구성 3. 하이퍼파라미터 세팅 4. Dataset 및 DataLoader 할당 5. 네트워크 설계 6. train, validation, test 함수 정의 7. 모델 저장 함수 정의 8. 모델 생성 및 Loss function, Optimizer 정의 9. Training 10. 저장된 모델 불러오기 및 test 11. Transfer Learning new_model = torchvision.models.resnet50(pretrained=True) 다만 우리가 앞서 직접 정의한 모델(SimpleCNN)에서는 입력 이미지의 크기를 120x120로 한 것에 반해, 방금 불러온 ResNet은 입력 이미지 크기를 최소한 ..
[OD] SSD: SIngle Shot Multibox Detector 갈아먹는 Object Detection [6] SSD: SIngle Shot Multibox Detector 지난 글 갈아먹는 Object Detection [1] R-CNN 갈아먹는 Object Detection [2] Spatial Pyramid Pooling Network 갈아먹는 Object Detection [3] Fast R-CNN 갈아먹는 Object Detection [4] Faster R-CNN 갈아.. yeomko.tistory.com [논문] SSD: Single Shot Multibox Detector 분석 SSD:Single Shot Multibox Detector taeu.github.io yolo의 뒤를 잇는 1 Step object detection 알고리즘, SSD입니다. ..
[OD] YOLO v1 [Object Detection] YOLOv1 ~ YOLOv3 2021 Snowy Paper Project 안녕하세요. 오늘은 현재 제가 속해 있는 연구실 세미나에서 다른 분이 발표 했던 YOLOv1~YOLOv3에 대하여 매우 간단하게 정리만 할 예정이오니, 가볍게 읽고자 하시는 분들에게 nepersica.tistory.com 갈아먹는 Object Detection [5] Yolo: You Only Look Once 지난 글 갈아먹는 Object Detection [1] R-CNN 갈아먹는 Object Detection [2] Spatial Pyramid Pooling Network 갈아먹는 Object Detection [3] Fast R-CNN 갈아먹는 Object Detection [4] Faste..
[PyTorch] CNN 설계 10.저장된 모델 불러오기 및 test 1. Package load 2. 데이터셋 다운로드 및 훈련, 검증, 테스트 데이터셋 구성 3. 하이퍼파라미터 세팅 4. Dataset 및 DataLoader 할당 5. 네트워크 설계 6. train, validation, test 함수 정의 7. 모델 저장 함수 정의 8. 모델 생성 및 Loss function, Optimizer 정의 9. Training 10. 저장된 모델 불러오기 및 test 11. Transfer Learning 10. 저장된 모델 불러오기 및 test 학습한 모델의 성능을 테스트합니다. 저장한 모델 파일을 torch.load를 통해 불러옵니다. 이렇게 불러오면 우리가 얻게 되는 건 아까 저장한 check_point 딕셔너리입니다. 딕셔너리에 저장한 모델의 파라미터는 'net' ..
[PyTorch] torch.save(model.state_dict(), PATH) / torch.load(PATH) 모델 저장하기 & 불러오기 — PyTorch Tutorials 1.9.0+cu102 documentation Note Click here to download the full example code 모델 저장하기 & 불러오기 Author: Matthew Inkawhich 번역: 박정환 이 문서에서는 PyTorch 모델을 저장하고 불러오는 다양한 방법을 제공합니다. 이 문서 전체를 다 tutorials.pytorch.kr 목차: state_dict가 무엇인가요? 추론(inference)를 위해 모델 저장하기 & 불러오기 일반 체크포인트(checkpoint) 저장하기 & 불러오기 여러개(multiple)의 모델을 하나의 파일에 저장하기 다른 모델의 매개변수를 사용하여 빠르게 모델 시작하기(warmstart)..
[OD] Faster R-CNN 갈아먹는 Object Detection [4] Faster R-CNN 지난 글 갈아먹는 Object Detection [1] R-CNN 갈아먹는 Object Detection [2] Spatial Pyramid Pooling Network 갈아먹는 Object Detection [3] Fast R-CNN 들어가며 Fast-RCNN에 이어서 오늘은 Faster R-CNN.. yeomko.tistory.com (논문리뷰&재구현) Faster R-CNN 설명 및 정리 이전글 : (논문리뷰) Fast R-CNN 설명 및 정리 Fast R-CNN 설명 및 정리 이전글 : Object Detection, R-CNN 설명 및 정리 Object Detection, R-CNN 설명 및 정리 컴퓨터비전에서의 문제들은 크게..
[PyTorch] torch.tensor와 torch tensor를 float()로 만든다. torch.mean(input) input.mean() 두 가지 방법이 있다. torch.tensor는 객체 자체를 계산시키는 방법이다. torch.mean은 함수로 인자값을 넣어 계산한다. https://frieden1946.tistory.com/556?category=952749 에서 나온 torch.nn 과 torch.nn.functional 차이점과 동일하다고 할 수 있다.
[PyTorch] torch.tensor.float(), torch.mean() torch.float() _, argmax = torch.max(outputs, 1) accuracy = (labels == argmax).float().mean() torch.tensor.float()는 인자값을 넣지 않고 실행시킨다. TORCH.TENSOR.FLOAT Tensor.float(memory_format=torch.preserve_format) → Tensor self.float() is equivalent to self.to(torch.float32). See to(). Parameters memory_format (torch.memory_format, optional) – the desired memory format of returned Tensor. Default: torch.pre..
[PyTorch] torch.max(outputs, 1) _, argmax = torch.max(outputs, 1) Parameters input ( Tensor ) – 입력 텐서. dim (int) – the dimension to reduce. keepdim ( bool ) – 출력 텐서가 dim 유지 되었는지 여부 . 기본값 : False . 리턴 namedtuple (values, indices) values 의 각 행의 최대 값 input 주어진 차원에서 텐서 dim . 그리고 indices 는 발견 된 각 최대 값 (argmax)의 인덱스 위치입니다. 첫번째는 최대값을 tensor로 두번째는 index값을 tensor로 리턴한다. torch.max / dim 역할 torch.max(input, dim, keepdim=False, *, out=Non..
[PyTorch] Conv1d, Conv2d 차이점 Convolution(합성곱)의 연산의 일부로 tensorflow에서는 Conv1D, Conv2D, Conv3D가 사용된다. 그리고 Conv1D, Conv2D, Conv3D 이렇게 나눠지는 기준은 바로 합성곱이 진행되는 방향과 합성곱의 결과로 나오는 출력값이다. 합성곱의 방향 출력값 Conv1D 한 방향(가로) 1-D Array(vector) Conv2D 두 방향(가로, 세로) 2-D Array(matrix) Conv3D 세 방향(가로, 세로, 높이) 3-D Array(tensor) 사실 위 표의 출력값은 합성공의 출력 값과 동일하지 않다. 왜냐하면 배치 크기와 합성곱이 적용되는 필터의 개수를 고려하면 다르게 표현 될 것이다. 위의 경우는 배치를 고려하지 않고 합성곱 필터를 하나만 적용했을 떄라고 생각하..
[OD] Non-Maximum Suppression(NMS) 한 객체당 여러 proposal값이 나올 것이다. 이 문제를 해결하기 위해 NMS알고리즘을 사용하여 proposal의 개수를 줄인다. SVM을 통과하여 이제 각각의 박스들은 어떤 물체일 확률 값 (Score) 값을 가지게 되었습니다. 그런데 2천개 박스가 모두 필요한 것일까요? 동일한 물체에 여러 개의 박스가 쳐져있는 것이라면, 가장 스코어가 높은 박스만 남기고 나머지는 제거해야합니다. 이 과정을 Non-Maximum Supperssion이라 합니다. 서로 다른 두 박스가 동일한 물체에 쳐져 있다고 어떻게 판별할 수 있을까요? 여기서 IoU (Intersection over Union) 개념이 적용됩니다. 쉽게 말하면 두 박스의 교집합을 합집합으로 나눠준 값입니다. 두 박스가 일치할 수록 1에 가까운 값..
[OD] SPPnet SPPnet은 R-CNN에서 가장 크게 나타나는 속도 저하의 원인인 각 region proposal마다의 CNN feature map 생성을 보완하였고 이를 통해 학습시 3배, 실제 사용시 10-100배라는 속도 개선을 이루어냈다는 장점을 보여줍니다. 이를 가능케한 구조는 무엇보다도 region proposal에 바로 CNN을 적용하는 것이 아니라 이미지에 우선 CNN을 적용하여 생성한 feature map을 region proposal에 사용했기 때문입니다. SPPnet은 Spatial Pyramid Pooling 이라는 특징을 같는 구조를 활용하여 임의 사이즈의 이미지를 모두 활용할 수 있도록 하였습니다. SPP layer는 쉽게 말해서 이미지의 사이즈와 상관없이 특징을 잘 반영할 수 있도록 여러 크..
[ML] End-to-End Deep Learning End-to-End Deep Learning 딥러닝은 종단간 기계학습(end-to-end deep learning)이라고도 불린다. 여기서 '종단간'은 처음부터 끝까지라는 의미로, 입력에서 출력까지 파이프라인 네트워크 없이 한 번에 처리한다는 뜻이다. 파이프라인 네트워크란, 전체 네트워크를 이루는 부분적인 네트워크를 뜻한다. 하지만, End-to-End Deep Learning은 만능이 아니다. end-to-end deep learning 을 사용하기 위해서는, 파이프라인 네트워크 없이도 잘 동작 할 만큼의 많은 데이터가 필요하다. 문제가 복잡할 수록, 전체 문제(전체 네트워크)를 간단한 문제(파이프라인 네트워크)로 나눠서 해결하는 것이 효율적일 때도 있기 때문이다. 데이터의 정보가 각각의 파이프라인에 ..
[OD] Fast R-CNN (논문리뷰) Fast R-CNN 설명 및 정리 이전글 : (논문리뷰) R-CNN 설명 및 정리 컴퓨터비전에서의 문제들은 크게 다음 4가지로 분류할 수 있다. 1. Classification 2. Object Detection 3. Image Segmentation 4. Visual relationship 이중에서 4. Visu.. ganghee-lee.tistory.com RCNN 부터 Mask R-CNN까지 (1) R-CNN ~ Fast R-CNN Fast R-CNN 안녕하세요. 이번 포스트에서는 Object Detection을 정리해보려 합니다. 우선, Object Detection이란 Classification보다 더 어려운 task입니다. 분류가 단순히 이미지의 클래스를 판별하는 작업이라면 woo..
[PyTorch] CNN 설계 7 - 9 1. Package load 2. 데이터셋 다운로드 및 훈련, 검증, 테스트 데이터셋 구성 3. 하이퍼파라미터 세팅 4. Dataset 및 DataLoader 할당 5. 네트워크 설계 6. train, validation, test 함수 정의 7. 모델 저장 함수 정의 8. 모델 생성 및 Loss function, Optimizer 정의 9. Training 10. 저장된 모델 불러오기 및 test 11. Transfer Learning 7. 모델 저장 함수 정의 모델 저장은 torch.save 함수를 통해 할 수 있습니다. nn.Module.state_dict를 통해 Module, 즉 우리 모델의 파라미터를 가져올 수 있습니다. 이렇게 불러온 파라미터를 check_point 딕셔너리에 저장합니다. 그리..
[PyTorch] CNN 설계 6. train, validation, test 함수 정의 1. Package load 2. 데이터셋 다운로드 및 훈련, 검증, 테스트 데이터셋 구성 3. 하이퍼파라미터 세팅 4. Dataset 및 DataLoader 할당 5. 네트워크 설계 6. train, validation, test 함수 정의 7. 모델 저장 함수 정의 8. 모델 생성 및 Loss function, Optimizer 정의 9. Training 10. 저장된 모델 불러오기 및 test 11. Transfer Learning import torch.optim as optim # Optimizer를 생성합니다. optimizer = optim.SGD(net.parameters(), lr=0.01) # 학습 과정(training loop)은 다음과 같습니다: optimizer.zero_grad(..
[PyTorch] CNN 설계 5. 네트워크 설계 1. Package load 2. 데이터셋 다운로드 및 훈련, 검증, 테스트 데이터셋 구성 3. 하이퍼파라미터 세팅 4. Dataset 및 DataLoader 할당 5. 네트워크 설계 6. train, validation, test 함수 정의 7. 모델 저장 함수 정의 8. 모델 생성 및 Loss function, Optimizer 정의 9. Training 10. 저장된 모델 불러오기 및 test 11. Transfer Learning 모델을 만드는 클래스를 정의한다. 이때 nn.Module을 상속한다. init으로 sequential layer를 만들어준다. init으로 만든 layer를 forward에서 바로 이어서 진행하게 된다. 5. 네트워크 설계 class SimpleCNN(nn.Module)..
[PyTorch] CNN 설계 4. Dataset 및 DataLoader 할당 1. Package load 2. 데이터셋 다운로드 및 훈련, 검증, 테스트 데이터셋 구성 3. 하이퍼파라미터 세팅 4. Dataset 및 DataLoader 할당 5. 네트워크 설계 6. train, validation, test 함수 정의 7. 모델 저장 함수 정의 8. 모델 생성 및 Loss function, Optimizer 정의 9. Training 10. 저장된 모델 불러오기 및 test 11. Transfer Learning 전체 흐름 DataLoader에서 기존에 MNIST와 같이 주어진 데이터셋이 아닌 경우 내가 class를 만들어서 사용해야 한다. 이렇게 만들어진 class를 이용해 DataLoader의 첫 번째 인자인 dataset에 해당 class를 넣어주는 것이다. Dataset ..
[PyTorch] torch.optim의 인자 model.parameters() optimizer 클래스 초기화 제일 중요한 매개변수는 신경망의 파라메터이다. Variable 타입의 파라메터들을 iterable 오브젝트로 넣어줘야한다. 그 외에는 각 optimizer 타입에 따라 learning rate, weight decay 등을 넣어주면 된다. parameters() 메소드는 모듈의 파라메터들을 iterator로 반환한다고 적혀있다. 신경망 구조를 구현할때 보통 아래와 같이 하위 모듈을 추가하는식으로 구현을 하기 때문에, 파라메터를 직접 추가할 일이 거의 없었다. class MyModule(torch.nn.Module): def __init__(self): super(MyModule, self).__init__() self.A = torch.nn.Linear(100, 200) ..