Skip to main content

Featured

YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors review

 YOLO 버전이 v7 버전으로 논문이 발표되었다. papers with code에서 쉽게 확인할 수 있으며 이 논문은 모듈 최적화 기법 위주이다. CSPNet이라던지 RepVGG 같은 관련 네트워크들을 간단하게 공부하고 논문을 이해하는 것을 추천한다. 아래는 official github이며 ReadMe를 보면 쉽게 사용 방법을 알 수 있다. https://github.com/wongkinyiu/yolov7 또한 본 논문은 아래와 같다. Wang, Chien-Yao, Alexey Bochkovskiy, and Hong-Yuan Mark Liao. "YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors." arXiv preprint arXiv:2207.02696 (2022). 그렇다면 간략하게 논문에 대해 알아보도록 한다. - Abstract YOLOv7이 알려진 모든 detector들보다 정확도와 속도 면에서 성능을 능가하고 있다고 설명한다. 또한 이 네트워크를 오직 COCO 데이터셋으로만 훈련했다고 설명한다. 다른 네트워크들보다 확실히 좋은 성능을 내고 있다는 것으로 abstract에서 소개하고 있다. - Introduction  이 논문에서 제안한 real-time detector는 주로 mobile GPU나 GPU 장치를 지지할 수 있다는 것을 희망한다고 한 것을 보아 GPU가 필요하다는 것으로 이해하였다. 또한 이 논문에서 제안된 방법들의 개발 방향을 현재 real-time detector들의 개발 흐름과 다르다고 설명한다. 훈련 과정의 최적화에 집중했다고 한다. 그래서 중점적인 것이 정확도를 향상시키기 위한 훈련 cost를 강화화는 최적화된 모듈과 최적 기법이라고 설명한다.  논문의 제목에서 나오는데 제안된 모듈들과 최적 기법들을 trainable bag-of-freebies라고 칭한다. 최근에, model re-pa...

What is Direction Cosine Matrix 2 - Vector

이번 포스팅에서는 DCM을 이용한 3차원 회전변환에 대해 설명이전에 벡터에 관해 간단히 설명한다. 먼저 회전 변환을 하기위해서는 직교 좌표계가 무엇인지 알아야하는데 이는 대부분 알고있을것이라 생각된다. 직교 좌표계라는 것은 3개의 벡터가 서로 orthogonal:직교하고 있는 것이며 물체의 위치와 운동등을 표현할 수 있는 공간과 같다. 이러한 좌표계는 다양한 종류가 존재하며 원통 좌표계, 구 좌표계등도 많은 분야에서 사용되고 있다.

Fig 1. Frame Definition

위 그림에서 흔히 a와 같이 x, y, z축이라고 하는데 보통 단위벡터 표현(^:hat)을 사용하여 b처럼 많이 사용한다. 여기서 단위벡터는 방향과 상관없이 크기가 1인 벡터를 의미한다. 그리고 서로 직교하는 특징을 이용하여 x축 y축만 주어졌을때 이를 외적:cross(오른손 법칙을 생각하면 쉬움) 하여 z방향을 정의할 수 있다. 이러한 관계는 다음 그림과 같이 쉽게 표현할 수 있다.

Fig 2. Frame each Axis Relationship

그렇다면 흔히 말하는 벡터는 무엇인가, 벡터는 크기(scalar)와 방향(direction)을 가진다고 널리 알려져있다. 어느 임의의 공간에서 벡터가 다음과 같이 표현된다고 하자
Fig 3. Vector in Arbitrary Space

벡터의 크기는 벡터의 절대값 2-norm 또는 Euclidean norm 으로 많이 표기한다. 이는 벡터의 각 요소의 제곱의 합의 제곱근이며 $\parallel \vec{v}\parallel_2$로 표기한다. 그럼 이 벡터는 어떤 좌표계 $a$에서 표현하면 다음과 같다.

Fig 4. Vector and Frame Example

벡터는 보통 좌표계의 각 좌표축의 성분으로 표현할 수 있다. 임의의 좌표계 $a$에 대해 표현하면 다음과 같다.
$$\vec{v} = (v_1\cdot \hat{a}_i)\hat{a}_i + (v_2\cdot \hat{a}_j)\hat{a}_j + (v_1\cdot \hat{a}_i)\hat{a}_k$$
주어진 벡터는 3차원 공간에서 3가지 성분으로 나눌 수 있으며 다음과 같이 각 좌표축으로의 정사영을 즉 내적연산을 통해 다음과 같이 표현할 수 있다.

Fig 5. Vector Projection

이제 좌표계 $a$에서 $\hat{u}$를 다음과같이 표현할 수 있다.
$$u^a = [u_1, u_2, u_3]^T$$
여기서 첨자$T$는 행렬의 Transpose를 의미한다. 그러므로 위에서 쓰였던 식을 참고하여다시 쓰면 다음과 같다.
$$\vec{v} = u_1\hat{a}_i + u_2\hat{a}_j + u_3\hat{a}_k$$

Comments