P-stage3 [Day1] 역사, metric 등
시작하기 전..
내가 하는 Pstage3는 image segmentation & detection이다.
강의내용
1강 intro
대회 규칙(체점 방법 등)에 관한건 pdf 보자.
segmentation의 강의 목표
- Semantic Segmentation에 대한 기초
- 논문에 대한 정확한 이해보다는 논문이 나온 배경과 방법론에 대한 이해
- 모델의 구조를 살펴보면서 어떤 식으로 코드를 작성할지에 대한 실력 향상
object detection의 강의 목표
Object Detection 흐름 파악 및 캐글 은메달 이상 달성할 수 있는 능력 함양
2강 EDA & Metric
자세한 coco dataset json 설명은 pdf..
코드에 대한 자세한 설명도 pdf.. 라기엔 코드만 보고 무슨 말인지 이해할 수 있는 부분이 많긴 하다.
EDA도 pdf. 단지 mAP(mean Average Precision)이 헷갈려서 가져옴.
모델의 성능을 비교할 때, 실험마다 성능이 달라지는 것을 방지하고 재생산해내기 위해 시드를 고정해야합니다.
TP/FP/FN/TN 이 너무 헷갈린다.
앞에 T0나 F0는 T가 들어가면 어쨌든 맞았다는 거고 F가 들어가면 어쨌든 틀렸다는거.
뒤에 0P나 0N는 P가 들어가면 어쨌든 Positive(1) 로 예측했단 거고 N이 들어가면 어쨌든 Negative(0)으로 예측했단거. 그래서 이렇게 예측한게 정답인지 아닌지는 앞의 T,F로 표현한다고 생각하면 될듯.
https://towardsdatascience.com/map-mean-average-precision-might-confuse-you-5956f1bfa9e2
Precision은 이미 감지한 물체중에서 정답이 얼마나 있느냐
Recall은 물체를 얼마나 잘 찾아냈느냐
그래서 이 두개를 고려해서 만든게 AP인듯.
예시를 보고 위의 정의와 번갈아가면서 보자. 모델은 그냥 prediction만 한거.
이렇게 8개의 경우에 AP를 구할 수 있다.
근데 이게 하나의 클래스인 경우도 다른 클래스인 경우도 있을테니까 모든 클래스의 AP에 대해서 평균 낸게 mAP
mIoU는 쉽다.
3강 Semantic Segmentation의 기초와 이해 Fully Convolutional Networks (FCN)
미리 학습된 VGG가지고 만듬. fc layer쓰면 이미지 위치정보를 손실하는데 아얘 fc를 없애고 모두 conv로만 쓰고, 작아진 conv image를 deconv 혹은 transposed conv로 복원.
이렇게 되어있는 원래 vgg를 fc만 떼서 개조한다고
이게 원래 cnn
이게 deconv. 특이한 점은 output size를 키우고 싶을때 그냥 conv는 stride를 줄이던가(보통 1쓰는것 같지만) padding을 만드는데 deconv는 stride을 키워준다.
보통 upsampling, deconvolution, transposed convolution 세 단어를 혼용해서 쓴다. 다 같은 뜻으로 쓰이지만 엄밀하게는 transposed convolution이 맞다고 함. deconv라고 하기엔 deconv로 원래대로 돌려도 원래값이랑 완전히 다르니까.
conv
deconv. 내부적으로는 복잡하니까 이렇게 만들어서 계산하는 듯.
Transposed Convolution 정리
• 중요한 점은 Convolution과 마찬가지로 학습이 가능한 파라미터를 통해서
줄어든 이미지를 다시 키우는 Convolution이라는 점
• 엄밀한 명칭은 Transposed Convolution이라고 부르는게 정확 하지만 많이들
Deconvolution이라는 용어와 같이 사용하니 참고
프로젝트에서 구현할 모델. 원래 FC6이 7x7 Conv인데 1x1 Conv로 바꿈.
완전히 작아진걸로만 upscaling하면 정보가 너무 사라져서 중간에 빼가서 크기에 맞게 upscale 한다.
잘 맞았는지 아닌지 판단하는건 mIoU로.
피어세션
그라운드 룰 정함
- 그라운드 룰
- baseline 코드가 주어진다면 같이 코드 쪼개기
- 모임 시간에 늦지 말기(혹시 일정이 있다면, 알려주기)
- 매일 개인마다 진행했던 내용 정리해서 공유하기(학습정리에 간단하게)
- 공부하다가 어려운 부분이 있으면 언제든지 공유하기 - 공유한 내용을 도와줄 수 있다면 도와주기!
- 각자 다양한 실험한 내용을 토대로 공유하기 (각자가 개개인의 가설을 세워서 실험하기)
- 코드 리뷰(자기 전에 request, 2시 전까지 피드백)
- 여유가 된다면 취업에 관한 다양한 고민도 이야기 해보기
- 피어세션 때는 코드 리뷰에 대한 이야기, 강의에 대한 질문, 전날 실험한 결과를 이야기하기
과제
FCN8, FCN16, FCN32 중에서 하나를 선택하고 만들어보기
실행을 못해서 정답인진 모르겠는데 ppt보고 참고해서 만듬.