오늘부터 SKT측에서 코랩 Pro 지원을 해줬다!
데이터 증강
- 기존의 데이터를 변형해서 데이터의 양을 늘리는 것
- ImageDataGenerator를 사용해서 데이터 증강
데이터 증강 방법
이미지 데이터 증강 방법
- 랜덤하게 이미지를 자르기
- 회전
- 밝기 조절
- 블러 처리
- 노이즈 삽입
데이터 증강을 하는 이유
- CNN모델을 보면, train Accuracy가 validation Accuracy보다 높다. (차이가 많이 난다)
- 두 Accuracy의 차이를 좁히기 위해서!
- 데이터의 다양성과 모델의 일반화를 위해서!
- 크기 증가 : 모델이 트레이닝 중에 더 많은 이미지를 학습 가능 (학습능력을 높인다)
- 편차 증가 : 모델이 중요하지 않은 특징을 무시하고 분류에서 정말로 중요한 특징만 선택하도록 하여 더 나은 일반화가 가능
데이터셋 객체 생성
train_datagen = ImageDataGenerator(
rescale = 1./255, # 데이터에 제공된 값을 곱함
rotation_range = 20, # 무작위 회전에 대한 도(각도) 단위 범위
width_shift_range = 0.1, # 이미지를 수평으로 임의로 이동(전체 너비의 대칭)
height_shift_range = 0.1, # 이미지를 수직으로 임의로 이동(전체 높이의 대칭)
zoom_range = 0.05, # 무작위 확대/축소 범위
horizontal_flip = True, # 입력을 수평으로 랜덤하게 적용
fill_mode = 'reflect') # One of {"constant", "nearest", "reflect" or "wrap"}, "nearest"가 기본 # 이동하고 남는 부분을 어떻게 채워줄거냐 라는 옵션
val_datagen = ImageDataGenerator(rescale=1./255)
test_datagen = ImageDataGenerator(rescale=1./255)
전이학습
- 학습에 필요한 데이터의 양이 충분하지 않아도 사전에 훈련된 딥러닝 모델로 데이터의 일부만 재학습시켜 원하는 목적에 필요한 모델을 만들어내는 기술
- 특정 분야에서 학습된 신경망의 일부 능력을 비슷하거나 또는 새로운 분야에서 사용되는 신경망의 학습에 이용하는 것
- 데이터 증강과 마찬가지로 데이터의 양이 많지 않을 때 효과적으로 사용
전이학습 성능 개선 -> fine-tuning
추가 성능 개선
- 옵티마이저의 변경
- BatchNormalization 추가
- Dropout추가
- resnet50모델까지 전체 학습 -> 구조만 가져오고 전부 학습하는 것을 의미
- Data 전처리 및 증강을 통한 학습데이터 개선
- Fully Connected Layer 은닉층 추가 및 노드 추가
- learning decay를 이용해 유동적인 학습 진행
- 데이터 준비/데이터 표시
- 학습 완료된 모델 준비
- 분류 부분의 모델 구성
- 모델 컴파일
- 콜백 생성
- 학습/학습 곡선
- 시각화/예측
전이학습 종류
- Fine-tuned ConvNet : 미리 학습된 ConvNet의 마지막 Fully Connected Layer만 변경해 분류 실행
- Pre-trained Model : 미리 학습된 모델의 가중치를 새로운 모델에 적용
- Domain Adaptation : 풍부한 데이터를 바탕으로 훈련시 도메인 구분 능력은 약하게 학습하여 Target Data를 분류 가능하도록 모델 구축
- Layer Re-use : 기존 모델의 일부 Layer를 재사용하여 부족 Dta Domain 모델 구축에 활용항목 추가
바운딩박스 근사
바운딩 박스(bounding box)
- 물체의 위치를 추정(회귀 작업)
- 물체의 위치를 사각형으로 정의(꼭지점 좌표)
- 객체 탐지 모델에 사용되는 데이터의 크기가 방대하기 때문에, 바운딩 박스를 통하여 객체를 올바르게 탐지하고 딥러닝 과정에서 바운딩 박스 영역만 대상이 되기 때문에, 딥러닝을 효율적으로 수행
- 바운딩 박스는 특정 사물을 탐지하여 모델을 효율적으로 학습할 수 있도록 두움을 주는 방법
- 객체 탐지 모델에서 바운딩 박스는 타겟 위치를 지정
- 물체 중심의 수평, 수직 좌표와 높이, 너비를 예측
- 모델을 크게 바꿀 필요는 없음
- 바운딩 박스에 널리 사용되는 지표는 IoU(Intersection over union)
- 예측한 바운딩 박스와 타깃 바운딩 박수 사이에 중첩되는 영역을 전체 영역으로 나눈 것
- tf.keras에서는 tf.keras.metrics.MeanIoU에 구현
'프로그램 > SKT FLY AI' 카테고리의 다른 글
SKT FLY AI : 10일차 (0) | 2023.07.10 |
---|---|
SKT FLY AI : 9일차 - RNN (0) | 2023.07.07 |
SKT FLY AI : 7일차 - CNN (0) | 2023.07.04 |
SKT FLY AI : 6일차 - ML(2) (0) | 2023.07.04 |
SKT FLY AI - 번외. 첫날~워크샵 (0) | 2023.07.01 |