이 도구는 PyTorch 기반의 모델 학습과 다양한 XAI(설명 가능한 AI) 기법을 통합적으로 지원하는 데스크탑 어플리케이션입니다. 학습된 체크포인트(YAML) 파일을 기반으로 데이터, 모델, XAI explainer를 자동으로 로드하여, 다양한 데이터셋과 모델에 대해 히트맵 분석 및 슈퍼픽셀 기반 분석까지 한 번에 수행할 수 있습니다.
- 모델 학습과 XAI 분석의 통합: 학습된 체크포인트(YAML)만 있으면 데이터, 모델, explainer를 자동으로 로드하여 분석 가능
- 지원 모델: ResNet18, ResNet34
- 지원 데이터셋:
- STL10 (10 클래스)
- Bird CELF (450종 조류 분류)
- 참새/솔새 구분 데이터셋 (sparrow-vs-bunting)
- 지원 XAI 기법: CAM, GradCAM, RISE, SmoothGrad, IG
- 슈퍼픽셀(SLIC) 기반 분석 지원: SLIC(superpixel)로 세그먼트별 히트맵 집계 및 시각화
- PyQt5 기반 GUI: 체크포인트/이미지/XAI 파라미터를 직관적으로 선택, 결과를 PNG로 저장 및 비교
- 스냅샷 저장/비교: 여러 히트맵 결과를 저장하고, 병렬로 비교 가능
-
의존성 설치
pip install -r requirements.txt
-
OpenCV ximgproc 모듈 필요
- SLIC 기능을 사용하려면 OpenCV의 ximgproc 모듈이 필요합니다.
- 설치 예시:
pip install opencv-contrib-python
-
PyQt5 설치
pip install PyQt5
-
GUI 실행
cd heatmap_tool/app python main.py -
기본 사용 흐름
- 체크포인트(YAML) 로드 → 이미지 로드 → XAI 기법/파라미터 선택 → 히트맵 생성
- 히트맵 결과를 PNG로 저장하거나, 여러 스냅샷을 비교할 수 있습니다.
- "스냅샷 저장" 버튼으로 결과를 저장
- "스냅샷 미리보기" 버튼으로 여러 PNG를 한 번에 비교
- "히트맵 폴더 열기"로 결과 폴더를 바로 탐색
-
명령행 XAI 분석 (스크립트 방식)
python use_xai_explainer.py -d <데이터셋> -m <모델> -x <XAI기법>
- 예시:
python use_xai_explainer.py -d stl10 -m resnetclassifier -x cam python use_xai_explainer.py -d stl10 -m resnetclassifier -x grad_cam python use_xai_explainer.py -d bird_celf -m resnet34 -x ig
- 예시:
- 모델: ResNet18, ResNet34
- 데이터셋:
- STL10 (10 클래스, 96x96)
- Bird CELF (450 클래스, 조류 이미지)
- 참새/솔새 구분 데이터셋 (sparrow-vs-bunting)
- XAI 기법:
- CAM
- GradCAM
- RISE
- SmoothGrad
- IG (Integrated Gradients)
- 슈퍼픽셀(SLIC) 기반 분석: 각 XAI 기법별로 SLIC 옵션을 켜서 세그먼트별 히트맵 집계/시각화 가능
- 학습된 모델의 체크포인트와 YAML 설정 파일을 기반으로 데이터, 모델, explainer를 자동 로드합니다.
- YAML 파일에는 데이터셋, 모델 구조, 클래스 정보, XAI 파라미터 등이 포함되어야 합니다.
heatmap_tool/
app/
main.py # 메인 GUI 어플리케이션
use_xai_explainer.py # 명령행 XAI 분석 스크립트
utils/ # 유틸리티 함수/다이얼로그/시각화 등
explainers/ # XAI 기법별 구현 (CAM, IG, SmoothGrad 등)
models/ # 모델 구조 정의
configs/ # 체크포인트/데이터셋 설정
snapshots/ # 저장된 히트맵/스냅샷 이미지
xai_gui.ui # PyQt5 UI 파일
README.md # (앱 전용 설명)
requirements.txt # 전체 의존성
README.md # (본 파일)
- 본 프로젝트는 PyTorch, PyQt5, OpenCV, numpy 등 오픈소스 라이브러리를 적극 활용합니다.
- 문의/이슈는 GitHub 또는 프로젝트 관리자에게 연락해 주세요.