딥 러닝에서 현재 이미지 평균 대신 데이터 세트의 이미지 평균을 빼서 이미지를 정규화하는 이유는 무엇입니까?


88

이미지를 정규화하는 방법에는 몇 가지 변형이 있지만 대부분 다음 두 가지 방법을 사용하는 것 같습니다.

  1. 모든 이미지에서 계산 된 채널당 평균을 빼십시오 (예 : VGG_ILSVRC_16_layers )
  2. 모든 이미지에서 계산 된 픽셀 / 채널로 빼기 (예 : CNN_S , Caffe 's reference network 참조 )

자연스러운 접근 방식은 각 이미지를 정규화하는 것입니다. 넓은 일광에서 촬영 한 이미지는 야간 이미지보다 더 많은 뉴런을 발생시키고 일반적으로 가장자리에있는 더 흥미로운 기능에 관심이있는 시간을 알려줍니다.

Pierre Sermanet 은 3.3.3에서 이미지 당 기반의 로컬 대비 정규화 를 언급하지만 필자가 본 예제 / 자습서에서는이 문제를 다루지 않았습니다. 또한 흥미로운 Quora 질문 과 Xiu-Shen Wei의 게시물을 보았지만 위의 두 가지 접근 방식을 지원하지 않는 것 같습니다.

내가 정확히 무엇을 놓치고 있습니까? 이것이 색상 정규화 문제 입니까, 아니면 왜 많은 사람들이이 접근법을 사용하는지 실제로 설명하는 논문이 있습니까?


답을 모르겠지만 각 방법을 시도해 보셨습니까? 공연에 차이가 있습니까?
— user112758

@ user112758-그것들을 구현하는 것은 (특히 픽셀별로) 약간 고통 스럽습니다. 제 경험에 따르면 이미지 당 정규화는 정상적으로 작동하지만 내 데이터는 그 대표자가 아닙니다. 나는 정규화를 실험하려고 시도하지만 이상한 정규화 절차 뒤에있는 동기를 듣고 싶습니다.
— Max Gordon

좋아, 아마도 당신은 caffe Google 그룹 caffe GitHub 문제에서 이것을 요청할 수 있습니다. 이 주제에 대해 더 많은 전문가가있을 것 같습니다.
— user112758

답변:


58

데이터 세트 평균을 빼면 데이터를 "중심"시키는 역할을합니다. 또한 각 기능 값을 z- 점수로 정규화하려는 경우 해당 기능이나 픽셀의 sttdev로 나누는 것이 이상적입니다.

우리가이 두 가지를하는 이유는 네트워크를 훈련하는 과정에서 초기 입력 값을 곱하고 (가중치) 추가하기 (바이어스)하기 때문에 활성화를 유발하기 위해 모델을 훈련시킵니다.

이 과정에서 각 기능의 범위가 비슷하여 그래디언트가 제어 범위를 벗어나지 않고 하나의 글로벌 학습률 승수 만 필요합니다.

당신이 그것에 대해 생각할 수있는 또 다른 방법은 전통적으로 딥 러닝 네트워크가 많은 매개 변수를 공유하는 것입니다-비슷한 범위의 기능 값 (즉, 평균을 빼서 전체 데이터 세트에서)으로 공유를 공유하지 않는 방식으로 입력을 조정하지 않으면 이미지 무게의 한 부분이 w많고 다른 부분이 너무 작기 때문에 매우 쉽게 발생 합니다.

일부 CNN 모델에서는 이미지 별 미백이 사용된다는 것을 알 수 있습니다.


4
답변 감사합니다. 나는 데이터를 중심에두고 안정적인 그라디언트를 얻기 위해 범위가 비슷한 지 확인하는 개념에 익숙합니다. 문제는 왜 우리가 전체 데이터 세트에 대해 이것을 수행해야하는지 그리고 왜 이것이 이미지 별 미백과 대조되는 데 도움이 될까요? 나는 이것이 대답을 받아들이 기 전에 학습을 향상시키는 방법을 보여주는 간단한 참조를 원합니다. 배치 정규화 가 매우 강력한 기술 이라는 것을 알고 있지만 전체 데이터 세트 정규화에 대한 연결이 보이지 않습니다.
— Max Gordon

배치 정규화가 좋다는 것을 받아들이면 이미 있습니다. 일괄 정규화하는 유일한 이유는 메모리에 전체 데이터 세트를 넣을 수 없거나 교육을 배포하는 경우 (종종 동일한 문제)입니다. 이것이 우리에게 배치가있는 이유입니다.
— lollercoaster 2016 년

배치도 확률 적 경사 하강의 기초라고 생각했습니다. 모든 것을 메모리에 넣을 수 있더라도 각 시대 이후보다 매개 변수를 더 자주 업데이트하려고합니다.
— Max Gordon

3
그들은. 또한 원하는 빈도로 업데이트 할 수 있습니다. 분석 시사점은 동일하며 그래디언트 디센트에 대해 매우 훌륭하고 확장 가능합니다. 스토캐스틱 그라디언트 디센트 (셔플 링 입력 순서 + 배치)를 사용하는 이유는 그라디언트 공간을 통해 힐 클라이밍을 부드럽게하기위한 것입니다. 단일 지점이 주어지면 업데이트로 인해 로컬 최대 점으로 진행될 것이라고 확신 할 수는 없지만 충분한 지점을 선택하면이 가능성이 높아집니다 (예상).
— lollercoaster 2016 년

2
이 기능이 유사한 범위로 기능을 얻는 데 어떻게 도움이됩니까? 두 개의 이미지가있는 경우 하나는 0에서 255 사이의 범위에 있고 다른 하나는 픽셀 값에서 0에서 50까지의 범위에 속합니다 (평균은 50이고 stdev는 15). -3.3 to 0. 그들은 여전히 ​​같은 규모가 아닙니다.
— 다니엘

9

배치 정규화 이전에, 각 채널 (R, G, B)에 대해 제로 평균 주위에 데이터를 집중시키기 위해 채널당 평균 감산이 사용되었다. 이는 일반적으로 그라디언트가 각 채널에 균일하게 작용하기 때문에 네트워크가 더 빨리 학습하는 데 도움이됩니다. 배치 정규화를 사용하는 경우 미니 배치마다 정규화하기 때문에 채널 당 평균 빼기 사전 처리 단계가 실제로 필요하지 않은 것 같습니다.


1
"배치 정규화를 사용하는 경우 미니 배치 당 정규화하기 때문에 채널당 평균 빼기 전처리 단계가 실제로 필요하지 않다고 생각합니다." 그러나 배치 표준은 실제 입력 이미지가 아닌 네트워크 계층의 가중치를 정규화하는 것을 말합니다. 이것들은 2 가지입니다.
— Monica Heddneck

4

이미지 당 정규화는 일반적이며 현재 Tensorflow에 내장 된 유일한 기능입니다 (주로 구현하기 매우 쉽기 때문에). 언급 한 정확한 이유로 사용됩니다 (동일한 이미지의 경우 낮 VS 밤). 그러나 조명이 제어되는 더 이상적인 시나리오를 상상한다면 알고리즘에서 각 이미지 간의 상대적인 차이가 큰 가치가 있으며 이미지 당 정규화로 지우고 싶지 않을 것입니다. 전체 교육 데이터 세트의 맥락에서 정규화를 수행하십시오).


4

이것을 사용하기 전에 데이터의 전처리라고합니다. 여러 가지 방법으로 처리 할 수 ​​있지만 X_preproc = f (X)와 동일한 함수를 사용하여 각 데이터를 처리해야하는 한 가지 조건이 있으며이 f (.)는 데이터 자체에 의존하지 않아야합니다. 따라서 현재 이미지 평균을 사용하여이를 처리하는 경우 현재 이미지를 보면 f (X)는 실제로는 f (X, image)가되고 싶지 않습니다.

당신이 이야기했던 이미지 콘트라스트 정규화는 다른 목적을위한 것입니다. 이미지 대비 정규화가 기능에 도움이됩니다.

그러나 위의 f (.)는 모든 기능을 수치 적으로 동일하게 유지함으로써 최적화에 도움이됩니다 (물론 대략)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.