MLP 이미지 분석
- MLP은 층이 깊어지고 뉴런의 수가 많아지면 가중치 수가 급격히 늘어난다
- MLP 신경망을 이미지 처리에 사용한다면 이미지의 어떤 특성 패턴이 존재하는 위치에 민감하게 동작하며 패턴의 위치에 종속적인 결과를 얻는다
- MLP는 아래 세 개의 5는 패턴이 다르다고 판단한다
- MLP로 이러한 숫자 인식을 하려면 숫자의 크기를 비슷하게 맞추어야 한다.
CNN(Convolution Neural Network)
- 1998년 Yann Lecun 교수에 의해 19950년대 수행했던 고양이의 뇌파 실험에 영감을 얻어 이미지 인식을 획기적으로 개선할 수 있는 CNN 제안
- 고양이의 눈으로 보는 사물의 형태에 따라 뇌의 특정영역(뉴런)만 활성화 된다는 결과를 기반으로 제안
CNN 구조
- Conv Layer : 사물의 특징을 찾는다
- Polling Layer : Conv Layer에서 찾은 특징 중에서 불필요한 부분을 제거한다
특징을 찾아서 학습시키기
CNN 기본 구조
CNN
- CNN은 입력된 이미지에서 특징을 추출하기 위해 마스크(필터)를 도입하는 방법
- 이미지 전체 영역에 대해 서로 동일한 연관성(중요도)로 처리하는 대신 특정 범위에 한정해 처리한다면 훨씬 효과적일 것이라는 아이디어 제시
CNN
- 합성곱 계층의 입출력 데이터를 특성맵이라고 한다
- 특성맵은 평면을 구성하는 2차원으로 구성된다(채널이라고도 부른다)
- 흑백으로 코딩된 경우(MNIST처럼) 흑백의 그레이 스케일만 나타내면 되므로 깊이는 1이 된다
- 입력신호가 RGB 신호로 코딩된 경우, 깊이 축의 차원은 세가지 색을 각각 나타내는 3이 된다(데이터의 형상 정보를 유지 할 수 있다)
필터 사용하기
풀링(Pooling)
- 풀링이란 CNN에서 합성곱 수행 결과를 다음 계층으로 모두 넘기지않고, 일정 범위내에서(예를 들면 2*2 픽셀 범위) 가장 큰 값을 하나만 선택하여 넘기는 방법을 사용한다
- 이렇게 지역내 최대 값만 선택하는 풀링을 최대풀링이라고 한다 => 최대 풀링을 하면 작은 지역 공간의 대표 정보만 남기고 나머지 신호들을 제거하는 효과를 얻는다
패딩(Padding)
- 필터의 크기는 5*5나 7*7 등 임의의 크기로 정할 수 있다
- 필터의 크기로 인해 가장자리 부분의 데이터가 부족해서 입력과 출력의 크기가 달라지게 되는데
- 이를 보정하기 위해서 입력신호의 가장자기 부분에 0을 미리 채워넣는 것을 패딩이라고 한다
- Conv2D 계층에서는 padding 인자를 사용하여 패딩을 지정할 수 있다. valid로 설정하면 패딩을 사용하지 말라는 뜻이다 => same을 지정하면 출력의 차원이 입력과 같아지도록 적절한 수의 패딩을 자동으로 입력하라는 것이다.
스트라이드(Stride)
- 축소 샘플링에는 크게 나누어 스트라이드와 풀링 등 두 가지 기법이 있다
- 스트라이드는 합성곱 필터링을 수행할 때 패치를(예를 들면 3*3 크기) 한 픽셀씩 옆으로 이동하면서 출력을 얻지 않고, 2 픽셀씩 또는 3 픽셀씩 건너 뛰면서 합성곱을 수행하는 방법이다 = > 이를 스트라이드 2 또는 스트라이드 3이라고 하는데, 이렇게 하면 출력 특성맵의 크기를 1/4 또는 1/9로 줄일 수 있다
축소샘플링
- 합성곱을 수행한 결과 신호를 다음 계층으로 전달할 때, 모든 정보를 전달하지 않고 일부만 샘플링하여 넘겨주는 작업을 축소 샘플링이라고 한다
- 축소 샘플링을 하는 이유는 좀 더 가치 있는 정보만을 다음 단계로 넘겨주기 위해서이다
- 커널 수를 늘리면 특성맵의 숫자가 점차 커지게 된다. 머신러닝의 최종 목적은 정보를 결국 줄여나가야 하며 따라서 핵심 정보만 다음 계층으로 전달하는 장치가 필요하다
신경망 성능 개선
- 과대적합 피하는 방법 : dropout : 드롭아웃은 학습을 하는 동안에만 적용되고 학습이 종료된 후 예측을 하는 단계에서는 모든 유닛을 사용하여 예측한다
'빅데이터 분석' 카테고리의 다른 글
딥러닝_전이학습(Transfer Learning) (0) | 2022.09.27 |
---|---|
딥러닝_강아지와 고양이 사진 전처리(실습) (0) | 2022.09.24 |
딥러닝_OpenCV_이미지 처리(실습) (0) | 2022.09.22 |
딥러닝_OpenCV_동영상 띄우기(실습) (0) | 2022.09.22 |
딥러닝_OpenCV_이미지 로딩(실습) (0) | 2022.09.22 |