Faster R-CNNFaster R-CNN은 R-CNN 계열의 Object Detection 모델 중에서 가장 진보된 모델 중 하나로, Object Detection 에서 매우 높은 정확도와 효율성을 제공합니다.또한 Region Proposal Network (RPN)를 도입하여 전체 시스템의 속도와 정확도를 크게 향상시켰습니다.Faster R-CNN은 RPN(Region Proposal Network) + Fast R-CNN이 합쳐진 모델입니다.기존 Selective Search가 수행하던 Object 위치에 Bounding Box를 그려서 추천합니다. (GPU 사용)또한 Region Proposal Network를 사용합니다. (Selective Search 역할)그리고 Network로만 구성이 되..
Adapter Pattern - 어댑터 패턴Adapter Pattern은 호환되지 않는 인터페이스를 가진 클래스들이 함께 동작할 수 있도록 중간에 어댑터를 두어 인터페이스를 변환해주는 역할을 합니다.하나의 Interface를 다른 Interface로 전환하는 역할 → 이러한 역할을 Adapter Pattern에 적용합니다.‘이미 제공되어 있는 것’과 ‘필요한 것’ 사이의 ‘차이’를 없애주는 디자인 패턴을 Adapter 패턴이라고 합니다.또한 Adapter 패턴은 Wrapper 패턴으로 불리기도 합니다.Wrapper는 ‘감싸는 것’이라는 의미가 있는데, 무언가를 포장해서 다른 용도로 사용할 수 있게 교환해주는 것이 wrapper이며, adapter라고 합니다.두가지의 종류가 있습니다.클래스에 의한 Adap..
Proxy Pattern - 프록시 패턴Proxy Pattern은 주로 객체의 접근을 제어하거나 객체에 추가적인 기능을 제공하기 위해 사용됩니다.이 패턴은 주체(Real Subject)와 그 주체에 대한 대리자(Proxy)로 구성됩니다.Proxy는 대리인 이라는 의미, 일을 대신 하는 사람이라는 의미입니다.‘대리인 proxy’이 할 수 있는 범위를 넘는 일이 발행하면, 실제 ‘본인 real’ 에게 와서 업무요청을 한다는 특징이 있습니다.객체지향 프로그래밍에서는 바빠서 일을 할 수 없는 ‘real object’ 대신에 ‘proxy object’가 어느정도 일을 처리하기도 합니다.그리고 real 오브젝트는 proxy 오브젝트의 존재를 모릅니다.즉, 이말은 자신이 proxy를 경유해서 호출되고 있는지 직접 호..
Fast R-CNN 개요 FAST R-CNN은 R-CNN (Region-based Convolutional Neural Network)과 SPP-Net (Spatial Pyramid Pooling Network)의 단점을 보완하고, 객체 탐지의 속도와 정확성을 크게 개선한 모델입니다 Fast R-CNN은 이러한 요소로 구성되어 있습니다.입력 이미지: 원본 이미지와 Region Proposal이 입력됩니다.공통 CNN: 이미지에서 Feature Map(특징 맵)을 추출합니다.RoI Pooling Layer: 각 Region Proposal을 고정된 크기의 *Feature Map(특징 맵)으로 변환합니다.완전 연결 층: 고정된 크기의 *Feature Map(특징 맵)을 입력으로 받아 Classificatio..
SPPNet - Spatial Pyramid Pooling Net이번에는 SPPNet - Spatial Pyramid Pooling Net에 데하여 알아보고 왜 SPPNet이 등장했는지 한번 알아 보겠습니다. RCNN 주요 문제점그전에 RCNN의 주요 문제점에 데하여 한번 알아보겠습니다.일단, CNN은 2,000개의 Region 영역 이미지가 CNN으로 입력 되면서 Object Detection 수행시간이 오래 걸립니다.이유는 위의 그림을 보면 알 수 있듯이 2,000개의 Region 영역이 Proposal 되어야 합니다.그러면 Feature Map이 2,000개가 만들어 저야 합니다. 이로 인해서 먾은 연산이 필요하며 처리 시간이 길어집니다.또한 Region 영역 이미지가 고정된 크기로 Crop / W..
BPTT (Backpropagation Through Time)BPTT(Backpropagation Through Time)는 순환 신경망(RNN, Recurrent Neural Network)의 학습을 위해 사용되는 Backpropagation(역전파) 알고리즘의 확장 버전입니다.여기서의 Backpropagation(오차역전파법)은?'시간 방향으로 펼친 신경망의 오차역전파법' 이란 뜻으로 BPTT(Backpropagation Through Time)이라고 합니다.이 BPTT를 사용하면 RNN을 학습할 수 있습니다. RNN에 관한 개념은 아래의 글에 적어놓았으니 참고해 주시면 될거 같습니다. [DL] RNN (Recurrent Netural Network) - 순환신경망1. RNN 이란?RNN은 Sequ..
이번 글에서는 추론 기반 기법과 Neural Network(신경망)에 데하여 한번 알아 보겠습니다. 통계 기반 기법의 문제점단어를 Vector로 표현하는 방법은 최근에는 크게 두 부류로 나눌 수 있습니다. '통계 기반 기법'과 '추론 기반 기법' 입니다.두 방법이 단어의 의미를 얻는 방식은 서로 다르지만, 그 배경에는 모두 분포 가설이 있습니다.통계 기반 기법에서는 주변 반어의 빈도를 기초로 단어를 표현 했습니다.구체적으로는 단어의 Co-Occurance Matrix(동시 발생 행렬)을 만들고 그 행렬에 특잇값분해(Singular Value Decomposition, SVD)를 적용하여 밀집벡터를 얻습니다.그러나, 이 방식은 대규모 Corpus(말뭉치)를 다룰 때 문제가 발생합니다. 일단, 통계 기반 기..
이번 글에서는 Object Detection Network 구조 개요, FPS, Resolution과 성능 상관 관계, R-CNN 에 데하여 알아 보겠습니다. Object Detection Network 개요Object Detetction Network 구조는 두 부분으로 나눌 수 있습니다:특징 추출 네트워크(Feature Extractor Network)와 객체 탐지 네트워크(Object Detection Network)입니다.두 네트워크는 일반적으로 사전 학습된 모델을 사용하여 특정 작업에 맞게 미세 조정됩니다. Feature Extractor Network (특징 추출 네트워크)입력 이미지에서 유용한 특징을 추출합니다.VGG, ResNet, Inception 등과 같은 모델을 사용하며, 보통 Ima..
Singleton PatternSingleton 패턴은 클래스의 인스턴스가 하나만 생성되도록 보장하고, 그 인스턴스에 접근할 수 있는 전역 접근점을 제공하는 패턴입니다.그리고 특정 클래스의 인스턴스가 애플리케이션 전체에서 하나만 존재해야 할 때 사용됩니다.또한 특징들을 아래에 적어보자면.클래스에 대한 단일 객체를 생성합니다.전역 객체를 제공합니다.공유된 리소스에 대한 동시 접근 제어가 가능합니다.글로벌 엑세스 지점을 제공하는, 단점이 거이 없는 검증된 패턴입니다.위의 다이어그램을 예시로 보면, 생성자를 private로 선언하고, 객체를 초기화 하는 static 함수를 만들어 구현할 수 있습니다.첫 호출에 객체가 생성되고, 그후 클래스는 동일한 객체를 계속 반환합니다.class Singleton(objec..
Builder PatternBuilder 패턴은 객체 생성 패턴 중 하나로, 복잡한 객체를 단계적으로 구성할 수 있도록 하는 패턴입니다.Object의 생성과정이 복잡할 때 이를 간단하게 만들어줍니다.생성과정이 복잡할 수 있는 여러 경우는 매우 다양합니다.예를 들어 하나의 Object를 생성시, 여러개의 argument가 필요할 때 Builder Pattern이 쉽게 만들어 줄 수 있습니다.핵심 개념Builder 인터페이스: 객체를 구성하는 각 단계를 정의합니다.Concrete Builder 클래스: Builder 인터페이스를 구현하여, 각 단계를 구체적으로 정의합니다.Director: Builder 인터페이스를 사용하여 객체 생성의 순서를 정의합니다. 생성 과정의 제어를 담당합니다.Product: 최종적..