일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Cannot connect to the Docker daemon at unix
- 양과늑대
- 카카오 파이썬
- 부스트캠프
- 프로그래머스 레벨1
- 네이버 부스트캠프
- 프로그래머스 레벨3
- 파이썬 재귀함수
- 파이썬 양과늑대
- 도커연결오류
- 프로그래머스
- 파이썬 카카오코딩테스트
- 프로그래머스 레벨2
- level1
- 라이브러리란?
- 프로그래머스LEVEL1
- 파이썬
- 카카오코딩테스트
- 프레임워크란?
- 프로그래머스 양과늑대
- 카카오 코딩테스트
- 부스트캠프 회고
- 코딩테스트
- 파이썬 프로그래머스
- 부캠
- 카카오코테
- 도커오류
- 부스트캠프AITech
- docker시작하기
- 프로그래머스 파이썬
- Today
- Total
코린이의 공부일기
[Boost Camp] U.stage_Semantic Segmentation 본문
Semantic Segmentation 이란 무엇일까?
물체를 픽셀 단위로 분류하는 방식
주의할 점 : 같은 class이지만 다른 물체라면 구분하지 않는다.(같은 색)
instance segmentation :같은 class여도 다른 물체라면 구분하는 방식
그렇다면 semantic segmentation은 어디에 사용될까?
영상에 대한 전면적인 컨텐츠를 이해하기 위해 사용한다.
영상을 편집하는데에 필수적인 기술이라고도 할 수 있다.
왜냐하면 semantic segmentation을 이용해 object detection을 통해 선별하여 편집을 진행할 수 있기 때문이다.
Semantic segmentation architectures
1. Fully Convolutional Networks (FCN)
입력 부터 출력까지 미분가능한 형태로 출력되어있다.
또한 호환성이 높은 네트워크구조로 특정 해상도에 학습이 되었더라도
test할 때 임의의 size을 문제없이 결과 값을 도출 할 수 있는 장점이 있다.
*Fully connected layer :공간 정보를 고려하지 않고 fixed dimension vector가 주어진다면 matrix manipulation을 통해 fixed dimension vector을 도출하는 방식이다.
* Fully convolutional layer : 입력은 activation map형태로 출력도 activation map으로 출력된다.
보통 1X1 convolution으로 구현이 되고 각 위치보다 classification이 적용된다.
Fully convolutional layer을 좀 더 자세하게 알아보자
각 위치마다 classification을 하기 위해서 채널축으로 Flattening을 진행하며 stacking을 진행한다.
1X1 convolution 이 이와 같은 계산으로 filter의 개수 만큼 내적을 진행하여 matrix을 쌓는다.
위에서 각 위치별로 classification을 사용했는데 stride와 pooling layer으로 인해서 최종map은 저해상도로 나올 수 있다.
-> receptive field을 넓게해서 해상도를 높게 할 수 있는 방법이 있지않을까?
->그게바로 up sampling
+추가 정보
Up sampling 이란 무엇일까 ?
up sampling 종류
1. Transposed convolution
각각 Input과 Filter가 곱해져서 계산하는 방식이다.
중첩되는 부분은 계속해서 더해지는 방식이다.
그렇다면 일정한 부분이 계속적으로 중첩되어 더해도 되는건가? 라는 의문이 생길 수 있다.
->중첩이 생기지 않도록 tuning이 필수적이다.
2. Upsamling and Convolution
맨 왼쪽과 같이 부분부분만 샘플링 하지않고 interpolation(Nearest-neighbor(NN), Bilinear)을 통해서 convolution layer을 일괄적으로 적용해
골고루 sampling을 적용해준다.
Fully Convolutional Network(FCN)
낮은 layer에서 receptive field사이즈가 작기 때문에 작은 차이에도 민감하다
높은 layer에서는 낮은 해상도를 갖지만 넓은 receptive field을 가진다.(전반적인 , 의미론적인 의미를가진다)
Segmentation은 각 픽셀 별로 의미를 파악해야하며, 영상전체를 바라보면서 현재픽셀이 물체의 경계선안or밖 에 있는지
둘다 확인해야하기 때문에 두 가지 모두 중요하다.
FCN은 end to end 네트워크로 모두 neural network이며 low level layer와 high level layer까지 잘 고려해서 경계선 까지
잘 따라갈 수 있는 것을 보여준다.
-> 중간에 unsampling을 많이 했을 때 더욱 더 좋은 결과가 나온다 (FCN-8s)
U_Net
U-Net은 영상의 일부분을 자세하게 봐야할 때 사용하는 것입니다.
U-Net 의 전체적인 구조
왼쪽의 구조는 receptive field을 늘리기 위해서 해상도는 줄이고 채널 수를 늘이는 방식으로 진행한다.
작은 activation map을 도출하여 영상의 전반적인 정보를 잘 녹여낼 수 있도록 한다.
(기존 CNN구조와 동일)
오른 쪽 구조는 Expanding path로 up samling하는 구조이다.
해상도를 높히고 채널 수를 줄이는 방식이다.
-> 즉 해상도는 낮췄다가 늘리고
-> 채널 수는 늘렸다가 줄이는 방식이다.
채널과 해상도가 호환성을 가지도록 구성한다.
** 중요
경계선 부분이나 중요한 공간 정보부분은 앞 쪽 layer에서 바로 뒤쪽 layer으로 정보를 보내는 방식으로 중요한 역할을한다
여기서 짚고 넘어가야할 점!
feature map의 spatial size가 홀수라면 어떻게 될까?
U-Net에서는 Down sampling과 Up Sampling이 빈번하게 일어나는데 map사이즈가 홀수라면 Up sampling과정에서
원래의 해상도와 차이가 생길 수 있다.
홀수 가 나오지 않도록 유의해야한다.
Deeplab
테두리의 일정 공간을 집어넣어주는 방식으로
Dilated convolution을 반복함으로써 receptive field을 늘릴 수 있는 큰 장점이 있다.
*추가적으로 중요한 부분
일반적인 convolution은 3개의 채널 전체를 거쳐내적하여 하나의 값을 도출해냈다면,
Depthwise separable convolution 은 채널 축 마다 값을 뽑고, 1X1 convolution(2 Pointwise convolution)을 통해서 하나의 값을 도출한다.
위의 식처럼 Depthwise separable convolution은 2 가지의 process을 진행하면서 표현력은 유지되면서 확실히 계산량이 줄어든 것을 볼 수 있다.
가장 최신의 deeplab v3+구조를 간단하게 본다면 처음에 Dilated convolution을 통해서 더 큰 receptive field을 가지는 feature map을 구한다.
그리고 다양한 spatial pyramid pooling을 적용하며 구해진 feature map으로 convolution을 통해 합쳐준다.
그리고 Decoder에서는 low label feature에서온 feature map 과 pyramid pooling을 거치고 upsamling한 feature map을 concat해 결합해주며 segmentation을 도출하도록 한다.
2021-09-09 U stage +회고
이번 강의는 나한테 너무 직관적(?) 으로만 다가왔다. 특히 되게 많은 내용을 교수님도 30분으로 압축해서 담으려니 짤막하게 정리하는 식으로 설명해주셔서 잘 이해가 되지않는 U-net 부분과 sampling부분은 조금 더 찾아볼 예정이다.!
30분 짜리강의를 사실 끊고 다시보고해서 2시간 이상을 봤는데..ㅎㅎ..
나에겐 아직도 너무 어려운 부분 같다..! 하지만 과제해보면 어느정도 틀은 잡히는 것 같아서 기분은 좋았는데
이게 다음에 나올 instance segmentation은 더 멘붕일 것 같은 느낌?..ㅎㅎ;
그래도 모를 때 마다 더 찾아보고 소통해야겠다!!!!
+ Backend project 시작
사실 이틀 전 부터 프로젝트를 시작했다! 다른 팀원 분과 시작했는데 누구보다 제일 친해진 캠퍼분 이시다 !ㅎㅎ
사실 aws가 뭔지도모르고 ubuntu가 뭔지도 어떻게 쓰는지도 몰랐는데 이 캠퍼 분 덕분에 저어엉말 많이 배웠다!
๑◕‿‿◕๑bb
첫 프로젝트를 구성하기로 한 날 aws에 대해서 설명해주시고 서버를 받아와서 git을 이용해 github와 연결도 했는데
이 과정을 통해서 git을 진짜 많이 배운 것 같았다 . 특히 merge할 때 충돌하는 상황일 때 대처하는 방식, 그리고 key값을 저장하고 서버를 받아오는 과정 등 ai stage에서 할때는 그냥 시키는대로만 해서 뭐가 뭔지도모르고 얼른 연결이나하자! 라는 마음가짐으로 횡설수설한 느낌이었는데 이 과정을 통해서 정리가 된 느낌이였다.
캠퍼님 최고 ٩(•̤̀ᵕ•̤́๑)૭✧!!!
아직도 배울게 산더미 같지만..! 내가 더 예습하고 공부해와서 프로젝트를 조금 더 수월하게 진행했음 좋겠다!ㅠㅠ
특히 추가적으로 프로젝트 관해서 몇 가지 공부해보라고 키워드를 알려주셔서 그 중 crontab을 한번 찾아봤는데 고정된 날짜와 시간을 주기적으로 실행시켜주는 프로그램이였다 . 어느정도 프로젝트가 완성되었을 때 쓰는 방법 같은데
얼른 명령어들이나 내가 프로젝트에 써야할 부분 들? 목록들 ? 을 찾아보고 공부해봐야겠다!
나의 첫 백앤드 프로젝트인데 성공적으로 잘 끝났음 좋겠다 (나만 잘하면 되겠지만...!)
우리 모두 화이팅 !!!!!!
'BOOST CAMP_정리' 카테고리의 다른 글
[Boost Camp] U stage_ Conditional generative model (0) | 2021.09.15 |
---|---|
[Boost Camp] U.stage_Object detection (0) | 2021.09.12 |
[Boost Camp]U stage_CNN (0) | 2021.09.06 |
[Boost Camp] Week5 Team Competition 최종 (0) | 2021.09.04 |
Week 5 - Day 1,2 Team Competition (0) | 2021.09.01 |