본문 바로가기

Deep Learning/인공지능 개념 정리

헷갈리는 Dice와 IoU 개념, 내가 정리해 봄ㅋ Dice Score와 IoU Score는 Segmentation Task를 진행하면 흔하게 접하게 되는 개념이다. 'Prediction과 Ground-Truth가 얼마나 겹치느냐'를 평가하는 데에 쓰인다. 사실 IoU는 Object Detection에서만 사용되는 개념으로 알고 있었는데 Segmentation에서도 사용된다는 건 이번에 제대로 알게 됐다. 그래서!! 공부한 김에 정리해두고자 한다. 이번 글에서 다룰 내용은 아래와 같다. Dice와 IoU의 정의와 차이점 Score를 Loss로 사용할 때 어떤 차이가 있는지 추가로 알아둘 점 1. Dice와 IoU의 정의와 차이점 Dice와 IoU, 더 정확하게는 Dice Score와 IoU Score는 모두 모델이 GT와 얼마나 유사한 결과를 내놓는지를 .. 더보기
Probability Calibration 개념 정리 의료 AI 영역에서 일을 하다보면 의사로부터 "인공지능 모델의 출력값이 정확히 무엇을 의미하는 건가요? 0.7이라는 숫자는 환자가 실제로 질병을 갖고 있을 확률이라는 뜻인가요?"와 같은 맥락의 질문을 되게 많이 듣게 된다. 솔직히 그런 질문을 처음 들었을 때는 '어..? 나도 모르겠는데??...'하는 생각이 제일 먼저 들었다. 출력값에 thr 걸어줘서 단순히 True or False로만 생각해봤지 출력값 그 자체가 갖는 의미에 대해서는 깊게 생각해본적이 없었다. 그래서 이것 저것 검색하다보니 Probability Calibration이라는 개념을 접하게 됐다. 연구가 엄청 활발한 분야는 아닌 것 같은데 Medical Imaging 영역에서는 꼭 필요한 개념이라 차근차근 공부하며 정리해나가고자 한다. Pr.. 더보기
0 ~ 255의 픽셀 값을 왜 0 ~ 1로 rescale하는 걸까? 제목 그대로다. CNN을 사용할 때면 보통 input image를 255로 나눠서 0~1 사이의 값을 갖도록 맞춘다. 왜 그러는 걸까? 정확한 근거를 못 찾아서 어디까지나 내 생각이지만, neural network가 feature scale에 예민한 모델이라 0 ~ 1로 맞춰주는 게 아닐까 싶다. 그리고 스쳐 지나가듯 읽은 사이트에서 255라는 값이 network 학습에 바로 사용하기에는 너무 큰 값이라서 0 ~ 1로 rescaling하는 것이라는 글을 본 기억이 있다. 제대로 된 결론은 못 내렸지만.. 뭐 그냥 그렇다고... 나처럼 궁금해하는 사람이 있을까 해서.. 정확히 알고 계신분 댓글 남겨주시면 감사하겠습니다! 더보기
IoU, Intersection over Union 개념을 이해하자 Intersection over Union ? Intersection over Union (IoU)는 object detection에서 사용되는 도구다. 성능 지표는 아니고, 객체 인식 모델의 성능 평가를 하는 과정에서 사용되는 도구로 생각하면 된다. 정의는 아래와 같다. IoU = 교집합 영역 넓이 / 합집합 영역 넓이 두 box의 크기가 동일하다 가정하면, 두 개의 box가 적어도 2/3는 겹쳐줘야 0.5의 값이 나오기 때문에 여러 곳에서 IoU의 threshold 값을 0.5로 잡아서 사용하는 듯 하다. 모델의 성능을 높여보고자 IoU threshold 값을 올려서 모델링을 해도 되기는 하는데, 객체 인식 모델의 성능이라는 게 feature extractor, classifier, regressor.. 더보기
CNN에서 커널 사이즈는 왜 3x3을 주로 쓸까? 대부분이 3x3 kernel size를 사용한다. 5x5도 있고 7x7도 있고 다양하게 사용할 수 있는데 대부분이 3x3을 쓴다. 이유는 모델 파라미터 수에서 큰 차이가 있기 때문이다. (1) 3x3 kernel (2) 5x5 kernel 3x3 kernel 2개를 사용하는 것이 5x5 kernel 1개를 사용하는 것보다 모델 파라미터 수가 더 적다. 그래서 3x3을 주로 사용하는 것이다. 더보기
CNN이 이미지에 더 효율적인 이유 이미지를 다루데에는 CNN을 가장 많이 사용한다. convolution이 이미지 연산에 특화되어 있기 때문이다. 근데 왜 특화 되어 있다 말할 수 있는 걸까? convolution layer와 fully connected layer를 비교해보면 이에 대한 답을 찾을 수 있다. 훨씬 적은 모델 파라미터 요구 개수 입력 이미지 크기가 [ 200 x 200 ]라고 가정했을 때 (1) fully connected layer의 경우 node를 1개로만 둬도 40,001개(가중치 40,000 + 바이어스 1)의 모델 파라미터가 필요하지만 (2) convolution layer를 사용하는 경우 3x3 커널 100개를 사용한다해도 1,000개(커널 900 + 바이어스 100)만 필요하다. 결과적으로 cnn연산이 훨씬 .. 더보기
joint training, alternate training supervised learning에서는 모델 구조 설계 못지않게 loss function을 정의하는 것이 중요하다. 대표적인 loss function은 다음과 같다. tf.reduce_mean(tf.square(pred - true)) → regression tf.nn.sigmoid_cross_entropy_with_logits( ) → binary classification과 multi-label classification tf.nn.softmax_cross_entropy_with_logits_v2( ) → multi-class classification 해결하고자 하는 문제에 맞게 loss function을 설정해 사용해주면 된다. 딥러닝 공부 시작할때만 해도 위의 3개 loss function만 .. 더보기
Protocol Buffer 실습 2 역직렬화(Deserialization)를 통해 EXAMPLE.pb에서 데이터를 추출하는 방법에 대해 알아보자. [ read.py ]123456789import EXAMPLE_pb2 handson = EXAMPLE_pb2.HandsOn() with open('EXAMPLE.pb', 'rb') as f: serialized = f.read() handson.ParseFromString(serialized) print(handson) cs Line 1 : 마찬가지로 뼈대를 갖고 있는 EXAMPLE_pb2.py를 import 해줘야 한다. 그래야 이 뼈대에 맞춰서 deserialized data를 재분배할 수 있기 때문이다. Line 6 : 직렬화된 형태로 저장된 데이터를 읽는다. Line 7 : 읽은 데이터를.. 더보기