곱셈과 덧셈

수학 이야기 2017. 4. 26. 13:43

초등학교 다니는 아이가 있다.


아빠, 수학 문제 하나 내주세요


그래.. 7 곱하기 8이 뭐지?


음... 몰라요


그럼, 5 곱하기 3은?


15?


그래, 왜 그렇지?


보세요, 5가 3개 있으니까 5 + 5 + 5 해서 15 잖아요


오 대단한데. 곱셈은 이제 완벽하게 이해했구나? ^^


☞ 수학은 (모든 공부도 마찬가지) 원리와 이해가 중요하다고 알지만 막상 실천은 어렵습니다. 어른들은 유치원 정도 어린아이가 구구단을 줄줄 외면 기특하다며 놀라워합니다. 하지만 구구단을 줄줄 외는 것보다는 곱셈이 무엇인지 이해하는게 백만배 더 대단합니다. 많은 초등학생들이 학습지를 합니다. 좋은 학습지도 있겠지만 대다수의 학습지는 반복연습을 통한 문제풀이의 숙달입니다. 아이가 풀고 있는 학습지를 본인도 직접 풀어봤는지 궁금합니다. 숙달도 중요하지만 그만큼 무언가를 차분히 생각할 시간은 줄어듭니다. 저는 아이가 방바닥에 드러누워 손가락만 빠는 시간도 무척 좋은 시간이라고 생각합니다. 이리 뒹글 저리 뒹글하면서 뭔가는 생각하고 있겠지요.


by 다크 프로그래머


'수학 이야기' 카테고리의 다른 글

Gram–Schmidt(그람-슈미트) 직교화  (12) 2017.05.17
초등학교 수학의 덧셈식과 뺄셈식  (5) 2016.07.20
숫자 익히기  (17) 2015.02.09

색의 항상성(Color Constancy)의 이해

영상처리 2017. 4. 26. 10:08

개인적으로 색의 항상성(color constancy)에 관심을 갖게 된 이유는 영상 추적(tracking)과 관련이 있다.


영상에서 물체를 추적하는 가장 기본적인 방법은 물체의 색상(color)을 추적하는 것이다. 즉, 빨간색 옷을 입은 사람을 추적하기 위해서 영상에서 빨간색 영역을 찾아서 추적하는 방식이다.


그런데 막상 영상 추적 기술을 컴퓨터로 구현하면 잘 하지 못하는 경우가 많다. 중간에 추적하던 물체를 잃어버리고 엉뚱한 물체를 추적하는 경우가 종종 발생한다. 반면에 인간은 주변 환경에 바뀌더라도 (그래서 실제 물체의 색이 바뀌더라도) 물체 본연의 색을 잘 구분하고 인지해 낸다.


이러한 차이는 어디서 오는 걸까?


그건 컴퓨터는 색을 곧이 곧대로 입력된 정보로만 해석하는 반면 인간은 입력된 색을 넘어 물체 본연의 색을 복원하여 인지하기 때문이다. 영상에서 물체의 색은 주변 환경(햇빛, 그늘, 조명 등)에 따라 시시각각 변한다. 따라서 유사한 색상만 추적하도록 프로그래밍된 컴퓨터로서는 그 변화를 따라가기가 쉽지 않다. 하지만 인간은 인간의 대표적 착시현상인 "색의 항상성(color constancy)" 기저로 인해 이러한 변화를 상쇄시키는 능력을 가지고 있다.


인간의 색 항상성(color constancy) 기저가 무엇인지에 대해서는 잘 알려져 있다. 하지만 이 글에서는 이 기저를 좀더 기계적(수학적, 수치적?)으로 분석해 보고자 한다.



색(color)의 형성


물체는 물체마다 고유의 색(color)이 있다. 잘 익은 사과는 붉은색이고 나뭇잎은 초록색이다. 그리고 사과의 과육은 흰색이며 씨앗은 짙은 갈색이다.


그림 1. 사과


그런데 이 색은 어떻게 결정되는 것일까? 일반적으로 물체의 색이 형성되는 것은 흔히 광원(햇빛, 조명 등), 물체의 재질, 그리고 인간의 시각인지 3가지 요소의 상호작용의 결과라고 알려져 있다.


우리가 흔히 보는 햇빛은 색이 없는 것처럼 보이지만 햇빛에는 적외선, 자외선, 가시광선, X선, 감마선, 등등 모든 파장대의 빛이 포함되어 있다. 햇빛을 프리즘을 통해서 보면 무지개빛이 나타나는게 그 한 예이다. 이 태양빛이 물체에 도달하면 물체의 재질에 따라서 어떤 파장대의 빛은 흡수되고 어떤 파장대의 빛은 반사된다. 즉, 물체 고유의 반사 스펙트럼(spectrum)이 형성된다. 그리고 광원의 빛 중 물체에 흡수되지 못하고 반사되는 빛이 우리 눈에 도달하면 물체 고유의 색(color)으로 인지된다. 결국 사과가 붉게 보이는 이유는 사과가 햇빛의 가시광 성분중 붉은색 성분을 가장 잘 반사시킨다는 의미가 된다.


그렇다면 만일 광원(조명)이 오직 한 가지 파장대의 빛으로만 구성되어 있다면 어떻게 될까?


덴마크 출신의 아티스트 올라퍼 엘리아슨(Olafur Eliasson, 1967)의 작품 "Room for one colour"이 좋은 예이며 이 작품에서는 모든 빛을 차단한 채 입장객으로 하여금 오직 노란색 빛만이 존재하는 공간을 체험하게 한다.


그림 2. Room for one colour, Olafur Eliasson


색(color)의 생성 원리를 이해한다면 이 공간에서는 모든 사물들이 노란색으로만 보이게 되리라는 것을 손쉽게 예측할 수 있다.


☞ 실제로 윈도우즈의 그림판 프로그램으로 위 이미지의 픽셀값들을 찍어보면 모두 노란색 성분으로 이루어져 있음을 확인할 수 있다 (밝기차만 존재). 만일 노란색 이외의 색상이 존재하는 것처럼 느껴진다면 그건 인간의 착시 현상이 발현된 것으로 볼 수 있다.



색 항상성(color constancy)


앞서 물체의 색이 어떻게 형성되고 결정되는지 살펴보았다. 색이란 결국 빛의 스펙트럼이며 우리 눈에 들어오는 빛(색)은 광원의 빛 중 물체에 흡수되지 못하고 반사된 빛이다. 그런데 우리 인간은 이 빛을 있는 그대로 인지하지 않고 특수한 변환과정을 거쳐서 인지한다.


색 항상성(color constancy)은 주변 환경(조명)의 변화로 인해 물체의 색(color)이 변하더라도 이러한 변화를 무시하고 물체를 원래의 (고유의) 색으로 인지하는 인간의 착시 현상을 일컫는다. 예를 들어 붉은 조명이 있는 카페에 처음 들어섰을 때는 모든 것이 붉게 보이지만 조금만 시간이 지나면 붉은색을 느끼지 못하는 것과 관련된다 (실제 눈에 도달하는 빛은 붉은색이지만 인간의 뇌에서는 붉은색이 없는 것으로 인지).


아래 그림은 색 항상성(color constancy)의 대표적 예로 사용되는 Edward H. Adelson의 "Checker Shadow Illusion"이다.

그림 3. Checker shadow illusion, Edward H. Adelson


잘 믿기지는 않지만 위 그림에서 A, B 위치의 보드는 서로 동일한 색이다. 인간의 눈으로 보기에는 A가 더 어두운 색으로 보이지만 위 그림을 이미지로 저장한 후 그림판 등으로 색을 확인해 보면 A, B 두 부분이 완전히 동일한 색(밝기)임을 확인할 수 있다.


☞ A, B가 정말 같은 색인지 실제로 확인해보길 추천한다. 한 쪽을 오려서 다른 쪽에 가져다 대면 같은 색임을 확인할 수 있다.


아래 그림은 인간의 착시현상을 보여주는 또 다른 예이다 (R. Beau Lotto의 "Cross-Piece Illusion").


그림 4. Cross-Piece Illusion, R. Beau Lotto


위 그림에서 두 막대가 교차하는 지점의 색상은 왼쪽은 자주색(혹은 남색), 오른쪽은 노란색으로 보인다. 하지만 역시 두 지점의 색은 실제로는 완전히 동일한 색이다.


☞ 마찬가지로 두 지점이 동일한 색임을 직접 확인해 보도록 하자.


앞서 예로 든 착시 현상들은 모두 인간이 입력된 색상을 그대로 보지 않고 배경의 영향을 제거한 물체 본연의 색으로 복원하여 인지하기 때문이다. 그리고 이러한 인간 고유의 시각 메커니즘을 우리는 "색 항상성(color constancy)"이라 부른다.



색 항상성(color constancy)의 원리


인간의 색 항상성(color constancy) 메카니즘을 이해하기 위해 위 예시 그림들을 분석해 보자. 


먼저, 두 번째 그림 cross-piece illusion 그림에 있는 중앙 교차부분 색상값을 그림판을 이용하여 확인해 보자. 그러면 원래 색은 아래와 같이 아무런 색상도 없는 무채색(회색)임을 확인할 수 있다. 단지 주위 배경의 영향으로 인해 동일한 색이 왼쪽에서는 자주색, 오른쪽에서는 노란색으로 보일 뿐이다.


그림 5. 교차지점의 실제 픽셀 값


앞서 색 항상성(color constancy)은 배경의 영향을 제거하고 본래의 색을 복원하여 인지하는 능력이라고 했다. 이를 확인하기 위해 실제 색에서 인위적으로 배경색을 제거해 보자. 먼저 cross-piece illusion 그림의 왼쪽 부분을 살펴보면 전반적으로 노란색 배경이 존재한다. 따라서 교차 부분의 실제 색에서 노란색(빨강+녹색) 성분을 일정하게 감소시켜 보면 아래 그림과 같이 우리가 착시로 인지한 색상인 자주색이 나옴을 확인할 수 있다.


그림 6. 노란색 배경 보상


이번엔 그림에서 오른편의 파란색 배경이 있는 부분을 살펴보자. 역시 마찬가지로 중앙 교차 부분의 실제 색은 그림 5와 동일한 무채색(회색)이다. 이 색에서 배경색인 파란색 성분을 제거해 보자. 아마도 이쯤되면 눈치빠른 분들은 그 결과를 예상할 수 있을 것이다. 그러면 예상했던대로 그 결과는 아래 그림과 같이 우리가 착시로 인지한 노란색 색상이 된다.


그림 7. 파란색 배경 보상


이상의 실험 결과에서 우리는 우리 인간이 인지하는 색상은 눈에 도달한 실제 색상이 아닌 주변 배경을 보상한 색으로 인지함을 확인할 수 있다.


첫 번째 예인 checker shadow illusion도 유사한 방식으로 설명될 수 있다. 그림에서 B 영역의 주변은 원기둥의 그늘로 인해 전반적으로 어두운 배경을 갖는다. 따라서 이러한 배경의 어두움을 보상하기 위한 인간 시각 메커니즘으로 인해 B 영역은 원래의 색상보다 좀더 밝은 색으로 인지된다 (그림에서 숫자는 그림판으로 확인한 실제 픽셀 밝기값).


그림 8. checker shadow illusion의 원리



색 항상성과 착시


앞서 색 항상성은 인간의 대표적 착시 현상 중 하나라고 했다. 그런데 이게 정말 착시일까?


색 항상성 기저가 우리 눈에 들어온 빛을 그대로 보지 않고 왜곡해서 본다는 점에서는 착시로 볼 수 있다. 사물을 절대적으로 인지하지 않고 항상 상대적으로 인지하기 때문에 인간이 인지한 내용을 100% 신뢰하긴 힘들다. 그리고 항상 인지 오류의 가능성을 가지고 있다. 그러한 관점에서 인간의 눈은 믿을 수 없다라고 결론을 내릴 수도 있다.


하지만 조금만 관점을 바꾸어 보면 색 항상성은 사물의 본질을 꿰뚫어 본다는 점에서 인간의 대단한 능력 중 하나라고 볼 수 있다. 그림 4 cross-piece illusion 예에서 오른편 교차 지점은 인간에게 노란색 물체로 인지된다. 만일 그림 4가 인위적으로 만들어진 이미지가 아니라 우리가 현실 세계에서 실제로 인지한 내용이었다면 교차 지점은 실제 노란색이었을까 아니면 무채색(회색)이었을까? 당연히 노란색 물체였을 것이다. 그렇다면 노란색 물체를 노란색으로 인지한 것이 착시일까 아닐까?



인간과 컴퓨터


인간은 그림 4 cross-piece illusion 예에서 오른편 교차 지점을 노란색으로 인지한다. 하지만 컴퓨터는 입력 그대로 무채색(회색)으로 인지한다.



by 다크 프로그래머


precision, recall의 이해

영상처리 2017. 1. 2. 16:21

자신이 어떤 기술을 개발하였다. 예를 들어 이미지에서 사람을 자동으로 찾아주는 영상 인식 기술이라고 하자. 이 때, 사람들에게 "이 기술의 검출율은 99.99%입니다"라고 말하면 사람들은 "오우...!!!" 하면서 감탄할 것이다. 반면에 "이 기술의 검출율은 50%입니다"라고 말하면 사람들은 별 관심을 보이지 않거나 "그것도 기술이라고..." 생각할 것이다.


이것은 전형적인 일반인의 반응이다. 이러한 반응이 크게 잘못된 것은 아니지만 이러한 반응에는 명시되지 않은 한 가지 전제가 깔려있다. 그것은 '이 기술은 절대로 오검출을 하지 않는다' 이다.


문제를 조금 바꿔보자. A와 B라는 기술이 있다. A라는 기술은 이미지에 있는 사람을 99.99% 잡아내지만 이미지 1장 당 평균 10건 정도의 오검출이 발생한다. 즉, 사람이 아닌 부분도 사람이라도 검출하는 경우가 빈번히 발생한다. 반면에 B라는 기술은 이미지에 있는 사람들 중 50%밖에 못 잡아내지만 오검출은 거의 발생하지 않는다. 그렇다면 A라는 기술과 B라는 기술 중 어느 기술이 뛰어난 기술인가? 그것은 응용에 따라 달라질 수 있지만 중요한 것은 검출율 만으로 기술을 평가하는 것은 적합하지 않다는 것이다.


☞ 검출율 100%의 물체인식 기술은 누구라도 손쉽게 만들 수 있다. 그것은 모든 입력에 대해 항상 물체가 검출된 것으로 반환하도록 알고리즘을 구현하면 되기 때문이다.


인식/탐지 기술의 성능을 평가하기 위해서는 검출율과 정확도를 동시에 고려해야 한다. 검출율은 직관적으로는 detection rate이지만 학문적으로는 recall이란 용어를 사용한다. 그리고 정확도에는 precision이란 용어를 사용한다. recall은 대상 물체들을 빠뜨리지 않고 얼마나 잘 잡아내는지를 나타내고 precision은 검출된 결과가 얼마나 정확한지 즉, 검출 결과들 중 실제 물체가 얼마나 포함되어 있는지를 나타낸다. 


그렇게 어려운 개념이 아님에도 불구하고 의외로 precision과 recall의 개념을 정확히 이해하지 못하고 혼동스러워하는 경우가 종종 있다. 그 이유는 detect라는 말에 대해서 혼동을 가지는 경우가 많기 때문이다. detect라는 단어는 단지 알고리즘이 무언가를 검출했다는 것을 의미할 뿐이다. 우리가 개발한 알고리즘은 완벽하지 않기 때문에 알고리즘이 검출한 결과에는 실제 물체를 물체라고 검출한 것도 있지만 물체가 아닌 것을 물체라고 검출한 수도 있다. 하지만 사람들은 흔히 detect라는 말을 실제 물체를 검출한 경우로만 한정하여 생각하기 쉽다. 이 경우 precision, recall의 개념을 정확하게 이해하지 못하고 혼동스러워하는 원인이 된다.


어떤 인식 알고리즘의 precision과 recall을 정의해 보면 다음과 같다. detection이란 말이 단지 알고리즘의 출력(결과)임을 상기하면 두 용어의 개념이 보다 명확해진다.


 ---(1)


 --- (2)


인식 알고리즘의 성능과 관련해서 마지막 오해는 어느 한 고정된 값으로 알고리즘의 성능을 평가하는 것이다. 예를 들어, '어느 알고리즘의 성능은 검출율(recall) 0.9, 정확도(precision) 0.7이다'라고 표현하는 식이다. 하지만 알고리즘의 성능을 어느 한 값으로만 표현하고 평가하는 것은 올바른 방법이 아니다. 왜냐하면 알고리즘의 recall과 precision은 알고리즘의 파라미터 조절에 따라 유동적으로 변하는 값이기 때문에 어느 한 값으로는 알고리즘 전체의 성능을 제대로 표현할 수 없기 때문이다.


☞ 일반적으로 알고리즘의 검출율(recall)과 정확도(precision)는 서로 반비례 관계를 가진다. 알고리즘의 파라미터를 조절해 검출율을 높이면 오검출(false alarms)이 증가하고 반대로 오검출을 줄이기 위해 조건을 강화하면 검출율(recall)이 떨어진다.


따라서 인식 알고리즘들의 성능을 제대로 비교하고 평가하기 위해서는 precision과 recall의 성능변화 전체를 살펴봐야 한다. 그리고 그러한 대표적인 방법은 precision-recall 그래프를 이용하는 것이다.


Precision-recall 그래프

알고리즘의 파라미터(threshold 등) 조절에 따른 precision과 recall의 값의 변화를 그래프로 표현한 것. 일례로 아래 그림은 'Object Detection with Discriminatively Trained Part Based Models', TPAMI 2010 논문에서 DPM 모델의 여러 변형에 따른 성능변화를 그래프로 표현한 것이다.

그림 1. precision-recall 그래프의 예


precision-recall 그래프는 다양한 형태로 변형되어 표현될 수 있는데 recall 대신에 miss rate (miss rate = 1 - recall), precision 대신에는 false alarm rate (false alarm rate = 1 - precision) 등이 사용될 수 있다.


Average Precision (AP)

precision-recall 그래프는 어떤 알고리즘의 성능을 전반적으로 파악하기에는 좋으나 서로 다른 두 알고리즘의 성능을 정량적으로(quantitatively) 비교하기에는 불편한 점이 있다. 그래서 나온 개념이 average precision이다. Average precision은 인식 알고리즘의 성능을 하나의 값으로 표현한 것으로서 precision-recall 그래프에서 그래프 선 아래쪽의 면적으로 계산된다 (그림 2). 위 그림 1의 예에서 괄호 안의 숫자가 해당 알고리즘의 average precision 값이다. 그리고 average precision이 높으면 높을수록 그 알고리즘의 성능이 전체적으로 우수하다는 의미이다. 컴퓨터 비전 분야에서 물체인식 알고리즘의 성능은 대부분 average precision으로 평가한다.


그림 2. average precision


F-measure

알고리즘의 precision-recall 성능을 하나로 숫자로 표현하는 또 다른 방법이다. F-measure는 precision과 recall의 조화평균으로 계산된다.


 --- (3)



※ 참고사항: Precision과 Accuracy


혼동의 여지가 있어서 의도적으로 언급하지 않은 내용이 있는데 그것은 accuracy와 precision의 구분이다 (원래는 언급하지 않으려고 했는데.. 아래 댓글에 답변을 달다보니 필요해서 추가한 내용입니다). 먼저, 유의해야 할 사항이 하나 있는데 그것은 동일한 단어라 할지라도 그것이 사용된 context에 따라서 의미가 달라질 수 있다는 점이다.


먼저, 단어 자체의 의미로 보면 accuracy는 정확도, precision은 정밀도로 번역되며 어떤 시스템(system)의 특징 또는 성능을 평가하는 척도로서 사용된다. 이 때, accuracy는 시스템의 결과(출력)가 참값(true)에 얼마나 가까운지를 나타나고 precision은 시스템이 얼마나 일관된 값을 출력하는지를 나타낸다. 즉, accuracy는 시스템의 bias를, precision은 반복 정밀도를 나타낸다. 예를 들어, 몸무게를 재는 저울이 있는데 50kg인 사람을 여러 번 측정했을 때 60, 60.12, 59.99, ... 와 같이 60 근방의 값으로 측정했다면 이 저울의 accuracy는 매우 낮지만(에러가 10kg이나 발생함) precision은 매우 높다고 말할 수 있다.


다음으로, 기계학습의 이진 분류(binary classification) 문제에 있어서는 precision이 조금 다른 의미로 사용된다(accuracy는 유사한 의미). Accuracy는 시스템이 올바르게(true를 true로 판단하고 false를 false로 판단) 판단하는 정도를 나타내며 Accuracy = (올바른 판단 횟수) / (판단 총 횟수) = (TP + TN) / (TP + TN + FP + FN)로 계산된다. 반면, precision은  시스템이 true로 판단한 경우에 한해서의 정확도로서 precision = (실제 true 횟수) / (true로 판단한 횟수) = TP / (TP + FP)로 계산된다. 그리고 컴퓨터 비전 분야에서 사용하는 precision은 이 두번째 의미로서의 precision이다. 즉, 검출 시스템이 검출한(true라고 판단한) 결과에 대해서만 정확도를 측정한 것이 precision이다.


컴퓨터 비전 분야의 검출 시스템(detection system)에서는 accuracy는 거의 사용하지 않고 precision만을 사용하기 때문에 precision을 '정확도'라고 번역해도 accuracy와 혼동의 여지가 적다. 그리고 precision의 의미가 반복 정밀도(repeatability)가 아니기 때문에 이 글에서는 의미상 '정밀도'라고 번역하지 않고 '정확도'라고 표현하였다.(삭제 이유는 아래 내용 참조)


☞ (추가내용2) 나중에 다시 곰곰히 생각해 보니 이진 classification 문제나 비전에서 사용하는 precision도 '반복 정밀도'의 의미로도 해석이 가능함을 깨닫게 되었습니다. 즉, 실제 true인 것들에 대해 시스템을 테스트했을 때 그 답변이 항상 일정하면 precision이 높은 것이고 들쭉 날쭉하면 즉, 어느 때는 true라고 답변했다가 다른 때는 false라고 답변했다가 하면 precision이 낮은 것이라고 해석하면 그 뜻이 잘 일치됩니다. 그런 관점에서 보면 precision을 원래 단어 뜻 그대로 '정밀도'로 번역하는 것이 보다 정확할지도 모르겠습니다.. 하지만, 글을 다시 고치기는 귀찮고 또 '정확도'라고 표현하는 것이 직관적으로 이해하기 쉬운 면이 있어서 그냥 그대로 두렵니다.. @@;;


☞ 그리고 recall도 정확히 번역하면 '재현율'이라고 하는 게 맞고, 또 기술적(학문적) 용어로도 재현율이 맞겠습니다. 하지만 일반인의 용어로서 그리고 보다 직관적이다고 생각되어 '검출율'이라고 표현했습니다.


by 다크 프로그래머