본문 바로가기
딥러닝

ResNet18 로 초음파 영상 똑똑하게 분석하기

by kkodecaffeine 2025. 2. 6.

시작하며;

초음파 영상에서 두정골 직경 (Biparietal Diameter, 이하 BPD)을 측정하기 위해 이미지 분석을 진행했다. 하지만 그 이전 단계에서, 먼저 영상을 프레임 단위로 나누는 과정이 필요했다. 영상은 짧게는 3~10분, 길게는 30분 이상까지 존재하는데, 단순히 프레임을 모두 추출하면 30분 영상의 경우 6만 장이 넘는 이미지가 생성된다. 이렇게 많은 이미지에서 BPD 를 측정하기 위해 스케일 바를 탐색하고 ROI(관심 영역)를 찾는 과정은 비효율적일 것 같았다. 그래서 프레임 추출 단계에서 이미지 전처리를 최대한 진행하면 불필요한 데이터를 줄이고 분석 효율을 높일 수 있을 거라고 판단했다.
 
이를 위해 특정 기준을 설정해 프레임을 선별하는 방식을 시도했다. 예를 들어, 영상 내에서 십자가 모양의 마커가 있는지, 사다리꼴 형태의 초음파 섹터가 포함되어 있는지 등을 조건으로 삼아 유의미한 프레임만 추출하도록 했다. 하지만 실제 구현 과정에서 시행착오가 많았다. 특정 마커가 일정하지 않거나, 초음파 기기마다 영상 구조가 달라 일괄적인 기준을 적용하기 어려웠다. 또한, 조명이나 화질 차이로 인해 예상과 다른 결과가 나오는 경우도 많았다.
 
이러한 문제를 해결하기 위해 다양한 이미지 처리 기법을 적용하면서 최적의 필터링 방식을 찾아갔다. 여러 시행착오를 거쳐 프레임을 보다 정교하게 추출할 수 있는 방법을 개선했고 이를 해결하기 위한 방법까지 기록을 위해 글을 남긴다.


초음파 영상에서 마커 찾기, 거 참 쉽지 않네;

초음파 영상에서 BPD 를 측정하려면 십자가(+) 마커가 포함된 프레임만 남기고 싶었다. 그래서 영상에서 마커를 자동으로 감지하는 프로세스를 만들었는데... 역시나 예상대로... 삽질의 연속이었다.
 
우선, 영상마다 품질이 다 달라서 문제가 많았다. 해상도가 낮거나 양수와 섞이거나 (두개골) 뼈 위에 마커를 있는 경우 명확하게 인식이 안 되거나, (마커가 아닌 것들) 여러 개로 보이는 현상이 생겼다. 게다가 초음파 기기마다 마커 크기나 명암이 제각각이라 같은 기준을 적용할 수 없었고, 심지어 같은 영상에서도 조도 변화에 따라 인식률이 들쭉날쭉했다.
 
"그럼 초음파 영상에서 사다리꼴 섹터도 감지해서 필터링하면 좀 나아지지 않을까?" 하고 시도해봤지만, 일부 영상에서는 여전히 검출이 잘 안 됐다. 노이즈가 많거나 품질이 낮으면 정확도가 떨어지는 건 똑같았다.


Treshold 조정? 일시적인 땜빵일뿐;

한 가지 기준을 정하면 어떤 영상에서는 잘 작동하는데, 다른 영상에서는 엉망이 되는 일이 반복됐다. "이거 threshold 값을 조정하면 해결되지 않을까?" 하고 기대했지만, 그건 그냥 일시적인 땜빵일 뿐이었다. 결국 다양한 실험을 하면서 좀 더 안정적인 방법을 찾기 시작했다.
 
여러 영상에서 일관된 성능을 보장할 수 있도록 필터링 알고리즘을 개선하고, 마커 검출 정확도를 높이기 위해 추가적인 후처리 기법도 적용했다. 이미지 분석 어플리케이션에서도 경험했지만 결국 이미지 간 편차가 있어서 다른 해결책을 찾기로 했다.

테스트


그럼 AI 가 직접 골라주면 되잖아?;

원래는 초음파 영상에서 프레임을 추출한 뒤, 그 이미지들을 ResNet18 기반 분류 모델로 하나하나 분류하는 방식으로 파이프라인을 구성하고 있었다. 테스트를 거듭하며 모델 성능을 자연스레 개선해 나갔고, 이제는 BPD가 존재하는 이미지와 그렇지 않은 이미지를 어느 정도 안정적으로 구분할 수 있게 되었다.
 
그런데 어느 날, 문득 이런 생각이 들었다. 굳이 프레임을 다 추출한 다음에 분류할 게 아니라, 프레임을 추출하는 그 순간에 모델을 바로 적용하면 더 깔끔하지 않을까?

 
단순히 특정 마커나 패턴을 감지해서 후보 프레임을 고르는 대신, 딥러닝 모델이 직접 "이건 BPD 를 측정할 수 있는 프레임입니다!" 라고 판단해주는 구조가 더 정확하고 효율적일 것 같았다.
 
결국, AI 가 전처리 단계부터 직접 판단하고 개입하는 형태로 진화하게 되었다. 이건 단순한 구조 변경이 아니라, 모델이 "분류"를 넘어서 "선택"의 역할까지 맡게 되는 파이프라인 재설계의 결정적 전환점이라고 생각한다.

오른쪽이 학습된 모델이 원본 영상에서 선별한 이미지 (실제 BPD 측정 대상)

앞으로의 계획;

지금 모델도 BPD 클래스와 UNKNOWN 클래스를 꽤 정확하게 분류하고 있지만, 아직 갈 길이 멀다. 데이터셋을 더 확장하고, 다양한 환경에서도 안정적으로 작동할 수 있도록 개선해야 한다. 초음파 영상은 촬영 환경, 기기 종류, 영상 품질에 따라 결과가 달라지기 때문에, 어떤 조건에서도 일관된 성능을 내는 게 핵심이다.
 
그리고 중요한 건, 지금까지 실험했던 것들을 단순한 테스트 단계에서 끝내지 않고 실제 서비스에 적용하는 것이다. 그래서 파이프라인을 구축하고 프로토타입을 만들어 빠르게 시장에 선보이는 것이다.


return;

2025.05.25 - [MLPipeline] - AI 파이프라인 설계 / 운영까지 직접 개발한 프로젝트 회고