CS231n

CS231n(1) Introduction to Convolutional Neural Networks for Visual Recognition

민지기il 2024. 2. 14. 15:25

인공지능

<도구>

OpenCV: 이미지, 비디오 처리

PIL: python에서 이미지 처리를 위한 라이브러리

Numpy: python에서 사용되는 과학 계산 라이브러리

Matplotlib: python에서 다양한 차트와 그래프를 그리기 위한 라이브러리 / 결과 분석용

NLTK, SpaCy, Transformers: 자연어 처리

<프레임 워크>

TensorFlow: 구글에서 개발한 오픈소스 머신러닝 프레임워크로, 딥러닝 및 인공신경망 구조를 설계하고 구현

Keras: TensorFlow와 호환되는 고수준 머신러닝 라이브러리 딥러닝 모델을 쉽고 빠르게 구현 / 현재 TensorFlow 2.0 이상에는 Keras가 통합되어 제공됩니다.

PyTorch: 페이스북에서 개발한 오픈소스 머신러닝 프레임워크로, 딥러닝 모델 구현 및 연구

<계획>

1)  https://oculus.tistory.com/7 Cs231n 컴퓨터 비전 / 딥러닝 16강까지 블로그 읽고 정리하기

2) pytorch 튜토리얼

3) 한요섭의 딥러닝 할껀데, 실습만 합니다시리즈

4) 캐글 실습

 

이미지 분류

고양이를 인식할 때 고양이 사진과 컴퓨터가 보는 숫자 값에는 격차(semantic gap)이 있다.

def classify_image(image):

return class_label 처럼 image를 입력받고 class_label인 고양이를 반환해준다

이는 이미지에서 edge를 추출하고 귀, 코모양과 같은 고양이에게 필요한 집합들을 찾아서 다 있으면 고양이라고 하는 것임

but 이는 변화에 대응하지 못하고 객체를 인식하려 할 때마다 집합을 따로 따로 만들어야 하는 문제가 발생

 

데이터 중심 접근

객체마다 필요한 규칙을 따로 만드는 것이 아니라 방대한 사진을 컴퓨터에 제시하고 machine learning classifier로 학습시키는 것

1)     Nearest neighbor (최근접 이웃 분류기)

이제는 이미지와 레이블을 input하는 train 함수 + train 함수에서 변환된 모델로 테스트 이미지를 판단하는 predict 함수로 나눈다

def train(images, labels): return model def predict (model, test_images): return test_labels

Distance Metric – L1 distance: 두 픽셀 값을 비교하고 그 차이의 절댓값을 모두 합하여 하나의 지표로 설정 / 여기서는 456만큼 차이 남

지도 학습(supervised learning)에서는 각각의 데이터 포인트가 특성+레이블로 구성됨

여기서 레이블(label)"은 각 데이터 포인트에 대한 정답이나 클래스를 나타내는 값임

특성은 입력 데이터의 속성이며, 레이블은 해당 입력 데이터가 속하는 클래스나 범주를 나타냄

 

예를 들어, 이미지 분류 문제에서는 각각의 이미지 데이터가 특성으로서 픽셀 값들을 가지고 있고, 해당 이미지가 어떤 클래스(고양이, , 자동차 등)에 속하는지를 나타내는 레이블을 가진다. 이진 분류 문제에서는 레이블이 두 가지 클래스 중 하나일 수도 있고, 다중 클래스 분류 문제에서는 여러 개의 클래스 중 하나일 수도 있다

한계) Train 함수의 시간복잡도보다 predict에서가 더 시간이 많이 걸린다 실제 사용시에, 학습시간은 오래걸려도 예측시간이 짧은 걸 선호하므로 단점으로 작용 + decision regions에서 decision boundary Robust 하지 않음

 

2)     K- Nearest Neighbor Classifier : 제일 가까운 이웃이 아니라 가까운 이웃을 K개를 찾고, 그 중 투표로 가장 많은 레이블로 예측함

 

Distance Metric – L2 distance

L1 distance의 경우 좌표계가 회전하면 변하고 L2는 좌표계랑 독립적임

-하이퍼 파라미터(Hyper Parameter): KNN을 사용할 때 정해주어야 하는 거리 척도, K값 같은 것