이번에는 convolution에 대해 배우는데, 왜 convolution을 하느냐에 대해 이해하는 것이 가장 중요한 개념입니다. 또한 딥러닝에서는 CNN에서의 C가 convolution이며, CNN에서 해당 개념을 사용합니다.
영상의 픽셀 값 하나씩을 변환시키는 것입니다. 앞서 배운 이진화 또한 어떤 임계값 T를 기준으로 픽셀 하나 하나가 흑(0) 또는 백(255)으로 바뀌므로 점 연산에 속합니다.
선형 연산은 특정한 방정식(선형 함수)을 이용하여 각각의 픽셀 값을 변화시키는 것입니다.
비선형 연산은 비선형 함수를 이용하여 각각의 픽셀 값을 변화시키는 것이며, 채도, 명암, 대비 등을 조절할 때 사용합니다. 히스토그램 평활화(histogram equlaization) 또한 점 연산의 비선형 연산입니다.
디졸브란 영상의 전환이 자연스럽게 이루어질 수 있도록 하는 방법입니다.
은 출력 영상이며, (j,i)는 화소, k는 입력 영상의 개수를 뜻합니다. 아래는 예시입니다.
어떻게 방정식을 만드느냐에 따라 방법이 다양하기 때문에 점 연산은 아주 간단한 연산입니다. 이번 시간에 가장 중요한 하이라이트는 영역 연산입니다.
영상의 일부 영역의 정보를 이용해서 변환시키는 것입니다. 즉, 주어진 영상의 일부 영역의 특징을 내가 원하는 방향(필터의 모양)으로 걸러냅니다.
filter를 활용하는 것이 대표적이며, filter에는 convolution이 존재합니다. 예시로는 box filter를 사용하여 평균을 구하거나, edge filter를 이용하여 edge를 구합니다.
상관과 컴볼루션은 의미로는 동일하나, 수학적으로 처리하는 방식에 약간 차이가 있습니다.
윈도우 는 검출하려는 물체 영상이며, filter라고도 부릅니다. 주어진 영상 에서 윈도우 와 유사도가 가장 높은 곳은 어디에 있는지를 구하기 위해 사용합니다.
아래는 연산 방법입니다.
윈도우를 입력 영상에 대응시킨 후 곱하고, 각각의 값을 모두 더합니다. 해당 결과값이 높을수록 윈도우 와 유사성이 높다고 할 수 있습니다. 컴볼루션은 윈도우를 뒤집은 후 상관 적용하며, 임펄스 반응이라고도 부릅니다. 연산 방식은 책 80쪽에 잘 설명되어 있습니다.
앞선 점 연산은 주변 픽셀의 영향을 받지 않는 반면, 상관이나 컴볼루션은 주변 픽셀들의 영향을 받습니다. 따라서 윈도우(필터)에 따라 주변 픽셀에 얼마큼 영향을 받게 될 건지가 정해집니다. 윈도우가 커질 수록 주변 픽셀의 영향력도 커집니다.
그러나 컴퓨터비전에서는 보통 상관이 아닌 컴볼루션이라고 칭하는데, 그 이유는 2차원에서의 연산 때문입니다. 2차원에서 상관 연산을 하면 윈도우의 상하좌우가 바뀐 형태로 나타나는 반면, 컨볼루션 연산을 하면 윈도우가 그대로 나오게 됩니다. 즉 컴볼루션에서는 원래 필터가 가진 형태를 그대로 유지하면서도 유사도를 비교할 수 있기 때문에 대부분의 연산이 컴볼루션 연산을 통해 이루어집니다. (그러나 의미론적으로서는 둘 다 주어진 영상으로부터 윈도우와 유사한 영역을 찾아내는 데 사용합니다.)
Stride는 필터가 한 번에 이동하는 픽셀 개수입니다. Stride가 크면 필터가 더 넓은 영역을 한 번에 보게 되어 이미지의 크기가 더 작아지고, 전체적인 정보를 추출할 수 있게 됩니다. Stride가 작으면 세밀한 정보를 더 잘 보게 되지만 계산량이 많아집니다. 따라서 filter를 사용할 때는 Stride=2를 사용하여 전체적인 정보를 처리하게 됩니다.
참고. 컨볼루션은 뒤집기 때문에 - 연산을 사용합니다.
컨볼루션 개념은 전자공학에서 시작하였습니다. Continous Convolution이란 연속적인 함수로, 연속적인 값으로 표현된 신호나 데이터를 처리할 때 사용됩니다.
아래는 두 개의 신호(=연속 함수) 와 의 컨볼루션을 정의하는 수학적 연산으로, 다음과 같은 수식으로 표현됩니다. (단계는 ppt 12쪽 확인)
convolution이 만들어진 이유는, 본래 디지털 신호는 1과 0으로 이루어져 있어 미분이 불가능한데, convolution을 통해 미분 가능하도록 변환하기 위해서입니다. 전자공학에서의 이러한 컨볼루션 개념이 컴퓨터비전으로 발전되었습니다.
앞서 말한 CNN에서도 컨볼루션을 사용합니다. 이는 local feature를 찾기 위한 과정으로, filter를 통해 5X5의 영역을 9개씩 묶어 3X3의 convolved feature로 나타낼 수 있습니다. convolved feature는 각 영역의 대표값, 즉 주어진 영역에 대한 압축 정보로 이루어져 있습니다. CNN에서 가장 중요한 부분은, 차원을 줄이면서도 영역에 대한 대표값을 표현하는 것입니다.
컨볼루션 연산을 할 때 대표값은 가운데로 모이고, 입력 영상의 가장자리 정보는 구할 수 없습니다. 따라서 이런 오버플로우를 방지하기 위해 상하좌우 가장자리에 0를 덧붙이는데, 이를 Padding이라고 합니다.
Max pooling를 하는 이유는 값이 클수록 유사도가 높기 때문에, 각 연산을 마친 후의 대표값을 찾기 위해서입니다.
컨볼루션은 어떤 filter를 사용하느냐에 따라 영상 처리 효과가 달라집니다. 박스 필터와 가우시안 필터는 스무딩 효과를 주고, 샤프닝은 명암 대비 강조 효과를 줍니다. 또한 수평 에지와 수직 에지는 에지 검출 효과가 있습니다.
각 필터는 모두 비율값으로 다 더하면 1이 됩니다.
| 1/9 | 1/9 | 1/9 |
| 1/9 | 1/9 | 1/9 |
| 1/9 | 1/9 | 1/9 |
가장 많이 사용하는 필터로, 주어진 영상의 평균을 구해 스무스하게 만들어주는 필터입니다. 3X3 영상일 때는 1/9지만, 만약 5X5면 한 칸당 1/25가 들어갑니다.
박스 필터를 응용하면 모자이크를 만들 수 있습니다. 박스 필터로 대표값을 구한 후 해당되는 위치 하나에만 값을 넣는 것이 아니라, 해당 영역에 대표값을 전부 채우는 것입니다. 이처럼 필터를 어떻게 설정하느냐에 따라 원하는 형태를 다양하게 만들 수 있습니다.
| .0000 | .0000 | .0002 | .0000 | .0000 |
| .0000 | .0113 | .0837 | .0113 | .0000 |
| .0002 | .0837 | .6187 | .0837 | .0002 |
| .0000 | .0113 | .0837 | .0113 | .0000 |
| .0000 | .0000 | .0002 | .0000 | .0000 |
테이블의 각 행렬의 모양이 가우스 함수의 형태를 띄고 있기 때문에, 자연스럽게 스무딩되는 효과가 있는 필터입니다. 가우시안 필터는 박스 필터의 정교화된 필터로, 박스 필터보다 더 스무스하게 만들어줍니다.
가우시안 필터는 가우스 함수의 모양을 따르므로 시그마(σ), 즉 표준편차에 영향을 받습니다. 해당 필터의 값은 σ=1일 때에 해당되는 값입니다.
| 0 | -1 | 0 |
| -1 | 5 | -1 |
| 0 | -1 | 0 |
5와 -1로 명암 값의 격차가 크다는 걸 볼 수 있습니다. 따라서 대비가 올라가여 영상에서 대비가 있는 부분이 강조되는 필터입니다.
| 0 | 0 | 0 |
| 0 | 2 | 0 |
| 0 | 0 | 0 |
| 1/9 | 1/9 | 1/9 |
| 1/9 | 1/9 | 1/9 |
| 1/9 | 1/9 | 1/9 |
또한 위와 같이 표현도 가능합니다. 이를 정확히 설명하면, 원본값에 (원본값 - 평균값)를 더해줍니다. (원본값 - 평균값)은 평균값이 빠지므로 대비가 심한 부분만 남게 되고, 이를 원본에 더하면 대비가 심한 부분이 강조가 되어 샤프닝 효과가 나타납니다.
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 0 |
원본 이미지가 나타납니다.
| 0 | 0 | 0 |
| 0 | 0 | 1 |
| 0 | 0 | 0 |
왼쪽으로 한 칸 밀립니다.
| 1 | 0 | -1 |
| 2 | 0 | -2 |
| 1 | 0 | -1 |
| 1 | 2 | 1 |
| 0 | 0 | 0 |
| -1 | -2 | -1 |
에지를 검출하는 소벨 필터입니다. 첫 번째는 세로축을 강조하고, 두 번째는 가로축을 강조합니다. 이 필터에 대해서는 에지 검출 파트에서 다시 배울 예정입니다.
| 1 | 1 | 1 |
| 0 | 0 | 0 |
| -1 | -1 | -1 |
| 1 | 0 | -1 |
| 1 | 0 | -1 |
| 1 | 0 | -1 |
에지를 검출하는 prewitt edge filter입니다. 첫 번째는 세로축을 강조하고, 두 번째는 가로축을 강조합니다.
prewitt edge filter와 소벨 필터는 모두 에지를 검출하는 필터입니다.
단지 다른 점은, Prewitt 필터는 모든 픽셀에 동일한 가중치를 주지만, 소벨 필터는 중앙의 픽셀에 더 큰 가중치를 부여합니다. 이로 인해 소벨 필터는 더 부드러운 에지 결과를 제공합니다. 또한 소벨 필터는 각 방향으로 더 많은 픽셀을 고려하여 연산하기 때문에 Prewitt 필터보다 노이즈에 강한 경향이 있습니다.
영역 연산의 비선형 연산에는 sorting을 하여 중간값들로 채워 넣는 메디안 필터가 있습니다. 이는 솔트페퍼(흰색과 검은색의 점 노이즈) 노이즈에 효과적이며, 노이즈를 제거할 때 가우시안에 비해 에지 보존 효과가 뛰어납니다.
필터는 선형적인 특성을 가지고 있습니다. 필터를 더해서 이미지에 적용하거나, 각각의 필터를 이미지에 따로 적용해도 동일한 결과가 나옵니다. 또한 필터의 순서를 바꿔도 영향을 받지 않습니다. 이 외에도 선형대수의 특징을 모두 따릅니다. (필요하다면 More properties 부분을 참고)
점 연산
영역 연산: 필터를 만들어서 컨볼루션 연산을 통해 우리가 원하는 영상을 만드는 것
컨볼루션과 필터의 개념에 의해서 영역의 특징값을 뽑아냄
필터의 모양에 따라 내가 원하는 효과가 달라짐
예전에는 상황에 따라 사람이 필터를 설정했지만, 이제 딥러닝에서의 학습은 컴퓨터가 수많은 데이터의 경향을 보고 그 필터를 학습하는 것으로 바뀜