금속 미세조직 사진은 전문가가 눈으로 보고 종류를 판별한다. "이걸 AI가 대신 배울 수 있을까?"라는 단순한 궁금증에서 시작했다.
NIST(미국 표준기술연구소)가 공개한 금속 현미경 사진 데이터셋을 발견. 이미 학습된 이미지 인식 AI(ResNet50)에 전이학습을 적용하면 961장만으로도 분류가 가능하다는 것을 알게 됐다.
비전공자지만 "1주 학습 → 2주 검증 → 3주 배포"로 나누면 각 단계마다 독립적으로 결과를 확인할 수 있다고 판단. 한 번에 완성하는 대신 매주 검증 가능한 결과물을 만들기로 했다.
단순히 정확도 높은 모델이 아니라, AI가 올바른 근거로 판단했는지 설명할 수 있는 시스템을 만들고, 누구나 웹에서 바로 써볼 수 있도록 실제 배포까지 목표로 했다.
| 도구 | 실제 역할 | 비유로 설명하면 |
|---|---|---|
| PyTorch + ResNet50 | AI 모델을 만들고 학습시키는 핵심 도구 | 이미 사진을 잘 아는 전문가(ResNet50)를 데려와 "이제부터 금속 조직만 봐줘"라고 재교육하는 것 |
| 전이학습 (Transfer Learning) | 적은 데이터로도 학습 가능하게 하는 전략 | 처음부터 가르치지 않고, 이미 아는 지식 위에 새 지식만 추가 |
| Grad-CAM | AI 판단 근거를 시각화 | 의사가 X-ray 사진에서 "여기를 보고 진단했습니다"라고 손가락으로 가리켜주는 것 |
| Streamlit | 웹 화면(UI) 제작 | 파이썬 코드 몇 줄로 이미지 업로드·차트·버튼이 있는 웹사이트를 뚝딱 만드는 도구 |
| Docker + Hugging Face Spaces | 앱을 인터넷에 배포 | 실행 환경을 통째로 포장(Docker)해서, AI 서비스 전용 무료 창고(Hugging Face)에 올려두는 것 |
현미경 사진을 업로드하면 마르텐사이트·펄라이트·스페로다이트 등 7개 미세조직 중 어떤 조직인지, 각 클래스별 확률과 함께 즉시 표시합니다.
AI가 사진의 어느 부분을 보고 판단했는지 색상으로 오버레이. 특정 클래스를 강제로 지정해 해당 기준의 히트맵을 재생성할 수도 있습니다.
혼동행렬(Confusion Matrix)과 클래스별 Precision·Recall·F1-score를 제공해 어떤 조직에서 AI가 자주 틀리는지 투명하게 보여줍니다.
분류 결과에 맞춰 해당 미세조직의 특징(결정구조, 형성 조건 등)을 자동으로 설명하고, 활성화 영역의 집중도·분산도 수치도 제공합니다.
처음 해보는 딥러닝 프로젝트라 예상치 못한 문제들이 단계마다 터졌습니다.
GPU 없는 환경에서 30 epoch 학습에 약 3시간이 걸렸습니다. 절전모드 때문에 학습이 중간에 끊기는 문제까지 있었습니다.
스페로다이트는 374장이지만 마르텐사이트는 36장뿐. 클래스마다 학습 난이도가 크게 달랐습니다.
학습된 모델 파일이 282MB — 일반 무료 배포 플랫폼의 100MB 제한을 훌쩍 넘어 처음 선택한 플랫폼으로는 배포가 불가능했습니다.
마르텐사이트 등 일부 클래스는 학습 사진이 36장뿐 — 모델이 제대로 못 배울 위험
회전·색상 변화·블러·잘림 등 데이터 증강(Augmentation)을 적용해 적은 사진도 다양한 조건에서 학습되도록 보강
전이학습한 모델이 ImageNet에서 배운 일반 지식을 잊어버리고 과적합될 위험
레이어별로 학습률을 다르게 설정(저수준 레이어는 거의 동결, 마지막 레이어만 집중 학습)해 기존 지식은 보존하고 금속 조직 특징만 새로 학습
282MB 모델 파일 — Streamlit Community Cloud(100MB 제한)에 배포 불가
대용량 모델을 지원하는 Hugging Face Spaces로 전환, Docker로 실행 환경을 통째로 패키징해 어디서나 동일하게 동작하도록 구성
AI/개발 직무가 아니더라도, 이 프로젝트는 아래 역량을 증명합니다.
"학습 → 검증 → 배포"처럼 큰 과제를 검증 가능한 단계로 나누고, 각 단계의 전제조건을 명확히 했습니다.
정확도 90.3%라는 좋은 결과에도 "왜 맞췄는가"를 추가로 검증해 신뢰성을 확보했습니다.
비전공자로서 딥러닝·XAI·Docker·클라우드 배포까지 처음 접하는 기술 6종 이상을 독학으로 익혀 실제로 동작시켰습니다.
데이터 부족, 배포 용량 초과 등 막히는 문제마다 원인을 분해해 현실적인 대안을 찾아 끝까지 완성했습니다.
비전공자로서 궁금증에서 시작해, 데이터를 모으고, 모델을 학습시키고, 그 판단을 검증하고, 실제 서비스로 만들어 세상에 내놓는 과정 전체가 저의 문제해결 방식입니다.