ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 위치 차이를 CNN이 어떻게 처리합니까?
    MACHINE LEARNING 2017. 11. 5. 16:53
    반응형

    이 문서는 영문으로된 내용을 구글 번역기를 활용하여 번역한 내용입니다. 
    개인적인 공부 및 추후 다시 볼 수 있도록 하기 위해 개인 블로그에 번역 내용을 옮겨 놓았습니다.
    원문과 내용이 다를시 책임지지 않으며, 저작권 문제가 발생시 언제든 삭제 될 수 있습니다. 

    원문보기 : https://petewarden.com/2017/10/29/how-do-cnns-deal-with-position-differences/



    위치 차이를 CNN이 어떻게 처리합니까?

    이미지 분류를 위해 convolutional neural networks를 사용하는 것에 대해 배운 엔지니어는 흥미로운 질문을 던졌습니다. 모델은 이미지의 다른 위치에 있는 물체를 인식하는 방법을 어떻게 알 수 있습니까? 이것은 실제로 많은 설명이 필요하기 때문에, 다른 사람들에게 도움이 될 수 있도록 필자는 메모를 작성하기로했습니다.
    다음은 친구가 언급 한 문제를 보여주는 이미지의 예입니다.

    태양의 모양을 가진 모든 이미지를 인식하려고 한다면 태양이 이미지의 어느 위치에 있을지라도 모델이 작동하는지 어떻게 확인할 수 있습니까? 그것은 당신이 그것을 어떻게 감지하는지에 대한 깨달음의 세 단계가 실제로 있기 때문에 흥미로운 문제입니다 :
    • 컴퓨터 프로그래밍을 시도하지 않았다면 눈과 두뇌가 포지셔닝의 차이점을 다루는데 아무런 문제가 없으므로 해결하기가 쉽습니다.
    • 전통적인 프로그래밍으로 유사한 문제를 해결하려고 시도한다면 입력 차이를 얼마나 잘 처리 할 수 있는지, 그리고 고객에게 너무 까다로운 이유를 설명하는 것이 얼마나 힘든지 알 수 있기 때문에 마음이 가라 앉을 것입니다.
    • 인증 된 Deep Learning Guru로서, 당신의 턱수염과 미소를 현혹 시키게 될 것입니다. 당신의 네트워크가 큰 걸음으로 그런 사소한 문제를 겪을 것이라는 사실을 안심하십시오.
    내 친구는 깨달음의 세 번째 단계에 있지만 CNN이 왜 그렇게 잘 대처할 수 있는지에 대한 접근 가능한 설명이 거의 없다는 것을 깨달을 정도로 똑똑합니다. 나는 새로운 통찰력을 가지고 있다고 주장하지 않습니다. 지난 몇 년 동안 이미지 모델로 작업하면서 경험에서 몇 가지 아이디어를 얻었습니다. 민간 전승이 학문가계도(academic family tree)를 통과 한 것을 들었으므로, 내가 알고 있는 것을 나누고 싶습니다. 나는 이것에 대한 좋은 논문 링크를 환영 할 것입니다. 왜냐하면 나는 이것을 손에 넣을 수있는 공학적인 직관에 근거하고 있기 때문에 설명을 향상 시키는데 도움이 됩니다.
    이 문제를 이해하기위한 출발점은 네트워크가 자연스럽게 위치 결정 문제에 영향을받지 않는다는 것입니다. 처음에는 ImageNet에서 사진을 수집한 네트워크를 통해 사진을 찍어서 휴대폰으로 실행했습니다. ImageNet 자체의 역사는 매력적입니다. 원래 Google 이미지 검색은 각 클래스 이름을 검색하여 공개 웹에서 후보 이미지를 찾은 다음 연구자가 후보자를 통해 잘못된 정보를 제거했습니다. 내 친구 톰 화이트 (Tom White)는 이례적인 결과 데이터를 파헤치는 재미를 보았습니다. 쓰레기 트럭 카테고리에 등장하는 많은 여성 모델과 같은 흥미로운 이상한 점을 발견했습니다! 안드래이 카르패시(Andrej Karpathy)는 ImageNet 사진에 손으로 라벨을 붙여서 그 특성을 더 잘 이해할 수 있는지 설명합니다. 
    우리의 목적은 훈련 세트의 모든 이미지를 사람들이 찍고 웹 검색에서 잘 랭크된 웹 사이트에 게시하는 것입니다. 즉, 무작위 스냅 샷보다 전문적인 경향이 있으며, 특히 이미지의 피사체가 중앙에 가깝고, 수평을 맞추고, 많은 그림을 찍을 수 있습니다. 대조적으로, 분류기를 시험해보기 위해 핸드폰의 라이브 카메라를 객체로 향하게하면 사람은 이상한 각도일 가능성이 높으며, 아마도 위에서와 같이 프레임의 객체 일부만 가질 수 있습니다. 이것은 ImageNet에서 교육받은 모델의 교육 데이터가 사용자가 제공 한 것과 너무 다르기 때문에 휴대폰으로 실행할 때 게시된 정확도 통계가 제안하는 것보다 훨씬 나쁜 인식 성능을 가짐을 의미합니다. Android에 TensorFlow Classify 애플리케이션을 설치하는 경우에도 이 내용을 볼 수 있습니다. 핸드폰에서 모델을 쓸모 없게 만드는 것은 나쁘지 않습니다. 사용자가 아직 프레임을 만들지는 못하지만, 로봇과 유사한 기기에서는 훨씬 심각한 문제입니다. 카메라 배치가 완전히 임의적이기 때문에 ImageNet에서 숙련된 모델은 종종 심각한 어려움을 겪습니다. 보통 어안 렌즈와 같은 다른 차이점이 있기 때문에 유사한 장치에서 캡처 한 자체 교육 세트를 사용하도록 해당 응용 프로그램 개발자에게 권장합니다.
    여전히 ImageNet 내에서 포지셔닝에는 많은 차이가 있기 때문에 네트워크가 어떻게 대처할 수 있습니까? 비밀의 일부는 흔히 입력에 인공 오프셋을 추가하는 것을 포함하기 때문에 네트워크가 이러한 차이에 대처하는 방법을 배워야한다는 것입니다.

    각 이미지가 네트워크에 입력되기 전에 무작위로 잘라낼 수 있습니다. 모든 입력은 표준 크기 (종종 200x200 또는 300x300)로 축소되기 때문에 각 그림 내에서 개체의 위치 및 크기를 무작위로 추출 할뿐만 아니라 잠재적으로 그 부분을 잘라낼 수 있습니다. 네트워크는 여전히 답변에 대해 처벌을 받거나 보상을받습니다. 따라서 좋은 성과를 얻으려면 이러한 차이에도 불구하고 정확하게 추측 할 수 있어야합니다. 이것은 네트워크가 포지셔닝 변화에 대처하는 방법을 배우는 것이지, 어떻게 변화 하는지를 설명합니다.
    그것을 탐구하기 위해, 나는 약간의 민속학과 비유에 빠져 들어야만 합니다. 나는 설명으로 제공할것을 뒷받침하는 연구가 없지만, 다른 실험자들과의 나의 실험에 대한 토론에서 그것은 작동 이론으로 꽤 잘 받아 들여진 것처럼 보인다.
    AlexNet이 발생한 이후로 CNN은 데이터를 최종 분류 작업에 전달하는 연속적인 레이어로 구성되었습니다. 우리는 초기 레이어를 에지 디텍터로 생각하고 매우 기본적인 픽셀 패턴을 찾은 다음 각 후속 레이어는 입력으로 가져 와서 더 깊고 깊게 갈수록 더 높은 수준의 개념을 추측합니다. 일반적인 네트워크의 첫 번째 레이어에 대한 필터를 보면 가장 쉽게 알 수 있습니다.

    이것이 보여주는 것은 각 필터가 찾고있는 작은 패턴입니다. 그들 중 일부는 다른 방향의 가장자리이고 다른 것은 색상이나 모서리입니다. 불행히도 당신이 그 주제를 더 탐험하고 싶다면 제이슨 요신스키(Jason Yosinski)와 다른 사람들은 훌륭한 리소스를 보유하고 있지만 나중에 레이어를 거의 단순하게 시각화 할 수 없습니다.
    다음은 관련된 개념을 설명하기위한 다이어그램입니다.

    첫 번째 레이어는 수평 가장자리, 모서리 또는 단색 패치와 같이 이미지에서 매우 단순한 픽셀 패턴을 찾고 있음을 보여줍니다. 이는 위의 CaffeNet 그림에 표시된 필터와 유사합니다. 이들은 입력 이미지에서 실행되므로 각 패턴이 일치하는 곳의 히트 맵 강조 표시를 출력합니다.
    이해하기 까다로운 부분은 두 번째 레이어에서 일어나는 일입니다. 첫 번째 레이어의 각 단순 필터에 대한 히트 맵은 활성 레이어의 별도 채널에 배치되므로 일반 이미지의 세 번째 또는 네 번째와 달리 두 번째 레이어의 입력은 일반적으로 100 개가 넘습니다. 두 번째 레이어가 찾고있는 것은 이러한 히트 맵에서 더 복잡한 패턴이 결합 된 것입니다. 다이어그램에서 우리는 태양의 한 꽃잎을 알아 내려고합니다. 우리는 이것이 한쪽 끝에 예리한 모서리를 가지고 있으며, 인근은 수직선이 될 것이며, 그 중심은 노란색으로 채워질 것이라는 것을 압니다. 이 개별 특성 각각은 입력 활성화 계층에서 하나의 채널로 표시되며 두 번째 계층의 "꽃잎면 향함"필터는 세 가지 모두가 함께 나타나는 이미지 부분을 찾습니다. 하나 또는 두 개의 이미지 만있는 영역에서는 아무 것도 출력되지 않지만 세 개의 이미지가 모두있는 경우 두 번째 레이어의 출력에는 높은 활성화가 표시됩니다.
    첫 번째 레이어와 마찬가지로 두 번째 레이어에는 많은 필터가 있으며 "꽃잎이 위를 향하게", "꽃잎이 오른쪽을 향하게"등과 같이 더 높은 수준의 개념을 나타내는 것으로 생각할 수 있습니다. 이것은 시각화하기가 더 어렵지만 많은 채널을 가진 활성화 레이어가 생성됩니다. 각 채널은 해당 개념 중 하나를 나타냅니다.
    네트워크에 깊이 들어가면 컨셉은 점점 더 높아집니다. 예를 들어, 여기서 세 번째 또는 네 번째 레이어는 관련 입력 채널을 결합하여 꽃잎으로 둘러싸인 노란색 원을 활성화 할 수 있습니다. 그 표현으로부터 태양이 존재할 때마다 자리 잡는 간단한 분류자를 작성하는 것은 상당히 쉽습니다. 물론 실세계 분류 자들은 인간 친화적 인 구성 요소가 제공되는 것보다 스스로 문제를 파헤 치는 방법을 배우기 때문에 위에서 정의한 것처럼 거의 깔끔하게 개념을 표현하지 않지만 동일한 기본 아이디어가 유지됩니다.
    이것은 네트워크가 어떻게 위치 차이를 다루는 지 설명하지 못합니다. 이를 이해하려면 이미지 분류를위한 CNN의 또 다른 공통 디자인 특성에 대해 알아야합니다. 네트워크에 깊이 들어가면 일반적으로 채널 수가 증가하지만 이미지의 크기는 줄어들 것입니다. 이러한 축소는 전통적으로 평균 풀링과 함께 풀링 레이어를 사용하여 이루어 지지만 요즘 최대 풀링을 사용하는 것이 일반적입니다. 어쨌든, 그 효과는 꽤 비슷합니다.

    여기서 우리는 이미지를 찍어 반으로 축소하는 것을 볼 수 있습니다. 각 출력 픽셀에 대해 2x2 입력 패치를보고 최대 값을 선택합니다. 따라서 최대 풀링 이름을 선택하십시오. 평균 풀링의 경우, 대신에 4 개의 값의 평균을 취합니다.
    이러한 종류의 풀링은 값이 네트워크를 통해 이동함에 따라 반복적으로 적용됩니다. 즉, 결국 이미지 크기가 300x300에서 13x13로 축소되었을 수 있습니다. 이 축소는 또한 가능한 위치 변동의 수가 많이 줄어들 었다는 것을 의미합니다. 위 예제의 경우, 태양 이미지가 나타날 수있는 수평 행은 13 개 뿐이고 수직 열만 13 개입니다. 최대 풀링 덕분에 활성화가 동일한 셀로 병합되기 때문에 작은 위치 차이는 숨겨집니다. 이것은 원래의 이미지보다 훨씬 단순한 표현만을 다룰 수 있기 때문에 최종 분류 자에 대해 훨씬 더 관리하기 쉬운 위치 차이를 다루는 문제를 만듭니다.
    이것은 이미지 분류기가 일반적으로 위치 변경을 처리하는 방법에 대한 나의 설명이지만 오디오의 오프셋과 같은 유사한 문제는 무엇입니까? 나는 풀링에 대한 대안을 제공하는 "확장 된"또는 "atrous"컨볼 루트의 최근 상승에 흥미를 느꼈습니다. 최대 풀링과 마찬가지로 출력 이미지는 작지만 컨볼 루션 자체 내에서 이미지를 생성합니다. 인접한 입력 픽셀을 샘플링하는 대신 스트라이드로 구분 된 샘플을보고 잠재적으로 상당히 클 수 있습니다. 이를 통해 비 로컬 정보를 관리 가능한 형태로 신속하게 가져올 수 있으며 DeepMind의 WaveNet 문서의 마법의 일부로 되풀이 신경 네트워크보다는 회선을 사용하여 시간 기반 문제를 해결할 수 있습니다.
    RNNs가 가속화되기위한 고통이기 때문에 나는 이것에 흥분합니다. 실시간 응용 프로그램에서 일반적인 일괄 처리 크기 1을 처리하는 경우 대부분의 계산은 완전히 연결된 계층에 해당하는 행렬 시간 벡터 곱셈입니다. 모든 가중치는 한 번만 사용되기 때문에 일반적으로 컨벌루션이있는 경우와 같이 계산이 바운드가 아닌 메모리 바운드입니다. 그러므로 나의 손가락이 교차되듯이 이것이 다른 영역에서 더 일반적이게된다!

    어쨌든, 지금까지 만들어 주셔서 감사합니다. 설명이 도움이되기를 바랍니다. 의견이나 트위터에서 의견을 개선하기위한 아이디어를 기대합니다.

    반응형
Designed by Tistory.