본문 바로가기

728x90

Artificial Intelligence

(21)
[Tensorflow] 전이학습을 이용한 음식 이미지 분류 모델(val_acc: 78.33) 6개의 클래스에 대해서 1,800개의 이미지를 전이 학습을 통해 학습하는 과정입니다. 다음은 데이터 전처리부터 모델 학습까지의 순서입니다. 부족한 데이터의 크기를 키우기 위해서 ImageDataGenerator를 정의해줍니다. 모델의 입력으로 사용할 이미지와 한 번에 학습할 학습 데이터의 크기인 batch size를 정의해줍니다. 사전에 수집한 이미지 파일을 train과 valid 데이터로 나눠줍니다. 이때 이미지의 크기와 batch size를 사용하여 나눠줍니다. 모델의 레이어를 정의해줍니다. (MobileNetV2, GlobalAveragePolling2D, Dropout, Dense) 모델 컴파일을 진행한 후에 모델 학습 시 사용할 콜백 함수들을 정의해줍니다. 모델 학습을 진행합니다. import ..
[Tensorflow] shutil을 사용한 데이터 분류 shutil을 사용하여 kaggle에서 제공하는 Food Images (Food-101) 데이터를 학습과 테스트로 나누는 코드입니다. import os import shutil directory_list = ['./food101/images/test_set/', './food101/images/train_set/'] for path in directory_list: os.mkdir(path) 학습 데이터와 테스트 데이터를 넣어줄 test_set, train_set 폴더를 food101/images 밑에 생성해주는 코드입니다. file = open('./food101/meta/meta/classes.txt') classes = file.readline() while(classes): path = direc..
[Tensorflow] 다중 선형회귀분석이 뭐야? 네이버 지식백과에서 다중 선형 회귀분석은 독립 변수가 두 개 이상인 경우에 사용하는 선형 회귀분석이라고 설명합니다. 다중 선형 회귀분석과 선형 회귀의 다른 부분은 무엇인지 알아보고 Tensorflow를 이용하여 구현까지 해보겠습니다. 선형 회귀분석과 다른 점에는 가설, 독립변수의 개수, 손실 함수 그리고 독립 변수 계산 방법이 있습니다. 다음은 선형 회귀분석과 다중 선형 회귀분석의 가설입니다. 선형 회귀분석: H(x) = Wx + b, 독립변수가 1개 일 때 다중 선형 회귀분석: H(x1, x2, x3) = w1x1 + w2x2 + w3x3 + b, 독립변수가 3개 일 때 다음은 n개의 독립변수에 대한 다중선형회귀분석의 식을 나타내면 다음과 같습니다. 과 같이 가설 식이 변했으므로 손실 함수도 그에 맞게..
[Tensorflow] 경사 하강법이 뭐야? 경사 하강법은 비용 함수가 최소가 되는 w, b를 구하는 방법으로 점진적으로 반복적인 계산을 통해 w, b의 값을 업데이트하면서 오류 값이 최소가 되는 w, b를 구합니다. 다음은 비용 함수입니다. 경사 하강법의 특징은 다음과 같습니다. 의 최솟값을 찾는다. 변수가 여러 개 일 때에도 사용 가능하다. 경사 하강법은 다음의 방법으로 진행됩니다. cost(w, b)를 계산한다. 최솟값이 아니라면 w, b를 cost(w, b)가 줄어드는 방향으로 값을 변경해준다. 1의 과정을 반복한다. 만약 1의 결과가 최소점이라면 종료한다. 는 경사 하강법의 진행과정을 GIF 파일로 표현하는 것입니다. 경사 하강법을 위의 그림처럼 진행시키기 위해서는 최솟값을 판별하는 법을 알아야 합니다. 경사 하강법에서의 그래프는 x축이 ..
[Tensorflow] 선형회귀분석이 뭐야? 선형 회귀분석은 하나 이상의 독립변수들이 종속변수에 미치는 영향을 추정할 수 있는 통계기법입니다. tensorflow로 선형 회귀분석방법을 직접 구현해보면서 더 자세하게 알아보겠습니다. 다음은 x_data = [1,2,3,4,5,6,7], y_data = [2,3,4,5,6,7,8]의 경우를 점으로 찍은 그래프입니다. 위의 경우에서 주어진 정보를 가장 잘 대변하는 직선 그래프는 무엇일까요? 바로 에서 볼 수 있듯이 y = x + 1입니다. 이렇듯 선형 회귀분석은 에서 로 가는 과정입니다. 정답과 정보만을 가지고 규칙을 찾을 수 있다는 것이 정말 매력적으로 느껴집니다. 다음과 같이 H(x) = wx+b라고 정의하겠습니다. x와 그에 따른 결과는 이미 알고 있으므로 tensorflow를 활용하여 구해야 하는..
[Tensorflow] 김치 이미지 분류기 - 모델학습 학습과 검증 데이터를 분류하였으니 이제 이미지 분류 모델을 만들어 보겠습니다. 모델 학습 절차는 다음과 같습니다. Sequential 모델 설계하기 만든 모델을 compile 하기 학습 데이터를 넣어 모델 학습하기 1번의 Sequential 모델을 만들 때 여러 가지의 다른 레이어들을 사용하게 됩니다. 사용되는 레이어들은 다음과 같습니다. Conv2D: (크기 3 X 3의 16개의 필터) 이미지에서 특징이 추출됩니다. MaxPooling2D: 이미지의 크기를 절반으로 줄입니다. Flatten: 데이터를 1차원 배열의 형태로 변환합니다. Relu: 값 x가 주어질 때 max(x, 0)을 반환하여 0 이하의 값을 모두 제거해줍니다. 데이터 손실이 크지만 학습이 빠르다는 장점이 있습니다. Dense: 입력과 ..
[Tensorflow] 김치 이미지 분류기 - 데이터 분류 AI HUB에서 가져온 데이터를 확인해보겠습니다. 김치 압축 폴더의 압축을 해제하면 다음의 디렉터리 구조가 나오게 됩니다. 김치/ 갓김치/ 나박김치/ 무생채/ 배추김치/ 백김치/ 부추김치/ 열무김치/ 오이소박이/ 총각김치/ 파김치/ 각각의 폴더에는 1000장의 이미지가 있지만. jpg 이미지만 사용할 것이므로 다른 포맷을 가진 데이터를 삭제하였습니다. 검증 분할을 사용하기 위해서 총 이미지 데이터에서 70%는 훈련에 나머지 30%는 검증에 사용할 수 있도록 이미지를 분리하겠습니다. import os import shutil 필요한 라이브러리를 import 해줍니다. directory_list = ['./train', './valid'] for directory in directory_list: if no..
[Tensorflow] 김치 이미지 분류기 전체 과정 keras를 사용하여 김치 10종의 이미지를 분류하는 Sequential 모델을 만들어보겠습니다. 개발 과정은 다음과 같습니다. 학습에 필요한 데이터를 수집하고 가공합니다. 가공된 학습 데이터를 이용해 적절한 인공지능 모델을 학습합니다. 웹/앱에서 사용할 수 있도록 학습된 모델을 배포합니다. 위의 과정을 4가지 단계로 표현하면 데이터 수집 → 데이터 가공 → 모델 학습 → 모델 배포가 됩니다. 모델 학습에 있어 데이터 수집: AI HUB의 한국 음식 이미지 AI 데이터를 사용하였습니다. 해당 이미지를 사용하기 위해서는 데이터 사용 신청을 해야 합니다. 데이터 가공: 한국 음식 데이터에서 김치만 따로 가져오고 1개의 폴더에 정리되어 있는 이미지를 학습:검증=7:3의 비율로 나눠주었습니다. 모델 학습: 가공..

728x90