거즘 일주일동안 진행된 AI 헬스케어 머신러닝 트랙: 흡연 여부 예측 AI 해커톤 팀프로젝트가 오늘 끝이난다.

꽤나 길다면 긴 일주일이였고 일주일동안 많은 코드들을 짜봤던 거 같아 재밌었다.

https://tyqaygds.gensparkspace.com/
처음에 만들어진 코드를 기반으로한 PPT!
Genspark 사이트를 통해서 처음으로 만들어봤는데 글자깨짐 현상도 없고 잘 만들어줘서 좋더라구요. 그리고 고급 편집을 하면 내용을 수정할 수 있는 부분도 되게 편하다라는 느낌! 그치만 파일형식으로 다운받으려면 유료결제가 필요하다는 부분이 아쉽지만. 사이트자체에서 슬라이드로 발표하면 되고 url로 바로 공유가 가능하기에 크게 상관없다고 본다.

https://sjubrfpy.gensparkspace.com/
이건 두번째로 팀원분께서 만드신 PPT

처음에 냈던 코드가 4등(0.0993310962)을 하다가 5등으로 밀려나면서 다른 코드로 점수를 올리게 되면서 PPT를 다시 만들게 되었다.

다행이 발표 당일에 제출했던 코드가 점수가 잘 나오면서 공동 3등(0.0952190457)이 되었지만 제출횟수가 우리 팀이 많아서 4등으로 밀려난 거 같다.

칼로리 예측 모델 코드를 5일동안 적어도 30개는 넘게 만든 거 같다. 물론 챗지피티나 클로드의 힘을 많이 빌려서 만든 코드이지만 그래도 만들어준 코드들의 구조나 기능들을 이해하려고 노력하는 과정이 여러번 필요한 상황이 있어서 그만큼 많이 공부가 되었다.

캐글에서도 비슷한 주제와 데이터셋으로 한 대회가 있어서 참고할 만한 게 있나 봤더니 점수가 0.05인 코드가 있길래 우리 데이터셋으로 저 코드를 쓸 수 있나 궁금했다. https://www.kaggle.com/competitions/playground-series-s5e5/overview

https://www.kaggle.com/code/cdeotte/gpu-hill-climbing-cv-0-05930

OOF 기반 hillclimb를 쓴 코드였는데 어떻게 쓰는지 물어보니 파일을 4개정도를 만들어서 쓰는 코드여서 기존에 쓰던 코드와 다른 느낌이였다.

이때부터 VScode로 코드를 쓰고 Terminal로 코드 돌렸는데 코랩보다 훨씬 빨라서 빠르게 코드를 짤 수 있었다. 대신에 기존에 익숙해진 데이터셋 불러오기 방식이 살짝 다르다 정도? 그리고 나중에 가면 vscode를 짜는 방식에 익숙해져야 하니 오히려 좋다.

최종 리더보드엔 4등으로 끝이났고 발표도 팀원분께서 잘해주셔서 무난히 흘러갔다. 갑자기 제출코드가 바뀌는 바람에 PPT와 발표준비를 다시해야해서 조금 정신 없었지만 그래도 탈 없이 잘 마무리했다.

이제 CV 스터디를 본격적으로 할 예정이다.
1주차에 Object Detection + PYQT5 를 할 것이고 2~3일 안에 이론공부를 끝내고(간단) 3주차에 웹으로 들어갈 예정이지만 예정은 예정일뿐 중간에 어떻게 흘러갈지는 스터디원들 하기 나름일 것이다. 우리 스터디의 목표는 CV 분야 취업을 목표로 하며 그전에 배워두어야할 기술들을 배우고 실전에서 어떤 경험이 도움이 될지 학습하는 것이다.

주말동안 10장정도의 사진을 YOLO학습 시켜보기로 했다.
10장으로는 부족할 거 같아. 병변이 있는 사진 20개 정상 사진 5개를 학습시켜보기로했다. Mac은 labellmg와 충돌이 잘 일어나서 이번에도 저번에 사용한 label studio를 사용할 예정, radiopaedia에서 사진 데이터를 구하려고 하는데 사진 기준은 회전근개 완전 파열인 사진들로만 구하기로 하였다. 데이터가 생각보다 많지 않아 20개의 사진을 구하는데 생각보다 시간이 걸린다.

학습을 시킨 결과 병변에 대한 학습을 잘 하긴 했는데 기존에 노말사진에도 체크박스를 쳤던 과정이 잘못된 거 같다.
Full_RCT 0.7 ~ 1.0로 confidence 점수 자체는 나쁘지 않음
그치만 밑에 15.jpg보면 저 사진은 회전근개 완전 파열 사진인데 Normal 로 인식된 부분은 잘 못 된 거 같다.

그래도 test_images를 보니 normal과 Full_RCT에 대한 구분은 잘해주어서 좋았다. 저번 실습에서는 테스트를 실행시켰을 때 박스를 치지 않는 상황이 발생해서 아쉬웠음

결과 그래프는 저번에도 봤지만 아직 그래프를 보고 온전히 이해하지는 못한 느낌! 챗지피티 말로는 "학습은 정상적으로 수렴했고, 데이터가 적어서 검증 지표만 요동치는 전형적인 파일럿 결과"라고 하며 그래프들에 대한 설명들을 각각 해주었다.

이후 다시 label studio에서 label을 Full_RCT 하나로 줄여 탐지대상을 Full_RCT로만 하여 yolo에게 “찾을 게 있을 때만 박스를 그려라”라고 Labeling Interface 코드를 수정하고 기존의 normal_images의 check box들을 제거하여 다시 Export함, 이후 다시 terminal에서 RCTD.py 재실행하여 학습!

result, pred.jpg 두개 다 크게 드라마틱한 차이점은 없는 거 같다.
다만 학습 속도는 조금 더 빨라진 느낌!

오늘은 소량의 MRI 데이터(회전근개 파열 20장, 정상 5장)를 활용해 YOLO 기반 파일럿 탐지 모델을 구축하고,
모델이 어깨 회전근개 병변의 해부학적 위치를 올바르게 학습하는지를 중심으로 검증했습니다.
학습 결과, bounding box loss와 mAP 지표가 안정적으로 수렴하며 병변 위치에 대한 공간적 감각이 형성되는 것을 확인했고,
검증 지표의 변동성은 데이터 수가 제한된 파일럿 단계의 특성으로 해석했습니다.
이를 통해 모델 구조와 라벨링 전략이 적절함을 확인하고, 이후 데이터 확장을 통한 성능 개선이 가능한 상태임을 검증했습니다.

0개의 댓글