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...

2. Tsiolkovsky's rocket equation

비행기는 항속거리, 순항속도 등을 통해 비행성능을 판별할 수 있다. 자동차는 연비, 최대 주행 거리 등을 통해 주행성능을 판별할 수 있다. 그렇다면 로켓은 어떤 변수를 통해 성능을 판별하는가?

정답은 "속도 변화량" 이다. 로켓이 해당 단을 소모하여 총 얼마의 m/s 의 속도 변화를 달성하였는지가 로켓의 성능을 판가름하는 주된 변수이다. 이를 delta V(델타브이), 혹은 dV(디브이) 라고 부른다.

왜 하필 속도인가? 그 이유는 우주공간에서 궤도를 생성하고 우주를 여행하는 데에 있어 가장 핵심이 되는 요소는 천체의 중력장 내에서의 역학적 에너지이며 로켓이 에너지를 변경할 수 있는 요소는 운동에너지, 즉 속도이기 때문이다.

$ E_K=\frac{1}{2}mv^2 $

퍼텐셜에너지는 중력장 내에서 위치에 따라 주어지는 값이며 우리가 임의로 변경할 수 없다. 천체의 질량을 우리가 마음대로 바꿀 수 있는 게 아니니까.

$ E_P = -\frac{GM_Em_{sc}}{r}  $

대신 우리가 로켓 엔진을 사용해 우주선의 속도를 조절할 수는 있다. 따라서 속도 변화량을 바탕으로 로켓의 성능을 판가름하고, 더 나아가 우주공간의 어디까지 도달할 수 있는지를 계산할 수 있다. 그 반대로, 우주의 특정 행성에 도달하고자 한다면 이를 위해 요구되는 것은 바로 속도 변화량이다.

 

 

지구에서 목표 행성까지 얼마의 dV 를 소모해야 하는지를 계산한 결과이다.

예를 들어, 아폴로 11호와 같이 달에 착륙 후 지구로 귀환한다고 하자. 지표면에서 지구 저궤도까지는 9400 m/s의 dV를 필요로 하며, 지구 저궤도에서 달 착륙까지 총 3260 + 680 + 1730 = 5670 m/s의 dV가 필요하다. 달 착륙 이후 다시 지구로 돌아가기 위해서는 1730 + 680 + 3260 + 9400 m/s 의 dV 가 필요하지만, 지구 대기에 의한 감속을 이용하면 3260 + 9400 m/s는 아낄 수 있으므로 1730 + 680 = 2410 m/s면 충분하다.

이를 전부 더하면 9400 + 5670 + 2410 = 17480m/s 가 아폴로 11호의 달 왕복에 요구되는 총 dV 인 것이다.


이와 같이 주어진 임무에 대해 요구되는 dV를 추정하는 것이 가능하다. 그렇다면 로켓 설계자는, 해당 dV의 성능을 가지는 로켓을 설계하는 것이 과제가 될 것이다. 이 때, 로켓의 dV를 쉽게 계산하는 방정식이 치올코프스키 방정식(Tsiolkovsky's equation)이다.

$ \triangle V=I_{sp}g_0ln\frac{m_i}{m_f} $ 

여기서 $ I_{sp} $ 는 로켓의 비추력을, $ g_0 $ 는 지표면의 중력가속도($ =9.8m/s^2$)을 의미하며, $m_i$ 와 $m_f$ 는 각각 로켓의 엔진 연소 전 질량, 연소 종료 후 질량을 의미한다.

비추력은 간단히 말해서 로켓엔진의 효율을 나타내는 지표이며, 대기압에 대한 함수로 나타난다. 로켓 엔진이 우주 공간에서만 사용된다고 가정하면 비추력은 상수값이라고 볼 수 있다. 이는 5장에서 후술.


먼저 로켓 엔진의 기본적인 원리부터 보자.

로켓 엔진은 빠른 속도로 배기가스를 뒤로 내뿜어서 그 반작용으로 힘을 얻는다. 이를 도식화하면 아래 그림과 같다.

로켓과 배기가스 전체를 포함하는 계를 생각하면, 이 계는 닫힌계이므로 힘은 0이고 총 운동량은 변하지 않는다. 이를 뉴턴 제 2법칙을 이용해 기술하면 아래와 같다. 

$ \overrightarrow{F}=\frac{d(m\overrightarrow{v})}{dt}=\frac{dm}{dt}\overrightarrow{v}+m\frac{d\overrightarrow{v}}{dt}=0 $

로켓은 막대한 양의 연료를 소모하며 앞으로 나아가므로, 질량 변화를 반드시 고려해야 한다. 로켓엔진의 연소 전의 운동량은 아래와 같다.

$ p_i = (m+\triangle m)V $

또한 연소 후의 운동량은 아래와 같다.

$ p_f = m(V+\triangle V) - (\triangle m)V_e $

배기가스의 속도 $ V_e $ 는, 이미 $ V $ 의 속도로 운동 중인 로켓에 대해 $ v_e $ 의 속도로 분사되었다고 한다면 $ V_e $ 를 아래와 같이 쓸 수 있다.

$ V_e=V-v_e $

이를 이용해 $ \triangle p=p_f - p_i $ 를 아래와 같이 쓸 수 있다.

$ p_f-p_i=m(V+\triangle V) - (\triangle m)(V-v_e)-(m+\triangle m)V=m\triangle V-v_e\triangle m $

또한, $ \triangle m $ 은 로켓의 입장에서 볼때 질량의 감소이므로 $ -dm $ 으로 쓸 수 있다. 그런데 위에서 설명한 바와 같이, 총 운동량은 연소 전과 후 모두 동일해야 한다.  위 식의 미소 변화량을 미분형으로 나타내면

$ -m dV=v_edm $

$ v_e $ 는 로켓엔진의 배기가스의 속도이다. 이는 엔진의 성능이므로, 상수라고 가정한다면 위 식을 아래와 같은 적분형태로 쓸 수 있다.

$ -\int_{V}^{V+\triangle V}dV=v_e\int_{m_i}^{m_f}\frac{1}{m}dm $

위 식을 $ \triangle V $ 에 대해 정리하면 최종적으로 치올코프스키 방정식을 얻는다.

$ \triangle V=v_e ln\frac{m_i}{m_f} $

위의 치올코프스키 방정식은 $I_{sp}g_0$ 인데, 이 식에서는 $v_e$ 가 들어간다. 사실 이 둘은 같은 값이다


치올코프스키 방정식이 의미하는 바는, 엔진이 주어질 때($v_e$ 가 주어질 때) 로켓의 총 dV 는 로켓의 연소 초기 질량과 연소 종료 질량의 비율의 로그함수로 계산된다는 점이다.

로그함수는 입력값이 크면 클수록 출력값의 성장 폭은 낮아진다. 여기서 한 가지 문제가 발생하는데, 구조비는 무한정 늘리기는 매우 어려운데 반해, 구조비를 계속 늘린다고 dV 가 그에 맞춰서 같이 늘어나지는 않는다.
 


그래서 사람들은 새로운 방법을 생각해냈다. 적당히 dV 를 챙길만한 구조비로 만들고, 여기에 비슷한 구조비를 가지는 로켓을 한 단 더 쌓아 올리자고.

위 그림은 1단의 구조비를 5로 하고, 그 위에 2단을 새로 올린 형태이다. 위 그림을 통해 1단보다 다단 형태의 로켓이 같은 중량에서 더 많은 dV를 가짐을 알 수 있다.

 

맨 위의 그림으로부터, 지구 저궤도까지 필요한 dV 는 약 9500임을 알 수 있다. 따라서 모든 우주발사체는 최소 9500 m/s 의 dV를 가져야 하는데, 1단만으로 이 정도의 dV 를 가지려면 구조비가 30에 가까운 값을 가져야 한다. 이는 사실상 불가능한 수준이며, 그래서 현존하는 모든 우주발사체는 최소 2단 이상의 단 수를 가지도록 설계된다.





Comments

Popular Posts