์๋ ํ์ธ์, ์ถ์๋ ๋ชจ๋ธ์ ํ ์คํธํ์ผ๋ฉฐ ๋ด ์ฝ๋๋ ๋ ธํธ๋ถ์ ์ฐธ์กฐํฉ๋๋ค. ๋ด ์ฝ๋๋
`caffe.set_mode_gpu()
caffe.set_device(2)
net_liver = caffe.Net('/home/zhou/zou/Cascaded-FCN/models/cascadedfcn/step1/step1_deploy.prototxt', '/home/zhou/zou/Cascaded-FCN/models/cas cadedfcn/step1/step1_weights. caffemodel', caffe.TEST)
img=read_dicom_series("../train_image/3Dircadb1.17/PATIENT_DICOM/")
lbl=read_liver_lesion_masks("../train_image/3Dircadb1.17/MASKS_DICOM/")
์์ค = 90
img_p = step1_preprocess_img_slice(img[...,S])
lbl_p = ์ ์ฒ๋ฆฌ_lbl_slice(lbl[...,S])
net_liver.blobs['๋ฐ์ดํฐ'].data[0,0,...] = img_p
pred = net_liver.forward()['prob'][0,1] > 0.5
plt.Figure(figsize=(3*5,10))
plt.subplot(1, 3, _1)
plt.title('CT')
plt.imshow(img_p[92:-92,92:-92], 'ํ์')
plt.subplot(1, 3, 2)
plt.title('GT')
plt.imshow(lbl_p, 'ํ์')
plt.subplot(1, 3, 3)
plt.title('์ฌ์ ')
plt.imshow(pred, 'ํ์')`
๊ทธ๋ฌ๋ ๊ฒฐ๊ณผ๋ ์ด์ ๊ฐ์ด ๋งค์ฐ ๋์ฉ๋๋ค.
๋ด๊ฐ ๊ฐ๊ณผํ ํธ๋ฆญ์ด ์์ต๋๊น?
๊ฒฐ๊ณผ๊ฐ ์ด์ํด ๋ณด์ ๋๋ค. ์์ ํ๊ธฐ ์ ์ ๋ ธํธ๋ถ์ ์๋ ๊ทธ๋๋ก ์คํํ๊ณ ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋์ง ํ์ธํ์ญ์์ค.
์ฝ๋๋ ๋ ธํธ์ ํ์ํ ๊ฒ๊ณผ ๋์ผํ๋ฏ๋ก ์ฝ๋๊ฐ ์๋ชป๋ ๋ถ๋ถ์ ์ฐพ์ ์ ์์ต๋๋ค. ์๋ด๋ฅผ ๋ฐ์ ์ ์๋์? ๊ฐ์ฌ ํด์
๋๋ ๋น์ ๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๋ง๋ฌ์ต๋๋ค. ๋น์ ์ ์์ ๋์ต๋๊น? ๋น์ ์ด ๋น์ ์ ๋ฐฉ๋ฒ์ ๊ณต์ ํ ์ ์๋ค๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. @manutdzou
์ถ์๋ ๋ชจ๋ธ์ด ์๋ชป๋ ๊ฒ ๊ฐ์๋ฐ, ์์ฒด ๋ชจ๋ธ์ ์์ฒด ํ์ตํ๊ณ ์์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์๋ํ๊ณ ๊ฒฐ๊ณผ๋ ์ข์ต๋๋ค.
@RenieWell @mohamed-ezz
์ข์ ์์์ ๋๋ค @manutdzou . ํ ๋ฆฌํ์คํธ๋ฅผ ์์ฑํ๊ณ ํ๋ จ๋ ๋ชจ๋ธ์ ๋์ค์๊ฒ ์ ๊ณตํ๋ ๊ฒ์ ํ์ํฉ๋๋ค. ๋ชจ๋ธ์ ๊ณต๊ฐ ํ์ผํธ์คํฐ์ ์ ๋ก๋ํ๊ณ ๋งํฌ์ ์ด๋ฆ์ผ๋ก readme๋ฅผ ์์ ํ๋ฉด ๋ฉ๋๋ค.
์์ฐ, ๋๋ ๋น์ ์ ์ฒซ ๋ฒ์งธ ๊ฒฐ๊ณผ์ ๊ฐ์ ์ด์ํ ๊ฒฐ๊ณผ๋ฅผ ์ป์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด ์ถ์๋ ๋ชจ๋ธ์ด ๊ทธ๋ ๊ฒ ์ข์ง ์๋ค๊ณ ํ์ ํฉ๋๋ค. ์ด์จ๋ TensorFlow์์ U-Net์ ๋ค์ ๋น๋ํ๋๋ฐ ์์ธก ๊ฒฐ๊ณผ๊ฐ ๊ทธ๋ ๊ฒ ์ข์ง๋ ์์ง๋ง ์ด์ํ์ง๋ ์์ต๋๋ค.
@manutdzou . ์๋
ํ์ธ์ ์ฌ๋ฌ๋ถ, ์ฝ๋๋ฅผ ๊ณต์ ํ ์ ์์ต๋๊น?
๋งค์ฐ ๊ฐ์ฌํฉ๋๋ค.
์๋
๋ชจ๋๋ค,
๋ฐฉ๊ธ Readme๋ฅผ ์
๋ฐ์ดํธํ๊ณ ์ฝ๋๋ฅผ ์ํํ๊ฒ ์คํํ๋ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
๋์ปค ์ด๋ฏธ์ง๋ฅผ ์์ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ Readme๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์์ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
์ต๊ณ ์ ์์,
ํจํธ๋ฆญ
cascaded_unet_inference.pdf.pdf
@PatrickChrist ์๋ ํ์ธ์ Patrick, ํ๋ฅญํ ์์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ํ์ง๋ง ์ฌ์ ํ๋ จ๋ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ nvidia-docker๋ฅผ ์ค์นํ๊ธฐ๊ฐ ์ด๋ ต๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค. nvidia-docker๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ฌ๋ฐ๋ฅธ ์ฌ์ ํ๋ จ๋ ๋ชจ๋ธ์ ๊ณต์ ํด ์ฃผ์๊ฒ ์ต๋๊น?
@zakizhou ์ ๋ ์ด๊ฒ์ด ์ฌํ์ฑ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ Docker๊ฐ ์ด๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํ ์ต์ ์ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
nvidia-docker
๋ GPU์์ ํ์ผ์ ์ฒ๋ฆฌํ๋ ค๋ ๊ฒฝ์ฐ์๋ง ํ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ CPU์์ ์คํํ๋ ๊ฒ์ด ๊ด์ฐฎ๋ค๋ฉด docker
๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Linux ๋ฐฐํฌํ์์ ์คํ ์ค์ธ ๊ฒฝ์ฐ nvidia-docker
์ค์น์ ์ง๋ฉดํ ๋ฌธ์ ๋ ๋ฌด์์
๋๊น?
๋ชจ๋ธ์ https://github.com/IBBM/Cascaded-FCN/tree/master/models/cascadedfcn ์์๋ ๊ณต์ ๋๋ฉฐ ํธ์คํธ ํ๊ฒฝ(Docker ์์ด)์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
@mohamed-ezz ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. GPU๊ฐ ์๋ ์ฐ๋ถํฌ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ค์ ๋ก nvidia-docker
docker
๋ฅผ ์๋ํ์ง๋ง ์ฌํ๊ฒ๋ jupyter์ ํต์ฌ์ธ pretrained caffe ๋ชจ๋ธ์ ๊ฐ์ ธ์ค๋ ค๊ณ ํ ๋ ๋
ธํธ๋ถ์ด ๋ฒ๋ ค์ง ์ด์ ๋ฅผ ์ดํดํ์ง ๋ชปํฉ๋๋ค. ์ด๋ฒ ํธ์์ @manutdzou ๊ฐ ๋งํ ๊ฒ์ฒ๋ผ ์ฌ์ ํ๋ จ๋ ๋ชจ๋ธ์ ์ฌ๊ธฐ์์ https://github.com/IBBM/Cascaded-FCN/tree/master/models/cascadedfcn ์ ์ํ ์ด๋ฏธ์ง์์ ์ฑ๋ฅ์ด ์ข์ง ์์ต๋๋ค. ๋๋ conda๋ก caffe๋ฅผ ์ค์นํ๋๋ฐ, ์ด ๋ฌธ์ ์ ์์ธ์ด ์๋ชป๋ ๋ฒ์ ์ caffe๋ผ๊ณ ์๊ฐํฉ๋๊น?
์, ์๋ง๋ ์นดํ ๋ฒ์ ์ผ ๊ฒ์ ๋๋ค. ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ด์ฉํด์ฃผ์ธ์.
2017๋ 7์ 4์ผ ์คํ 5์ 45๋ถ์ "Jie Zhou" [email protected] ์ด ์์ฑํ์ต๋๋ค.
@mohamed-ezz https://github.com/mohamed-ezz ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค.
GPU๊ฐ์๋ ์ฐ๋ถํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ๋ก ๋์ docker๋ฅผ ์๋ํ์ต๋๋ค.
nvidia-docker ํ์ง๋ง ์ฌํ๊ฒ๋ ์ฌ์ ํ๋ จ๋ caffe ๋ชจ๋ธ์ ๊ฐ์ ธ์ค๋ ค๊ณ ํ ๋,
jupyter ๋ ธํธ๋ถ์ ํต์ฌ์ด ๋คํ๋์๊ณ ์ด์ ๋ฅผ ์ดํดํ์ง ๋ชปํฉ๋๋ค. ๋ฌด์์ฒ๋ผ
@manutdzou https://github.com/manutdzou ๊ฐ ์ด๋ฒ ํธ์์ ๋งํ์ต๋๋ค.
์ฌ๊ธฐ์์ ์ฌ์ ํ๋ จ๋ ๋ชจ๋ธ https://github.com/IBBM/Cascaded-FCN/tree/master/
models/cascadedfcn์ ์ํ ์ด๋ฏธ์ง์์ ์ฑ๋ฅ์ด ์ข์ง ์์ต๋๋ค. ์นดํ๋ฅผ ์ค์นํ์ต๋๋ค
conda๋ฅผ ์ฌ์ฉํ์ฌ ์ด๊ฒ์ ์ผ์ผํจ ์๋ชป๋ ๋ฒ์ ์ ์นดํ๋ผ๊ณ ์๊ฐํ์ญ๋๊น?
๋ฌธ์ ?โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/IBBM/Cascaded-FCN/issues/13#issuecomment-312908109 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/ADqENQMhAJvhyvV1SZ5ApQelMqNhBlTMks5sKl39gaJpZM4M4ckQ
.
@mohamed-ezz ๋ค, GPU๊ฐ ์๋ ์๋ฒ์์ ๋ชจ๋ธ์ ์๋ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ค์ ํ ๋ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
GPU๊ฐ ํ์ํ์ง ์์ต๋๋ค. ๋์ README.md์ ์๋ ์ด๋ฏธ์ง์ ํจ๊ป docker๋ฅผ ์ฌ์ฉํ์ธ์.
์๋น๋์ ๋์ปค์.
2017๋ 7์ 4์ผ ์คํ 6์ 59๋ถ์ "Jie Zhou" [email protected] ์ด ์์ฑํ์ต๋๋ค.
@mohamed-ezz https://github.com/mohamed-ezz ์ข์ต๋๋ค.
GPU๊ฐ ์๋ ์๋ฒ, ๋ค์ ํ ๋ฒ ๊ฐ์ฌํฉ๋๋ค!โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/IBBM/Cascaded-FCN/issues/13#issuecomment-312919887 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/ADqENQh6pIiGyQYTbKSOx_2reMDlja3Cks5sKm-GgaJpZM4M4ckQ
.
๋๋ Baidu ์์ ์ค๋ฅธ์ชฝ ๊ฐ ๋ฐ ๋ณ๋ณ ๋ชจ๋ธ์ ๋ฒ์ ์ ์ถ์ํ์ผ๋ฉฐ ์ด ๋ชจ๋ธ์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
`์์คํ
, OS ๊ฐ์ ธ์ค๊ธฐ
sys.path.insert(0, '/home/zhou/zou/caffe_ws/python')
sys.path.insert(0,'/home/zhou/zou/Cascaded-FCN/lib')
numpy๋ฅผ np๋ก ๊ฐ์ ธ์ค๊ธฐ
matplotlib์์ pyplot์ plt๋ก ๊ฐ์ ธ์ค๊ธฐ
์์
์นดํ
result_path = "/home/zhou/zou/Cascaded-FCN/code/result/"
os.path.exists(result_path)๊ฐ ์๋ ๊ฒฝ์ฐ:
os.makedirs(๊ฒฐ๊ณผ ๊ฒฝ๋ก)
im_list = open('test_lesion_list.txt', 'r').read().splitlines()
caffe.set_mode_gpu()
caffe.set_device(0)
net_liver = caffe.Net('deploy.prototxt', 'liver.caffemodel', caffe.TEST)
net_lesion = caffe.Net('deploy.prototxt', 'lesion.caffemodel', caffe.TEST)
๊ฐ = 1
๋ณ๋ณ = 2
๋ฒ์(0,len(im_list))์ i์ ๋ํด:
im = np.load(im_list[i].split(' ')[0])
๋ง์คํฌ = np.load(im_list[i].split(' ')[1])
in_ = np.array(im, dtype=np.float32)
in_expand = in_[np.newaxis, ...]
์ผ๋ฃฉ = in_expand[np.newaxis, :, :, :]
net_liver.blobs['data'].reshape(*blob.shape)
net_liver.blobs['data'].data[...] = blob
net_liver.forward()
output_liver = net_liver.blobs['prob'].data[0].argmax(axis=0)
net_lesion.blobs['data'].reshape(*blob.shape)
net_lesion.blobs['data'].data[...] = blob
net_lesion.forward()
output_lesion = net_lesion.blobs['prob'].data[0].argmax(axis=0)
output = output_liver
ind_1 = np.where(output_liver ==0)
output_lesion[ind_1] = 255
ind_2 = np.where(output_lesion ==0)
output[ind_2] = 2
plt.figure(figsize=(3*5,10))
plt.subplot(1, 3, 1)
plt.title('CT')
plt.imshow(im[92:-92,92:-92], 'gray')
plt.subplot(1, 3, 2)
plt.title('GT')
plt.imshow(mask, 'gray')
plt.subplot(1, 3, 3)
plt.title('pred')
plt.imshow(output, 'gray')
path = result_path + im_list[i].split(' ')[0].split('/')[-1][0:-3] +'jpg'
plt.savefig(path)
plt.close()
`
์ผ๋ถ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค
@mohamed-ezz @RenieWell @mjiansun @PatrickChrist @PiaoLiangHXD
์ธต {
์ด๋ฆ: "๋ฐ์ดํฐ"
์ ํ: "์
๋ ฅ"
์๋จ: "๋ฐ์ดํฐ"
input_param { ๋ชจ์: { ํฌ๋ฏธํ: 1 ํฌ๋ฏธํ: 1 ํฌ๋ฏธํ: 572 ํฌ๋ฏธํ: 572 } }
}
์ธต {
์ด๋ฆ: "conv_d0a-b"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "๋ฐ์ดํฐ"
์๋จ: "d0b"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 64
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_d0b"
์ ํ: "ReLU"
ํ๋จ: "d0b"
์๋จ: "d0b"
}
์ธต {
์ด๋ฆ: "conv_d0b-c"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "d0b"
์๋จ: "d0c"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 64
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_d0c"
์ ํ: "ReLU"
ํ๋จ: "d0c"
์๋จ: "d0c"
}
์ธต {
์ด๋ฆ: "pool_d0c-1a"
์ ํ: "ํ๋ง"
ํ๋จ: "d0c"
์๋จ: "d1a"
pooling_param {
ํ: ์ต๋
์ปค๋ ํฌ๊ธฐ: 2
๋ณดํญ: 2
}
}
์ธต {
์ด๋ฆ: "conv_d1a-b"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "d1a"
์๋จ: "d1b"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 128
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_d1b"
์ ํ: "ReLU"
ํ๋จ: "d1b"
์๋จ: "d1b"
}
์ธต {
์ด๋ฆ: "conv_d1b-c"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "d1b"
์๋จ: "d1c"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 128
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_d1c"
์ ํ: "ReLU"
ํ๋จ: "d1c"
์๋จ: "d1c"
}
์ธต {
์ด๋ฆ: "pool_d1c-2a"
์ ํ: "ํ๋ง"
ํ๋จ: "d1c"
์๋จ: "d2a"
pooling_param {
ํ: ์ต๋
์ปค๋ ํฌ๊ธฐ: 2
๋ณดํญ: 2
}
}
์ธต {
์ด๋ฆ: "conv_d2a-b"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "d2a"
์๋จ: "d2b"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 256
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_d2b"
์ ํ: "ReLU"
ํ๋จ: "d2b"
์๋จ: "d2b"
}
์ธต {
์ด๋ฆ: "conv_d2b-c"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "d2b"
์๋จ: "d2c"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 256
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_d2c"
์ ํ: "ReLU"
ํ๋จ: "d2c"
์๋จ: "d2c"
}
์ธต {
์ด๋ฆ: "pool_d2c-3a"
์ ํ: "ํ๋ง"
ํ๋จ: "d2c"
์๋จ: "d3a"
pooling_param {
ํ: ์ต๋
์ปค๋ ํฌ๊ธฐ: 2
๋ณดํญ: 2
}
}
์ธต {
์ด๋ฆ: "conv_d3a-b"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "d3a"
์๋จ: "d3b"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 512
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_d3b"
์ ํ: "ReLU"
ํ๋จ: "d3b"
์๋จ: "d3b"
}
์ธต {
์ด๋ฆ: "conv_d3b-c"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "d3b"
์๋จ: "d3c"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 512
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_d3c"
์ ํ: "ReLU"
ํ๋จ: "d3c"
์๋จ: "d3c"
}
์ธต {
์ด๋ฆ: "pool_d3c-4a"
์ ํ: "ํ๋ง"
ํ๋จ: "d3c"
์๋จ: "d4a"
pooling_param {
ํ: ์ต๋
์ปค๋ ํฌ๊ธฐ: 2
๋ณดํญ: 2
}
}
์ธต {
์ด๋ฆ: "conv_d4a-b"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "d4a"
์๋จ: "d4b"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 1024
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_d4b"
์ ํ: "ReLU"
ํ๋จ: "d4b"
์๋จ: "d4b"
}
์ธต {
์ด๋ฆ: "conv_d4b-c"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "d4b"
์๋จ: "d4c"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 1024
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_d4c"
์ ํ: "ReLU"
ํ๋จ: "d4c"
์๋จ: "d4c"
}
์ธต {
์ด๋ฆ: "upconv_d4c_u3a"
์ ํ: "๋์ฝ๋ณผ๋ฃจ์
"
ํ๋จ: "d4c"
์๋จ: "u3a"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 512
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 2
๋ณดํญ: 2
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
}
}
์ธต {
์ด๋ฆ: "relu_u3a"
์ ํ: "ReLU"
ํ๋จ: "u3a"
์๋จ: "u3a"
}
์ธต {
์ด๋ฆ: "crop_d3c-d3cc"
์ ํ: "์๋ฅด๊ธฐ"
ํ๋จ: "d3c"
ํ๋จ: "u3a"
์๋จ: "d3cc"
}
์ธต {
์ด๋ฆ: "concat_d3cc_u3a-b"
์ ํ: "์ฐ๊ฒฐ"
ํ๋จ: "u3a"
ํ๋จ: "d3cc"
์๋จ: "u3b"
}
์ธต {
์ด๋ฆ: "conv_u3b-c"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "u3b"
์๋จ: "u3c"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 512
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_u3c"
์ ํ: "ReLU"
ํ๋จ: "u3c"
์๋จ: "u3c"
}
์ธต {
์ด๋ฆ: "conv_u3c-d"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "u3c"
์๋จ: "u3d"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 512
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_u3d"
์ ํ: "ReLU"
ํ๋จ: "u3d"
์๋จ: "u3d"
}
์ธต {
์ด๋ฆ: "upconv_u3d_u2a"
์ ํ: "๋์ฝ๋ณผ๋ฃจ์
"
ํ๋จ: "u3d"
์๋จ: "u2a"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 256
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 2
๋ณดํญ: 2
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
}
}
์ธต {
์ด๋ฆ: "relu_u2a"
์ ํ: "ReLU"
ํ๋จ: "u2a"
์๋จ: "u2a"
}
์ธต {
์ด๋ฆ: "crop_d2c-d2cc"
์ ํ: "์๋ฅด๊ธฐ"
ํ๋จ: "d2c"
ํ๋จ: "u2a"
์๋จ: "d2cc"
}
์ธต {
์ด๋ฆ: "concat_d2cc_u2a-b"
์ ํ: "์ฐ๊ฒฐ"
ํ๋จ: "u2a"
ํ๋จ: "d2cc"
์๋จ: "u2b"
}
์ธต {
์ด๋ฆ: "conv_u2b-c"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "u2b"
์๋จ: "u2c"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 256
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_u2c"
์ ํ: "ReLU"
ํ๋จ: "u2c"
์๋จ: "u2c"
}
์ธต {
์ด๋ฆ: "conv_u2c-d"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "u2c"
์๋จ: "u2d"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 256
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_u2d"
์ ํ: "ReLU"
ํ๋จ: "u2d"
์๋จ: "u2d"
}
์ธต {
์ด๋ฆ: "upconv_u2d_u1a"
์ ํ: "๋์ฝ๋ณผ๋ฃจ์
"
ํ๋จ: "u2d"
์๋จ: "u1a"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 128
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 2
๋ณดํญ: 2
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
}
}
์ธต {
์ด๋ฆ: "relu_u1a"
์ ํ: "ReLU"
ํ๋จ: "u1a"
์๋จ: "u1a"
}
์ธต {
์ด๋ฆ: "crop_d1c-d1cc"
์ ํ: "์๋ฅด๊ธฐ"
ํ๋จ: "d1c"
ํ๋จ: "u1a"
์๋จ: "d1cc"
}
์ธต {
์ด๋ฆ: "concat_d1cc_u1a-b"
์ ํ: "์ฐ๊ฒฐ"
ํ๋จ: "u1a"
ํ๋จ: "d1cc"
์๋จ: "u1b"
}
์ธต {
์ด๋ฆ: "conv_u1b-c"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "u1b"
์๋จ: "u1c"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 128
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_u1c"
์ ํ: "ReLU"
ํ๋จ: "u1c"
์๋จ: "u1c"
}
์ธต {
์ด๋ฆ: "conv_u1c-d"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "u1c"
์๋จ: "u1d"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 128
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_u1d"
์ ํ: "ReLU"
ํ๋จ: "u1d"
์๋จ: "u1d"
}
์ธต {
์ด๋ฆ: "upconv_u1d_u0a_NEW"
์ ํ: "๋์ฝ๋ณผ๋ฃจ์
"
ํ๋จ: "u1d"
์๋จ: "u0a"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 64
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 2
๋ณดํญ: 2
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
}
}
์ธต {
์ด๋ฆ: "relu_u0a"
์ ํ: "ReLU"
ํ๋จ: "u0a"
์๋จ: "u0a"
}
์ธต {
์ด๋ฆ: "crop_d0c-d0cc"
์ ํ: "์๋ฅด๊ธฐ"
ํ๋จ: "d0c"
ํ๋จ: "u0a"
์๋จ: "d0cc"
}
์ธต {
์ด๋ฆ: "concat_d0cc_u0a-b"
์ ํ: "์ฐ๊ฒฐ"
ํ๋จ: "u0a"
ํ๋จ: "d0cc"
์๋จ: "u0b"
}
์ธต {
์ด๋ฆ: "conv_u0b-c_New"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "u0b"
์๋จ: "u0c"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 64
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_u0c"
์ ํ: "ReLU"
ํ๋จ: "u0c"
์๋จ: "u0c"
}
์ธต {
์ด๋ฆ: "conv_u0c-d_New"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "u0c"
์๋จ: "u0d"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 64
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 3
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "relu_u0d"
์ ํ: "ReLU"
ํ๋จ: "u0d"
์๋จ: "u0d"
}
์ธต {
์ด๋ฆ: "conv_u0d-score_New"
์ ํ: "์ปจ๋ณผ๋ฃจ์
"
ํ๋จ: "u0d"
์๋จ: "์ ์"
๋งค๊ฐ๋ณ์ {
lr_mult: 1
๋ถํจ_๋ค์ค: 1
}
๋งค๊ฐ๋ณ์ {
lr_mult: 2
๋ถ๊ดด_๋ฉํฐ: 0
}
convolution_param {
num_์ถ๋ ฅ: 2
ํจ๋: 0
์ปค๋ ํฌ๊ธฐ: 1
weight_filler {
์ ํ: "์๋น์๋ฅด"
}
์์ง: ์นดํ
}
}
์ธต {
์ด๋ฆ: "prob"
์ ํ: "์ํํธ๋งฅ์ค"
ํ๋จ: "์ ์"
์๋จ: "prob"
}
๋ฉ์ง ์ํ @manutdzou
์ง์ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ์ด ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์์
์ ์ํํ์๊ฒ ์ต๋๊น?
model-zoo/manutdzou ํด๋์ ์ฝ๋๋ฅผ ๋
ธํธ๋ถ์ผ๋ก ๊ฒ์ํ๊ณ prototxt์ ๋ฐ์ด๋ ๋งํฌ๋ฅผ ํ
์คํธ ํ์ผ๋ก ๊ฒ์ํ ์ ์์ต๋๊น? ๋ค๋ฅธ ์ฌ์ฉ์๋ค์ ๋ถ๋ช
ํ ๊ฐ์ฌํ ๊ฒ์
๋๋ค. ๊ทํ์ ์์
์ ๋ํ ๋ฌธ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ฅผ ์ถ๊ฐํ ์๋ ์์ต๋๋ค.
์ข์, ๋ด ์ฝ๋์ ๋ชจ๋ธ์ด ์ ์๋ํ๋ค๋ฉด ๊ธฐ๊บผ์ด ์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ปค๋ฐํ ๊ฒ์ ๋๋ค!
ๅ่ช็ฝๆ้ฎ็ฎฑๅคงๅธ
2017๋
7์ 7์ผ 17:33์ Patrick Christ๋ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
๋ฉ์ง ์ํ @manutdzou
์ง์ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ์ด ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์์
์ ์ํํ์๊ฒ ์ต๋๊น?
model-zoo/manutdzou ํด๋์ ์ฝ๋๋ฅผ ๋
ธํธ๋ถ์ผ๋ก ๊ฒ์ํ๊ณ prototxt์ ๋ฐ์ด๋ ๋งํฌ๋ฅผ ํ
์คํธ ํ์ผ๋ก ๊ฒ์ํ ์ ์์ต๋๊น? ๋ค๋ฅธ ์ฌ์ฉ์๋ค์ ๋ถ๋ช
ํ ๊ฐ์ฌํ ๊ฒ์
๋๋ค. ๊ทํ์ ์์
์ ๋ํ ๋ฌธ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ฅผ ์ถ๊ฐํ ์๋ ์์ต๋๋ค.
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์
๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ๋ณด๊ฑฐ๋ ์ค๋ ๋๋ฅผ ์์๊ฑฐํ์ธ์.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ถ์๋ ๋ชจ๋ธ์ด ์๋ชป๋ ๊ฒ ๊ฐ์๋ฐ, ์์ฒด ๋ชจ๋ธ์ ์์ฒด ํ์ตํ๊ณ ์์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์๋ํ๊ณ ๊ฒฐ๊ณผ๋ ์ข์ต๋๋ค.
@RenieWell @mohamed-ezz