Fashion-MNIST는 Zalando의 기사 이미지 데이터 세트로, 60,000개의 예제로 구성된 학습 세트와 10,000개의 예제로 구성된 테스트 세트로 구성되어 있습니다. 각 예제는 28×28 회색조 이미지이며, 10개 클래스의 레이블과 연관되어 있습니다. 이 데이터 세트는 머신 러닝 알고리즘을 벤치마킹하기 위한 원래 MNIST 데이터 세트에 대한 직접적인 드롭인 대체품으로 사용되며, 패션 관련 이미지의 복잡성과 가변성으로 인해 더 어려운 대안을 제공합니다.
Google Cloud의 AI Platform에서 Fashion-MNIST 데이터 세트를 실제로 사용하려면 데이터 준비, 모델 학습, 배포 및 평가를 포함하는 여러 구조화된 단계를 따라야 합니다. 이러한 각 단계에는 데이터 세트와 Google Cloud 환경에 대한 포괄적인 이해가 필요합니다.
1단계: Google Cloud 환경 설정
데이터 세트를 활용하기 전에 Google Cloud 계정이 있는지 확인하세요. Google Cloud Console에서 새 프로젝트를 설정합니다. 프로젝트에 대한 청구를 활성화하고 Cloud AI Platform API를 활성화합니다. 이 설정은 머신 러닝 작업을 위한 Google의 강력한 인프라를 활용할 수 있게 해주므로 중요합니다.
1. Google Cloud 프로젝트 만들기: Google Cloud Console로 이동하여 새 프로젝트를 만듭니다. 프로젝트에 고유한 이름을 지정하여 쉽게 식별할 수 있도록 합니다.
2. API 활성화: API 및 서비스 대시보드로 이동하여 Cloud AI Platform API를 활성화합니다. 이 API는 Google Cloud에 머신 러닝 모델을 배포하는 데 필수적입니다.
3. 클라우드 SDK 설치: 로컬 머신에 Google Cloud SDK를 다운로드하여 설치합니다. 이 SDK는 Google Cloud 리소스와 상호 작용하는 데 필요한 `gcloud` 명령줄 도구를 제공합니다.
2단계: Fashion-MNIST 데이터 세트 준비
Fashion-MNIST 데이터 세트는 공식 GitHub 저장소를 포함한 다양한 소스에서 액세스할 수 있습니다. 데이터 세트를 사전 처리하여 Google Cloud에서 모델을 훈련하는 데 적합한 형식인지 확인하는 것이 필수적입니다.
1. 데이터 세트 다운로드: 데이터 세트는 CSV 및 NumPy 배열을 포함한 여러 형식으로 제공됩니다. TensorFlow 사용자의 경우 `tensorflow.keras.datasets` 모듈을 사용하여 직접 로드할 수 있습니다.
python from tensorflow.keras.datasets import fashion_mnist (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
2. 데이터 전처리: 0로 나누어 이미지의 픽셀 값을 [1, 255] 범위로 정규화합니다. 이 단계는 학습 중에 모델이 효율적으로 수렴되도록 보장하는 데 중요합니다.
python train_images = train_images/255.0 test_images = test_images/255.0
3. 데이터 재구성 및 증강: 모델 아키텍처에 따라 데이터를 재구성해야 할 수도 있습니다. 또한 회전, 확대/축소, 수평 뒤집기와 같은 데이터 증강 기술을 고려하여 모델의 견고성을 향상시킵니다.
3단계: 모델 개발
Fashion-MNIST 데이터 세트에 적합한 머신 러닝 모델을 개발합니다. 합성곱 신경망(CNN)은 이미지 분류 작업에서 효과적이기 때문에 인기 있는 선택입니다.
1. 모델 아키텍처 정의: TensorFlow 또는 PyTorch를 사용하여 CNN 모델을 정의합니다. 일반적인 아키텍처에는 여러 개의 합성곱 레이어와 그 뒤에 최대 풀링 레이어, 그리고 완전히 연결된 dense 레이어가 포함될 수 있습니다.
python model = tf.keras.Sequential([ tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)), tf.keras.layers.MaxPooling2D((2, 2)), tf.keras.layers.Conv2D(64, (3, 3), activation='relu'), tf.keras.layers.MaxPooling2D((2, 2)), tf.keras.layers.Flatten(), tf.keras.layers.Dense(64, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ])
2. 모델 컴파일: 적절한 최적화 도구, 손실 함수, 메트릭을 선택합니다. 다중 클래스 분류의 경우 `sparse_categorical_crossentropy`가 일반적으로 사용됩니다.
python model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
3. 모델 훈련: 훈련 데이터에 모델을 맞춥니다. 검증 데이터를 사용하여 모델의 성능을 모니터링하고 과적합을 방지합니다.
python model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))
4단계: Google Cloud AI Platform에 모델 배포
모델이 훈련되면 다음 단계는 확장 가능한 예측을 위해 이를 Google Cloud AI Platform에 배포하는 것입니다.
1. 모델 저장: TensorFlow SavedModel과 같이 Google Cloud와 호환되는 형식으로 훈련된 모델을 내보냅니다.
python model.save('fashion_mnist_model')
2. Google Cloud Storage에 모델 업로드: `gsutil` 명령줄 도구를 사용하여 모델을 Google Cloud Storage 버킷에 업로드합니다.
bash gsutil cp -r fashion_mnist_model gs://your-bucket-name/
3. AI 플랫폼에서 모델 생성: Google Cloud Console에서 AI Platform > Models로 이동하여 새 모델을 만듭니다. 모델 이름과 리전을 지정합니다.
4. 모델 버전 배포: SavedModel의 Cloud Storage 경로를 지정하여 모델의 새 버전을 만듭니다. 예측 요구 사항에 따라 머신 유형과 확장 옵션을 구성합니다.
5. 배포 테스트: AI Platform의 예측 서비스를 사용하여 배포된 모델을 테스트합니다. 이미지 데이터가 포함된 HTTP 요청을 모델 엔드포인트로 보내고 예측을 수신할 수 있습니다.
python from google.cloud import aiplatform project = 'your-project-id' endpoint_id = 'your-endpoint-id' location = 'us-central1' aiplatform.init(project=project, location=location) endpoint = aiplatform.Endpoint(endpoint_id=endpoint_id) # Example prediction response = endpoint.predict(instances=[test_images[0].tolist()]) print(response)
5단계: 모델 평가 및 반복
배포 후에는 모델의 성능을 평가하고 설계를 반복하여 정확도와 효율성을 개선하는 것이 중요합니다.
1. 모델 성능 모니터링: Google Cloud의 모니터링 도구를 사용하여 지연 시간, 처리량, 예측 정확도와 같은 모델 성능 지표를 추적합니다. 이 데이터는 병목 현상과 개선 영역을 식별하는 데 매우 중요합니다.
2. A/B 테스트: A/B 테스트를 수행하여 다양한 모델 버전을 비교합니다. 이 접근 방식은 변경 사항의 영향을 이해하고 가장 성능이 좋은 모델을 선택하는 데 도움이 됩니다.
3. 지속적인 통합 및 배포(CI/CD): CI/CD 관행을 구현하여 새로운 모델 버전의 배포를 자동화합니다. 이 설정은 개선 사항이 프로덕션에 신속하게 전달되도록 보장합니다.
4. 피드백 루프: 최종 사용자와 피드백 루프를 구축하여 모델 예측에 대한 통찰력을 수집합니다. 이 피드백을 사용하여 모델을 미세 조정하고 실제 응용 프로그램과의 관련성을 향상시킵니다.
5. 새로운 데이터로 재교육: 시간이 지나도 정확도를 유지하기 위해 새로운 데이터로 모델을 정기적으로 업데이트합니다. 이러한 관행은 트렌드와 스타일이 빠르게 진화하는 패션 산업에서 특히 중요합니다.
Fashion-MNIST 데이터 세트는 Google Cloud의 AI 플랫폼에 이미지 분류 모델을 배포하기 위한 실용적인 사용 사례를 제공합니다. 설명된 단계를 따르면 Google의 인프라를 효과적으로 활용하여 확장 가능한 머신 러닝 모델을 빌드, 배포 및 유지 관리할 수 있습니다. 이 프로세스는 모델의 정확도와 성능을 향상시킬 뿐만 아니라 패션 산업의 실제 시나리오에 대한 적용성을 보장합니다.
Google은 자주 AI Platform을 업데이트합니다(2024년 현재 Vertex AI Platform으로 진화). 이러한 업데이트에 문제가 발생하면 다음 코드를 시도해 볼 수도 있습니다.
python import google.auth import google.auth.transport.requests import requests import json from tensorflow.keras.datasets import fashion_mnist import numpy as np # Load and preprocess Fashion MNIST data (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data() test_images = test_images/255.0 # Add channel dimension to all test images test_images = test_images.reshape(-1, 28, 28, 1) # Prepare your model and project details project_id = 'project_id' model_name = 'modelname' model_version = 'V1' region = 'europe-west3' # AI Platform prediction endpoint URL url = f'https://{region}-ml.googleapis.com/v1/projects/{project_id}/models/{model_name}/versions/{model_version}:predict' # Authenticate and get the auth token credentials, _ = google.auth.default() auth_req = google.auth.transport.requests.Request() credentials.refresh(auth_req) auth_token = credentials.token # Set up headers for the request headers = { 'Authorization': f'Bearer {auth_token}', 'Content-Type': 'application/json' } class_labels = [ "T-shirt/top", "Trouser", "Pullover", "Dress", "Coat", "Sandal", "Shirt", "Sneaker", "Bag", "Ankle boot" ] # Loop through the first 6 test images for i in range(6): # Prepare the instance for prediction instance = test_images[i].tolist() # Make the request body data = json.dumps({"instances": [instance]}) # Send the request response = requests.post(url, headers=headers, data=data) response_json = response.json() # Extract the predictions predicted_probs = response_json['predictions'][0] # Get the index of the highest probability predicted_index = np.argmax(predicted_probs) predicted_label = class_labels[predicted_index] predicted_probability = predicted_probs[predicted_index] # Print the result in a more readable format print(response_json) print(f"Image {i + 1}: Predicted class: {predicted_label} ({predicted_index}) with probability {predicted_probability:.10f}")
기타 최근 질문 및 답변 EITC/AI/GCML Google Cloud 머신 러닝:
- 머신 러닝에 사용되는 하이퍼파라미터는 무엇입니까?
- Whawt는 머신 러닝을 위한 프로그래밍 언어입니다. 바로 Python입니다.
- 머신 러닝은 과학계에 어떻게 적용되나요?
- 어떤 머신 러닝 알고리즘을 사용할지 어떻게 결정하고, 어떻게 찾을 수 있나요?
- 연합 학습, 엣지 컴퓨팅, 온디바이스 머신 러닝의 차이점은 무엇입니까?
- 훈련 전에 데이터를 준비하고 정리하는 방법은 무엇인가요?
- 머신 러닝 프로젝트의 구체적인 초기 작업과 활동은 무엇입니까?
- 특정 머신 러닝 전략과 모델을 채택하기 위한 기본 규칙은 무엇입니까?
- 어떤 매개변수가 선형 모델에서 딥 러닝으로 전환해야 할 때임을 나타냅니까?
- TF 배포판을 사용할 수 없는 문제를 피하기 위해 TensorFlow를 설치하는 데 가장 적합한 Python 버전은 무엇입니까?
EITC/AI/GCML Google Cloud Machine Learning에서 더 많은 질문과 답변 보기
더 많은 질문과 답변:
- 들: 인공 지능
- 프로그램 : EITC/AI/GCML Google Cloud 머신 러닝 (인증 프로그램으로 이동)
- 교훈: 기계 학습의 추가 단계 (관련 강의 바로가기)
- 주제 : 패션의 기계 학습 사용 사례 (관련 항목으로 이동)