딥러닝 텐서플로 교과서 - 6장

Jajuna_99·2022년 10월 3일
0

6장 합성곱 신경망 II

앞에 5장에서 배웠던 CNN 이론 기반으로 여러 CNN 모델을 배우고, 구현해보고 테스트해보는 장이다.

이미지 분류를 위한 신경망(p.202)

특정 대상이 영상 내에 존재하는지 여부를 판단하는 것.

LeNet-5(p.202)

  • 얀 르쿤이 개발한 구조
  • 현재 CNN의 초석이 되는 알고리즘
  • 합성곱, 다운샘플링을 반복적으로 거치면서 마지막에 완전연결층에서 분류

신경망에 대한 상세표는 (p.203)에 참고

람다 함수 (p.207)

AlexNet(p.212)

  • ImageNet 영상 DB를 기반으로 한 화상 인식 대회 'ILSVRC 2012'에서 우승한 CNN 모델
  • 인공지능 열풍을 다시 가져왔다고 평가받는 알고리즘이다.
  • LeNet과 크게 바뀐것은 없지만, GPU 두 개를 기반으로 한 병렬 구조로 해서 속도를 크게 개션시켰다.

신경망에 대한 상세표는 (p.215)에 참고

가중치 초기화 기법들 (p.218)

  • 확률 분포 기반의 가중치 초기화
  • 분산 조정 기반의 초기화
  • Xavier 초기화 방식
  • He 초기화 방식

VGGNet(p.221)

  • 합성곱층의 파라미터 개수를 줄이고 훈련 시간을 개선하려고 탄생 (계층 갯수로 유형이 나뉜다. VGG16, VGG19 등)

신경망에 대한 상세표는 (p.225)에 참고

GoogLeNet(p.231)

  • 주어진 하드웨어 자원을 최대한 효율적으로 사용하면서 학습 능력은 극대화하는 신경망 모델
  • 인셉션(inception) 모듈이 추가됐다.
    • 각 크기(1x1, 3x3, 5x5)의 합성곱 연산을 각각 수행한다.
    • 3x3 최대 풀링은 입력과 출력의 높이, 너비가 같아야 하므로 출링 연산에서는 드물게 패딩을 추가해야 한다.
    • 이 모델에 적용된 해결 방법은 희소 연결(sparse connectivity)이다. -> CNN은 각 층이 빡빡하게 연결된 신경망 대신 관련성(correlation)이 높은 노드끼리만 연결하는 방법을 회소 연결이라한다.
    • 이를 통해 과적합, 기울기 소멸도 해결할 수 있다.

자세한 구조 (p.232)

ResNet(p.233)

  • MS에서 "Deep Residual Learning for Image Recongnition"이라는 논문으로 제안한 모델
  • 깊어진 신경망을 효과적으로 학습하기 위한 방법으로 레지듀얼(residual)이라는 개념을 고안했다.
  • 기울기가 잘 전파될 수 있도록 레지듀얼 블록(residual block)을 도입해 일종의 숏컷(shortcut, skip connection)을 만들어준다.
  • '신경망 깊이가 깊어질수록 딥러닝 성능이 좋아질 것이다.' 라는 통념을 깬 개념이다.

자세한 구조와 구현 (p.235) 참고

객체 인식을 위한 신경망(p.237)

이미지나 영상 내에 있는 객체를 식별하는 컴퓨터 비전 기술

  • 객체가 무엇인지 분류하는 문제
  • 객체의 위치를 특정하는 박스(bounding box)로 나타내는 위치 검출(localization) 문제

1단계 객체 인식2단계 객체 인식으로 나눌수 있다.

  • 1단계 : 위에 말한 2문제를 동시에 행하는 방법, 빠르지만 정확도가 낮다. (YOLO와 SSD계열이 1단계이다.)
  • 2단계 : 위에 말한 2문제를 순차적으로 행하는 방법, 느리지만 정확도가 높다.

이 책에서는 2단계 모델들을 살펴본다.

R-CNN(p.238)

  • 이전 객체 인식 알고리즘들은 슬라이딩 윈도우(sliding window) 방식으로, 일정한 크기의 윈도우로 모든 이미지 영역을 탐색하며 검출하는 방식이었다.
  • 위 방식의 비효율성을 극복하고자 선택적 탐색(selective search, p.239)알고리즘을 적용한 후보 영역(regiona proposal)을 많이 사용한다.
  • R-CNN은 이미지 분류를 수행하는 CNN과 이미지에서 객체가 있을 만한 영역을 제안해주는 후보 영역 알고리즘을 결합한 알고리즘이다.

R-CNN 학습 절차 참고 (p.239), 단점 (p.241)

공간 피라미드 풀링(p.241)

  • 기존 CNN 구조들은 모두 완전연결층을 위해 입력 이미지를 고정해야 됐다. (자르거나 조정 -> 정보 손실)
  • 위 문제를 해결하고자 공간 피라미드 풀링(spatial pyramid pooling)이 도입됐다.
    • 입력 이미지의 크기에 관계없이 합성곱층을 통과시키고, 완전연결층에 전달되기 전에 특성 맵들을 동일한 크기로 조절해 주는 풀링층을 적용하는 기법이다.

Fast R-CNN(p.242)

  • R-CNN은 바운딩 박스마다 CNN을 돌리고, 분류를 위한 긴 학습 시간이 문제였다.
  • Fast R-CNN은 이 속도 문제 개선을 위해 RoI 풀링을 도입했다.
    • 선택적 탐색에서 찾은 바운딩 박스 정보가 CNN을 통과하면서 유지되도록 하고, 최종 CNN 특정 맵은 풀링을 적용하여 완전연결층을 통과하도록 크기를 조정한다.

Faster R-CNN(p.243)

  • 기존 Fast R-CNN 곧도의 걸림돌이었던 후보 영역 생성을 CNN 내부 네트워크에서 진행할 수 있도록 설계했다.
    • Faster R-CNN = Fast R-CNN + RPN(Region Proposal Network, 후보 영역 추출 네트워크)

자세한 구조(p.243) 참고

이미지 분할을 위한 신경망(p.245)

신경망을 훈련시켜 이미지를 픽셀 단위로 분할하는 것.

즉, 이미지를 픽셀 단위로 분할하여 미지에 포함된 객체를 추출한다.

완전 합성곱 네트워크 (FCN)(p.245)

  • 완전연결층의 한계인 고정된 크기의 입력만 받고, 통과 후에는 위치 정보가 없어지는 것이다.
  • 위 문제 해결을 위해 완전연결층을 1x1 합성곱으로 대체하는 것이 완전 합성곱 네트워크이다.
  • 기존 CNN 모델들을 변형시켜 이미지 분할에 적합하도록 만든 신경망이라고 보면 되겠다.

FCN 예시 (p.246) 참고

합성곱 & 역합성곱 네트워크(p.246)

  • 완전 합성곱 네트워크에 문제점이 여전히 있다.

    • 여러 단계의 합성곱층과 풀링층을 거치면서 해상도가 낮아진다.
    • 낮아진 해상도 복원을 위해 업 샘플링을 하는데, 이 때문에 세부 정보들을 읽어버린다.
  • 위 문제점을 해결하기 위해 합성곱 & 역합성곱 네트워크이다.

  • 역합성곱 CNN의 최종 출력 결과를 원래의 입력 이미지와 같은 크기로 만들때 사용. (합성곱이 특성 맵을 줄여 최종에는 벡터로 만드니) -> 시멘틱 분할 등에 활용 가능하며, 업 샘플링 등으로도 불린다.

U-Net(p.248)

  • 바이오 메디컬 분할을 위한 합성곱 신경망, 메디컬 이미지와 분할과 관련해서 항상 회자되는 네트워크이다. 특징들로는 다음과 같다.
    • 속도가 빠르다. (이전 패치(이미지 인식 단위)는 건너뛴다.)
    • 트레이트오프(trade-off)에 빠지지 않는다. -> 일반적으로는 패치 크기가 크면 컨텍스트 인식에는 탁월하나 지역화에는 약하다.
      • 이 트레이드오프 관계를 개선했다.
      • 지역화 : 이미지에 객체 위치 정보를 출력해주는 것, 바운딩 박스로 주로 표현한다.
    • FCN을 기반으로 구축됐고, 수축 경로확장 경로로 구성 돼있다.

자세한 구조는 (p.249)

PSPNet(Pyramid Scene Parsing Network)(p.251)

  • 2017 CVPR에 발표된 시멘틱 분할 알고리즘이다.
  • 이 알고리즘 역시 완전연결층에 한계를 극복하기 위해 나왔고, 피라미드 풀링 모듈을 추가했다.

자세한 과정은 (p.252) 참고

DeepLabv3/DeepLabv3+(p.253)

  • 이 알고리즘 역시 완전연결층에 한계를 극복하기 위해 나왔고, Atrous라는 합성곱을 사용하는 신경망이다.
  • 인코더와 디코더 구조를 가진다. -> 일반적으로 인코더-디코더 구조에서 불가능했던 '인코더에서 추출된 특성 맵의 해상도를 Atrous 합성곱을 도입해 제어'할 수 있도록 했다.
  • Atrous 합성곱은 필터 내부에 빈 공간을 둔 채로 작동한다.

자세한 구조는 (p.254) 참고

요약

구현은 깃헙에서 할 예정입니다.

밑바닥이 딥러닝, 수학에 대한 막연한 두려움을 없애줬다면 이 책은 딥러닝 모델 구현에 대한 것을 없애주는듯 하다.

책이 살짝 오래돼서 이 알고리즘들을 기준으로 삼아 관심있는 분야의 최신 논문과 구현 코드들을 보면서 더 공부해야 될 것 같다.

많은 범위를 생각보다 잘 다뤄주신다. 국밥같은 책이다. 든든하다.

profile
Learning bunch, mostly computer and language

0개의 댓글