이미지가 RGB인 3가지로 구분 되는 이유
: 우리의 시세포가 대부분 그렇게 3가지로 이루어져 있단다.
라스터(raster), 비트맵(bitmap) 형식
벡터(vector) 형식
이와 또 다른 이미지 파일 기록 형식들이 있다.
이러한 RGB, HSV 등은 각각의 컬러 스페이스(colour space)에서 채널로서 나타난다.
JPEG, PNG
png를 jpg로 .save()
하려면 먼저 RGBA에서 A를 discard 하거나 img파일변수명.convert('RGB')
로 바꿔줘야 한다.
np.ndarray.reshape(order=)
order 파라미터에 'F'를 주면 fortran-like 순서로 인덱싱해서 reshape한단다.
: 직관적으로는 어레이가 있을 때 어떤 모양이 되어야 하는지 잘 생각해보고 order 모양에 맞게 주라는 뜻
OpenCV는 BGR 순서이다.
"Pillow의 실습에서 보았든, 이미지는 결국 [너비, 높이, 채널] 형태를 가지는 배열이고"
cv.inRange(이미지변수명, lower_boundary, upper_boundary)
넣으면 해당 부분에 들어가는 건 1, 아닌 건 0으로 처리한 배열을 반환한다.
cv2.bitwise_and()
등은 0,1로 이진숫자를 기준으로 이미지 영역에서 합집합, 교집합 등을 반환해준다.(https://copycoding.tistory.com/156) 이 분이 직관적으로 잘 정리해주셨다.
list().append(리스트)하면 리스트 통째로 들어간다. 근데 이걸 np.concatenate()하면 그걸 다 풀어서 numpy array로 만들어준다.
lis = []
t = np.arange(4).reshape(4,-1)
t2 = t.copy()
lis.append(t)
lis.append(t2)
lis
>>>
[array([[0],
[1],
[2],
[3]]),
array([[0],
[1],
[2],
[3]])]
np.concatenate(lis)
>>>
array([[0],
[1],
[2],
[3],
[0],
[1],
[2],
[3]])
SGD
Momentum
Adam
-> 이런 optimizer의 종류를 처음으로 알았다.
-> 이들의 작동 원리도 알아야겠다.
Softmax 함수