이란이 이슈가 되는 오늘, 이란 사람이 쓴 논문을 peer review하다니

삶/일상|2020. 1. 8. 11:45

이란 사람이 저자인 논문을 peer review하는 것은 처음인 것 같은데, 공교롭게도 그 날이 오늘이네요. 

 

참고로 peer review는 어떤 저널에 제출된 논문원고를 같은 분야 또는 비슷한 연구 분야의 연구자들이 검토하는 것을 의미합니다. 검토후 편집자에게 의견을 보냅니다. Accept, Minor Revision, Major Revision, Reject 등으로 말이죠. 몇 명의 연구자들이 한 원고에 대해서 각각 peer review해서 보내기 때문에, 저널의 편집자는 그것을 종합해서 이 원고를 출판을 할 것인지, 아니면 저자들에게 수정할 기회를 줄 것인지, 아니면 출판을 거절할 것인지에 대해서 결정합니다. 바로 출판사에서 원고를 Accept하는 경우는 극히 드물고, 원고의 수준이 괜찮은 경우에 한해서 저자들에게 Major Revision의 기회를 줍니다. 따라서 Major Revision을 심사결과로 받은 저자들이라면 실망하실 이유 전혀 없습니다. peer reviewer들의 코멘트를 잘 이해하고 그에 맞게 원고를 수정하신다면, 80% 이상의 확률로 Accept를 받을 수 있습니다. 

 

peer reviw에 대한 설명이 조금 길어졌네요. 아무튼 이란과 미국의 상황은 어떻게 전개가 될까요? 또 그것이 우리나라에 어떤 영향을 미치게 될까요? 저는 어떤 경우에는 전쟁이 불가피하다는 생각을 하긴 하지만, 필요 이상으로 확전되지 않길 바래봅니다. 

댓글()

당신의 얼굴은 강아지 상? 고양이 상? (teachble machine 활용)

당신은 강아지를 닮았을까요?

아니면 고양이를 닮았을까요?

아래 start 버튼을 클릭해보세요.^^

 

 

Dog or Cat?

댓글()

[선형대수학] 고유값과 고유벡터의 물리적 의미는?

컴퓨터비전/선형대수학|2019. 12. 23. 14:25

고유값분해는 선형대수학의 핵심 중의 핵심이라고 생각됩니다. 고유값과 고유벡터를 산술적으로 구하는 것은 그렇게 어렵지 않으나, 고유값과 고유벡터가 물리적으로 어떤 의미를 갖는지를 이해하는 것은 조금 난해합니다. 오늘은 제가 이해한 바를 다시 정리해보려고 합니다. 

 

어떤 벡터에 어떤 행렬 A를 곱하면, 행렬 A의 고유값 중에서 가장 큰 고유값과 매칭되는 고유벡터의 방향에 가장 크게 영향을 받습니다. 이것이 무슨 말인지, 예를 통해 설명해보겠습니다. 

 

다음과 같은 벡터가 있다고 가정해봅시다. 

 

 

이 벡터에 다음과 같은 행렬 A를 곱해주겠습니다. 

 

 

그러면 

 

 

가 됩니다.

 

 

이 결과가 고유벡터와 무슨 상관이 있는지 살펴보겠습니다. 먼저 행렬 A의 고유값과 고유벡터를 구해보겠습니다. 2x2 행렬이므로 고유값은 비교적 간단히 구할 수 있습니다. 2x2 행렬이므로 고유값은 2개가 존재합니다. 이 고유값의 곱은 이 행렬의 행렬식이 되고, 이 고유값의 합은 이 행렬의 trace가 됩니다. 따라서 다음과 같은 식을 세울 수 있습니다. 

 

 

이것을 풀면, 고유값은 5, 2가 나옵니다. 자 그럼 고유값 5에 대응하는 고유벡터를 구해보겠습니다. 

 

위 식을 만족시키는 x1은 여러개가 있지만, 간단하게 

을 고유값 5의 고유벡터로 삼겠습니다. 이번에는 고유값 2에 대응하는 고유벡터를 구하겠습니다. 

 

 가능한 고유벡터로 아래의 것을 선택하겠습니다. 

 

 

이제 위 그래프에 고유벡터들을 추가해보겠습니다. 

 

 

여기서 관찰할 수 있는 것은 Ax의 방향은 큰 고유값과 매칭되어 있는 고유벡터 x1의 방향과 더 가깝다는 것입니다. x1과 x2가 Ax의 방향에 영향을 미치는데 더 큰 고유값과 매칭되어 있는 x1이 더 큰 영향을 미친 것입니다. 

 

이번에는 x가 A의 첫번째 고유벡터와 같은 경우를 보겠습니다. 

 

이때 Ax는 다음과 같습니다.

 

이 경우를 그림으로 살펴보겠습니다. 

 

Ax의 방향은 x 및 x1의 방향과 완전히 같다는 것을 알 수 있습니다. 그리고 크기는 5배죠. 바로 고유값 크기만큼 길어졌습니다. 이래서 $Ax = \lambda x$인 것이죠. 

 

마지막으로 x가 A의 두번째 고유벡터와 같은 경우를 살펴보겠습니다. 

 

이때 Ax는 다음과 같이 계산됩니다. 

 

역시 그림으로 나타내겠습니다. 

 

이 경우에 Ax의 방향은 x 및 x2의 방향과 같고 크기는 고유값인 2배 만큼 큽니다.

 

따라서 고유값과 고유벡터 물리적 의미를 다음과 같이 결론지을 수 있습니다. 고유벡터는 방향을 결정하고, 고유값은 그 방향으로의 세기를 결정한다.

댓글()

Harris 코너 검출기의 이해

디지털 이미지는 점들, 즉 픽셀들의 집합으로 구성되어 있습니다. 그 점들 중에서 가장 중요한 점들은 단연 코너점들입니다. 코너점(corner point)이란 두 방향 이상에서 변화가 급격한 점입니다. 반면 엣지점(edge point)은 한 방향에서 변화가 급격한 점입니다. 이도 저도 아닌 점들은 평탄한 점(flat point)이라고 부릅니다. 

 

출처: https://subscription.packtpub.com/book/application_development/9781788299763/3/03lvl1sec17/harris-corner-detection

 

코너점이 중요한 이유는 이미지에서 가장 중요한 구조 정보를 담고 있기 때문입니다. 다른 정보를 모두 없애고 코너점들만 남겨놔도 이미지 내의 물체들의 형상을 대충 알 수 있습니다. 

 

그러면 오늘은 가장 기초적이면서도 효율적인 코너점 검출기인 Harris 코너 검출기에 대해서 알아보겠습니다. Harris 코너 검출기는 1988년에 Harris와 Stephens에 의해 작성된 논문 "A combined corner and edge detector"에서 소개된 방법입니다. 제가 태어난 해에 나온 방법이니 벌써 32살이 된 방법이네요. ㅎㅎ 

 

Harris 코너 검출기의 기본 원리는 다음과 같습니다.

 

한 픽셀을 중심에 놓고 작은 윈도우(window)를 설정한 후에, 이 윈도우를 x축 방향으로 u만큼, y축 방향으로 v만큼 이동시킵니다. 

그 다음 윈도우 내의 픽셀 값들의 차이의 제곱의 합을 구해줍니다. 

 

$E(u, v) = \sum _{(x_k, y_k)\in W} [I(x_k+u, y_k+v)-I(x_k,y)]^2$

 

한 마디로 얼마나 변화했는지를 계산해주는 것입니다. 코너점이라면 x축, y축 방향 모두 많이 변화했겠지요? 따라서, 이 E값이 크면 코너점이라고 보는 것입니다. 

 

그런데, 이 식은 테일러 확장에 의해 다음과 같이 근사됩니다. 

 

$\begin{align*}
E(u, v) &= \sum _{(x_k, y_k)\in W} [I(x_k+u, y_k+v)-I(x_k,y)]^2 
\\ 
 &\approx \sum _{(x_k, y_k)\in W}(\frac{\partial I}{\partial x}u)^2 + (\frac{\partial I}{\partial y}v)^2 + 2\frac{\partial I}{\partial x}\frac{\partial I}{\partial y}uv
\end{align*}$

 

그리고 이것을 행렬로 나타내면, 다음과 같이 됩니다.

 

$E(u, v) = \begin{bmatrix}
u & v
\end{bmatrix}
\begin{bmatrix}
\sum (\frac{\partial I}{\partial x})^2 & \sum \frac{\partial I}{\partial x}\frac{\partial I}{\partial y}\\ 
\sum \frac{\partial I}{\partial x}\frac{\partial I}{\partial y} & \sum (\frac{\partial I}{\partial y})^2
\end{bmatrix}
\begin{bmatrix}
u\\ 
v
\end{bmatrix}$

 

E값이 크면 코너점이라고 했는데, E값이 크려면 중간에 위치한 2 x 2행렬의 값이 커야 합니다. 이 행렬을 M이라고 하겠습니다. (이 행렬을 structure tensor라고 부르기도 합니다.)

 

이 행렬 M을 고유값 분해하면 2개의 고유값과 그에 상응하는 고유벡터들을 얻을 수 있습니다. 두 개 고유값 중에 더 큰 고유값과 연결된 고유벡터 방향으로 이미지의 변화가 가장 큽니다. 반면 작은 고유값과 연결된 고유벡터 방향으로의 이미지 변화는 작습니다. 따라서 만약 두 방향으로 변화가 크면(코너점이면), M의 고유값들은 충분히 큰 값들을 갖습니다. 하나의 고유값은 크고 다른 고유값은 작다면 엣지입니다. 둘 다 0에 가까운 값을 가지면 flat 입니다.  

 

출처: [2]

 

그런데 고유값을 계산하는 것은 계산적으로 복잡한 일이기 때문에, 다음과 같은 공식으로 대체해서 코너인지, 엣지인지, flat인지를 판정해줍니다.  

 

$R = det(M) - k(trace(M))^2$ 

 

두 고유값이 모두 크면, R은 0보다 크게 되고, 한 고유값은 크고 다른 한 고유값은 작으면 0보다 작게 되고, 둘다 작으면 0에 가까운 값이 산출됩니다. 따라서, R이 0보다 크면 코너이고, R의 절대값이 0에 가까우면 flat이고, 0보다 작으면 엣지가 되는 것이죠.  

 

그럼 한번 Harris 코너 검출기로 코너점들을 검출해보도록 하겠습니다. Matlab의 Computer vision system toolbox 내에 Harris 코너 검출에 관한 함수, detectHarrisFeatures가 있습니다. 간단한 예로 체스판 이미지에서 코너점들을 찾아보겠습니다. 

 

clc, clear, close all

I= checkerboard;
corners = detectHarrisFeatures(I);
imshow(I); 
hold on;
plot(corners.selectStrongest(50));​

 

결과 이미지는 다음과 같습니다. 

 

 

코너점들을 잘 검출해낸 것을 확인할 수 있습니다. 초록색 마커로 표시되었죠?

 

예전에 포스팅한 SIFT도 코너점 검출기입니다. Harris 코너 검출기에 비하면 고성능의 코너 검출기죠. SIFT에 관해서는 https://bskyvision.com/21을 참고하세요. bskyvision.com의 아주 초기 포스팅인데, 가장 많이 사랑을 받은 글 중 하나입니다.^^

 

 

 

<참고자료>

[1] https://en.wikipedia.org/wiki/Harris_Corner_Detector, 위키피디아(영문), Harris Corner Detector

[2] https://docs.opencv.org/master/dc/d0d/tutorial_py_features_harris.html, OpenCV, "Harris Corner Detection"

[3] https://stackoverflow.com/questions/23171991/what-does-eigen-value-of-structure-tensor-matrix-denote, Stack Overflow, "What does eigen value of structure tensor matrix denote?"

[4] https://en.wikipedia.org/wiki/Corner_detection#The_Harris_&_Stephens_/_Plessey_/_Shi%E2%80%93Tomasi_corner_detection_algorithms, 위키피디아(영문), Corner detection

[5] https://guangchun.wordpress.com/2013/02/16/harris-detector/, GUANGCHUN, "Understanding Harris corner detector"

댓글()

남자 외모 테스트, 당신은 잘생겼습니까? 못생겼습니까? (teachable machine 활용)

안녕하세요. 비스카이비전의 심교훈입니다. 어젯밤에 유튜브를 보다가 신박한 것을 발견했습니다. 구글에서 제공하는 teachable machine이라는 사이트인데요, 웹상에서 아주 쉽게 딥러닝 모델을 훈련시켜줍니다. 유투버 조코딩님의 영상을 보고 저도 하나 딥러닝 모델을 만들어봤습니다. => https://www.youtube.com/watch?v=USQGTW34lO8

 

제가 만든 모델은 영상 속의 사람이 잘생겼는지 못생겼는지 실시간으로 판별해주는 모델입니다. ㅋㅋ (남자를 대상으로 만들었습니다.) 

 

잘생긴 남자 연예인 사진 20장을 이용해서 "잘생김" 클래스를 훈련시켰고, 못생긴 남자 연예인 사진 20장을 이용해서 "못생김" 클래스를 훈련시켰습니다. (물론 더 많은 갯수의 사진을 이용해야 정확해지겠죠?)

 

컴퓨터의 웹캠으로 입력되는 영상 또는 스마트폰의 카메라로 입력되는 영상이 잘생김 클래스에 속할 확률이 70% 이상일 때는 "잘생기셨네요 ^^"라는 텍스트가 출력되게 했고, 못생김 클래스일 확률이 70% 이상일 때는 "못생겼어요 ><"가 출력되게 했습니다. 둘다 70% 미만일 경우에는 "애매하게 생기셨네요.."가 출력되게 했습니다.  

 

친구와 제가 테스트해봤습니다. ㅋㅋ 친구는 휴대폰으로, 저는 노트북으로. 표정에 따라 다르게 반응하네요. ㅎㅎ 얼추 맞는거 같기도 하고요?

 

 

한번 테스트 해보시죠. 당신은 잘생기셨습니까? 아니면 못생기셨습니까? 아래 start 버튼을 누르면 시작합니다. 

 

 


거울아 거울아 나는 잘생겼니??

 

 

결과가 어떠신지요? ㅋㅋ

그냥 재미삼아 한 테스트인거 아시죠?

댓글()