fracture's People
fracture's Issues
모델을 사용하여 테스트하는 방법
-
학습데이터 크기 < 배치크기
사실, 학습데이터는 data augmentation을 통해 그 수를 증가시킬 수 있다. 하지만, 대게 data augmentation은 실시간으로 처리하기 때문에 적어도 배치크기 만큼 학습데이터가 있어야한다. 그렇지 않다면, 모델을 학습시키기 전에 data augmentation을 통해 데이터를 생성해야 한다. Data augmentation은 적게는 수십배 많게는 수백, 수천배까지 데이터 수를 증가시키기 때문에 이 방법은 옳지않다. 따라서, 학습데이터가 배치크기보다 작은 경우는 배치크기를 줄이는 방법 밖에 없다. -
검증데이터, 테스트데이터 크기 < 배치크기
항상 학습에만 초점이 맞추어져 있기 때문에 해당 문제에 대한 중요성을 간과하기 쉽다. 우선, 두 데이터셋 모두 data augmentation을 통해 데이터 수를 증가시키지 않고 해당 데이터를 모델입력으로 바로 주기 때문에 우리가 정의한 텐서의 크기에 맞도록 만들어내기만 하면 된다. 예를 들어, 배치크기가 64이고 테스트데이터 크기가 8인 경우는 테스트데이터를 8번 복사하여 크기가 64가 되도록 만들면 된다. 사실, 모델을 테스트하는 방법은 논문마다 다르기 때문에 이 부분은 조사를 해야한다.
_Originally posted by @chatterboy in #19 (comment)
기존에 제안된 Data Augmentation 방법을 조사
Originally posted by @chatterboy in https://github.com/chatterboy/fracture/issue_comments#issuecomment-425281623
Data Augmentation 방법에 대한 조사
Originally posted by @chatterboy in #3 (comment)
DataAug 클래스 수정
crop_image()를 crop()으로 수정
Conditional GAN에 대하여
TODO
TODO
- 모델 아키텍쳐
- 클래스 불균형
모델 아키텍쳐
먼저, 환자에 대한 CT 영상은 각도에 따라 여러 장이 존재함. 예를 들어, 환자에 대한 24장의 CT 영상은 15도를 간격으로 회전시킨 영상을 나타냄. 위의 특징을 고려해서 아래 그림과 같은 첫 번째와 두 번째 모델을 고려함.
CT 영상의 수가 사용할 모델의 수보다 많은 경우에는 각 모델의 기준각에 가장 가까운 영상들을 해당 모델의 학습 데이터 또는 테스트 데이터로 사용. 예를 들어, 기준각이 0도인 모델은 -45, -30, -15, 0, 15, 30에 대한 영상을 사용. 이 부분은 하나의 영상을 앙상블로 추론하는 경우와 비교 가능함.
첫 번째에서 각 모델의 특징을 각 모델에 대한 예측으로만 쓰는 반면에 두 번째는 그러한 특징들을 결합하여 하나의 통합된 모델로써 예측을 하는 것을 고려함.
세 번째는 CT 영상과 X-ray 영상을 동시에 사용해서 하나의 모델을 학습 및 추론하는 방법임.
클래스 불균형
현재 사용하려는 데이터에는 클래스 불균형이 있고 많게는 20배 정도 차이가 발생. 중요한 점은 적은 경우에는 단 한 장이고, 많아야 20장 정도 되기 때문에 학습을 어떻게 시킬지에 대한 문제도 고려해야함.
DONE
- 데이터 조사
데이터 조사
- 데이터에 몇 가지 오류가 있음을 확인
batch normalization 추가
utils.layers 모듈에 추가
학습데이터, 검증데이터, 테스트데이터와 배치크기에 대한 생각
전체 시스템 개발 방향
Batch 클래스 수정
init() 함수 정의 오타
데이터 크기에 따른 파티셔닝 문제
Partition 기능 추가
Preproc 클래스 수정
mean subtracted를 수행하는 함수를 구현할 때, 인자로 학습데이터에서 계산한 평균 또는 평균벡터를 받을 수 있도록 구현
ResNet50 추가
loss 함수를 관리하는 모듈 추가
Batch 클래스 추가
Load 클래스 추가
기존 연구 결과 정리
목적
딥러닝을 이용한 의료 영상에 대한 골절 예측
결과
데이터
- 골절 부위를 포함한 영상 데이터
- 각 환자에 대한 CT와 X-ray 영상으로 구성
- X-ray 영상은 CT 영상에 비해 10%
문제정의
- 각 영상은 1개 이상의 클래스를 포함
- multi-label classification + deep learning
데이터셋
- CT 영상만 고려
- 모든 CT 영상은 동일한 차원을 가짐
- 학습 데이터는 70%, 테스트 데이터는 30%로 구분
모델정의
resnet-50
from scratch- 각 출력 노드에
sigmoid
를 적용함으로써, multi-label classification 문제 접근
전처리
- mean subtraction 적용
Data augmentation
- scaling, flipping, rotating, translating과 같은 네 가지 방법을 적용
- 학습 데이터의 수가 1,080배 증가
실험방법
아래와 같이 설정
num_classes = 12
batch_size = 64
height = 224
width = 224
num_channels = 3
learning_rate = 0.001
num_epochs = 3000
test_cycles = 500
실험결과
epoch | accuracy | loss |
---|---|---|
0 | 0 | 4.458 |
500 | 0.515 | 0.153 |
1000 | 0.765 | 0.084 |
1500 | 0.75 | 0.055 |
2000 | 0.734 | 0.079 |
2500 | 0.781 | 0.066 |
방향
- 클래스 구분에 대한 문제
- Data augmentation 방법 추가 고려
- 더 효율적인 multi-label classification + deep learning 방법 고려
- CT와 X-ray 영상을 모두 고려
- 족관절 골관절염 관련 deep learning 모델 프로세스 고려? (major voting ensemble + XGBoosting)
metrics 모듈 추가
Load 클래스 수정
함수명 수정
저장한 모델정보를 사용하여 재학습하는 기능 추가
학습 시 모델정보를 저장하는 기능 추가
DataAug 클래스 추가
다양한 Data Augmentation 기능을 가지고 있는 클래스
train 함수 수정
오타수정
train 모듈 추가
train 함수 수정
직접 loss 함수를 정의한 부분을 loss 모듈에서 사용하는 것으로 수정
layers 모듈 추가
train 함수 수정
학습데이터에 대한 정확도 계산하는 부분 추가
데이터 전처리 방법에 대한 조사
Originally posted by @chatterboy in #2 (comment)
Preproc 클래스 추가
데이터를 전처리하는 클래스
DataAug 클래스 수정
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.