본문 바로가기

Resnet185

🧠 Catastrophic Forgetting, 이렇게 시작됐습니다 시작하며;매일 퇴근 전, 그날 학습에 사용할 데이터를 정리하고 모델을 학습시키는 과정을 반복해 왔다. 그러나 어느 순간부터 새로 추가한 이미지에 대해 모델이 제대로 예측하지 못하는 문제가 발생했다. 처음에는 학습률(learning rate)의 문제라고 판단하여 여러 차례 값을 조정해 보았고, 기존에는 잘 분류되던 이미지까지 틀리는 현상을 확인한 후에는, 수백 장의 기존 데이터를 직접 다시 검토하기도 했다. (다 합치면 수 천장.. 을 눈으로 다시 확인 - 오히려 좋아) 그러나 이러한 시도들만으로는 문제를 해결할 수 없었다. 이후, 새롭게 추가된 이미지와 기존 데이터 간의 학습 비중 불균형이 원인일 수 있다는 판단 하에, 학습 데이터 구성 방식과 학습 전략 전반을 다시 점검하게 되었다. 본 글에서는 문제.. 2025. 6. 3.
AI 모델 학습부터 MLOps 운영까지: 직접 개발한 프로젝트 회고 시작하며;감회가 좀 새롭다. 관련 글을 쓸때마다 "언젠가 실 서비스에 적용해보면 재밌겠다..!" 로 마무리했는데, 그 날이 진짜 왔다. 아니 해냈다. 2025년 4월 14일 오전, 그동안 학습하고 실험해온 AI 기반 프로토타입을 실제 운영 중인 서비스 환경에 성공적으로 적용했다. 단순한 모델 개발에 그치지 않고, 의료 데이터를 입력으로 받아 AI 가 자동으로 분석한 결과를 실시간으로 제공하는 End-To-End 파이프라인을 직접 설계하고 구축했다. AI 추론은 GPU 없이 CPU 만을 활용하는 AWS ECS 환경에서 수행되며, 결과는 API 형태로 앱 서비스에 전달된다. ECS 기반의 인프라를 선택했다. 이유는 안정적인 확장성과 배포 용이성을 제공하며, 서비스 운영에 필요한 빠른 응답 속도와 효율적인 리.. 2025. 5. 25.
Hard Negative Mining: 모델이 틀린 데이터를 다시 학습시키는 방법 시작하며;딥러닝 모델을 학습하면서 성능이 일정 수준에서 정체되는 문제를 자주 겪었다. 특히 분류(Classification) 문제에서 모델은 쉽게 구분할 수 있는 이미지에는 꽤 높은 정확도를 보였지만, 조금만 애매하거나 기준이 모호해지는 사례에서는 성능이 급격히 떨어졌다. 이 문제를 해결하고자, 이전 게시글에서 소개했던 방식보다 더 나아가 분류 클래스를 세분화해보기도 했다. 예를 들어 ac, bpd 등 각각에 대해 별도 부정 클래스로 분리해 na_xxx, no_xxx 처럼 구성 후 학습했다. 하지만 결과는 예상만큼 긍정적이지 않았다. 세분화한다고 해서 혼란스러운 사례들이 더 잘 분류되는 건 아니었고, 오히려 전체적인 정확도가 떨어지는 부작용이 생기기도 했다. 처음에는 그 다양성을 반영하려고 세분화를 했지.. 2025. 3. 22.
초음파 영상 분류, BPD 만으로는 부족했다 시작하며;현재 ResNet18 모델을 활용하여 초음파 영상을 프레임 단위로 추출해서 각 프레임을 특정 카테고리(클래스)로 분류하는 작업을 진행하고 있다. 작업 초기에는 초음파 영상에서 BPD(Biparietal Diameter, 양두정경)와 UNKNOWN(알 수 없는 경우) 두 가지로만 분류했다. 이 방식은 단순하면서도 빠르게 결과를 도출할 수 있었고, 실제로도 내가 의도한 대로 BPD 이미지가 상당히 잘 분류되었다. 하지만 점차 데이터가 쌓이고 모델의 예측 결과를 면밀히 분석하면서 문제가 보이기 시작했다. 복부 둘레(AC, Abdominal Circumference)나 머리 둘레(HC, Head Circumference) 등이 BPD 로 잘못 분류되는 경우가 많았다. 이들 역시 초음파 영상에서 BPD .. 2025. 2. 22.