
IoU란? IoU는 Intersection over Union의 약자로 보통 두 가지 물체의 위치(Bounding Box)가 얼마나 일치하는지를 수학적으로 나타내는 지표이다. 객체 인식같은 모델을 사용했을 때 실제 물체의 위치와 예측된 물체의 위치를 평가방법으로 사용할 수 있다. 왼쪽 위 박스를 A, 오른쪽 아래 박스를 B라고 하면 아래와 같은 식이 된다. 위의 공식처럼 두 개의 박스가 있을 때, iou 값을 계산하는 코드는 아래와 같다. def intersection_over_union(box1, box2) : x1 = max(box1[0], box2[0]) y1 = max(box1[1], box2[1]) x2 = min(box1[2], box2[2]) y2 = min(box1[3], box2[3]) ..
1. os 모듈의 다양한 함수 os 모듈은 내 컴퓨터의 디렉터리(폴더)나 경로, 파일 등을 활용하게 도와주는 모듈로 활용빈도가 굉장히 높다. 이 모듈이 제공하는 다양한 함수들에 대해 알아보자 1-1. os.getcwd() : 현재 작업 디렉토리 확인 os.getcwd() [Output] 'C:\\Users\\User\\Desktop\\' 1-2. os.chdir() : 현재 작업 디렉토리 변경 os.chdir("D:/") os.getcwd() [Otuput] 'D:\\' 1-3. os.listdir() : 입력 경로 내의 모든 파일과 폴더명 리스트 반환 os.listdir("C:/Users/User/Desktop") [Output] ['python_practice.py', '연구노트.hwp' '개인자료'..

네트워크 구조 1. Convolution Layer를 통해 Feature 추출 2. 1x1 Convolution Layer를 이용해 피처맵의 채널수를 데이터셋 객체의 개수와 동일하게 변경 3. Up-sampling: 낮은 해상도의 Heat Map을 Upsampling(=Transposed Convolution) 한 뒤, 입력 이미지와 같은 크기의 Map 생성 4. 최종 피처 맵과 라벨 피처맵의 차이를 이용하여 네트워크 학습 Up-sampling by Transposed convolution Feature map의 한 픽셀은 입력 이미지의 32 x 32 pixel를 대표함 낮은 해상도를 갖기 때문에 입력 이미지의 위치 정보를 대략적으로만 가지고 있다. 입력 이미지 위치 정보를 대략적으로 가지고 있는 fea..

Fast R-CNN Fast R-CNN에서의 수행과정은 다음과 같다. "Fast R-CNN 프로세스" 1-1. R-CNN에서와 마찬가지로 Selective Search를 통해 RoI를 찾는다. 1-2. 전체 이미지를 CNN에 통과시켜 feature map을 추출한다. 2. Selective Search로 찾았었던 RoI를 feature map크기에 맞춰서 projection시킨다. 3. projection시킨 RoI에 대해 RoI Pooling을 진행하여 고정된 크기의 feature vector를 얻는다. 4. feature vector는 FC layer를 통과한 뒤, 구 브랜치로 나뉘게 된다. 5-1. 하나는 softmax를 통과하여 RoI에 대해 object classification을 한다. 5-2..

R-CNN은 Image classification을 수행하는 CNN과 localization을 위한 regional proposal알고리즘을 연결한 모델이다. R-CNN의 수행 과정은 다음과 같다. "R-CNN 프로세스" 1. Image를 입력받는다. 2. Selective search알고리즘에 의해 regional proposal output 약 2000개를 추출한다. 추출한 regional proposal output을 모두 동일 input size로 만들어주기 위해 warp해준다. (*왜 동일 input size로 만들어줄까? : 사실 Convolution Layer에는 input size가 고정이지 않다. 그러나 마지막 FC layer에서의 input size는 고정이므로 Convolution L..

이미지 세그멘테이션(image segmentation)은 이미지의 모든 픽셀이 어떤 카테고리(예를 들면 자동차, 사람, 도로 등)에 속하는지 분류하는 것을 말한다. 이미지 전체에 대해 단일 카테고리를 예측하는 이미지 분류(image classification)와는 달리, 이미지 세그멘테이션은 픽셀 단위의 분류를 수행하므로 일반적으로 더 어려운 문제로 인식되고 있다. 위 그림에서 semantic segmentation은 이미지 내에 있는 객체들을 의미 있는 단위로 분할해내는 것이고, instance segmentation 은 같은 카테고리에 속하는 서로 다른 객체까지 더 분할하여 semantic segmentation 범위를 확장한 것이다. 이미지 세그멘테이션은 의료 이미지 분석(종양 경계 추출 등), 자..

Internal Covariant Shift Internal Covariant Shift 란, 학습 과정에서 각 레이어나 Activation 마다 입력값의 분산이 달라지는 현상을 말한다. 각 계층에서 입력으로 feature를 받게 되고 그 feature는 convolution이나 위와 같이 fully connected 연산을 거친 뒤 activation function 적용하면 연산 전/후에 데이터 간 분포 달라질 수 있다. whitening 등장과 문제점 각 층의 출력물을 다음 층에 입력하기 전에 평균 0, 표준편차 1 로 normalize 하는 방법 단순히 whitening만 시킨다면 활성화함수의 비선형성이 없어질 수 있다. 예를들어, sigmoid 그래프가 위와 같은 형태인데, 입력이 N(0, 1)..

■ 1 x 1 convolution 등장 InceptionNet에서 병목현상으로 인해 늘어난 차원을 감소시키기 위해 도입 ■ 1 * 1 convolution 장점 ⇒ 정확도 향상, 연산량 감소 1) Channel 수 조절 - Tensor의 1 * 1 convolution 의 의미는 matrix에서 1 * 1 convolution 의 의미와 다르다. - Matrix에 1 * 1 convolution 을 취하면 단순 곱하기 이지만, Tensor에 1 * 1 convolution 을 취하면 32개의 채널정보를 압축할 수 있다. - 한 포지션에 대한 서로 다른 채널들의 픽셀값들을 곱하기를 통해서 새롭게 압축한다. 즉, 압축하여 새롭게 x를 만들 수 있다는 것이다. 이 x는 전에 있는 특징들을 온전히 살리지는 못..

Plain Network의 문제점 Plain network는 skip/shortcut connection을 사용하지 않은 일반적인 CNN(AlexNet, VGGNet) 신경망을 의미합니다. plaing network가 점점 깊어질 수록 기울기(gradient) 소실(vanishing)과 폭발(exploding) 문제가 발생합니다. 기울기 소실과 폭발 기울기를 구하기 위해 가중치에 해당하는 손실 함수의 미분을 오차역전파법으로 구합니다. 이 과정에서 활성화 함수의 편미분을 구하고 그 값을 곱해줍니다. 이는 layer가 뒷단으로 갈수록 활성화함수의 미분값이 점점 작아지거나 커지는 효과를 갖습니다. 신경망이 깊을 때, 작은 미분값이 여러번 곱해지면 0에 가까워 질 것입니다. 이를 기울기 소실이라고 합니다. 반대..