KT 에이블스쿨 : 딥러닝 심화 2일차 - 딥러닝, 객체인식, 데이터 라벨링

      





    딥러닝 심화

    24.04.17 (수) - 2일차



    • 딥러닝 복습

      • Kearas 
        • 1) Sequential 구조
          • Input() : 옵션
          • Dense() : 노드간 연결이 빽빽한 Fully connected 구조
          • Flatten() : 2차원 형태를 1차원으로 쫘악 펼쳐줌
        • 2) Functional 구조 

      • 이미지 문제를 푸는 2가지 방법 
        • 1) 2차원인 이미지를 flatten으로 펼처서 1차원적으로 예측
          • RGB 컬러 이미지 → flatten하면 성능이 40% 미만으로 안좋음
        • 2) convolutional neural network (CNN)
          • 2차원 이미지를 1차원 flatten 하지않고, 이미지 구조(2차원)을 살린채로 문제를 품
          • 성능이 더 좋음


      • 케라스로 CNN 구현
        • 1) Conv2D 
          • filters = 32 : 32개 특징 추출(피쳐맵)
            특징한 윈도우 크기를 가진 피쳐맵이 움직이면서 특징을 추출함
          • kernel_size = (3, 3) : 필터의 가로세로 사이즈
          • strides = (1, 1) : 필터의 이동 보폭, 얼마나 크게 / 작게 움직일건지 
          • padding :
            1. 새롭게 만들어지는 피쳐맵은 작아지게 되어있는데, 계속 작아지면 곤란하니까 피쳐맵의 사이즈 유지
            2. 외곽에 중요한 정보가 있을수도 있으니가, 패딩으로 피쳐맵의 사이즈를 유지하고 외곽의 정보를 조금이라도 더 반영할려고 함
        • 2) Maxpool2D
          • 풀링기법이 많은데, 그중 maxpooling 기법을 쓴것

          • 피쳐맵의 지역안에서 가장 큰 값만을 뽑아내고 나머지는 필요없겠구나를 의미

          • 값이 클수록 큰 영향을 가진다는 것 = activation ‘relu’랑 잘 엮여서 사용되었음 (성능 좋아짐) 



      • Feature Representation
        • 연결된 것으로부터 기존에 없던 feature를 재표현, 생성함
        • CNN 에서 feature representation 이란 ? 
          • 위치 정보를 보존한 채로 feature를 represent한 것 
          • 잘학습된 CNN의 특징
            1. 유용한 특징을 추출
            2. 위치 정보를 보존
        • imageNet : 이미지 데이터셋 사이트

          (imagenet이 원래는 이미지 딥러닝 성능을 다루는 대회였음)

          ⇒ 잘학습된 이미지 데이터셋을 끌어다 쓸수있때 좋은 효과를 얻을수있을거라 기대하게됨

        • object detection의 기본 구조 : backbone, head

          1. Backbone : object detection 모델 앞단에 씌임 ⇒ 이미지의 특징, 패턴을 잘 추출할거라 예상함

            backbone으로 object detection을 품

          2. Head : 우리 문제에 맞게 레이어 추가 / 변형한 부분. 모델 뒷단에 씌임

            • 모델 뒷단
              • 2차원 적으로 cnn 이미지 예측하고, flatten 하면 아래와 같아짐
              • 위치 정보가 없고, 분류기 역할에 치중된 부분

      • Object Detection 정리
        • Bounding Box
          • 하나의 object가 포함된 최소 크기의 박스
          • 구성요소 : (좌표) x, y, (크기) w, h ⇒ 위치정보
          • predicted bounding box (모델이 예측한 바운딩박스)
            • 실제의 object의 위치를 잘 맞춘다
              • 실제 x, y랑 예측 x, y가 비슷할때 = 바운딩 박스의 좌표에 대한 예측이 좋다 
              • 실제 w, h랑 예측 w, h가 비슷할때 = 바운딩 박스의 크기에 대한 예측이 좋다 
        • class classification
          • 어떤 클래스(객체) 인지 분별해야하니까 
          • label이 ‘cat’ 이라면 (1) 정수인코딩 / (2) 원핫인코딩
          • 확률(softmax, argmax)로 범주 분류 ⇒ 어떤 클래스인지 확률로 표현함
        • confidence score
          • 바운딩 박스 안에 object가 있다면 분류 문제로 접근 가능
          • object가 박스 안에 있을 확신의 정도


      • 모델별 output activation, loss function 
        • 회귀 
          • output activaiton : 없음 
          • loss function : MSE

        • 이중 분류
          • output activaiton : 'sigmoid
          • loss function : binary crossentropy
          • (보조) metrics = ['accuracy']  

        • 다중 분류
          • output activaiton : 'softmax
          • loss function : (sparse) categorical crossentropy 
          • (보조) metrics = ['accuracy']  
          • (예측) argmax 




                                                        




    • 라벨링

      • roboflow의 건설현장 데이터셋 라벨링 살펴보기

        • 매우 작은 부분까지 라벨링을 함. 안전모/안전조끼 착용 유무를 다 나눔
            • 출처 : roboflow


        • 거울에 비친 사람, 안전모를 쓴 사람, 안쓴 사람, 안전조끼를 입은사람/안입은사람 등등 세밀하고 꼼꼼하게 되어있음 
          • ⇒ 예측률이 좋음 (epochs 17번 했는데도 나름 잘 예측됨) 
        • 이런 데이터셋을 활용해서,
          건축현장에서 안전조끼, 안전모를 입지않은 사람 감지 가능 
          출처 : roboflow

      • 이미지의 특정 각도만 라벨링이 많은 경우
        • 겹치는 경우를 많이 라벨링해서 학습하면
          ⇒ 나중에 예측되었을때 앞 자동차가 포함되었을때만 차로 인지하는 문제가 있음 

        • 자동차 앞면, 뒷면의 라벨링만 많이하면 → 자동차 측면은 인식을 잘 못함
        • 사람 상반신도 라벨링으로 person을 했더니, 예측결과에서 사람의 상반신만 많이 인식함. 

      • 해상도가 낮을때 
        • 해상도가 낮은 사진에서 잡아낸 바운딩 박스는 학습하는 과정에서 부터 영향을 줌 (학습 효과가 적음)
          ⇒ 라벨링 기준을 잘 줘야함. 정확한 것만 라벨링을 한다던가, 화질이 좋을때만 한다던가 등등

      • 많고 좋은 데이터, 올바른 데이터로 라벨링하는게 중요 

      • 라벨링을 할때, 상자는 곧은 직사각형
        • 각도를 조절해서 비스듬한 박스로 라벨링을 할수는 있지만, 각도정보까지 포함해야하기에 복잡해짐
        • 이를 지원하는 툴도 있고, 아닌 툴도 있음 
        • 각도정보를 통해서 바운딩 박스를 기울임



                                                        



    • 케라스로 이미지 인식 (다중분류)

      • 1차원 형태로 flatten 해서 예측
        • RGB 칼라 이미지의 경우, 최대 성능이 40%로 낮음

      • 이미지 형태 그대로 예측하는 CNN 
        • 위치정보를 보존(CNN, 2차원)인 채로 인식하면 성능이 더 올라감
        • 1차원으로 할 필요가 없음. CNN을 쓰면 됨 

      • Q) 필터의 수는 어떤 것을 고려해야 성능이 잘 나올까 ? 
        • A) 많이 시도해서 찾아야함. 유명한 데이터셋인 경우 인터넷 서칭해서 고수들이 찾는거 쓰기 


    댓글

    이 블로그의 인기 게시물

    [KT 에이블스쿨 - IT 트랜드] 국내외 AI 관련 규제

    KT 에이블스쿨 : 핀테크 아이디어 공모전

    KT 에이블스쿨 : 6-7차 미니프로젝트 - 제안서 기반 솔류션 기획 및 설계