[학습목표]
다중 이미지 분류에 대해 이해하고, 구글 코랩을 활용한 6개의 클래스 분류 모델 학습을 따라할 수 있다.
데이터 증강 기술 ★ ★ ★ ★ ★
- 데이터 증강기술은 훈련 데이터에만 적용된다 (시험출제)
- 즉, 훈련 데이터의 양을 늘려줌으로써 과적합을 방지할 수 있게 된다.
- 딥러닝) 층을 깊이 가져가다 보면 결과적으로 매개변수 값이 수천 개, 많게는 수만 개까지 늘어날 수 있다.
- 즉, 매개변수가 많이 늘어난다는 얘기는, 그만큼 데이터양이 많아져야만 과적합이 발생하지 않는다.
- 6과 9같은 데이터에는 특별히 조심해야 한다. (예시로, 회전 10%, ...)
- → 모든 데이터에 동일한 데이터 증강 기법을 적용할 수 없다.
코랩을 왜 사용하는가?
- 실제로 학습을 할 수 있도록 작은 단위로 데이터를 나누고, 나누어지게 되면 이것을 병렬로 학습할 수 있도록 데이터 구조를 준비해 주기 때문에 "구글 코랩" 을 사용해서 병렬 처리할 수 있다는 것이다. 즉, 이러한 데이터 준비 과정이 없으면 GPU를 사용할 수 없게 된다. 이렇게 병렬 처리로 학습할 수 있는 구조를 만들어 놓지 않은 상황에서 병렬 처리를 한다고 하면, 그 병렬 처리를 하기 위한 규칙은 우리가 다 프로그래밍을 해서 만들어 줘야 한다. (너무 복잡하다.)
- 그러한 복잡성을 낮추기 위해서 텐서플로와 같은 프레임워크에서는 ImageDataGenerator라고 하는 클래스를 이용해서 데이터를 만들어 주는 것이다. 이렇게 만들어 줌으로써 실제로 학습이 병렬로 처리되고 결과적으로 짧은 시간에 원하는 결과를 만들어 낼 수 있도록 한다.
ImageDataGenerator
- 이것은 ImageDataGenerator라고 하는 하나의 클래스이다.
- 이 클래스를 생성할 때 인자값은 다음과 같다.
- 그럼 이 클래스가 어떤 인자값을 줘서 실제로 그것을 인스턴스화한 것이 train_datagen이라고 하는 하나의 객체가 된다. 즉 내가 앞으로 어떤 이미지를 처리할 때 이러한 규칙으로 이미지를 처리하겠다고 껍데기를 만드는 것이다.
- 인스턴스를 하나 만들어 놓는 것이다. 그 때 규칙은 사용자, 내가 설정하는 것이다.
데이터 증강
- 데이터 준비 → 데이터 전처리 (정규화, 데이터 증강 기법)
- → 학습 (몇 에폭 반복, 벨리데이션 데이터를 어떤 걸로 사용할 것인지, callback함수 설정여부)
- callback이 없다면 정한 에폭만큼 학습을 무조건 한다.
flow_from_directory( ) 함수
- directory 경로로부터 데이터 프레임을 가져오고, 증강 또는 정규화된 데이터 배치를 생성한다.
findkey 함수
- 레이블 명을 반환해 주는 함수이다.
인공신경망 네트워크
- 학습이 입체적 학습으로 이루어진다. 그러므로 Flatten을 사용하여 1차원 벡터로 바꾸어 준다.
- dense : 완전 연결 계층이다. 3개
- 중간에 들어가 있는 은닉층의 활성화 함수는 렐루함수가 사용됐다.
- 출력층에서 활성화 함수는 소프트맥스 함수가 사용됐다. (다른 걸 사용했다.)
- 신경망 네트워크 + 학습할 때의 규칙(Optimizer, 평가지표, 학습률, ...) = 인공 신경망 네트워크에 대한 구성
▶ 굉장히 많은 매개변수가 이 학습을 하는데 사용되었다. 순전파와 역전파를 통해 조정해 나간다.
→ 넘파이 라이브러리를 이용해서 대량의 다차원 배열을 처리해서 많은 매개변수 값들을 업데이트하게 되는 것이다.
9층 인공신경망 모델의 계층구조
- 9층 인공신경망 모델 → 결과값 : loss 값(실제값 - 예측값 loss, 손실값)
- 손실값이 클수록 많이 업데이트, 작을수록 적은 업데이트
▶ 훈련용 데이터는 모델을 학습하는 용도만 사용해야 하고 그 모델에 사용되는 각각의 하이퍼 파라미터 값들이라던가, 이러한 것들을 검증할 때는 말 그대로 벨리데이션 데이터를 사용한다. 그런데 이것은 그냥 시험용 데이터로 벨리데이션용으로 사용했다는 거 이해하길 바란다.
(25, 6) : 6개의 열이 25개 있다.
→ 첫 번째, 모델이 예측한 것 중에 첫 번째를 끄집어 내서 데이터를 보자. 데이터의 값이 실수의 값인데 6개의 값을 다 더하면 1이 된다. 6개의 데이터는 확률이라고 하는 것이다. 왜 확률로 나오느냐?
→ 출력층의 활성화 함수를 소프트맥스 함수를 사용했기 때문이다. 소프트맥스를 사용했기 때문에 어떠한 값이 들어가더라도 소프트맥스 함수를 거치고 나면 그것이 확률로 바뀐다.
'컴퓨터 비전 수업 > 수업 필기' 카테고리의 다른 글
컴퓨터 비전 7주차(3) (0) | 2024.10.27 |
---|---|
컴퓨터 비전 7주차(2) (1) | 2024.10.27 |
컴퓨터 비전 6주차(3) (0) | 2024.10.27 |
컴퓨터 비전 6주차(2) (0) | 2024.10.27 |
컴퓨터 비전 6주차(1) (0) | 2024.10.27 |