데이터 제작의 중요성

데이터 제작의 중요성

한 AI 모델의 성능은 구조 + 데이터 + 최적화 조합으로 정해짐!!

Software 1.0

Software 1.0은 다음의 개발 과정을 따름

  1. 문제 정의
  2. 큰 문제를 작은 문제들의 집합으로 분해
  3. 개별 문제 별로 알고리즘 설계
  4. 솔루션들을 합쳐 하나의 시스템으로

예시

이미지 인식 기술에도 처음에는 Software 1.0 철학으로 개발됨!

하지만 객체 검출에서 대응하기 어려운 케이스가 정말 많았음..😥

이에 대한 해결책으로 결국 Software 2.0이 등장!!

사람의 개입이 없이 어떻게 특정 연산들이 정의될까..?

Software 2.0은 뉴럴넷의 구조에 의해 검색 영역이 정해지고 최적화를 통해 사람이 정한 목적에 제일 부합하는 연산의 집합을 찾음.

이때 경로와 목적지는 데이터와 최적화 방법에 의해 정해짐.


요약

  • Software 1.0은 사람이 고민하여 프로그램을 만든 것!
  • Software 2.0은 AI 모델의 구조로 프로그램의 검색 범위를 한정하고, 데이터와 최적화 방법을 통해 최적의 프로그램을 찾는 것!

HRNet

HRNet의 필요성

Image Classification Networks

LeNet 뿐만 아니라 AlexNet,VGGNet,ResNet,Efficientnet 들도 고해상도 입력을 받아

저해상도로 줄여나가는 설계 방식을 사용함

Image Classification 모델이 해상도를 점점 줄여나가는 이유는?

  • 특정 물체를 분류하는데 이미지 내 모든 특징이 필요하지 않음
  • 해상도가 줄어들어 효율적인 연산이 가능하며, 각 픽셀이 넓은 receptive field를 갖게 됨
  • 중요한 특징만을 추출하여 과적합을 방지

DeconvNet, SegNet, U-Net

저해상도 특징을 생성하고, 다시 고해상도로 복원하는 방식의 기존 연구

DeepLab

DilatedNet, DeepLab

  • DilatedNet 및 DeepLab 구조는 해상도의 이점을 살리고자 dilated convolution을 적용
  • U-Net 등의 구조와 달리 저해상도가 아닌 중해상도 정보를 고해상도로 복원

DeepLab V3+

  • 자세한 정보를 유지하기 위해 Xception 구조 내 max pooling 연산을 depthwise separable convolution으로 변경

low level feature를 전달해주는 skip connection 활용

Classification nased Networks

  • 기존 classfication Network 사용에 필요했던 높은 시간 복잡도와 Upsampling을 이용해 저해상도부터 고해상도로 복원하며 생성되는 특징은 공간상의 위치 정보의 민감도(position-sensitivity)가 낮음

위 문제점들을 해결하기 위해 강력한 위치 정보를 갖는 visual recognition 문제에 적합한 구조가 필요하다..!!

저해상도/ 중해상도를 고해상도로 복원하는 것이 아닌, 고해상도 정보를 계속 유지하고자 하는 것이 핵심이였고 이를 토대로 연구한 것이 HRNet(High Resolution Network)

HRNet(High Resolution Network)

주로 image classification 문제에 사용되는 backbone network이 아닌, 위치정보가 중요한 visual recognition 문제 (segmentation, object detection, pose estimation 등)에 사용할 수 있는 새로운 backbone network

  1. 전체 과정에서도 고해상도 특징을 계속 유지
    • 입력 이미지의 해상도를 그대로 유지하는 것이 아닌, strided convolution을 이용해 해상도를 1/4로 줄임. (U-Net이나 DeepLab v3+에 비해 상대적으로 높은 해상도를 유지함.)

  1. 고해상도부터 저해상도까지 다양한 해상도를 갖는 특징을 병렬적으로 연산

Paralled Multi-Resolution Convolution Stream

  • 고해상도 convolution stream을 시작으로 점차 해상도를 줄여 저해상도 stream을 새롭게 생성
  • 새로운 stream이 생성될 때 해상도는 이전 단계 해상도의 1/2로 감소
    • 해상도를 줄여 넓은 receptive field를 갖는 특징을 고해상도 특징과 함께 학습함
  1. 각각의 해상도가 갖는 정보를 다른 해상도 stream에 전달하여 정보를 융합
  • 고해상도 특징: 공간 상의 높은 위치 정보 민감도(position-sensitivity)를 가짐
  • 저해상도 특징: 넓은 receptive field로 인해 상대적으로 풍부한 의미 정보(semantic informantion)를 가짐

pooling 대신 strided convolution을 사용한 이유는 정보 손실을 최소화 하기 위함이고, convoltion 대신 Upsampling을 사용한 이유는 시간 복잡성을 고려했기 때문

Representation Head

Semantic Segmentation의 기초와 이해

1. 대표적인 딥러닝을 이용한 Segmantation FCN

  1. VGG 네트워크 백본을 사용(Backbone : feature extractiong network)
  2. VGG 네트워크의 FC Layer (nn.Linear)를 Convolution으로 대체
  3. Transposed Convolution을 이용해서 Pixel Wise prediction을 수행

1.1 Fully Connected Layer vs Convolution Layer

FC Layer를 Conv Layer로 변환했을 때의 이점

1.2 Transposed Convolution

1.4 FCN에서 성능을 향상시키기 위한 방법

  • FCN에서 성능을 향상 시키기 위한 방법
FCN(backbone:VGG)의 구조
conv1 : [conv→relu→conv→relu→maxpool] 이미지 크기 input의 1/2로 감소
conv2 : [conv→relu→conv→relu→maxpool] 이미지 크기 input의 1/4로 감소
conv3 : [conv→relu→conv→relu→conv→relu→maxpool] 이미지 크기 input의 1/8로 감소
conv4 : [conv→relu→conv→relu→conv→relu→maxpool] 이미지 크기 input의 1/16로 감소
conv5 : [conv→relu→conv→relu→conv→relu→maxpool] 이미지 크기 input의 1/32로 감소
FC6 : [conv(1×1)→relu→dropout]
FC7 : [conv(1×1)→relu→dropout]
score : [conv(input_channel, num_classes,1,1,0)]
upscore : [convTransposed2d(num_classes, num_classes, karnel_size=64, stride=32, padding=16)] 
                    1/32가 된 이미지를 32배 키워 원본 사이즈로 복원

Issue! 1/32크기로 줄어든걸 바로 32배 키워서 복원하려니 디테일한 정보들이 사라진 것을 확인

  • solution skip connection
  1. MaxPooling에 의해 잃어버린 정보 복원해주는 작업 진행
  2. Upsampled Size를 줄여줘 더 효율적인 이미지 복원 가능

conv4 block에서 pooling하고 난 결과가 score와 같은 구조인 1×1conv거친 뒤(하지만 새롭게 선언 된 conv)의 결과와 deconv(2배 키워주는 deconv)결과를 summation해준 뒤 다시 deconv(16배 키워주는 deconv)를 통해 FCN16s 생성

1.5 평가지표

2.1 Futher Reading

1x1 을 7x7 Convolution으로 바꿀 때 발생하는 문제

  • FC6을 1×1이 아닌 7×7conv사용하게 될 경우 이미지의 크기가 변동되는 문제 발생

    Conv5의 이미지 크기가 7×7이기 때문에 7×7conv을 적용시 1×1이 나오게 됨

    이를 해결하기 위해 논문의 저자들은

  1. conv1 block의 첫번째 conv에서 zero padding을 100 넣어줌

    → 하지만 Output size가 256×256으로 input 224×224와 달라짐

  2. 1을 해결하기 위해 Deconv의 padding을 제거 하고 중앙의 224×224만 crop하는 작업

    FCN 16s, 8s에서도 crop하는 방법 사용

+ Recent posts