* 개인적으로 의학 관련 배경은 없지만, 인공지능을 배워서 가장 기여하고 싶은 분야가 바로 이런 공공기관 분야이다. 뭔가 흥미로울 것 같다.
의료 영상 분석으로서의 딥러닝
의료 영상 데이터 종류
의료영상 관련 간단 설명 링크 -> (https://www.youtube.com/watch?time_continue=395&v=J_Owz3YBkD0&feature=emb_logo)
오늘은 x-ray 사진을 사용한다.
이 때 사진의 단면과
해부학적 위치를 알고 사진을 본다.
x-ray는 통과하고 남은 전자기파의 결과여서 흑백 명암으로 나타나고,
미니 배치 사용(SGD과 Full-batch의 중간으로 보자)
tf.data에 대한 공부가 좀 필요한 듯하다.
tf.data.Dataset.range(42)
의 cardinality하면 42인데,tf.data.Dataset.range(42).repeat()
의 cardinality는 무한대이고, 이건 (cardinality == tf.data.experimental.INFINITE_CARDINALITY
같은 걸 통해 확인할 수 있단다.math.ceil()
math.ceil(1.4) >>> 2
BatchNormalization은 Dropout과 같이 regulirazation(규제)의 기법이다.
클래스의 불균형일 경우
keras.model.fit()
에서 class_weight
파라미터로 조정 가능with tf.device('/GPU:0'):
를 통해 GPU 사용을 잠시동안만 할 수 있게끔 해줄 수 있나보다.
steps_per_epoch
파라미터는
keras 모델링 시 padding='same'
은 뭘까?
padding='valid'
도 있는데 그건 padding을 안 한다는 것이고(even하지 않으면 그냥 그 컬럼 drop)same
은 zero-padding을 추가하고, even하지 않으면 오른쪽에 더 추가해서 same하게 만든단다.keras.layers.SeparableConv2D
가 나온다.
딕셔너리
형태로 만들었다.(이는 추후 model.fit()
에 파라미터로 넣어주면 됨conv_block()
함수로 CNN 만들고dense_block()
함수로 FCN 부분 만들기BatchNormalization
, Dropout
을 통해 규제도 넣었는데, 이것은 선택사항데이터 가져오기
tensorflow
에서 이미지를 가져 올 때는 tf.io.read_file(path)
로 가져온다.tf.data.Dataset.list_files(TRAIN_PATH)
해서 가져오면 뭔가 이상하다.<ShuffleDataset shapes: (), types: tf.string>
인데, 이거를 take(1)
하면,tf.Tensor(b'/aiffel/aiffel/chest_xray/data/train/NORMAL/NORMAL2-IM-0812-0001.jpeg', shape=(), dtype=string)
이렇게 뜰 뿐이다.Attempt to convert a value (<ShuffleDataset shapes: (), types: tf.string>) with an unsupported type (<class 'tensorflow.python.data.ops.dataset_ops.ShuffleDataset'>) to a Tensor.
오류가 난다.tf.io.gfile.glob(path)
로 가져오면 된다.리스트
형식으로 경로들을 긁어온다.그냥 전반적으로 tf.dataset
의 구조와 그것을 내가 원하는 방식으로 이끌어내는 방법에 대해서 많이 헤맸다...
오늘의 핵심 포인트는
tf.dataset
좀 다뤄보기...(개인적으로)tf.data.experimental
moduletf.keras.layers.BatchNormalization()
tf.io
modulekeras.layers.SeparableConv2D