Semantic Segmentation - GlobalMediaBridge/cosmetic-server GitHub Wiki
์ปดํจํฐ ๋น์ ๋ถ์ผ์์ ์ด๋ฏธ์ง์ ์๋ฏธ๋ฅผ ํ์ ํ๋ ค๋ ๋ ธ๋ ฅ์ ๊ณ์ ๋์ด์๋ค. ๋จธ์ ๋ฌ๋์ Convolution Neural Network๊ฐ ๋์จ ๋ค๋ก ํญ๋ฐ์ ์ผ๋ก ๋ฐ์ ํ๊ฒ ๋์๋ค. ์ด๋ฏธ์ง์ ์๋ฏธ๋ฅผ ํ์ ํ๋ ๊ฒ์ ์ป์ด๋ด๋ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์ฌ๋ฌ ์ข ๋ฅ๋ก ๋๋๊ฒ ๋๋ค.
N๊ฐ์ ์ข ๋ฅ๋ฅผ ๋ถ๋ฅํ ๋
- ํ ๊ฐ์ง ์ข ๋ฅ๋ฅผ ๋ถ๋ฅ
- ํ ๊ฐ์ง ์ข ๋ฅ๋ฅผ ์ฌ๊ฐ๋ฐ์ค๋ก ์์น์ ํจ๊ป ๋ถ๋ฅ
- ์ฌ๋ฌ ๊ฐ์ง ์ข ๋ฅ๋ฅผ ์ฌ๊ฐ๋ฐ์ค๋ก ์์น์ ํจ๊ป ๋ถ๋ฅ
- ์ฌ๋ฌ ๊ฐ์ง ์ข ๋ฅ๋ฅผ ํฝ์ ๋จ์๋ก ๋ถ๋ฅ
์ด ๋ ๊ฐ๊ฐ์ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- N์ฐจ์์ ๋ฒกํฐ์์ ๊ฒฐ์ ๋ ์ข ๋ฅ์ ์ฐจ์์ 1 ๋๋จธ์ง๋ 0
- 1๋ฒ์ ๊ฒฐ๊ณผ + ๊ฒฐ์ ๋ ์ข ๋ฅ์ ์ข์๋จ์ขํ, ๋๋น, ๋์ด
- x๊ฐ์ ๋ฌผ์ฒด๋ฅผ ์ฐพ์ ์ ์๋ค๊ณ ๊ฐ์ ํ์ ๋ x๊ฐ์ 2๋ฒ์ ๊ฒฐ๊ณผ
- ์ ๋ ฅ์ผ๋ก ๋ค์ด์จ ์ด๋ฏธ์ง ํฌ๊ธฐ์ ๊ฐ์ ํฌ๊ธฐ์ ํ๋ ฌ n๊ฐ ์ฐจ์ ๊ฐ ์ฐจ์๋ณ๋ก ํด๋น ์ข ๋ฅ๊ฐ ์์นํ ํฝ์ ์ 1 ์๋๋ฉด 0
์ฐ๋ฆฌ๋ ๋จ์ํ ์ฌ๊ฐ๋ฐ์ค๋ก ์์น๋ฅผ ์ป๋ ๊ฒ์ด ์๋ ํฝ์ ๋จ์๋ก ์์น์ ๋ณด๋ฅผ ์ป์ด๋ด์ผ ํ๊ธฐ ๋๋ฌธ์ semantic segmentation์ ์ด์ฉํ๋ค.
Semantic Segmantation ์ดํด
Input: RGB color ์ด๋ฏธ์ง (height X width X 3) ๋๋ ํ๋ฐฑ (height X width X 1) ์ด๋ฏธ์ง
Output: ๊ฐ ํ์ ๋ณ ์ด๋ class ์ ์ํ๋์ง ๋ํ๋ด๋ ๋ ์ด๋ธ์ ๋ํ๋ธ Segmentation Map
๋จ์ํ๋ ์ด๋ฏธ์ง์ด๋ฉฐ ์ค์ ๋ก๋ ๊ฐ์ ํด์๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋
์ถ์ฒ ๊ฒฐ๊ณผ๋ฅผ ์ค์ ๋ก ์ดํด๋ณด๋ฉด ์ด๋ฐ ๋ชจ์ต์ด๋ค.
FCN (Fully Convolutional Network)
์ถ์ฒ [Fully Convolutional Network for Semantic Segmentaion]
(https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn.pdf) ์ด๋ฏธ์ง๋ฅผ ๋ถ์ํ๊ธฐ ์ํด์ convolution ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ ์ผ๋ฐ์ ์ธ convolution ๋ชจ๋ธ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ค์ด๊ณ ์ฐจ์์ ์ค์ด๋ layer๋ค์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ค์ ํฝ์ ์์น๋ฅผ ๊ธฐ์ตํด์ผํ๋ sematic segmentation์ ์ ํฉํ์ง ์๋ค.
stride๋ฅผ 1์ ์ฃผ๊ณ pooling์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ์ ๋ ฅ์ ์ฐจ์์ ์ ์งํ ์ ์์ง๋ง ํ์ค์ ์ผ๋ก ์ฐ์ฐ๋์ ๊ฐ๋นํ๊ธฐ ํ๋ค๊ณ ๋ถํ์ํ ์ ๋ณด๋ฅผ ์ ๊ฑฐํ์ง ๋ชปํด ์ ๋ณด์ ๋ฐ๋๋ฅผ ๋์ผ ์ ์๋ค. ๊ทธ๋์ ์ผ๋ฐ์ ์ผ๋ก convolution์ ์งํํ ๋ค ์ค์ด๋ ์ฐจ์์ ๋ค์ ์๋ ํฌ๊ธฐ๋ก ๋๋๋ฆฌ๋ upsampling๊ณผ์ ์ด ์ถ๊ฐ๋๋ค.
convolution๊ณผ pooling์ ํตํด ์ฐจ์์ ์ค์ฌ๋๊ฐ๋ ๊ฒ์ downsampling ๋๋ ์ธ์ฝ๋๋ผํ๊ณ ์ค์ด๋ ์ฐจ์์ ๋ค์ ์๋ ์ฐจ์์ผ๋ก ๋๋๋ฆฌ๋ ๊ฒ์ upsampling ๋๋ ๋์ฝ๋๋ผ๊ณ ํ๋ค.
๋ง์ง๋ง์ผ๋ก ์ผ๋ฐ์ ์ธ CNN ๋ชจ๋ธ์ ๋ง์ง๋ง์ 2์ฐจ์ ํ๋ ฌ์ ๋ฐ์ดํฐ๋ฅผ ํผ์ณ์ ๋ฒกํฐํํ๋ก ๋ง๋ ๋ค fully connected layer๋ฅผ ํตํด ๋ถ๋ฅ์์ ์ ์งํํ๋ค. ์ด๋ ๊ฒ ๋ ๊ฒฝ์ฐ ํฝ์ ์ ์์น์ ๋ณด๊ฐ ์ ๋ถ ์ฌ๋ผ์ง๊ฒ ๋๋ฏ๋ก CNN ๋ง์ ์ด์ฉํด์ ๋ถ๋ฅ์์ ์ ํ๋ ๋ชจ๋ธ์ด FCN (Fully Convolutional Network)์ด๋ค. flatํ๊ฒ ํผ์น๋ ๋์ 1x1 Convolution layer๋ฅผ ์ด์ฉํ๋ค.
Fully Connected Layer -> Fully Convolutional Network
์๋ฅผ๋ค์ด 256x256x3 ํฌ๊ธฐ์ ์ด๋ฏธ์ง๋ฅผ convolution์ ํตํด 10x10x100 ํฌ๊ธฐ์ feature ๋งต์ ๋ง๋ค๊ณ flatํ๊ฒ ํผ์ณ์ 10000 -> 4096 -> 22 ๋ก ๊ฐ๋ dense layer๋ฅผ ๊ฑฐ์น๋ค๊ณ ํด๋ณด์. ์ด๋ฅผ ํ๊ธฐ ์ํด์ 10x10x100 ํฌ๊ธฐ๋ฅผ 10000๊ฐ์ ๋ด๋ฐ์ผ๋ก ํผ์น๊ณ 10000x4096์ ํ๋ ฌ์ ๊ณฑํด์ layer๋ฅผ ์งํํด๊ฐ๋ฉด 4096๊ฐ๋ก ์ค์ฌ๋๊ฐ ์ ์๋ค. ๊ทธ ๋ค์ 4096x22 ํ๋ ฌ์ ๊ณฑํ๋ ์์ผ๋ก ์ผ๋ฐ์ ์ธ fully connected layer๋ฅผ ์ฌ์ฉํ ์ ์๋๋ฐ ์ด๋ฅผ convolution์ ์ด์ฉํด์ ๋์ผํ ํจ๊ณผ๋ฅผ ๋ผ ์ ์๋ค.
10x10x100 ํฌ๊ธฐ์ feature๋งต์ 10x10x100 ํฌ๊ธฐ์ ์ปค๋์ ์ด์ฉํด convolution์ ์งํํ๋ฉด ๊ฒฐ๊ณผ๊ฐ 1x1x1 ํฌ๊ธฐ์ ๊ฐ์ด ๋์ค๊ฒ ๋๋ค. ๋ง์ฝ ์ด๋ฐ ์ปค๋์ 4096๊ฐ์ channel๋ก ์งํํ๋ค๋ฉด 1x1x4096 ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค๊ฒ ๋ ๊ฒ์ด๋ค. ์ด๊ฒ์ flatํ๊ฒ ํผ์ณ์ fully connected layer๋ฅผ ์งํํ ๊ฒ๊ณผ ๋์ผํ ํจ๊ณผ๋ฅผ ๋ํ๋ธ๋ค. ์ด ํ์ 1x1 convolution์ 22channel๋ก ์งํํ๋ฉด 1x1x22 ํฌ๊ธฐ์ ๊ฐ์ด ๋์ค๊ฒ ๋๋ฉด์ ๊ธฐ์กด์ ๊ฒฐ๊ณผ๋ฅผ 90๋ ํ์ ์ํจ ๊ฒ๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋ค.
fully connected layer :
[0,0,1, ... , 0]
22์ฐจ์ one-hot vector
fully convolutaion layer :[0],[0],[1], ... , [0](/GlobalMediaBridge/cosmetic-server/wiki/0],[0],[1],-...-,-[0)
1x1x22 3์ฐจ์ matrix
์ด๋ ๊ฒ ํ๋ค๋ฉด ์ธํ ์ด๋ฏธ์ง์ ์ฌ์ด์ฆ๊ฐ ์ปค์ก์ ๋ input ์ฌ์ด์ฆ์ ๋น๋กํ๊ฒ output ์ฌ์ด์ฆ๋ฅผ ๋ง๋ค์ด๋ด๋ convolution์ ํน์ง๊ณผ ํจ๊ป ๋ง์ง๋ง ๊ฒฐ๊ณผ๊ฐ NxMx22 ์ฌ์ด์ฆ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค๊ฒ ๋ ๊ฒ์ด๋ค. ์ธํ์ด๋ฏธ์ง๋ณด๋ค๋ ์ฌ์ด์ฆ๊ฐ ์์ง๋ง ์์น์ ๋ณด๋ฅผ ํฌํจํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด๋ผ ์ ์๋ค.
ํ์ง๋ง ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒ์ ์ธํ์ด๋ฏธ์ง์ ๋์ผํ ์ฌ์ด์ฆ์ ์์ํ matrix์ด๊ธฐ ๋๋ฌธ์ upsampling๊ณผ์ ์ด ํ์ํ๋ค. ์ด๋ convolution์ ์ญ์ผ๋ก ์งํํ deconvolution์ ์ด์ฉํด์ ์งํํ ์ ์๋ค.
deconvolution์ ๋ชจ์ต
์๋์ ํ๋ ์ด๋ฏธ์ง์์ ์์ ์ด๋ก ์ด๋ฏธ์ง๋ก ์งํ๋๋ ๊ฒ
์ด๋ฐ deconvolution์ ๋ง์ง๋ง์ ์งํํ๋ ๊ฒ์ด ์๋ ์ธํ์ด๋ฏธ์ง์ 1/8 ์ฌ์ด์ฆ๊ฐ ๋์์ ๋ ์งํ์์ผ์ ์ต์ข ๊ฒฐ๊ณผ์ ํฉ์ณ์ฃผ๋ ๊ฒ์ด FCN-8s ์ด๋ค. (1/16 ๋ ์งํํ๋ฉด FCN-16s)
Atrous Convolution
์ถ์ฒ Learning Deconvolution Network for Semantic Segmentation ์ถ์ฒ
convolution์ ์ฌ์ฉํ๊ณ pooling์ ์ฌ์ฉํ๋ฉด ๊ฒฐ๊ตญ resolution์ ์ค์ด๋ค๊ฒ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ ๋ณด์ ์์ค์ ๋ง์ผ๋ฉด์ ์ ๋ณด์ ๊น์ด๋ฅผ ๋ํ๊ธฐ ์ํด Atrous convolution์ ์ฌ์ฉํ๋ค.
์ผ๋ฐ์ ์ธ Convolution ์ ๋ชจ์ต
input : 5x5 matrix
kernal : 3x3
stride : 1
padding : 1
output : 5x5
Atrous Convolution ์ ๋ชจ์ต
input : 5x5 matrix
kernal : 3x3
stride : 1
padding : 1
rate : 2
output : 5x5
์์ ๋์ผํ๋ kernal์ ๋ง๋ค๋ ์ด์ ์ปค๋ ๋ชจ์ต์ด ์๋์ ๊ฐ๋ค๋ฉด
x1, x2, x3
x4, x5, x6
x7, x8, x9
atrous convolution์ ์งํํ๊ธฐ ์ํด dilation rate ๊ฐ์ ์ด์ฉํ๋ค. rate์ ๋ฐ๋ผ ์ปค๋์ ์ผ๊ฐ๋ ํผ์น๋ฏ์ด ๋ ํผ์ณ์ฃผ๋ ๊ฒ์ ์๋ฏธํ๋ค.
x1, 0, x2, 0, x3
0, 0, 0, 0, 0
x4, 0, x5, 0, x6
0, 0, 0, 0, 0
x7, 0, x8, 0, x9
๊ทธ๋ฌ๋ฉด 3x3 ํฌ๊ธฐ์ kernal๋ก 5x5 ํฌ๊ธฐ์ kernal๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ง๋ค์ด ๋ผ ์ ์๋ค.
Conditional Random Field
๋ฅ๋ฌ๋๊ณผ๋ ๋ฌด๊ดํ์ง๋ง ๋ฌผ์ฒด์ ์ค๊ณฝ์ ์ ์ ์๊ธฐ ์ํด ๋ฅ๋ฌ๋์ผ๋ก semantic segmentation์ ์ฌ์ฉํ๊ธฐ ์ด์ ์ ์ฌ์ฉํ๋ ์ปดํจํฐ ๋น์ ๋ฐฉ์์ ์ถ๊ฐ๋ก ํ์ฉํ ๊ฒ์ด๋ค.
๊ฐ ํฝ์ ๋จ์๋ก label์ ๋ถ๋ฅํ ๋ ๋ น์์ ๋๋ฌด์ผ ํ๋ฅ ์ด ๋๊ณ , ํ๋์์ ํ๋์ผ ํ๋ฅ ์ด ๋์ ํ๋ฅ ์ ๋ณด๋ฅผ unary term์ด๋ผ๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ธ์ ํ ํฝ์ ์ ๊ฐ์ class์ผ ํ๋ฅ ์ด ๋์ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ ํ๋ฅ ์ ๋ณด pairwise term์ด ์๋ค. ์ด ๋ ์ ๋ณด๋ฅผ ์ ๋ ฅํด์ฃผ๊ณ CRF๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌผ์ฒด์ ์ค๊ณฝ์ ์ ๋ ์ ์ก์๋ผ ์ ์๊ฒ ๋๋ค.
UnPooling
์ถ์ฒ [2015 ICCV] [DeconvNet] Learning Deconvolution Network for Semantic Segmentation
๊ธฐ์กด semantic segmentation์์๋ ์ด๋ ์ ๋ ํฌ๊ธฐ์์ ๋ฌผ์ฒด๋ฅผ ํ์ ํ๋ ค๋ ์ง์ ๋ํ receptive field ๊ฐ์ ๋ฏธ๋ฆฌ ์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ํฐ ๋ฌผ์ฒด๋ ์์ ๋ฌผ์ฒด์ค ๋์น๋ ๊ฒ์ด ๋ฐ์ํ๊ฒ ๋๋ค.
๊ทธ๋์ 1x1 ํฌ๊ธฐ์ convolution ํผ์ฒ๋งต์ ๋ง๋ค์ด์ ๋ค์ upsampling์ ์งํํ๊ฒ ๋๋ค. ์ด ๋ ํจ๊ณผ์ ์ผ๋ก upsampling์ ์งํํ๊ธฐ ์ํด์ unpooling์ด๋ผ๋ ๊ธฐ์ ์ ์ ์ฉํ๋๋ฐ deconvolution๊ณผ ๋ค๋ฅด๊ฒ max ํ๋ง์ ์ด๋ค ๊ฐ์ด max๋ก ์ ํ๋์ด์ ์ค์ด๋ ๊ฒ์ธ์ง ์ ์ ์์ผ๋ฉด ๋์ ํ ์งํํ ๋ฐฉ๋ฒ์ด ์๋ค. ๊ทธ๋์ downsampling ๊ณผ์ ์์ ํ๋งํ๋ ๊ณณ์์ ์ด๋ค ๊ฐ์ด max๋ก ์ ํ๋์๋ ์ง๋ฅผ switch variables๋ผ๋ ๊ฐ์ผ๋ก ๊ธฐ์ตํด๋์๋ค๊ฐ unpooling์ ์งํํ ๋ ์ฌ์ฉํ๊ฒ ๋๋ค. ๊ทธ๋์ downsampling๊ณผ upsampling์ด ๋ฐ๋์ ๋์นญ์ ๋ชจ์ต์ ์ด๋ฃจ๊ฒ ๋๋ค.
pooling์ ์๋ฏธ์๋ ์ ๋ณด๋ฅผ ์ ๋ณํ๋ ๊ณผ์ ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ค๊ฐ์ด ์๋ฏธ์๋ ์ง ๊ธฐ์ตํด์ unpooling์ ํ๊ฒ ๋๋ฉด ๋ ์ข์ ์ฑ๋ฅ์ ๋ผ ์ ์๋ค.
Atrous Spatial Pyramid Pooling (ASPP)
๊ตฌ๊ธ์ inception ๋ชจ๋ธ์ ์ปค๋ ์ฌ์ด์ฆ๋ฅผ ๋ฌ๋ฆฌํด์ ๋ค์์ cnn์ ์งํํ๋ค ํฉ์น๋ ์ปจ์ ์ ๊ฐ๊ณ ์๋ค. ์ด๋ฅผ atrous convolution์ผ๋ก ์ ์ฉํ ๊ฒ์ด Atrous Spatioal Pyramid Pooling์ด๋ค.
์ปค๋์ฌ์ด์ฆ๊ฐ 3x3์ด๋ฉด ์ฐ์ฐํด์ผํ๋ ํ๋ผ๋ฏธํฐ์ ์๋ 9๊ฐ์ด๋ค. 5x5๋ผ๋ฉด 25์ด๊ณ 7x7์ด๋ผ๋ฉด 49๊ฐ ๋ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ์ปค๋์ฌ์ด์ฆ๋ฅผ ๋ฌ๋ฆฌํด์ receptive field ๋ฅผ ์ ํ๊ณ ํฐ ๋ฌผ์ฒด์ธ ๊ฒฝ์ฐ์ ์์ ๋ฌผ์ฒด์ธ ๊ฒฝ์ฐ๋ฅผ ๋ฌ๋ฆฌํด์ ํ์ ํ ์ ์๋ค. ์ปค๋์ฌ์ด์ฆ์ ๋ฐ๋ผ ํ๋ผ๋ฏธํฐ ์๊ฐ ๊ธ์ฆํ๊ธฐ ๋๋ฌธ์ ํ์ค์ ์ผ๋ก ์ฐ์ฐ์ด ์ด๋ ต๋ค.
ํฐ resolution์ ๊ฐ์์ง ์ฌ์ง์ด ์๋ค๊ณ ๊ฐ์ ํ์. ์ด๋ฅผ ํ์ ํ๊ธฐ ์ํด์ ํฐ ์ฌ์ด์ฆ์ ์ปค๋๋ก cnn์ ์งํํด์ผํ ๊ฒ์ด๋ค. ํ์ง๋ง ํด๋น ์ฌ์ง์ ํฌ๊ธฐ๋ฅผ ๋จ์ํ ์ค์ธ๋ค๊ณ ํด๋ ์ฐ๋ฆฌ๋ ํด๋น ์ฌ์ง์ด ๊ฐ์์ง ์ฌ์ง์์ ํ์ ํ ์ ์๋ค. ์ฆ ํฐ ์ฌ์ด์ฆ์ ์ปค๋๋ก ์งํํ๋ ๊ฒ์ด ์๋ ๊ฐ์์ง ์์ฒด๊ฐ ์์์ง ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ด๋๋ก ํ๋ ๊ฒ์ด๋ค. ์ปค๋์ ํฌ๊ธฐ๋ฅผ ํค์ธ ๋ Atrous Convolution์ ์ ์ฉํ๋ฉด ๊ฐ์ ๊ฐ์์ ํ๋ผ๋ฏธํฐ๋ก ํฐ ์ฌ์ด์ฆ์ ์ปค๋์ ์ ์ฉํ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ผ ์ ์๋ค.
์ด์ฒ๋ผ ๋ค์ํ ํฌ๊ธฐ์ atrous convolution์ ์ฌ์ฉํด์ ์งํํด์ ํฉ์ณ์ฃผ๋ ๋ฐฉ์์ ์ฌ์ฉํด์ ์ฑ๋ฅ์ ํฌ๊ฒ ๋์๋ค.
Full-Resolution Residual Unit (FRRU)
์ถ์ฒ Full-Resolution Residual Networks for Semantic Segmentation in Street Scenes
๊ฒฐ๊ตญ downsampling์ด ์งํ๋๋ฉด ๊ธฐ์กด resolution์์ ๋ง์ ์ ๋ณด๋ฅผ ์๊ฒ ๋๋ค. ๊ทธ๋์ ๊ธฐ์กด resolution์ ๊ทธ๋๋ก ์งํํ๋ layer์ ์ผ๋ฐ์ ์ผ๋ก downsampling๊ณผ upsampling์ด ์งํ๋๋ layer๋ฅผ ํจ๊ป ํ์ต์ํค๋ ๊ฒ์ด FRRU์ด๋ค.
๊ธฐ์กด resolution์ ์ ์งํ๊ธฐ ๋๋ฌธ์ ์ธ์ธํ ๋ถ๋ถ๊น์ง ์ ์ก์๋ด ์ฃผ์๋ค.