딥러닝(텐서플로우)

Object Detection 및 Semantic Segmentation (FCN)

Dean83 2023. 4. 5. 08:03

1. Object Detection

    - 사물을 인식 하는 방법
    - 이미지 영역을 가로/세로로 분할 한 후 분할된 영역들을 CNN을 통해 분석 작업을 한다. 각 영역에 특정 물체가 속해
       있는지를 판별하여 물체를 인식한다
    - yolo 프레임워크에서 활용, (실시간으로 인식 가능)

 

2. Semantic Segmentation
     - 사진 (영상) 에서 각기 다른 물체를 인식하는 것을 말한다. 같은 물체의 경우 같은 물체로 인식한다 (예 : 사람들)
     - 모든 픽셀을 하나 하나 분류하여 동작한다.

     - 최근에는 단 한번의 연산으로 모든 픽셀을 분류하는 알고리즘이 있다. (FCN)
        - 간단히 설명하자면, 1차적으로 Object Detection 으로 물체를 인식하고, 인식된 영역의 픽셀을 분류하여 정확히
          Detect 한다

2.1 FCN (Fully Convolutional Networks)
      - 1개의 CNN을 활용하여 모든 픽셀에 대한 계산을 Full 로 수행하여 Semantic Segmentation 을 수행한다.
      - CNN의 각 층의 계산값을 다음층의 인풋으로 입력하고, 점점 이미지를 압축해 나간다. 이후 ConvTranspose를 통해
        원본 이미지 크기로 바꾼 후 결과를 출력 한다. 

2.2. Segnet
        - 자율주행 자동차에서 사용할 정도로 실시간으로 분석. 
        - Conv Encoder를 통해 이미지를 한번에 압축하여 색상등 모든 정보를 날리고, 물체 인식 정보만 취득 -> Decoder
          를 통해 테두리, 색상등을 재 설정 하여 원본 이미지 크기로 결과를 출력

2.3. Unet
        - 위에 FCN 에 설명에 적어놓은  방식. 

        - 이미지를 conv, maxpooling 을 통해 압축을 계속 수행 (이전 레이어 결과값을 다음 레이어 인풋으로 이용) ->
           ConvTranspose를 통해 출력하는 과정을 거치며, U 자 형태를 띈다고 하여 Unet 이라 함
        - Segnet 보다는 Unet을 많이 사용함. 

            - conv2d(16..) -> maxpooling -> 해당 결과물을, conv2d(32...) -> maxpooling -> 해당 결과물을 conv2d(64,....) -> ...
               ....  -> conv2dTranspose(64...) -> concatenate().... -> conv2dTranspose(32)... 
        - 이런식으로 이미지를 압축, 복원(?) 하여 결과물을 얻는다. 

 

 

 

 

'딥러닝(텐서플로우)' 카테고리의 다른 글

DeConv (DCNN), ConvTranspose  (0) 2023.04.05
이미지 생성, GAN  (0) 2023.04.05
keras.layers.concatenate  (0) 2023.04.04
Fit 의 인자값 X, Y  (0) 2023.04.03
Predict  (0) 2023.03.31