본문 바로가기

KHUDA 활동 아카이브

(10)
CNN Visualization (CNN의 블랙박스 현상 해결법) 우리가 만든 CNN 모델은 어떻게 행동하고, 무엇을 보고 클래스를 판별했을까? Embedding Feature Analysis (추출된 특성 분석) (high level layer) Neareast-Neighbor 아래 파란색 박스를 통해(위치도 다르고 자세도 다름) 컨셉을 잘 학습했다는 것을 알 수 있다. 미리 학습된 뉴럴 네트워크 준비 / fc layer 전, 즉 중간 정도에 있는 layer들에 대해 특징 추출하도록 함. db안에 있는 모든 영상들, 이미지들에 대해서!! 그 특징들은 고차원 데이터일 것이다. 잘 훈련된 모델이라면, 같은 class 영상들의 feature들은 서로 가까이 있을 것이다. 이제 그 모델에 질의 영상을 입력하면, 그 영상의 feature은 자신과 같은 class인 영상들의 f..
[CV] Semantic Segmentation 및 object detection [CV] 이전까지는 단순히 사진의 객체를 분류하기만 하는 모델을 만들었지만, 이제 픽셀 단위로 객체를 구분해보고자 한다. CV에서는 이를 Semantic segmentation이라고 한다. 사진의 위에는 Image classification, 아래는 Semantic Segmentation이다. 기존 Image classification 모델에서는 주로 마지막 레이어에서 flattening을 하여 하나의 벡터로 바꿨다. 하지만 이는 이미지의 공간 정보를 고려하지 않는다는 말과 동일하다. semantic segmentation에서 이미지 내의 픽셀에 대한 공간정보는 매우 중요하기 때문에, 이 fully connected layer는 사용하기 힘들다. 그 대신, 1*1 convolutional layer를 사..
[CV] ImageClassification 종류 GoogleNet부터 다룬다. GoogleNet : 깊이가 아닌 너비로 필터를 접근. 대신 계산복잡도가 증가할 수 있기에, 1x1 layer를 적용 전체적인 구조는 다음과 같음 노란색 사각형 쪽은 Auxiliary classifier로, 오차를 중간중간에 꽂아주는 역할을 한다. vanishing gradient 문제를 방지해준다. ResNet : 현재도 많이 사용함 ‘네트워크의 layer 개수(depth)가 모델의 성능을 더 높여준다’를 보여줌 원래 사람들은 layer 개수가 많을수록 오버피팅이 일어난다고 생각했지만, 아래 그림을 보면 56개의 layer가 training erro도 높고 test error도 높은 것을 볼 수 있다. 이는 오버피팅과 관계가 없다. 실제 구조는 다음과 같다. RestNet..
[CV] Data augmentation 및 Transfer learning 딥러닝 분야는 데이터의 다다익선이 분명한 분야이다. 따라서 한정된 실제 데이터를 최대한 많이 늘리는게 중요한데, 이 떄 사용되는게 data augmentation이다. 만약 밝은 사진으로만 저렇게 동물 사진을 학습했다고 하자. 이때 검은색 바탕의 고양이의 사진을 받으면 모델은 잘 추론하지 못할 수 있다. 따라서 원래 데이터의 밝기를 낮추거나, 색깔을 변화시키는 등의 변화로 데이터셋을 늘려 모델을 더 잘 학습시킬 수 있다. 대표적인 augmentation 기법으로는 Crop, shear, brightness, perspective, rotate, affine 이 있다. 밝기 변화 crop affine augmentation할 때에는 어떤거 쓸건지, 얼마나 세게 할건지 두개의 파라미터가 필요하다. 2. pr..
Ch 6. 비지도 학습 지금까지는 훈련데이터가 실제로 어떤 결과인지를 알려주는, 즉 지도학습을 공부해봤다. 그렇다면, 컴퓨터에게 데이터를 주는데, 그 데이터가 우리도 무엇인지 모르는 상황이라면 어떨까? 컴퓨터에게 데이터 라벨링을 해주지 않아도 자기 스스로 그 특징을 찾아 훈련데이터들을 분류할 수 있을까? 이를 ‘비지도 학습’이라고 부른다. 다음과 같은 상황을 가정하자. “나는 과일가게에서 일하고 있다. 과일들의 수요를 조사하기 위해, 손님들에게 가장 좋아하는 과일의 사진을 문자로 보내달라고 했다. 문자로 온 과일들의 사진을 분류해서, 어떤 과일을 손님들이 가장 좋아하는지 알고 싶다. 하지만, 어떤 과일 사진들이 올지 우리는 알지 못한다. 대충 예상은 가지만 말이다. 손님들이 보내준 과일 사진을 알아서 분류해주는 머신러닝 모델은..
Ch 5. 트리 알고리즘 앞서 다룬 회귀와는 또 다른 알고리즘을 알아보자. 이번 예시는 와인 분류이다. 알코올, 당도, pH를 이용해 레드 와인인지 화이트 와인인지 구분하는 것이다. 얼핏보면 특성이 3개이고 이진분류이므로, 특성 스케일 값을 표준점수로 전처리해서 로지스틱 회귀를 사용하면 해결될 것이라는 생각이 든다. 한번 해보면? import pandas as pd wine = pd.read_csv('https://bit.ly/wine-date') data = wine[['alcohol', 'sugar', 'pH']].to_numpy() target = wine[['class']].to_numpy() from sklearn.preprocessing import StandardScaler ss = StandardScaler() s..
Ch. 4 다중 분류 알고리즘 로지스틱 회귀 k-최근접 이웃 알고리즘을 이용해 다중분류 해보기 ex) 어떤 생선의 무게, 길이, 대각선 길이, 높이, 너비 값을 이용해 도미, 잉어, 송어, 대구, 농어, 강꼬치고기, 빙어 7종류의 생선 중 어떤 생선인지 맞춰보자. 늘 하던대로 , train_test_split을 이용해 훈련셋과 테스트셋을 분리하고 StandardScaler 변환기 클래스를 이용해 전처리까지. k-최근접 분류 클래스는 KNeighborsClassifier이다. fit 한 후 앞에 5개의 score값을 측정하니, 이렇게 확률이 나오긴 한다. 하지만 확률이 너무 이산적이다. 당연하다. k-최근접 분류에서 이웃을 3개로 한정지었기 때문. 그래서 분모가 항상 3이기에 위와 같은 0.6667 확률이 나온거. 연속적인 확률을 얻고..
Ch 3. 선형회귀 도미 - 빙어 : 두 생선 중 어떤 생선인지 판별하는 문제 도미와 빙어 각각을 클래스라고 부름 우리가 앞서 다룬 문제는 즉 클래스 분류이다. 그러면 클래스 분류말고 또 있어? 있다. 우리는 지금 머신러닝에 대해 다루고 있다. 머신러닝은 크게 지도학습과 비지도학습으로 나뉜다. 우리는 지도학습 중에서도 클래스분류에 대해 살펴본것이다. 자, 그럼 지도학습에 ‘분류’말고 또 뭐가 있나? 맞다. 회귀다. 우리는 이제 회귀에 대한 예시를 살펴볼것이다. —- 우리 생선가게는 이제 도미, 빙어 뿐만 아니라 농어도 팔기 시작헸다. 보통 생선들도 그렇듯이, 우리 가게도 농어를 1kg에 얼마 형식으로 팔려고 한다. 그런데 지금 좀 큰일났다. 농어를 공급해주는 공급처에서 농어의 무게를 잘못쟀다고 연락이 온 것이다. 농어의 길..