목록전체 글 (31)
아는 만큼 보인다

두 방법의 일치도 평가(Method comparison)을 위한 통계 기법의 필요성 임상 연구를 할 때 두 측정 방법의 일치도를 평가해야하는 경우가 있다. 예를 들어 A 기기로 측정한 결과와 B 기기로 측정한 결과가 있을 때, 두 결과가 일치함/비슷함/동등함을 보여주어야 하는 것이다. 일반적으로는 A 기기가 일종의 'gold standard'이자 전통적인 기기, B 기기가 우리가 도입하고픈 새로운 기기일 경우가 많아서, 이 새로운 기기가 전통적인 기기와 비슷한 결과를 낸다는 것을 주장하기 위해 사용되기도 한다. 이를 위해 일반적인 t-test 나 상관관계 분석을 해서는 안된다. 즉 t-test를 통해 두 측정값이 차이가 없다는 것을 보여주는 방법도 안되고, 높고 유의한 상관계수를 보여주어서도 안된다는 것..
tensorflow lite 소개, 변환, 추론 관련 내용은 여기에 정리되어 있다. SavedModel 형식과 관련된 공식 문서는 이곳이다. 그런데 이게 사용해보니, 처음에 SavedModel 형식으로 모델을 저장할 때 input_signature라는 것을 지정해줘야 했다. 즉 batch size와 input length 등 input meta 정보를 같이 저장해주어야 했다. 그냥 모델을 저장하니 에러가 나서, 구글링 끝에 얻은 코드는 다음과 같다. 아래는 TFLite로 변환하기 전, 즉 model을 pb 모델로 제대로 저장하기 위한 코드이다. def save_SavedModel(model, batch, input_len, save_path): class MyModule(tf.Module): def __..
우리 회사는 클라우드 기반 서비스를 제공하지만, 비용 등의 문제로 CPU만 사용하고 있으며, 빠른 추론 속도가 핵심이다. 그래서 Tensorflow Lite (TFLite)를 택해서 모델을 배포하고 있다. 1. TFLite 소개 TFLite는 모바일 기기, 임베디드 시스템, IoT 기기 등 리소스가 제한된 기기에서 효과적으로 추론할 수 있도록 모델을 최적화하고 배포하기 위한 프레임워크이다. 즉 Tensorflow model을 경량화하기 위한 도구이다. 빠른 응답속도, 작은 사이즈가 특징이다. TFLite는 FlatBuffer(.tflite 파일 확장자로 식별됨)라는 특수 형식을 사용하여 작고 이동 가능한 좋은 포맷을 구현했다. 반면 tensorflow 는 Protocol Buffers 라는 것을 사용하는..
주로 많이 사용하는 docker 명령어들을 정리해보고자 한다! (맨날 까먹는다ㅜㅜ) 참고로, docker image는 container를 만들 수 있는 틀? 같은 느낌이고, image를 기반을 container를 생성하면 그 안에서 작업을 할 수 있다. docker pull IMAGE - 새로운 docker image 다운로드 docker run CONTAINER - 새로운 docker container를 만들고 start docker start CONTAINER - 멈춰져있는 docker container를 start docker stop CONTAINER - docker container 멈추기 docker rm CONTAINER - docker container 삭제하기 docker attach C..

이번에는 지난 번에 읽었던 ResNet 모델을 직접 한땀한땀 구현해보고자 한다. 리뷰는 여기에, 완성된 전체 코드는 여기에 있다. Tensorflow로 구현했는데, subclassing 방법으로 구현했으니 torch에서도 쉽게 따라할 수 있을 것 같다. 참고로 ResNet34를 처음부터 끝까지 구현해볼 예정이다. 1. Basic Block ResNet의 가장 기본적인 구조, basic block은 residual learning block이다. 아래 그림에서 보면 input -> layer 1 -> relu -> layer 2 -> shortcut connection (F(x)+x) -> relu 로 이루어져 있다. 이 부분만 구현하면 끝! 논문을 좀 더 보다보면, 실제로 논문에서 사용한 구체적인 lay..

딥러닝 모델을 개발할 때 가장 중요한 것은 무엇일까? 멋진 모델? 요즘 유행하는 모델? 요즘 사람들이 많이 쓴다고 하는 모델? 좋은 모델을 쓰는 것은 당연히 중요하다. 그렇다면 좋은 모델이란 무엇인가? 입사 후 약 4개월 간 첫 딥러닝 프로젝트를 진행하며 모델이 학습해야 하는 데이터, 모델 개발을 통해 이루고자 하는 구체적인 목표, 모델의 추론 결과를 직접 보게 되는 타겟 사용자를 고려하는 것이 좋은 모델을 만들기 위해 우선적으로 고려해야 하는 점이라는 걸 배울 수 있었다. 그리고 언제나 그렇듯이 다함께 하는 프로젝트이므로 언제나 어떻게 하면 더 효율적으로 소통할 수 있을지 고민하고, 더 꼼꼼하게 일하고 집요한 Q&A 기회를 갖는 것 -- 그렇지 않은 프로젝트가 있을까? 데이터가 많으면 무조건 좋다? '..

의학 논문을 보다보면 Youden's Index를 이용해 cut-off 를 정했다는 말을 종종 볼 수 있다. 머신러닝/딥러닝을 이용한 의학 논문 뿐 아니라 의학 논문 전반에 걸쳐서 볼 수 있는데, Youden's Index는 이분법적 진단 검사에서 ROC 분석을 할 때 특정 cut-off에 따른 진단 검사의 성능을 보여주는 값으로, cut-off를 정하기 위한 성능을 평가하는 데에 이용되는 보편적인 방법이기 때문이다. 흥미로운 부분은, 다른 머신러닝/딥러닝 응용 분야는 잘 모르겠지만 의학 쪽 머신러닝/딥러닝 응용 분야에서는 이 Youden's Index를 꽤 심심치 않게 볼 수 있다는 사실이다. 특히 의학+머신러닝/딥러닝 분야에서 아무런 고려 없이 그냥 0.5를 cut-off로 쓰게 되면 지적을 받게 될..

요번 ECG 리듬 분류 모델로 preactivated ResNet을 사용하고 있는데, 생각해보니 쓰고 있긴 하지만 ResNet 자체를 제대로 짚고 넘어간 적이 없는 것 같아, ResNet 과 preactivated ResNet을 순차적으로 리뷰해보려 한다. 특히, ECG 분류에 있어서 ResNet은 여러모로 무난하게 잘 작동하는 모델인 것 같다. Literature review를 해봐도 ResNet 을 사용한 논문이 많은 것 같았다. 시작! (참고로 ResNet이 해결하려는 문제가 무엇인지 분명히 짚고 가고자 서론이 좀 길다 ㅎㅎ) Deep Residual Learning for Image Recognition (link) ResNet이 해결하고자 하는 문제, ResNet의 동기 딥러닝 모델들이 개발되면..