전에 배웠던 부분과 좀 다른 내용이 있는데 어떤 내용이 달랐는지 확인해보자.
다른 부분
1. 라벨
2. UNet (모델)
Segmentation은 각 픽셀값에 점을 찍는 방식이다. 어느 카테고리에 속하는지 알아 낼 수 있다.
FCN 이랑 CNN은 기본이다.
4,5 번은 od인데 5번같은 경우는 박스 안에서 객체들을 하나하나 segmentation하는 것이다.
instance Segmentation > Semantic Segmentation > OD
instance Segmentation이 가장 computation cost가 가장 높다.
보통 Segmentation을 Semantic 으로 말한다.
실제 코딩가치로는 OD가 가장 높다.
가장 높은 이유는 코드가 어렵기도 하고 박사들은 수식으로만 잘 알지,,,
아카데믹 + 코딩을 잘해야 진정한 computer OD개발자이다.
수학적 알고리즘이 가장 많은것은 GAN이다..하지만 스텝은 5step정도여서 OD보단 step이 가장 적다.
OD는 가성비가 정말 뛰어나다,,, 가볍기도하고 사용할수 있는 영역이 가장 많다. 그러므로 가장 잘 알고 있어야한다.
Programing과 AI(수학적 학문)을 결합시켜서 적용해야한다.
FPS : Frame Per Second(초당 프레임수) , 1초당 몇개의 이미지를 Frame처리할 수 있는가
(논문에서 사람은 1초당 8개의 이미지 이상을 처리할 수 있을때 자연스러운 동작으로 받아들인다.)
자율주행은 보통 FPS가 매우 높다... 질문? 얼마나 나오는지
현재 보편화된 30FPS를 60FPS로 높이기 위해 준비 중이다?
인공지능 모델은 가벼워야 빠른 처리가 가능하다. 전처리와 후처리가 굉장히 짧아야 한다.
FPS가 높다는건 속도가 빠르다는거고 모델이 가벼워야 한다는 것이다. 모델이 가벼워야 Computation Cost가 낮아진다.
모델이 가볍다 라는 말은 Low and Model이라고 한다. Low and Model은 속도는 빠르고 성능은 떨어지는 모델을 말한다.
High and Model = 속도는 느리지만 성능은 높다.
trade off 관계이다. loss와 accracy처럼 High and Model , Low and Model을 말한다.
OD는 Low and Model이다.
FCN이 마더클래스 같은 느낌으로 CNN에서 방법이 비슷하게 사용된다.
CNN을 사용하므로 연산량이 줄어서 Computation 이 줄어든다...
자연어 처리는 FCN으로 한다.
Evaluation Matrix 가 전이랑 많이 다르다... 유심있게 봐보자.
전체적인 픽셀값들을 연산 해서 예측한다.
결과 값의 이미지 크기가 같아야하므로 모든 convolution 사이즈가 모두 동일해야 한다.
conv사이즈는 채널3x3을 사용할때 stride=1, padding=1을 해서 사이즈를 유지시킨다.
Segmentation은 픽셀값들을 Classification 하는 것이다.
후처리를 해서 색을 입혀준다.
그래서 computation cost를 낮추려면 사이즈를 줄였다가 늘리는 방식으로 아래와 같이 연산된다.
사이즈가 줄어드는게 downsampling >> 이미지 사이즈가 절반씩 줄어듬 stride = 2, Max pooling 사용해서 사이즈를 줄임, Max Pooling은 학습이 안되므로 연산작용을 안한다. 그래서 computation cost가 낮아짐... 그래서 더 선호한다.
downsampling과 동일한 말이 convolutaion이라고 한다. 결과적으로 사이즈를 줄이기 때문에.
사이즈가 늘어나는게 upsampling (중요) >> 이미지를
downsampling과 동일한 말이 deconvolution이라고 한다. 결과적으로 사이즈를 늘리기 때문에.
Batch Normalizaion이란?
batch 마다 가중치와 bias값들의 격차가 벌어졌을때 그 격차를 완화 시켜주기위해서 사용회는 함수이다.
즉, Batch마다의 결과값들을 nomalization해준다. 너무 작은 값과 큰 값은 분포도가 안정적이지 않아서 overfitting된다
그래서 Batch Nomalization의 값들은 32이상으로 잡아라.
Upsampling (Deconvolution, Transposed Convolution(주로 논문에서 자주나옴)) 이란?
주로 사용되는 방법들
현업에서는 Interpolation을 사용한다.
필터 사이즈 = 3x3
output = 5x5
input = 3x3
Interpolution을 사용하는 이유
그렇다면 Interpolution을 사용하는 이유... 는 deconvolution checker board가 생긴다...
면접 보기위해서 준비 잘 해둘것
Mobilenet은 다른 모델에 비해서 기존속도가100배이상 빠르다...
위 사진은 패딩을 안줘서 그렇다. 지금은 패딩 꼭 1로 줘야함...
마지막에 1x1채널로 사이즈를 그대로 옮겨놓는다.
copy and crop 은 concatenate라고 말을한다.
input size와 output사이즈가 다르다. (572x572) => (388x388)으로 바뀜...입력과 출력 사이즈가 동일하지 않다...
입력되는 이미지가 너무 고화질이라서 출력이미지를 resizing을 시켜서 사이즈를 맞춰줘야 한다.
압축을 많이 했다 >> 원본 이미지 정보가 많이 훼손 되었다 날것의 정보가 사라졌다는 말이다. (정보 손실됨.)
concatenation = 훼손 이미지 + 원본이미지
( 종합적으로 활용해서 예측한다. )
원본이미지에 사람, 강아지, 산 등등의 위지 정보가 들어있다. 그래서 그 위치 정보를 활용과
각 특징들의 경계점들을 이용해서 특징들을 배치한다.
마지막 부분에 녹색에서 보라색으로 upsampling 할때 시작 되는 위치는 마지막 녹색 이미지에서 시작해야한다.
Evaluation Matrix
Segmentation에서 가장 많이 사용하는 성능평가 지표이다.
각 이미지의 predict값을 classes갯수로 나누게 된다.
MIOU = predict image와 original image를 겹쳐서 성능지수를 평가해낸다.
IOU vs DCE
MIOU 와 DCE는 성능지수가 각각 자를때 사용한다.
MIOU = 답지에 해당하는 부분이 큰물체 + 자주등장할때 사용하면 좋다
DCE = 작은물체 + 적게 등장하는 이미지에 사용하면 좋다.
Loss 값 = 1 - DEC
Masking = 영역을 마스킹 한다는 의미 이다.
답지는 Gray Scale로 간다. 이유는 용량 문제 때문이다.
utils 폴더를 바꿔주면 된다
보통 위와같이 색을 입혀서 후처리 할 수도 있다
전략적으로 변형 효과올리면서 코드가 심플하게 나올수 잇게 구성해야한다
예를들면, crop하고 flip을 하거나 flip을 먼저하고 rotation을 시키거나 등등의 순서로 인해서 코드의 직관성이 다르다.
이미지와 답지가 있을경우,,, 밝기는 조절할때 문제가 있을 수도 있다 그게 뭔지 알아보자.
다른건 답지와 같이 pair하게 모든 효과를 적용하면서 가야되는데,
(Strict = False or True) 에 대한 설명
동일한 모델에서만 True로 하면된다 아니면 False로 하는게 대부분이다.
참고 블로그
안드류 NG 강의 [ www.edwith.org/deeplearningai4/lecture/34909 ]
Segmentation 전반적인 로직 설명 블로그 [ blueskyvision.tistory.com/491 ]
Segmentation 원본 코드 깃헙 블로그 [ github.com/hszhao/semseg ]
[ www.kakaobrain.com/blog/48 ]
'workSpace > PYTHON' 카테고리의 다른 글
[DL] Threshold (0) | 2021.02.05 |
---|---|
[DL] UNet Segmentation (Overview) (0) | 2021.02.05 |
[DL] get CIFAR10 Custom Datasets (0) | 2021.02.03 |
[DL] MNIST analysis with CNN model using keras ( Accuracy 98.94 % ) (0) | 2021.02.03 |
[DL] FashionMNIST analysis with CNN model using Keras ( Accuracy 94.41 % ) (0) | 2021.02.03 |