๐ฉบ AI๊ฐ ์์ฌ์ ๋์ ๋์ ํ๋ค๋ฉด? PyTorch์ MONAI๋ก ๋ฐฐ์ฐ๋ ์๋ฃ ์์ ํ๋ช [ge]
๐ฉบ AI๊ฐ ์์ฌ์ ๋์ ๋์ ํ๋ค๋ฉด? PyTorch์ MONAI๋ก ๋ฐฐ์ฐ๋ ์๋ฃ ์์ ํ๋ช [ge]
์ธ๊ณต์ง๋ฅ(AI)์ด ๊ฐ์ฅ ๋น์ ๋ฐํ๋ ๋ถ์ผ ์ค ํ๋๊ฐ ๋ฐ๋ก ์๋ฃ ํ์ฅ์ ๋๋ค. ์์ฒ ์ฅ์ CT์ MRI ์ฌ์ง์ ๋จ ๋ช ์ด ๋ง์ ๋ถ์ํ์ฌ ๊ฐ(Liver)์ ์์น๋ฅผ ์ฐพ์๋ด๊ณ ์์ธํฌ๋ฅผ ๊ตฌ๋ณํด๋ด๋ ๊ธฐ์ , ๊ถ๊ธํ์ง ์์ผ์ ๊ฐ์? ์ค๋์ ๊ทธ ๊ธฐ์ ์ ์ค์ฌ์ ์๋ PyTorch์ MONAI๋ฅผ ํ์ฉํ ์๋ฃ ์์ ๋ถ์์ ๋ชจ๋ ๊ฒ์ ํํค์ณ ๋ณด๊ฒ ์ต๋๋ค.
๐ ๋ชฉ์ฐจ
์๋ฃ ์์ AI์ ํต์ฌ ๊ฐ๋ : ๋ถ๋ฅ, ํ์ง ๊ทธ๋ฆฌ๊ณ ๋ถํ
์๋ฃ AI์ ์ํผ์คํ: U-Net(์ ๋ท) ๊ตฌ์กฐ ์๋ฒฝ ์ดํด
๋ฐ์ดํฐ์ ํ์ค: NIfTI(๋ํํฐ) ํ์ผ๊ณผ ๋ฐ์ดํฐ์ ํ๋ณด๋ฒ
๐ฐ ํฌ์ ๋ ธํธ: ์๋ฃ AI ์๋๋ฅผ ์ง๋ฐฐํ '๋์ฅ์ฃผ'๋ ๋๊ตฌ์ธ๊ฐ?
์ค์ ์ค๋น: ํ์ ์ํํธ์จ์ด ์ค์น ๊ฐ์ด๋
์์ฝ ๋ฐ ํ๊ทธ
1. ๐ผ️ ์๋ฃ ์์ AI์ ์ธ ๊ฐ์ง ๋ง๋ฒ
์๋ฃ ์์์ ๋ถ์ํ ๋ AI๋ ํฌ๊ฒ ์ธ ๊ฐ์ง ์ผ์ ํฉ๋๋ค.
์ด๋ฏธ์ง ๋ถ๋ฅ (Image Classification): "์ด ์ฌ์ง์ ๊ฐ(Liver)์ด ์๋์?"๋ผ๊ณ ๋ฌป๋ ๊ฒ์ ๋๋ค. ๊ฒฐ๊ณผ๋ '์๋ค/์๋ค'์ ํ๋ฅ ๋ก ๋์ต๋๋ค.
๊ฐ์ฒด ํ์ง (Object Detection): "๊ฐ์ด ์ด๋์ ์๋์?"๋ผ๊ณ ๋ฌป๊ณ ์ฌ๊ฐํ ๋ฐ์ค(Bounding Box)๋ฅผ ๊ทธ๋ ค ์์น๋ฅผ ์๋ ค์ฃผ๋ ๊ฒ์ ๋๋ค.
์ด๋ฏธ์ง ๋ถํ (Image Segmentation): ๊ฐ์ฅ ์ ๊ตํ ๋จ๊ณ์ ๋๋ค. "๊ฐ์ ํด๋นํ๋ ํฝ์ (Pixel)์ ๋ชจ๋ ์์น ํ์ธ์."๋ผ๊ณ ๋ช ๋ นํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ํตํด ์ฅ๊ธฐ์ ์ ํํ ๋ชจ์๊ณผ ํฌ๊ธฐ๋ฅผ ์ ์ ์์ต๋๋ค.
"์๋ฃ ์์์์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒ์ ๋จ์ํ ๋ถ๋ฅ๊ฐ ์๋๋๋ค. ์ ํํ ์ด๋ ๋ถ๋ถ์ด ์ฅ๊ธฐ์ธ์ง ์์๋ด๋ '์ธ๋ฐํ ๋ง์คํฌ'๋ฅผ ๊ทธ๋ฆฌ๋ ์ผ์ด์ฃ ." [์ฃผ์1] (์ฃผ์1: ๊ฐ์์ ๋ฌด์คํ๋ ์๋ฏผ์ด ์ด๋ฏธ์ง ๋ถํ ์ ์ค์์ฑ์ ๊ฐ์กฐํ๋ฉฐ ํ ๋ง)
2. ๐️ ์๋ฃ AI์ ๋ฑ๋: U-Net (์ ๋ท)
์๋ฃ ์์ ๋ถํ ์์ ๊ฐ์ฅ ์ ๋ช ํ ์ ๊ฒฝ๋ง ๊ตฌ์กฐ๊ฐ ๋ฐ๋ก U-Net์ ๋๋ค. ๋ชจ์์ด ์ํ๋ฒณ 'U'๋ฅผ ๋ฎ์์ ๋ถ์ฌ์ง ์ด๋ฆ์ด์ฃ .
์ธ์ฝ๋ (Encoder): '๋ด๋ ค๊ฐ๋ ๋ถ๋ถ'. ์ด๋ฏธ์ง์ ํน์ง์ ์์ถํ์ฌ ํต์ฌ ์ ๋ณด๋ง ๋จ๊น๋๋ค.
๋์ฝ๋ (Decoder): '์ฌ๋ผ๊ฐ๋ ๋ถ๋ถ'. ์์ถ๋ ์ ๋ณด๋ฅผ ๋ค์ ์๋ ์ด๋ฏธ์ง ํฌ๊ธฐ๋ก ๋ณต์ํ๋ฉด์ ๊ฐ ํฝ์ ์ด ๋ฌด์์ธ์ง(๊ฐ์ธ์ง, ๋ฐฐ๊ฒฝ์ธ์ง) ๊ฒฐ์ ํฉ๋๋ค.
์๋ฏธ๋ก ์ ๋ถํ (Semantic Segmentation): ์ฌ๋ฌ ๊ฐ์ ์ฅ๊ธฐ๊ฐ ์์ด๋ '๊ฐ'์ด๋ผ๋ ํด๋์ค ์์ฒด๋ฅผ ์ฐพ์๋ด๋ ๋ฐฉ์์ ๋๋ค.
3. ๐พ ์๋ฃ ๋ฐ์ดํฐ์ ์ธ์ด: NIfTI (๋ํํฐ)
์๋ฃ ์์์ ์ฐ๋ฆฌ๊ฐ ํํ ์ฐ๋ JPG๋ PNG ํ์ผ์ ์ฐ์ง ์์ต๋๋ค. **NIfTI(๋ํํฐ, .nii)**๋ผ๋ ํน์ ํ์์ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค.
NIfTI๋?: ์๋ฐฑ ์ฅ์ ๋จ๋ฉด ์ฌ์ง(DICOM)์ ํ๋๋ก ๋ฌถ์ด 3์ฐจ์ ๋ณผ๋ฅจ์ผ๋ก ๋ง๋ ํ์ผ์ ๋๋ค.
MONAI (๋ชจ๋์ด): ์๋ฃ ์์ ์ ์ฉ ์ธ๊ณต์ง๋ฅ ํ๋ ์์ํฌ์ ๋๋ค. NIfTI ํ์ผ์ ์์ ์์ฌ๋ก ๋ค๋ฃจ๊ณ ์ ์ฒ๋ฆฌ(Pre-processing)ํ๋ ๋ฐ ์ต์ ํ๋์ด ์์ต๋๋ค.
4. ๐ฐ ํฌ์ํ ์ฃผ์: ์๋ฃ AI ์ํ๊ณ์ ์ฃผ์ธ๋ค
์๋ฃ AI ๊ฐ์๋ฅผ ํ์ค ๋ ์๊ฐ์๋ค์ด ๊ฐ์ฅ ๋์ ๋ฐ์ง์ผ ๋๋ชฉ์ ๋๋ค. ์ด ๊ธฐ์ ์ด ๋ฐ์ ํ ์๋ก ์๋ ๊ธฐ์ ๋ค์ด ์์ต๋๋ค.
1์: NVIDIA (์๋น๋์ / NVDA) ★★★★★
์ด์ : PyTorch์ MONAI๋ ์๋น๋์์ CUDA(์ฟ ๋ค) ๊ธฐ์ ์์ด๋ ์ ๋๋ก ์๋ํ์ง ์์ต๋๋ค. ์๋ฃ ์์ AI ํ์ต์๋ ๊ณ ์ฑ๋ฅ GPU๊ฐ ํ์์ ๋๋ค. ์ด ๋ชจ๋ ์ํํธ์จ์ด ์ํ๊ณ์ ๊ธฐ๋ฐ ํ๋์จ์ด๋ฅผ ์๋น๋์๊ฐ ๋ ์ ํ๊ณ ์์ต๋๋ค.
2์: Alphabet (์ํ๋ฒณ/๊ตฌ๊ธ / GOOGL) ★★★★
์ด์ : ์ด ๊ฐ์์์๋ ์ธ๊ธ๋๋ Kaggle(์บ๊ธ) ๋ฐ์ดํฐ์ ๊ณผ ์ฐ๊ตฌ ํ๋ซํผ์ ์์ ํ๊ณ ์์ผ๋ฉฐ, ๋ฅ๋ฌ๋ ์ธํ๋ผ์ ํ ์ถ์ ๋ด๋นํฉ๋๋ค.
3์: GE HealthCare (GE ํฌ์ค์ผ์ด / GEHC) ★★★
์ด์ : ์ค์ ์๋ฃ ํ์ฅ์์ ์ด๋ฐ AI ์ํํธ์จ์ด๋ฅผ ํ์ฌํ ํ๋์จ์ด(MRI, CT ์ฅ๋น)๋ฅผ ์ง์ ์ ์กฐํ๊ณ ์๋น์คํ๋ ์ค์ง์ ์ธ ์ํ์ฃผ์ ๋๋ค.
5. ๐ ️ ์ค์ ๊ฐ์ด๋: ์ง๊ธ ๋ฐ๋ก ์์ํ๋ ํ๊ฒฝ ์ค์
์๊ฐ์๋ค์ด ์ค์ต์ ๋ฐ๋ผ ํ ์ ์๋๋ก ์ ๋ฆฌํ ์์ญ์ ๋๋ค.
[์คํ ๊ฐ๋ฅ ์์ญ: ํ์ ์ํํธ์จ์ด ์ค์น ๋ฆฌ์คํธ]
ํ์ด์ฌ (Python): ๋ชจ๋ AI ์ฝ๋์ ๊ธฐ์ด์ ๋๋ค. (python.org)
VS Code (Visual Studio Code): ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฐ์ฅ ์ ํํ๊ณ ํธ๋ฆฌํ ๋๊ตฌ์ ๋๋ค.
3D Slicer: ์๋ฃ ์์(NIfTI)์ ๋์ผ๋ก ํ์ธํ๊ณ ๋ถ์ํ๋ ๋ฌด๋ฃ ์ํํธ์จ์ด์ ๋๋ค.
ITK-SNAP: ์ฅ๊ธฐ ์์ญ์ ์ง์ ์์ผ๋ก ๊ทธ๋ฆฌ๊ฑฐ๋(Segmentation) ์์ ํ ๋ ์์ฃผ ํธ๋ฆฌํฉ๋๋ค.
[์คํ ๊ฐ๋ฅ ์์ญ: ํ์ต์ฉ ๋ฐ์ดํฐ์ ๊ตฌํ๊ธฐ]
Medical Segmentation Decathlon: 10๊ฐ์ง ์ฅ๊ธฐ ๋ถํ ๊ณผ์ ๊ฐ ๋ชจ์ธ ๋ณด๋ฌผ์ฐฝ๊ณ ์ ๋๋ค. (๋งํฌ:
)http://medicaldecathlon.com/ Kaggle (์บ๊ธ): 'Liver Segmentation'์ ๊ฒ์ํ๋ฉด ์ ์ธ๊ณ ์ฐ๊ตฌ์๋ค์ด ์ฌ๋ฆฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค. (๋งํฌ:
)https://www.kaggle.com/datasets
๐ [์ถ๊ฐ ์ ๋ณด: ๋ผ๋ฒจ๋ง] ์ ์ฒ๋ฆฌ(Pre-processing)์ ์ค์์ฑ
์์ ๋ฐ์ดํฐ๊ฐ ์ค๋น๋์๋ค๊ณ ๋ฐ๋ก AI์ ๋ฃ์ ์ ์์ต๋๋ค. ์๋ฃ ์์์ ์ฅ๋น๋ง๋ค ๋ฐ๊ธฐ๋ ํฌ๊ธฐ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์, MONAI์ 'Transforms' ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ฅผ ๋ง์ถ๊ณ (Resizing), ๋ฐ๊ธฐ๋ฅผ ์ผ์ ํ๊ฒ ์กฐ์ ํ๋(Normalization) ๊ณผ์ ์ด ํ์์ ์ ๋๋ค. ์ด ๊ณผ์ ์ด ์ ํํด์ผ AI์ ์ฑ๋ฅ(Accuracy)์ด ๋์์ง๋๋ค.
๐ ์ฐธ๊ณ ๋ฌธํ
Ronneberger et al., "U-Net: Convolutional Networks for Biomedical Image Segmentation", 2015.
MONAI Project Documentation ([suspicious link removed])
PyTorch Official Website (
)https://pytorch.org/ YouTube Video (
)https://www.youtube.com/watch?v=M3ZWfamWrBM
๐ ์์ฝ
์๋ฃ ์์ AI์ ๊ฝ์ ์ฅ๊ธฐ์ ์์ญ์ ์ ํํ ์ฐพ์๋ด๋ **์ด๋ฏธ์ง ๋ถํ (Segmentation)**์ ๋๋ค.
U-Net์ ์๋ฃ AI์์ ํ์ค์ผ๋ก ์ฐ์ด๋ ๊ฐ์ฅ ํจ์จ์ ์ธ ์ ๊ฒฝ๋ง ๊ตฌ์กฐ์ ๋๋ค.
์ค๋ฌด์์๋ PyTorch์ MONAI๋ฅผ ํ์ฉํ๋ฉฐ, ๋ฐ์ดํฐ๋ NIfTI ํ์์ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค.
์ด ์์ฅ์ ์ต๋ ์ํ์ฃผ๋ ์ฐ์ฐ ๋ฅ๋ ฅ์ ์ ๊ณตํ๋ **NVIDIA(์๋น๋์)**์ ๋๋ค.
๐ ํ๊ทธ
#์๋ฃ์ธ๊ณต์ง๋ฅ #PyTorch #MONAI #UNet #์๋น๋์์ฃผ๊ฐ #์๋ฃ์์๋ถ์ #NIfTI #๋ฐ์ดํฐ์ฌ์ด์ธ์ค #๋ฅ๋ฌ๋๊ฐ์ #ITKSNAP #3DSlicer #HealthcareAI
[๊ทธ๋ฆผ ์๋ด] (๊ทธ๋ฆผ 1: U์ ํํ์ ์ ๊ฒฝ๋ง ๊ตฌ์กฐ๋ ์ด๋ฏธ์ง๋ฅผ ๋ฃ์ผ๋ฉด ์ดํด๋๊ฐ 200% ์์นํฉ๋๋ค.) (๊ทธ๋ฆผ 2: CT ์ฌ์ง ์์ ๊ฐ ์์ญ์ด ์ ๋ช ํ๊ฒ ์์น ๋ 'Mask' ์ด๋ฏธ์ง๋ฅผ ์ฝ์ ํ์ธ์.) (๊ทธ๋ฆผ 3: ์๋น๋์ GPU ์นฉ์ ์ฌ์ง๊ณผ ํจ๊ป 'AI์ ์ฌ์ฅ'์ด๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ๋ฃ์ผ๋ฉด ํฌ์ ์ธ์ฌ์ดํธ ์ ๋ฌ์ ํจ๊ณผ์ ์ ๋๋ค.)
๋๊ธ
๋๊ธ ์ฐ๊ธฐ