RSNA 2023 Abdominal Trauma Detection(1) -base line 입문
1.데이터 분석
(1)train.csv
:훈련데이터 csv파일
:환자 id 와 환자의 장기별 손상 지표가 들어있음.
:총 3147개의 환자 id.
:14개의 의료 상 지표.
train_csv = pd.read_csv("/kaggle/input/rsna-2023-abdominal-trauma-detection/train.csv")
print(train_csv.shape)
train_csv.head()
bowel_healthy, bowel_injury: 장기 손상 여부를 나타내는 열로, 이진(binary) 값(0 또는 1)으로 표시됩니다. "bowel_healthy"는 장기가 건강한 상태일 때 1, "bowel_injury"는 장기에 손상이 있을 때 1입니다.
extravasation_healthy, extravasation_injury: 혈관외물 유출 여부를 나타내는 열.
kidney_healthy, kidney_low, kidney_high: 콩팥(신장)의 상태를 나타내는 열로, 이진(binary) 값(0 또는 1) 또는 다중 클래스 중 하나로 표시됩니다. "kidney_healthy"는 콩팥이 건강한 상태일 때 1, "kidney_low" 및 "kidney_high"는 콩팥 상태의 다른 클래스를 나타냅니다.
liver_healthy, liver_low, liver_high: 간의 상태를 나타내는 열로, 이진(binary) 값(0 또는 1) 또는 다중 클래스 중 하나로 표시됩니다. "liver_healthy"는 간이 건강한 상태일 때 1, "liver_low" 및 "liver_high"는 간 상태의 다른 클래스를 나타냅니다.
spleen_healthy, spleen_low, spleen_high: 비장의 상태를 나타내는 열로, 이진(binary) 값(0 또는 1) 또는 다중 클래스 중 하나로 표시됩니다. "spleen_healthy"는 비장이 건강한 상태일 때 1, "spleen_low" 및 "spleen_high"는 비장 상태의 다른 클래스를 나타냅니다.
any_injury: 모든 손상 여부를 나타내는 열로, 이진(binary) 값(0 또는 1)으로 표시됩니다. "any_injury"가 1인 경우 어떤 종류의 손상이 있음을 나타냅니다.
(2) train_images
이미지 데이터 형식:
이미지는 복부 손상의 존재 또는 부재 및 손상의 위치를 나타내는 레이블이 지정된 CT(Computed Tomography) 이미지.
데이터는 DICOM 형식으로 제공되며, 이 형식은 의료 이미지의 표준 형식 중 하나입니다.
image_file = "/kaggle/input/rsna-2023-abdominal-trauma-detection/train_images/10004/21057/1001.dcm"
ds = pydicom.read_file(image_file)
ds
-디콤 형식으로 저장된 ct이미지의 메타 데이터.
File Meta Information Version (0002, 0001): 파일 메타 정보 버전입니다. 이것은 파일의 메타 데이터 형식의 버전을 나타냅니다. Media Storage SOP Class UID (0002, 0002): 이미지의 저장 형식을 나타내는 UID입니다. 여기서는 CT 이미지 저장 형식을 나타냅니다. Media Storage SOP Instance UID (0002, 0003): 이미지의 고유 인스턴스 식별자입니다. 각 이미지에는 이러한 고유한 식별자가 있습니다. Transfer Syntax UID (0002, 0010): 데이터 전송 형식의 UID입니다. 여기서는 RLE Lossless 전송 형식을 사용합니다. Implementation Class UID (0002, 0012): 구현 클래스의 UID입니다. 이것은 소프트웨어 또는 구현에 대한 고유 식별자입니다. Implementation Version Name (0002, 0013): 구현 버전의 이름 또는 식별자입니다. 이 경우에는 "PYDICOM 2.4.0"을 사용하고 있음을 나타냅니다. SOP Instance UID (0008, 0018): 이미지의 고유한 인스턴스 식별자입니다. 각 이미지에는 이러한 UID가 있으며, 이미지를 고유하게 식별하는 데 사용됩니다. Content Date (0008, 0023): 콘텐츠(이미지)의 날짜입니다. Content Time (0008, 0033): 콘텐츠(이미지)의 시간입니다. Patient ID (0010, 0020): 환자의 고유 식별자입니다. 각 이미지가 어떤 환자에게 속하는지 식별하는 데 사용됩니다. Slice Thickness (0018, 0050): 슬라이스 두께입니다. KVP (0018, 0060): KVP(킬로 볼트 피크) 값입니다. X선 화상 촬영에서 사용되는 전압 레벨을 나타냅니다. Patient Position (0018, 5100): 환자의 위치를 나타내는 값입니다. 여기서 'HFS'는 환자가 머리를 먼저 누운 상태를 나타냅니다. Study Instance UID (0020, 000d): 연구(스터디)의 고유한 인스턴스 식별자입니다. Series Instance UID (0020, 000e): 시리즈의 고유한 인스턴스 식별자입니다. Series Number (0020, 0011): 시리즈 번호입니다. Instance Number (0020, 0013): 인스턴스 번호입니다. Image Position (Patient) (0020, 0032): 환자의 이미지 위치를 나타내는 값입니다. Image Orientation (Patient) (0020, 0037): 환자의 이미지 방향을 나타내는 값입니다. Frame of Reference UID (0020, 0052): 참조 프레임의 UID입니다. Samples per Pixel (0028, 0002): 픽셀당 샘플 수입니다. Photometric Interpretation (0028, 0004): 이미지의 색공간을 나타내는 값입니다. Rows (0028, 0010): 이미지의 행 수입니다. Columns (0028, 0011): 이미지의 열 수입니다. Pixel Spacing (0028, 0030): 픽셀 간격을 나타내는 값입니다. Bits Allocated (0028, 0100): 할당된 비트 수입니다. Bits Stored (0028, 0101): 저장된 비트 수입니다. High Bit (0028, 0102): 높은 비트 값입니다. Pixel Representation (0028, 0103): 픽셀 표현 방법을 나타내는 값입니다. Window Center (0028, 1050): |
+시각화된 이미지
(3)각 기관 별 손상 개수 시각화
#organ_columns 변수: 여러 기관(organ)을 나타내는 문자열의 리스트
organ_columns = ['bowel', 'extravasation', 'kidney', 'liver', 'spleen']
#빈 데이터 프레임 생성
organ_counts = pd.DataFrame()
#organ 열에 train csv의 id를 제외한 열 넣기
organ_counts['Organ'] = train_csv.columns[1:]
#해당 기관에서 발생한 손상의 수 저장
organ_counts["count"] = [0 for _ in range(organ_counts.shape[0])]
#데이터의 열을 반복
for index , column in enumerate(train_csv.columns[1:]):
#각 열에 있는 기관에 대한 손상 수 계산
organ_counts['count'][index] = train_csv[column].sum()
plt.figure(figsize=(10, 3))
sns.barplot(data=organ_counts.sort_values(by=['count']), x='Organ', y='count')
plt.xticks(rotation=90)
plt.title("Distribution of Injury")
plt.xlabel("Injury --->")
plt.ylabel("Count --->")
plt.show()
대체로 healthy가 많음.
그 다음으로는 간이 건강하지않고 low인 liver_low 가 많음.
코드 공부