njs03332 / ml_study

3 stars 0 forks source link

2023/08/07 ~ 2023/08/16 #72

Open njs03332 opened 1 year ago

njs03332 commented 1 year ago
njs03332 commented 1 year ago

assign roles -s 0807 -c 14.8 14.9.1 14.9.2

njs03332 commented 1 year ago
0 1 2
member 한단비 김유리 주선미
chapter 14.8 14.9.1 14.9.2
njs03332 commented 1 year ago

14.9 객체 탐지

14.9.1 완전 합성곱 신경망

givitallugot commented 1 year ago

YOLO (You Only Look Once)

YOLOv3

mAP

마무리

danbi5228 commented 1 year ago

14.8 분류와 위치 추정

base_model = keras.applications.xception.Xception(weights="imagenet", include_top=False) avg = keras.layers.GlobalAveragePooling2D()(base_model.output) class_output = keras.layers.Dense(n_classes, activation="softmax")(avg) loc_output=keras.layers.Dense(4)(avg) model = keras.Model(inputs=base_model.input, outputs=[class_output, loc_output])

loss_weights는 어떤 것을 중요하게 생각하느냐에 따라 값 조정

model.compile(loss=["sparse_categorical_crossentropy", "mse"], loss_weights=[0.8, 0.2] optimizer=optimizer, metrics=["accuracy"])



- 꽃 데이터셋은 꽃 주위의 바운딩 박스를 가지고 있지 않아서 직접 만들어서 추가해야 함
  - 오픈 소스 이미지 레이블 도구 - VGG Image Annotator, LabelImg, OpenLabeler, ImgLab 등
  - 유료 제품 - LabelBox, Supervisely 등
  - 필요시 아마존 매커니컬 터크와 같은 크라우드 소싱 플랫폼을 이용해볼 수 있으나 리소스가 많이 필요함
    - 크라우드소싱 관련 참고 논문: [아드리아나 코바시카 등이 컴퓨터 비전에서 크라우드소싱에 관한 논문](https://homl.info/crowd)
- 이미 준비가 되었다고 가정하고 최종 데이터셋 생성
  - 각 원소는 (images, (class_labels, bouding_boxes)) 형태의 튜플
  - 이 데이터로 모델 훈련 진행
  - TIP) 바운딩 박스의 높이와 너비는 물론 수평과 수직 좌표의 범위를 0에서 1 사이로 정규화해야 하고,
  일반적으로 높이와 너비를 직접 예측하기 보다는 높이와 너비의 제곱근을 예측함
  --> 작은 바운딩 박스에서 10픽셀 오차가, 큰 바운딩 박스의 10픽셀 오차보다 더 많은 벌칙을 받음
- MSE는 모델 훈련을 위한 손실 함수로 사용할 순 있지만 바운딩 박스를 잘 예측하는 지 평가하기에는 좋은 지표가 아님
- IoU intersection over union 지표 사용
  - 바운딩 박스에 널리 사용되는 지표
  - 예측한 바운딩 박스와 타깃 바운딩 박스 사이에 중첩되는 영역을 전체 영역으로 나눈 것 (p. 584 참고)
  - tf.keras 에서는 tf.keras.metrics.MeanIoU 로 구현되어 있음