의료 영상 레이블 지정기에서 MedSAM 시작하기
이 예제에서는 의료 영상 레이블 지정기 앱에서 MedSAM 알고리즘을 사용하여 의료 영상과 의료 볼륨의 단면에서 객체를 대화형 방식으로 분할하는 방법을 보여줍니다.
레이블을 지정할 데이터 다운로드하기
이 예제에서는 Medical Segmentation Decathlon 데이터 세트[1]의 서브셋에 있는 흉부 CT 데이터에 레이블을 지정합니다. 데이터의 서브셋 크기는 약 76MB입니다. 아래 코드를 실행하여 MathWorks® 웹사이트에서 MedicalVolumNIfTIData.zip 파일을 다운로드하고 압축을 풉니다.
zipFile = matlab.internal.examples.downloadSupportFile("medical","MedicalVolumeNIfTIData.zip"); filepath = fileparts(zipFile); unzip(zipFile,filepath) dataFolder = fullfile(filepath,"MedicalVolumeNIfTIData");
MedSAM 지원 패키지 설치하기
애드온 탐색기에서 Medical Imaging Toolbox™ Model for Medical Segment Anything Model을 설치합니다. 애드온 설치에 대한 자세한 내용은 애드온을 받고 관리하기 항목을 참조하십시오. 지원 패키지를 사용하려면 Deep Learning Toolbox™와 Computer Vision Toolbox™도 필요합니다. GPU에서 영상 데이터를 처리하려면 지원되는 GPU 장치와 Parallel Computing Toolbox™가 필요합니다.
레이블 지정 세션을 열고 데이터 불러오기
의료 영상 레이블 지정기 앱을 열고 볼륨 레이블 지정 세션을 시작합니다. 새 볼륨 세션을 만들거나 이전 세션을 다시 열 수 있습니다. 새 세션을 만드는 경우 다운로드한 데이터(dataFolder 변수로 지정된 폴더에 있음)에서 lung_027.nii.gz 파일을 가져옵니다. 볼륨 세션을 만들고 데이터를 가져오는 방법을 보여주는 예는 Label 3-D Medical Image Using Medical Image Labeler 항목을 참조하십시오.

레이블 정의 만들기
레이블 정의 창에서 레이블 정의 만들기를 선택하여 디폴트 레이블 이름으로 레이블을 만듭니다. 레이블 이름을 변경하려면 레이블을 더블 클릭하고 새 이름을 입력합니다. 레이블 이름은 공백 없는 유효한 MATLAB® 변수 이름이어야 합니다. 레이블에 연결된 디폴트 색을 변경하려면 레이블 식별자에서 컬러 사각형을 더블 클릭하고 색 대화 상자에서 색을 선택합니다. 이 예제에서는 Type1과 Type2라는 2개의 레이블을 만듭니다.

MedSAM을 사용하여 객체에 레이블 지정하기
MedSAM(Medical Segment Anything Model)은 2차원 의료 영상과 3차원 의료 볼륨의 2차원 단면을 대화형 방식으로 쉽게 분할하기 위한 딥러닝 알고리즘입니다. MedSAM을 사용하면 데이터 세트에 맞게 모델을 다시 훈련시킬 필요 없이 여러 의료 영상 모달리티에서 객체를 분할할 수 있습니다. MedSAM은 SAM(Segment Anything Model)을 기반으로 합니다. medicalSegmentAnythingModel 객체를 사용하여 2차원 의료 영상과 3차원 의료 볼륨의 2차원 단면에서 객체를 분할할 수 있습니다. MedSAM에 대한 자세한 내용은 의료 영상 분할을 위해 Medical Segment Anything Model 시작하기 항목을 참조하십시오.
앱 툴스트립의 그리기 탭에서 MedSAM을 선택합니다. 사용 가능한 경우 분할에 GPU 사용을 선택하면 GPU를 사용(가능한 경우)하여 분할 속도를 높일 수 있습니다. 이 옵션은 GPU를 사용할 수 있는 경우 기본적으로 선택되지만, 원하지 않을 경우 선택 해제할 수도 있습니다. GPU를 사용할 수 없는 경우 이 옵션은 비활성화됩니다.


3차원 볼륨의 2차원 슬라이스에서 객체에 레이블 지정하기
레이블 Type1을 선택합니다. 볼륨의 횡단면에서 분할할 객체 둘레에 경계 상자를 그립니다.

앱에서 처음으로 의료 영상에서 또는 의료 볼륨의 2차원 슬라이스 영상에서 객체를 분할할 때 GPU를 사용하지 않으면 MedSAM 알고리즘이 영상의 임베딩을 추출하는 데 시간이 다소 걸립니다. 이 경우 MedSAM 모델을 실행하는 중 대화 상자가 앱에 표시됩니다.

MedSAM 알고리즘이 영상의 임베딩을 추출하면 경계 상자를 조정할 수 있습니다.

MedSAM 알고리즘이 경계 상자 내 객체를 분할하고 이에 레이블을 지정합니다.

영상 내 여러 객체에 레이블 지정하기
레이블 Type1을 선택합니다. 볼륨의 시상면에서 분할할 객체 둘레에 경계 상자를 그립니다. MedSAM 알고리즘이 영상의 임베딩을 추출하고 경계 상자 내 객체를 분할합니다. 그다음 레이블 Type2를 선택하십시오. 볼륨의 시상면에서 분할할 객체 둘레에 경계 상자를 그립니다. 이 객체는 동일한 레이블 지정 세션 동안 같은 영상에서 분할되는 두 번째 객체이므로, MedSAM 알고리즘은 영상의 임베딩을 다시 추출하지 않습니다. 알고리즘이 직접 경계 상자 내 객체를 분할합니다.

MedSAM을 사용하여 만든 레이블 편집하기
레이블 Type2를 선택합니다. 볼륨의 관상면에서 분할할 객체 둘레에 경계 상자를 그립니다. MedSAM 알고리즘이 영상의 임베딩을 추출하고 경계 상자 내 객체를 분할합니다. 레이블이 지정된 객체를 마우스 오른쪽 버튼으로 클릭하고 상황별 메뉴에서 그려진 영역 선택을 선택합니다. 이제 점을 사용하여 레이블 형태를 편집하거나, 상황별 메뉴의 옵션을 사용하여 레이블을 다시 할당하거나 삭제할 수 있습니다.

3차원으로 레이블 시각화하기
3차원 볼륨 렌더링 창에서 볼륨의 여러 단면에 있는 레이블을 시각화합니다.

참고 문헌
[1] Medical Segmentation Decathlon. "Lung." Tasks. Accessed May 10, 2018. http://medicaldecathlon.com/.
The Lung data set is provided by the Medical Segmentation Decathlon under the CC-BY-SA 4.0 license. All warranties and representations are disclaimed. See the license for details. This example uses a subset of the original data set consisting of two CT volumes. The labels shown in this example were created for illustration purposes and have not been verified by a clinician.
참고 항목
의료 영상 레이블 지정기 | medicalSegmentAnythingModel