김민석

Add new file

Showing 1 changed file with 45 additions and 0 deletions
# B2I-GAN: Anomaly detection from imaged ECG using GAN
ECG(electrocardiogram) 데이터는 심장 및 혈관 장애 분석에 많이 쓰이는 데이터다. 이를 이용한 기존의 연구들은 일차원 상태인 원본 데이터를 사용해왔다.
우리는 STFT(Short-time Fourier transform)를 이용해 데이터를 이차원으로 확장시키고, 시간에 따른 주파수 영역의 분포를 분석하여 특징을 추출하여 분류하고, GAN을 이용해 비정상 데이터-생성된 정상 데이터의 차이를 보여줌으로서 어느 부분이 비정상인지 사용자에게 보여주고자 한다.
## Dataset
해당 연구에 사용한 데이터는 MIT-BIH Arrhythmia Database이다. 이 데이터베이스는 다양한 종류의 심부전증을 나타내는 데이터를 포함하고 있으며 ECG 딥러닝 분야의 많은 연구에서 사용되어 왔다. 내부 데이터는 초당 360Hz로 sampling된 신호로, 우리는 이 전체 샘플 중 가장 특징을 잘 나타내는 II-lead에 대해 정상 신호(N) SVE (S), VEBs (V)를 앓고 있는 환자의 ECG 신호를 추출해 GAN의 입력 데이터로 사용하였다. 다운로드 링크는 아래와 같다.
>https://www.dropbox.com/sh/b17k2pb83obbrkn/AABF9mUNVdaYwce9fnwXsg1ta/ano0?dl=0&subfolder_nav_tracking=1
다운받은 데이터는 /experiments/ecg/dataset/preprocessed/ano0 에 넣어준다.
## Require
- Python 3
>### Packages
- PyTorch (1.0.0)
- scikit-learn (0.20.0)
- biosppy (0.6.1) # For data preprocess
- tqdm (4.28.1)
- matplotlib (3.0.2)
## 데이터 전처리
![캡처](https://user-images.githubusercontent.com/57976156/122515177-07156f00-d048-11eb-92bb-f9c588fcfa5c.PNG)
원본 데이터를 STFT로 변경하여 저장해야 한다. /experiments/ecg/dataset/preprocessed에 존재하는 change.py, change2.py를 하위 디렉토리 /ano0에 넣은 후 순서대로 실행하면 된다.
## 사용법
- train/test를 정하기 위해 run_ecg.sh 파일을 수정해야 한다.
![캡처](https://user-images.githubusercontent.com/57976156/122516269-86577280-d049-11eb-97c2-aae0b311c19a.PNG)
test 값이 0이면 train, 1이면 test이다.
- 실행의 명령어는 `run_ecg.sh`파일이 존재하는 디렉토리에서 다음과 같이 입력한다.<br>
`/bin/bash run_ecg.sh`
## 결과
|Model|AUC |AP |
|---|---|---|
|AE|0.8944|0.8415|
|AnoGAN|0.8642|0.8035|
|Ganomaly|0.9083|0.8701|
|BeatGAN|0.9447|0.9143|
|B2I-GAN|0.9460|0.9058|