brunch

You can make anything
by writing

C.S.Lewis

by SCS Oct 30. 2022

동일한 과정의 반복,  복잡한 알고리즘의 원인

[031] 알고리즘 이해하기


서로 다른 경계 상자에서 같은 종류의 객체가 탐지될 수 있다. 이때는 각 경계 상자가 하나의 대상에 중복되어 표시된 것인지, 서로 다른 대상에 표시된 것인지를 판단하여 이미지 속의 각 대상별로 가장 정확한 경계 상자 하나만 표시하는 과정을 거치는데, 이를 ‘비최댓값 억제(NMS, Non-Max Suppression)’라고 한다. NMS는 두 경계 상자의 교집합을 합집합으로 나눈 값인 IoU를 기준으로 이루어진다. IoU 값은 두 경계 상자의 위치가 일치할수록 1에 가까운 값이 나오며, 이 값이 설정된 임곗값보다 크면 두 경계 상자가 동일한 대상에 표시된 것으로 판단하고 둘 중 신뢰도 점수가 낮은 상자를 삭제한다. 그리고 IoU 값이 설정된 임곗값보다 작으면 경계 상자가 서로 다른 대상에 표시된 것으로 판단하여 두 경계 상자 모두 그대로 둔다. 이러한 방법으로 한 가지 종류의 객체에 대해 그려진 모든 경계 상자들 중 가장 높은 신뢰도 점수를 가진 경계 상자를 기준으로 다른 경계 상자들을 하나씩 삭제해 나간다. 이후 IoU 값이 설정된 임곗값보다 작아서 지워지지 않고 남겨진 경계 상자 중에서 가장 높은 신뢰도 점수를 가진 경계 상자를 다음 기준으로 정하여 동일한 과정을 반복한다. 그리고 이러한 과정을 다른 모든 대상에 표시된 경계 상자들에 대해서도 순차적으로 반복한다. 이렇게 해서 결국 이미지 속의 각 대상별로 가장 높은 신뢰도 점수를 가진 경계 상자 하나씩만 남게 된다.    


[이것만은 … ]

*사물이 어떠한 기준에 의하여 분간되는 한계. (        )

*의사나 행위가 미치는 대상. (        )

*드러나지 않은 사실이나 물건 따위를 더듬어 찾아 알아냄. (       )

*시각적으로 감각할 수 있는 사진이나 그림. (        )

*두 집합 A와 B가 있을 때 집합 A, B에 공통으로 속하는 원소 전체로 이루어진 집합. (        )

*두 집합 A와 B가 있을 때, 집합 A의 원소와 집합 B의 원소 전체로 이루어진 집합. (       )

*사물이 어떠한 기준에 의하여 분간되는 한계. (       )

*통계에서 어떠한 값이 알맞은 모평균이라고 믿을 수 있는 정도. (       )

*순서를 따라 차례대로 하는 것. (       )     


이를 비최댓값 억제(NMS, Non-Max Suppression)’라고 한다.

‘문제 발생의 원인-문제 상황-문제 해결 방법-문제 해결 결과’ 등을 설명한 글이 많은데, 이런 글은 알고리즘을 생각하며 읽으면 좋다. 알고리즘은 어떤 문제의 해결을 위하여 입력된 자료를 토대로 원하는 출력을 유도하여 내는 규칙의 집합으로, 하나 또는 그 이상의 연산을 필요로 는 여러 단계로 구성된다. 그러니까 문제 상황을 해결하는 데 적극적인 철수 쌤을 어려운 말로 말하면 ‘알고리즘을 좋아하는 사람’이라 해도 좋을 것이다.

지문에 정의된 ‘비최댓값 억제(NMS, Non-Max Suppression)’는 ‘과정’의 하나다. 즉 시간을 의식하며 이해해야 하는 개념인 것이다. 그런데 그 내용을 보면 비최댓값 억제는 알고리즘의 하나이다. 해결해야 할 문제 상황은 ‘서로 다른 경계 상자에서 같은 종류의 객체가 탐지’되는 것이고, 문제를 해결한 결과는 ‘각 대상별로 가장 정확한 경계 상자 하나만 표시하’는 것인데, 이를 위해 사용한 방법이 비최댓값 억제인 것이다.이를 도식으로 나타내면 다음과 같다.


알고리즘은 어떤 문제의 해결을 위하여 입력된 자료를 토대로 원하는 출력을 유도하여 내는 규칙의 집합이다.


그런데 지문에는 문제 상황을 구체화하고 있다. 즉 ‘각 경계 상자가 하나의 대상에 중복되어 표시’된 경우와 ‘서로 다른 대상에 표시’된 경우를 말하고 있는데, 해결 결과를 고려할 때 뒤의 경우는 문제가 되지 않고 앞의 경우가 문제가 되는 것이다. 그래서 위 도식의 문제 상황에 ‘서로 다른 경계 상자에 같은 종류의 객체 탐지’라고 했던 것이다.


경우의 수를 따져 대상을 구체화하는 것은 중요한 수학적 사고이다.


경우의 수를 따지는 수학적 사고가 있다. 위 도식처럼 ‘같은 종류의 객체’에 ‘하나의 대상’인 경우와, ‘서로 다른 대상’인 경우가 있다는 것을 떠올리는 것이 그 사례이다. 이런 경우의 수를 생각하며 글을 읽어야 할 때가 있는데, 이에 대해서는 추후 자세히 설명하겠다.


두 경계 상자의 교집합을 합집합으로 나눈 값두 경계 상자의 위치가 일치할수록 1에 가까운 값

집합, 대수(代數), 함수, 기하와 관련한 수학적 사고를 복합적으로 하며 읽어야 하는 글이 있다고 했다. 지문에 ‘교집합’과 ‘합집합’, ‘나눈 값’, ‘두 경계 상자의 위치가 일치할수록 1에 가까운’ 등은 그 사례이다.

집합, 기하 개념을 활용해 아래 그림과 같이 이해를 하고, 대수 개념을 활용해 다음과 같은 식을 떠올려야 한다.


집합, 기하, 대수 개념을 활용하는 수학적 사고는 매우 중요핟.


이제 우리가 떠올려야 할 것이 함수이다. 경계 상자1과 경계 상자2의 크기가 변화가 없다면, 교집합 A의 크기가 클수록 상자가 겹치는 부분이 커진다. 이 함수도 시간, 그것도 인과를 의식하며 읽어야 한다. 즉 ‘상자 크기’가 원인이 되고, ‘겹치는 부분’이 결과인 것이다.

이후 우리는 기하학적 사고를 해야 한다. 겹치는 부분의 크기는 얼마가 최대일까? 작은 경계 상자의 크기까지만 커진다. 그때까지는 분모와 분자의 크기에 차이가 줄어들어 IoU 값은 1에 가까워지는 것이다.

이러한 수학적 사고는 추후 좀더 자세히 설명할 것이다. 여기에서는 이해하기 좀 어렵더라도 그렇다는 것을 알고서 지나가도록 하자.     


기준으로 판단하고

기준에 따라 판정하는 훈련을 많이 하라 했다. 지문에서도 그것을 의식하며 읽어야 할 부분이 있다. ‘IoU를 기준으로 … IoU 값…이 설정된 임곗값보다 크면 두 경계 상자가 동일한 대상에 표시된 것으로 판단… IoU 값이 설정된 임곗값보다 작으면 경계 상자가 서로 다른 대상에 표시된 것으로 판단’한다고 했다. 이를 판정도로 이해하면 다음과 같다.


'A하면 B, 하지 않으면 C'라는 문장 구조에서 A는 기준, B, C는 판단 결과임을 나타낸다.


위에서 N의 경우 ‘IoU 값=임곗값’인 경우가 가능하지만 지문에서는 이에 대한 언급이 없어 위와 같은 판정도가 가능하다. 이는 조건에 관한 수학적 사고에 해당하므로 추후 자세히 설명하겠으니, 여기에서는 일단 시간을 의식하며 판정하는 것에 대해 이해하도록 하자.     


동일한 과정을 반복

철수 쌤이 학생들을 지도할 때 키 순으로 세우는 것을 자주 한다. 언뜻 보면 학생들을 아무 생각없이 하는 것 같지만 사실 머릿속에서는 수없이 많은 비교를 한다. A와 B를 비교해서 세우고, C를 A와 비교하고 B와 비교하며 세운다. 학생 수에 따라 그 횟수는 달라지겠지만 이런 과정을 반복한다. 이것도 일종에 알고리즘이다. 줄 세우는 문제를 해결하는 연산이 이루어지는 것이니까 말이다.

그런데 다른 방식이지만 똑같은 결과를 만들어낼 수 있다. 일단 한 학생을 나오라 한다. 다음에 또 다른 학생을 나오게 해 비교한 후 작은 학생을 들어가게 한다. 그런 과정을 학생 수만큼 반복해 일단 가장 큰 학생을 남긴다. 다음에 또 한 학생을 두 번째에 서게 하고 학생 하나씩 나오게 해 비교한 다음 작은 학생을 들여 보내는 과정을 되풀이한다. 즉 첫째 번 학생을 찾는 과정을 반복하는 것이다. 이런 식으로 다음에 계속하면 네 번째, 다섯 번째, … 학생을 찾아 줄을 세울 수 있다. 결과는 같은데 연산 방법이 다르니 다른 알고리즘인 것이다.

그러나 두 알고리즘 모두 ‘동일 과정의 반복’이 들어 있다. 지문에서도 동일한 과정이 반복되는 것에 대해 설명하고 있다. 지문에 ‘대상별로 가장 높은 신뢰도 점수를 가진 경계 상자 하나씩만 남’기는 과정이 설명되고 있는데, ‘이러한 방법으로 … 가장 높은 신뢰도 점수를 가진 경계 상자를 기준으로 다른 경계 상자들을 하나씩 삭제해 나간다’는 과정과, ‘지워지지 않고 남겨진 경계 상자 중에서 가장 높은 신뢰도 점수를 가진 경계 상자를 다음 기준으로 정하’는 과정이 반복되고 있다.

위 도식에 다음과 같이 화살표를 표시해 보자.


동일한 과정의 반복은 결과가 다시 입력되어 같은 과정을 되풀이하는 것이다.


위 과정은 앞에서 본 과정이 한번 이루어진 다음에, ‘경계 상자 유지’에 의해 남겨진 경계 상자들을 대상으로 그 과정을 반복함을 보여주고 있다. 일단 남겨진 경계 상자들을 가지고 ‘IoU 값’을 구한다. 그래서 그 쪽으로 화살표를 첨가했던 것이다. 다만 ‘남겨진 경계 상자 중에서 가장 높은 신뢰도 점수를 가진 경계 상자를 다음 기준으로 정하여’라고 했으므로, IoU 값은 변할 것이고 그 값을 ‘임계값’과 비교하여 Y, N에 따라 경계 상자 삭제 또는 유지를 수행한다. 그러면 또 다른 ‘경계 상자 유지’라는 결과를 나온다. 그 결과를 가지고 같은 과정을 반복한다. 즉 위와 같은 과정을 반복하는 것이다. 그렇게 최후에 ‘대상별로 가장 높은 신뢰도 점수를 가진 경계 상자 하나씩만 남’게 될 때까지 위 과정을 반복한다.

이 과정이 끝난 뒤 또 다른 대상을 가지고 지금까지 설명한 전체 과정을 반복하면 ‘대상별로’ 가장 높은 신뢰도 점수를 가진 경계 상자 하나씩만 남게 된다. 그러면 여러 대상이 있는 이미지라도 한 대상에 하나의 경계 상자만 남게 되는 것이다. 철수 쌤은 이런 글 읽기를 좋아한다. 그래서 다음과 같은 문제를 푸는 것도 좋아한다.



물론 위에서 설명한 알고리즘을 이해하는 데는 이 외에도 수학적 사고가 필요하다. 이에 대해서는 추후 자세히 설명할 테니 여기에서는 일단 단계별로 과정을 이해하며 알고리즘이라는 것이 무엇인지만 이해해 보도록 노력하자.     


[이것만은 … ]의 정답

경계(境界), 객체(客體), 탐지(探知), 이미지, 교집합(交集合), 합집합(合集合), 임계(臨界), 신뢰도(信賴度), 순차적(順次的)     

이전 07화 경우에 따라 달라지는 판정, 단계적으로 분석할 수도
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari