본문 바로가기

Tech82

[OpenCV] 02. 화소처리 (히스토그램) 영상 히스토그램 계산 - 1 import numpy as np, cv2 def calc_histo(image, channels, hsize, ranges ): ch = len(channels) shape = hsize if ch >1 else (hsize[0], 1) hist = np.zeros(shape, np.float32) # 히스토그램 누적 행렬 gap = np.divide(ranges[1::2], hsize) # 계급 간격 for row in image: # 2차원 행렬 순회 방식 for val in row: idx = np.divide(val[channels], gap).astype('uint') hist[tuple(idx)]+= 1 return hist image = cv2.imread("i.. 2022. 11. 23.
[OpenCV] 01. 화소 처리 행렬 원소 접근 방법 import numpy as np def mat_access1(mat): for i in range(mat.shape[0]): for j in range(mat.shape[1]): k = mat[i, j] # 원소 접근 - mat1[i][j] 방식도 가능 mat[i, j] = k * 2 # 원소 할당 def mat_access2(mat): for i in range(mat.shape[0]): for j in range(mat.shape[1]): k = mat.item(i, j) # 원소 접근 mat.itemset((i, j), k * 2) # 원소 할당 mat1 = np.arange(10).reshape(2, 5) mat2 = np.arange(10).reshape(2, 5) pri.. 2022. 11. 22.
[PY] 파이썬 진수 변환 1. hex() 16진수는 변환함수는 hexadecimal의 앞글자 3개를 따와서 hex입니다. 16진수는 맨 앞에 전두사로 0x가 붙습니다. hex함수는 입력에 해당하는 숫자를 16진수로 변경해 줍니다. hex함수의 반환형은 문자열입니다. a = hex(314) print(a) print(type(a)) 결과) 0x13a 2. oct() 8진수는 변환함수는 octal number의 앞 3글자를 따와서 oct입니다. 8진수는 맨 앞자리 접두사로 0o가 붙습니다. oct함수는 입력에 해당하는 숫자를 8진수로 변환해 줍니다. oct함수의 반환형은 문자열입니다. a = oct(314) print(a) print(type(a)) 결과) 0o472 3. bin() 2진수는 변환함수는 binary number의 앞.. 2022. 11. 22.
[PY] 머신러닝과 부동소수점 부동소수점 머신러닝에서 부동소수점은 매우 중요합니다. 머신러닝 모델은 대개 숫자들의 배열로 나타내어지며, 부동소수점은 대부분의 숫자를 나타낼 때 사용됩니다. 부동소수점은 고정소수점보다 더 정확한 표현을 제공하기 때문에, 머신러닝 모델에서 사용되는 숫자들은 대개 부동소수점으로 표현됩니다. 머신러닝 모델에서 부동소수점은 주로 신경망의 가중치와 편향을 나타내는데 사용됩니다. 이러한 매개변수들은 학습 알고리즘에 의해 조정되며, 이 과정에서 부동소수점의 정밀도가 매우 중요합니다. 정밀도가 높을수록 모델이 더 높은 정확도를 달성할 수 있지만, 연산 비용이 증가할 수 있습니다. 머신러닝에서 부동소수점 연산은 대개 GPU를 사용하여 수행됩니다. 이는 GPU가 대량의 부동소수점 연산을 지원하기 때문입니다. GPU의 대부.. 2022. 11. 21.
[OpenCV] 산출 연산 함수 산출 연산 함수 cv2.add(src1, src2[, dst[, mask[, dtype]]]) : 두 개의 배열 혹은 배열과 스칼라의 각 원소 간 합을 계산 src1 : 첫 번째 입력 배열 혹은 스칼라 src2 : 두 번째 입력 배열 혹은 스칼라 dst : 계산된 결과의 출력 배열 mask : 연산 마스크 : 0이 아닌 마스크 원소의 위치만 연산 수행(8비트 단일 채널) dtype : 출력 배열의 깊이 cv2.subtract(src1, src2[, dst[, mask[, dtype]]]) : 두 개의 배열 혹은 배열과 스칼라의 각 원소 간 차분을 계산한다. add() 함수와 인수 동일 cv2.multiply(src1, src2[, dst[, scale[, dtype]]]) : 두 배열의 각 원소 간 곱을.. 2022. 11. 21.
[NLP] BERT 의 이해 BERT (Bidirectional Encoder Representations from Transformer) 2018년도에 구글에서 공개한 사전 훈련된 모델이다. BERT라는 이름은 세서미 스트리트 라는 미국 인형극의 캐릭터 이름이기도 한데, 앞서 소개한 임베딩 방법론 ELMO와 마찬가지로 세서미 스트리트의 캐릭터 이름을 따온 것이기도 한다 BERT는 트렌스포머를 이용하여 구현되었으며, 위키피디아 25억 단어 BooksCorpus 8억 단어와 같은 레이블이 없는 텍스트 데이터를 사전 훈련된 언어 모델이다. BERT가 높은 성능을 얻을 수 있었던 것은 레이블이 없는 방대한 데이터로 사전 훈련된 모델을 가지고, 레이블이 있는 다른 작업(Task)에서 추가 훈련과 함께 하이퍼 파라미터를 재조정하여 이 모델을.. 2022. 11. 19.
[OpenCV] 기본 배열 연산 (Operations On Arrays) 기본 배열 (Array) 처리 함수 cv2.filp(src, flipCode[, dst]) : 입력된 2차원 배열을 수직, 수평, 양축으로 뒤집는다 src, dst : 입력 배열, 출력 배열 filp code 0 : x축을 기준으로 위아래로 뒤집는다 1 : y축을 기준으로 좌우로 뒤집는다 -1 : 양축 (x축, y축)을 기준으로 뒤집느다 cv2.repeat(src, ny, nx[, dst]) : 입력 배열의 반복된 복사본으로 배열을 채운다 src, dst : 입력 배열, 출력 배열 ny, nx : 수직 방향, 수평 방향 반복 횟수 cv2.transpose(src[, dst]) : 입력 행렬의 전치 행렬을 출력으로 반환 src, dst : 입력 배열, 출력 배열 import cv2 image = cv2.i.. 2022. 11. 19.
[ML] k-최근접 이웃 (K-Nearest Neighbor) k-최근접 이웃 (K-Nearest Neighbor) k 최근접 이웃 (K-Nearest-Neighbor, KNN)은 이름에서 알수 있듯, 비교 대상이 되는 데이터 포인트 주변에 가장 가까이 존재하는 k개의 데이터와 비교해 가장 가까운 데이터 종류로 판별한다. 예를 들어, 과일 데이터를 구분할 때, 데이터 포인트 주변의 3개의 값을 비교한다고 가정하면, 데이터 주변의 반경 (circle)으로 표시하고 원 내부의 데이터와 비교해 분류하는 것이다. 데이터 주변의 가장 가까운 데이터를 판별하게 되며, 가장 많이 존재하는 것을분류하는 것이다. k 최근접 이웃은 k의 값에 다라서 분류가 달라진다 만일, 타깃이 연속형 숫자라면 kNN은 k개의 데이터의 평균 값으로 에측하는 방법을 사용한다. 에를 들어 타깃 변수가 .. 2022. 11. 19.
[CV] One-Stage와 Two-Stage 차이 One-Stage와 Two-Stage는 객체 감지(object detection) 모델의 접근 방식에 대한 용어로 사용됩니다. One-Stage Detectors One-Stage Detectors는 한 번의 단계로 객체의 경계 상자(bounding box)와 클래스 레이블(class label)을 직접적으로 예측하는 모델입니다.이러한 모델은 일반적으로 입력 이미지 전체에 대해 여러 위치와 스케일에서 밀집 그리드(grid) 또는 제안(proposal)를 사용합니다. 앵커(anchor) 또는 제안에 대해 동시에 분류(classification)와 회귀(regression) 작업을 수행하여 최종 감지 결과를 예측합니다. 대표적인 One-Stage Detectors로는 YOLO (You Only Look On.. 2022. 11. 16.