본문 바로가기
KT-AIVLE

[KT-AIVLE 7주차 AI Track] CNN 시각지능 딥러닝

by 배준오 2023. 3. 20.
반응형

블로그 카테고리 용도 :

🔎 매주 KT 에이블 스쿨에서 배운 내용을 복습하기 위해

 

✨ 7주차 소감

  • CNN이 뭔지 잘 모르고 7주차가 시작됬는데 진도를 정말 천천히 나가주셔서 다행이였습니다..ㅎㅎ
  • Object Detection이 정말 신기했습니다
  • 본인 문제에 맞는 모델을 찾고 잘 적용시켜서 서비스화까지 하는게 중요하다고 느꼈습니다.
  • 8주차 미프를 통해 더 익숙해져야겠다고 느꼈습니다

 

CNN의 기본 구조

Input -> Padding -> Convolutional Layer -> Pooling -> Convolutional Layer -> ,,,

-> Flatterning -> Output

 

CNN 이란 ?

Convolutinal Neural network(합성곱 신경망)의 줄임말로 인간의 시신경을 모방하여 만든 딥러닝

구조 중 하나입니다. 합성곱 연산을 통해 이미지의 공간정보를 유지하고,

MaxPool,AugPool,BatchNorm,Dropout 방법을 통해 연산량을 줄였다는 특징이 있습니다.

 

Padding (패딩)

행렬의 크기가 작아짐을 방지함과 동시에 이미지의 모서리 부분의 정보손실을 줄이기 위해

이미지 주변에 0으로 채워주는 방법

Convolutional Layer(합성곱 층)

CNN 모델링 할때 Convolutional Layer를 추가합니다.

model.add(keras.layers.Conv2D(
                filters=32, 
                kernel_size=(3,3), 
                padding='same'))

 이때 연산이 어떻게 이루어지는지 살펴보았습니다.

왼쪽부터 이미지와 필터와 특성이고 이때 사용한 Convolutional 함수는 2D함수로

필터의 진행방향의 차원수가 2차원이라는 뜻입니다.

추가적으로 1D,3D함수가 있습니다.

convolutional 함수

Pooling(연산량을 줄이는 방법)

데이터의 공간적인 특성을 유지하면서 크기를 줄여주는 층

학습할 가중치를 줄여주기 때문에 과적합 문제에 해결에 도움을 줄 수있습니다.

Max pooling (압도적을 많이 쓰임 => 성능이 좋기 때문!)

Fliter영역에서 최대값을 추출하는 기법

합성곱 필터처럼 스트라이트를 조절할 수 있습니다.

Average pooling

Fliter영역의 평균을 추출하는 기법

Flatten Layer

추출된 특성을 Output layer에 연결(fully connected layer)하여 어떤 이미지 인지 분류하기 위한 목적에 쓰임

 

 

Object Detection(객체 검출)

영상처리나 CV분야에서 많이 쓰이는 기술

얼굴인식, 음성 인식, 비디오 인식, 이미지 분류 등 다양한 분야에서 활용

느린 CNN방식의 한계를 극복하기 위해 Object Detection방식 사용

 

CNN은 Object Detection에서 Backbone, Head역할을 합니다.

  • Backbone : 입력 이미지를 feature map으로 변환
  • Head : Backbone에서 추출한 feature map의 location 작업 수행

 

실습 시간에 진행한 Object Detection

  • 비디오 에서 3가지 사물 분류에 대한 문제
  • 햄버거 세트에서 햄버거, 감자튀김, 콜라 분류 주제 선택
  • 사용 모델 UltraLytics YOLO v5
  • 햄버거 세트 이미지 수집 30개
  • 직접 annotation을 통해 yaml파일 만들기
  • pretrained 된 weights 다운로드
  • train.py 실행
  • detect.py 실행

 

 

 

 

 

 

 

반응형