Open njs03332 opened 1 year ago
assign roles -s 0807 -c 14.8 14.9.1 14.9.2
0 | 1 | 2 | |
---|---|---|---|
member | 한단비 | 김유리 | 주선미 |
chapter | 14.8 | 14.9.1 | 14.9.2 |
YOLOv3
mAP
마무리
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])
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 로 구현되어 있음