본문 바로가기

분류 전체보기

(124)
10 비전 트랜스포머 (1) ViT 이전 포스팅에서 ViT 논문을 리뷰한 적이 있어서 여기서는 책의 내용을 몇 가지만 요약하고 파이토치 실습을 진행한다. 2024.01.23 - [논문 리뷰] - An Image Is Worth 16x16 Words : Transformers For Image Recognition At Scale 1. 합성곱 모델과 ViT 모델 비교 ViT는 이미지 시퀀스의 순서를 왼쪽에서 오른쪽 그리고 위에서 아래로 정하기 때문에 왼쪽 위의 패치를 1, 오른쪽 아래를 9라고 할 수 있다. 예를 들어 강아지의 오른쪽 귀에 대한 특징을 얻고 싶을 때 ViT는 셀프 어텐션으로 모든 이미지 패치가 서로에게 주는 영향을 고려해 이미지의 특징을 추출한다. 반면 CNN은 오른쪽 귀에 대한 특징을 2, 3, 5, 9 패치만 관여한다. ..
09 객체 탐지 (8) YOLO pytorch 실습 YOLOv8 모델로 포즈 추정을 간단하게 실습해본다. v8은 v5의 구조를 개선한 모델로 v6처럼 앵커 프리 구조를 사용해 추론 속도를 향상시켰다. 또한 모자이크 합성 이미지로 학습을 수행하는 경우 성능이 저하되는 문제가 발생하는데, v8은 10에폭만 적용해 과대적합을 방지해 성능을 개선했다. YOLO 모델을 사용하기 위해서는 ultralytics 라이브러리를 설치해야한다. 이는 파이토치와 OpenCV 기반으로 동작한다. !pip install ultralytics 설정 from pathlib import Path from google.colab.patches import cv2_imshow import cv2 import torch from ultralytics import YOLO from ultra..
09 객체 탐지 (7) YOLO 1. YOLOv1 Joseph Redmon이 2016년에 제안한 객체 탐지를 위한 모델이다. SSD와 마찬가지로 1-stage 구조로 영역 제안 네트워크를 필요로 하지 않고 구조 또한 단순하여 빠른 처리 속도를 보유하고 있어 real time object detection 작업에 적합하다. Faster R-CNN의 경우 처리 속도가 5fps인 반면, YOLO는 45fps 그리고 구조를 좀 더 단순화한 Fast YOLO의 경우 150fps이다. 다음은 YOLO의 구조이다. 다중 특징 맵을 사용하지 않으며 한 방향으로 순차적으로 진행하는 단일 특징 맵을 통해 객체 검출을 수행한다. 출력은 7x7x30인데 30은 (2 * B + C)로 계산되는 값이다. B는 (x, y, w, h, confidence scor..
09 객체 탐지 (6) Mask R-CNN pytorch 실습 이번 포스팅에서 사용하는 데이터는 책에서 제공하는 데이터로 간단히 설명하면 MS COCO 데이터를 개와 고양이에 대해서만 소규모로 샘플링한 데이터이다. 이전 Faster R-CNN 실습 코드를 일부 수정하여 Mask R-CNN 모델을 학습해 본다. 여기서는 수정되는 부분만 설명하기 때문에 이해가되지 않는 코드가 있다면 이전 포스팅을 참고하길 바란다. 2024.02.20 - [책/파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습] - 09 객체 탐지 (2) Faster R-CNN pytorch 실습 09 객체 탐지 (2) Faster R-CNN pytorch 실습 MS COCO(Microsoft Common Objects in Context) 데이터셋으로 Faster R-CNN 모델을 미세 조..
09 객체 탐지 (5) Mask R-CNN Mask R-CNN은 2017 ICCV에서 발표된 논문으로 객체 검출 및 객체의 세분화(segmentation) 작업에 사용된다. Faster R-CNN은 객체를 고정된 크기로 변환하고 RoI Pooling을 수행하는 과정에서 발생하는 손실로 인하여 공간적 어긋남을 초래한다. Mask R-CNN에서는 RoI Pooling 대신 RoI Align이라는 방법을 사용해 공간적 어긋남을 최소화한다. 또한 박스 분류와 박스 회귀와 병렬로 작동하는 mask branch를 추가한다. 이는 RoI에 대한 segmentation mask를 예측하기 위한 branch이다. mask branch는 각 RoI에 적용되는 작은 FCN으로, 픽셀 단위로 segmentation mask를 예측한다. 전체 구조는 다음과 같다. Ma..
09 객체 탐지 (4) FCN FCN(Fully Convolutional Network)는 이미지 분류에서 우수한 성능을 보인 CNN 기반 모델을 Sementic Segmentation 작업을 수행할 수 있도록 변형시킨 모델이다. Sementic segmentation은 이미지를 픽셀 수준에서 이해하고 해석하는 작업을 말한다. 이미지에서 각 픽셀을 특정 객체 또는 클래스에 할당하여 이미지 내의 각 객체의 영역을 식별하는 기술이다. 전통적인 합성곱 신경망은 완전 연결 계층을 사용하기 때문에 픽셀의 위치 정보를 파악하기 어려운데, FCN은 이를 1x1 합성곱으로 대체한다. 또한 특징 맵의 크기를 줄여가며 이미지의 정보를 추출하기 때문에 업샘플링 기법을 적용해 특징 맵을 입력 크기와 동일하게 확장하는 과정을 추가한다. 1. Upsampli..
09 객체 탐지 (3) SSD R-CNN 계열의 모델은 영역 제안과 객체 탐지가 분리되어있는 2 stage 모델들인데 SSD(Single Shot MultiBox Detector)는 이를 동시에 수행하는 1 stage 모델이다. 그래서 추론 속도가 빠르고 모델 크기도 가볍다. 상용화 관점에서 보면 적합한 모델이다. SSD의 주요한 2가지 특징은 Multi Scale Feature Map과 Default Box이다. 1. Multi Scale Feature Map 백본으로 사용하는 합성곱 모델에는 합성곱 층이 여러 개 존재한다. 특징 맵을 추출할 때 끝단에서만 추출하는 것이 아닌 중간 중간 여러 번 특징맵을 추출해서 사용하는 것이다. 이를 시각화한 모델 구조는 다음과 같다. 화살표를 보면 총 6개의 크기가 38, 19, 10, 5, 3..
09 객체 탐지 (2) Faster R-CNN pytorch 실습 MS COCO(Microsoft Common Objects in Context) 데이터셋으로 Faster R-CNN 모델을 미세 조정해본다. MS COCO 데이터셋은 Bounding Box 탐지, 객체 분할 및 캡션 생성을 위한 데이터를 제공한다. 이 데이터셋은 약 328,000장의 이미지와 약 2,500만 개의 레이블을 제공하고 80개의 클래스로 이뤄져있다. 여기서는 책에서 제공하는 개와 고양이 클래스로 소규모 샘플링된 데이터셋을 사용한다. import os import json from pathlib import Path from PIL import Image from pycocotools.coco import COCO import torch from torch import optim from tor..