2016-10-01 3 views
0

피쳐 인식에서 컨볼 루션을 발견 한 모든 고난이도 예제는 픽셀 값 1 또는 -1을 사용하여 컨볼 루션 작업을 "단순화"합니다. 그것은 정말 간단한 조작한다 (다음의 화소 수로 나누고, 필터 화소, 합 결과가 입력 화소 곱)이미지 인식에 사용 된 회선 연산은 무엇입니까?

basic convolution

그러나, 화소 값의 범위를 가질 것이다 대부분의 이미지를 실제로 도움 아니다 . 예 : (0.0-1.0) 또는 (0-255).

이 입력 값에 사용할 알고리즘을 어디에도 찾을 수 없습니다. 각 픽셀의 차이를 합산 한 다음 픽셀 수로 나누어 전체적인 "오류"를 얻었습니다. 그러면 활성화가 최대 오류와 같습니다. 예 : 255 - 오류 또는 1.0 - 오류.

ReLU 레이어가 필요하지 않지만 음의 값은 출력되지 않습니다. 이것은 내가 그것이 순진한 접근법이고 실제로 일하지 않을 것이라고 의심하게 만듭니다. 그러나 나는 왜 확신 할 수 없습니다.

입력 데이터가 1 ​​/ -1이 아닌 경우 사용되는 연산은 무엇입니까? http://brohrer.github.io/how_convolutional_neural_networks_work.html

그리고 설명하는 컨볼 루션 연산 :

은 단순히 이미지의 패치 기능의 일치를 계산하려면

EDIT 여기 내가보고 된 한 예입니다 피쳐의 각 픽셀에 이미지의 해당 픽셀 값을 곱하십시오. 그런 다음 답변을 추가하고 지형지 물의 총 픽셀 수로 나눕니다. 두 픽셀이 흰색 (1 값)이면 1 * 1 = 1입니다. 둘 다 검정이면 (-1) * (-1) = 1. 어느 쪽이든, 일치하는 픽셀이 모두 1이됩니다. 불일치는 -1입니다.

[0.0,1.0]의 값을 가진 픽셀에 대해 이것이 올바르게 작동하지 않는 구체적인 예가 나와 있습니다. 값이 [0.5] 인 1x1 필터가 있다고 가정 해 보겠습니다. 값이 0.5 인 입력 픽셀에서 실행하면 0.25이됩니다.

마찬가지로 색상 범위가 [0,255] 인 경우 값이 255보다 많습니다. 더 이상 픽셀 데이터가 아니므로 중요하지는 않습니다. 그것은 기능 맵에서 활성화 된 것입니까?

답변

1

일반적으로 각 픽셀마다 컨볼 루션을 사용합니다. 그래서 각 픽셀은 그 모든 가중치를 가진 모든 픽셀의 합계입니다. 따라서 0.77 * 코너 픽셀, 0.33 * 다른 코너와 모든 값이 합산되어 가운데에 놓입니다. 보통 압착. 그런 다음 데이터를 중첩하지 않고 다른 모든 픽셀에 대해 동일하게 수행됩니다.

해당 픽셀의 다음 버전 값은 여러 픽셀의 합계입니다. 때때로 이것은 가중치로 주어집니다. 따라서 -1을 곱하기보다는 각 픽셀의 가중치를 곱합니다.

일반적으로 컨볼 루션 가중치를 표준화합니다. 이 경우에는 9.444444444444444이고 다양한 양의 다양한 픽셀의 합을 해당 양으로 나누십시오. 그러나 이것은 명확하게 Canny Edge Detection입니다. 즉, 주어진 범위를 초과하고 가장자리 만 나누는 것입니다. 이는 커널에 따라 최대 범위 인 9.44x를 허용 할 수 있음을 의미합니다. 그리고 음수 값의 맨 아래 범위. 그런 다음 루틴을 압착하여 주어진 픽셀을 0-255 또는 0.0-1 범위로 잘립니다.0 (사용중인 제품에 따라 다름). 이것은 많은 데이터를 잃어 버리지 만 요점은 소음을 잃고 가장자리를 유지하기를 원합니다.

+0

그래 거기

, 내가 입력에서 필터를 컨 볼브하는 방법을 이해합니다. 내가 말한 것은 입력 픽셀마다 바이너리 1/-1이 아닌 값의 범위가있는 경우 어떻게 작동하는지 불분명하다는 것입니다. 나는이 문제의 근본적인 예를 포함하도록 질문을 편집했다. –

+0

1/(모든 숫자의 합)로 나눕니다. – Tatarize

+0

사용하는 가중치가 무엇이든 정규화하거나 사전 표준화해야합니다. 따라서 가중치를 합산하여 가중치를 계량하십시오. 그것은 무게의 합계에 그 가치 전부의 평균 같이 조금이다. – Tatarize

0

일반적으로 첫 번째 패스로 바이너리로 변환하려면 입력을 임계 값으로 설정해야합니다. 물론 그레이 스케일 이미지를 콘볼 루션 할 수 있으며, Canny 라인 탐지가 바로 그 것입니다. 그러나 결과는 또 다른 연속적인 이미지이며 추가 처리가 필요합니다. 여기 내 GitHub의 프로젝트에 바이너리 이미지 처리에 대한 몇 가지 소재, http://malcolmmclean.github.io/binaryimagelibrary/