#2 of Basic Concepts of Infra - URL, Protocol 내부 구성 공유 링크 만들기 Facebook X Pinterest 이메일 기타 앱 - 11월 02, 2020 URL and Inside of Protocol 공유 링크 만들기 Facebook X Pinterest 이메일 기타 앱
#9 of AI and Deep Learning - 이미지 다중 분류 Multi Classification 공유 링크 만들기 Facebook X Pinterest 이메일 기타 앱 - 7월 24, 2020 이미지 다중 분류 CNN개요학습목적다양한 카테고리의 이미지들을 분류해주는 학습 모델 구현기본 활용 라이브러리Keras오픈 소스 신경망 라이브러리기본 활용 패키지PILPython Image Libraryglob원하는 확장자의 파일 리스트를 뽑아낼 때 활용하는 라이브러리참고문서https://wikidocs.net/83scikit-learntrain_test_split 함수훈련 및 테스트 데이터 분리비율로 설정 ex) 0.3keras.XXXXmodelsSequential 함수순차적인 모델 구성을 설정하기 위한 초기화 선언 개념일종의 학습 모델 객체 선언model.add()layersConv2D 함수Convolutional Neural Network 의 핵심 사항주요인자필터 갯수커널 (행, 열)padding = 경계 처리 방법 (사이즈)valid = 출력 이미지 < 입력 이미지same = 출력 이미지 > 입력 이미지input_shape = 샘플 수 제외한 입력 정의첫 레이어만 설정(행, 열, 채널)흑백 = 채널 1RGB = 채널 3Maxpooling2D 함수출력 데이터의 크기를 줄이거나 특정 데이터 강조 역할Dense 함수FC (Fully Connected / 전결합 레이어) 레이어와 동의어전결합 레이어의 문제점전결합 레이어는 1차원 데이터만 입력받을 수 있음이미지 파일은 지정된 채널에 따라 3차원 형태임즉, 이미지가 가진 고유한 공간 정보가 소실 됨Dense Layer (FC Layer) 의 CNN 모델에서의 문제점Flatten 함수Conv2D - Maxpooling 과정을 반복하다보면 2차원이 됨마지막 출력은 1차원으로 도출되어야 하므로 FC Layer 활용이 과정에서 2차원 -> 1차원으로 변환해주는 역할Dropout 함수layer 의 일부노드 삭제삭제된 노드는 학습에 영향을 주지 않음사용이유1) 복잡하고 깊은 망을 학습하는 데 리소스 투입 과다2) 그럴수록 결과 응답 시간 느림위 2개의 문제를 해결하기 위해 사용추가장점랜덤으로 생략된 노드 = 다양한 모델을 도출하는 것일종의 앙상블 효과2x2 크기 필터 (=가중치 w) 1개를 사용하여 입력 - 출력 도식화한 그림대략적인 학습 순서패키지 선언분류할 카테고리 지정nb_classes호출할 이미지 파일 정제가로, 세로 크기 지정 ex) 64x64채널 지정 ex) 64x64x3 (3 채널 = RGB)저장된 이미지 호출이미지 수급 방법직접 웹 크롤링open 웹 사이트에서 제공하는 데이터셋kaggleopen AI카테고리 수만큼 루프 돌면서 X, Y raw dataset 생성불러들인 모든 이미지 -> 지정된 크기로 resizenp.asarray 로 벡터 배열 변경X.appendY.appendone hot encodingex) 5개 카테고리일 경우[1, 0, 0, 0, 0][0, 1, 0, 0, 0]정리하자면, 카테고리 (=디렉토리 수) 및 이미지 갯수만큼 루프 돌면서이중 for 문resize 된 이미지 1개당 (X)one hot encoding 된 레이블 1개 매칭 (Y)ex) "빈티지" 디렉토리에서 가져온 이미지의 경우호출resize -> 앞서 언급한바와 같이 width, height 재조정"빈티지" idx 에 맞춰 one hot encoding5개 카테고리 중, 3번째가 "빈티지" 라면[0, 0, 0, 1, 0, 0] (0번째 idx 는 디폴트)배열 -> 벡터by np.array중간 중간 변환된 데이터 확인본격적인 학습 시작모델 준비model.Sequentialmodel.add학습에 필요한 레이어 선별위 개요에서 언급한 여러 레이어마지막 출력은 본인이 원하는 목적에 맞춰 1개 or 확률적 결과 도출목적에 맞는 activation function 설정model.compileloss 함수 설정위에서 언급한 마지막 출력 결과에 대한 손실 계산다중 분류의 경우 categorical crossentropy 적용optimizeradam = 가장 보편적인 경사 하강법modelcheckpoint학습을 반복 진행하면서 중간결과 통보인자 설명verbose = 진행 상황 출력 여부save_best_only = 더 나은 모델만 저장지정된 디렉토리 path 에 epoch 및 오차율 저장early stopping 설정학습 효율이 더 이상 향상되지 않을 때 조기 종료하는 설정model.fit학습 시작학습 결과를 history 함수를 통해 그래프로 확인 가능val_loss = 검증 손실값loss = 훈련 손실값ReferencesCNN 기본 개념http://taewan.kim/post/cnn/https://tykimos.github.io/2017/01/27/CNN_Layer_Talk/dropout 정의http://blog.naver.com/PostView.nhn?blogId=laonple&logNo=220818841217&categoryNo=0&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postViewDense Layer 설명https://m.blog.naver.com/PostView.nhn?blogId=bootpay&logNo=221179813372&proxyReferer=https:%2F%2Fwww.google.com%2FFC Layer 개념 및 CNN 에서의 한계점https://umbum.dev/223 공유 링크 만들기 Facebook X Pinterest 이메일 기타 앱 댓글
#2 of Basic Concepts of Infra - URL, Protocol 내부 구성 - 11월 02, 2020 URL and Inside of Protocol 자세한 내용 보기
댓글
댓글 쓰기