본문 바로가기

머신러닝,딥러닝

(18)
Top 5 accuracy , Top 1 accuracy 이해 (feat. only 파이썬 코드) TOP-1 Accuracy: softmax 의 최종 output에서 최대값을 추출합니다. 일반적으로 accuracy 라고 생각하면 떠올리면 됩니다. 제일 높은 확률값을(= 자동으로 예측된 정답 후보군 들 중 제일 높다고 생각되는 것) 을 의미합니다. Top-N Accuracy: 예측 클래스가 소프트맥스 분포의 상위 N 값에 포함되는 빈도를 측정하는 경우를 의미합니다. 예를 들어보겠습니다. '실제 이미지': 사과 를 어떤 모델에 넣어서 분류를 했다고 하겠습니다. '모델의 예측 확률': 배:0.3 , 딸기: 0.25, 사과: 0.2, 오렌지:0.1, 레몬: 0.05 , 포도: 0.04, 체리: 0.03, 감: 0.04 로 나왔다고 하겠습니다. 이 때, top-1-accuracy 를 사용하면 모델의 예측은 '..
opencv 입문하기 7-2편 HSV, 특정 색상 추출(inRange) 1. HSV HSV 색 공간 또는 HSV 모델은 색을 표현하는 하나의 방법이자, 그 방법에 따라 색을 배치하는 방식이다. 색상(Hue), 채도(Saturation), 명도(Value)의 좌표를 써서 특정한 색을 지정한다. 비슷한 것으로 HSL(Lightness), HSI(Intensity) 등이 있다. RGB가 색을 빨강, 초록, 파랑의 조합으로 표현한다면, HSV는 우리가 보는 그대로의 색을 Hue 채널로 나타낸다. 그리고 그 색의 진하고 연한 정도를 Saturation 채널로 표현하고, 밝기를 Value로 결정한다. RGB 색 공간보다는 좀 더 우리들이 색을 판단하는 과정과 유사한 것이 HSV 색 공간이다. 예를 들어 노란색을 표현하고자 하면, RGB 색 공간은 빨강과 초록의 조합으로 노랑을 표현해야..
opencv 입문하기 7-1편 histogram stretching, equalization 1. 히스토그램 히스토그램은 값 또는 구간별 관측값의 갯수를 표현한 것입니다. 이미지 영역에서 히스토그램은 '이미지를 구성하는 픽셀값 분포'에 대한 그래프 입니다. X축은 픽셀값이고 범위는 0~255, Y축은 이미지에서 해당 픽셀값을 가진 픽셀의 개수입니다. 갯수로 표현시 영상의 크기에 따라 빈도 경향이 달라지므로 전체 픽셀수로 나눈 정규화된 히스토그램Normalized histogram) 을 사용합니다. 흑백 레나 이미지로 간단하게 히스토그램을 그려보면, 처럼 나옵니다. """Histogram""" import os import cv2 import matplotlib.pyplot as plt src = cv2.imread( 'lenna_2.jpg', cv2.IMREAD_GRAYSCALE) hist = ..
opencv 입문하기 6편 트랙바, 산술 연산 1. 트랙바 cv2.createTrackbar(trackbarName, windowName, value, count, onChange) trackbarName 트랙바 이름 windowName 트랙바를 포함하는 윈도우 이름 value 트랙바 초기값 count 트랙바 최댓값(defalut = 0) onChange 트랙바 값이 변경될떄마다 호출할 콜백 함수 이름 콜백 함수는 아래처럼 사용됨 onChange(pose) * 트랙바를 이용한 grayscale 조절 * import cv2 import numpy as np def level_change(pos): value = pos * 8 if value >= 255: value = 255 img[:] = value cv2.imshow('img', img) img ..
opencv 입문하기 5편 마우스 이벤트(2) 지난 번에 하던 마우스 이벤트의 예제를 조금 더 해보겠습니다. 1) 마우스가 지나간 길을 따라 선을 그려주는 프로그램 선이 뭔가 투박해서 보기가 안 좋습니다. 일단 위 코드는 아래 와같습니다. # 마우스가 지나는 길을 따라 선을 그려주는 프로그램 # 이 때, 선을 그리다 보면 뭔가 끊어지는 듯한 느낌이 있다는 이슈가 생김. import cv2 import numpy as np def mouse_fn(event, x, y, flags, param): global img if event == cv2.EVENT_LBUTTONDOWN: print('EVENT_LBUTTONDOWN: %d, %d' % (x, y)) elif event == cv2.EVENT_LBUTTONUP: print('EVENT_LBUTTON..
opencv 입문하기 4편 키보드, 마우스 이벤트(1) 이번 시간에는 opencv 에서의 키보드,마우스 이벤트에 다뤄 보겠습니다. 1. 키보드 이벤트 ● 키보드 입력 대기 cv2.waitKey(delay=None) -> retval delau 매개변수에서 ms(밀리세컨즈) 단위 시간은 (1초=1000)입니다. delay
opencv 입문하기 3편 영상생성,추출, 그리기 함수 이번에는 앞시간에 했던 것을 응용해서 간단한 영상을 생성해보겠습니다. opencv 의 영상 타입들은 모두 numpy.ndarray 라고 했습니다. 그리고 dtype 이 uint8 이므로 2^8 이니깐 그 범위는 0~255 라고 설명한 바 있습니다. 1) 영상 생성 그러면 이를 토대로 numpy array를 그리고 2차원, 3차원에 범위 안의 값들을 넣으면 영상(=이미지)을 생성할 수 있습니다. 5개의 이미지를 그려봤습니다. 아래 이미지 중에서 2차원과 3차원 구별이 가시나요? 자, 위 영상들을 생성하는 코드들입니다. import numpy as np import cv2 img1 = np.empty((160, 280), dtype=np.uint8) # grayscale img2 = np.zeros((160..
opencv 입문하기 2편 - 이미지 객체 속성 , 픽셀값 변경 이번 시간에는 opencv에서 이미지를 부를 때의 객체 속성과 픽셀 접근에 대해 코딩 및 설명 해보겠습니다. opencv 에서 이미지를 부르면 보통 BGR 순서로 부릅니다. 저희가 보는 컬러 이미지는 보통 RGB 순서입니다. 그러므로 순서의 변환이 필요합니다. 또한, opnecv 는 영상 데이터를 numpy.ndarray 로 표현합니다. numpy.ndarray 의 특징을 opencv 의 영상 관점에서 보면 ndim: 차원 shape - (h,w) : grayscale 영상 - 흑백 영상 - (h,w, 3) : 컬러 영상 size: 전체 픽셀 갯수 dtype: 원소의 데이터 타입 uint8 으로 이해하면 됩니다. 우선, 예제 영상 결과를 보고나서 코드로 설명하겠습니다. 제가 최초에 가져온 이미지는 위 사..