교육 정보
- 교육 명: 경기미래기술학교 AI 교육
- 교육 기간: 2023.05.08 ~ 2023.10.31
- 오늘의 커리큘럼:
파이썬 기반의 머신러닝 이해와 실습 (06/14~07/07)- 강사: 양정은 강사님
- 강의 계획:
1. 개발환경세팅 - IDE, 가상환경
2. 인공지능을 위한 Python
3. KNN 구현을 위한 NumPy
4. K Nearest Neighbors Classification 구현
5. K Means Clustering Mini-project
6. Scikit-learn을 이용한 SVM의 학습
7. Decision Tree의 개념
8. ID3 Algorithm
9. Impurity Metrics - Information Gain Ratio, Gini Index
10. Decision Tree 구현
11. 확률 기초
12. Bayes 정리 예시
13. Naive Bayes Classifier
14. Gaussian Naive Bayes Classifier
import numpy as np
np.random.seed(0)
data = np.random.randint(-1, 2, (10,))
filter_ = np.array([-1, 1, -1])
print(f'{data = }')
print(f'{filter_ = }')
L = len(data)
F = len(filter_)
L_ = L - F + 1
L_array = np.arange(L_).reshape(-1, 1)
adding = np.arange(F).reshape(1, -1)
print(L_array)
L_idx = L_array + adding
print(L_idx)
window = data[L_idx]
print(f'{window=}')
filtered = np.dot(window, filter_)
filtered = np.array(filtered)
print('filtering result:', filtered)
#
# 결과
data = array([-1, 0, -1, 0, 0, 1, -1, 1, -1, -1])
filter_ = array([-1, 1, -1])
[[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]]
[[0 1 2]
[1 2 3]
[2 3 4]
[3 4 5]
[4 5 6]
[5 6 7]
[6 7 8]
[7 8 9]]
window=array([[-1, 0, -1],
[ 0, -1, 0],
[-1, 0, 0],
[ 0, 0, 1],
[ 0, 1, -1],
[ 1, -1, 1],
[-1, 1, -1],
[ 1, -1, -1]])
filtering result: [ 2 -1 1 -1 2 -3 3 -1]
sobel filter의 개념
- 딥러닝의 연산을 이해하기 위한 선행 학습
- 딥러닝은 sobel filter에서 filter에 사용되는 값을 학습하는것
- sobel filter 자체는 edge detection, 즉 사물의 경계를 구분하는 역할
- edge가 이미지에서 가장 많은 정보를 담고있기때문에 edge를 구분해서 이것만 처리하면 속도가 훨씬 빨라질수 있음
X filter & Y filter
- 3*3 행렬의 모습을 가짐
- -2~2까지의 값을 가짐
- 좌우 혹은 상하 대칭의 모습을 가짐
- x filter는 수평방향으로 밝기 변화가 있을때 반응, y filter는 수직 방향으로 밝기 변화가 있을때 반응
필터의 값이 어두운 곳에서 밝은 곳으로 변화하는 경우를 detection 해주는 경우, 비슷하게 어두운곳에서 밝은 곳을 지나갈때 가장 높은 값을 반환하기때문에서 높은 값이 나오는 부분에서는 그림이 어두운곳에서 밝은곳으로 변화하고 낮은 값이 나올경우 이미지가 밝은곳에서 어두운쪽으로 변화함을 알 수 있음
b_patch = 0 * np.ones(shape=(10, 10))
w_patch = 255 * np.ones(shape=(10, 10))
img1 = np.hstack([b_patch, w_patch])
img2 = np.hstack([w_patch, b_patch])
img = np.vstack([img1, img2])
img_ext = np.tile(img, reps=(2, 2))
img = np.array(Image.open('contrast_image.png').convert('L'))
H, W = img.shape
Fx, Fy = len(sobel_x), len(sobel_y)
H_ = H - Fx + 1
W_ = W - Fx + 1
x_filtered = list()
for h_idx in range(H_):
for w_idx in range(W_):
window = img[h_idx:h_idx + Fx, w_idx:w_idx + Fx]
x_filtered.append((window * sobel_x).sum())
x_filtered = np.array(x_filtered).reshape(H_, W_)
→ Y축으로도 동일하게 진행
기타 사항 노션에 백업함