며칠 전 3년 동안 개발에 종사하고 있는 친구 Xiao Li와 이야기를 나누다가 그의 회사에서 머신러닝 관련 프로젝트를 진행하고 있다는 소식을 들었습니다. 최근 그는 훈련된 머신러닝 모델을 배포하는 임무를 받았습니다. Xiao Li는 거의 반년 동안 데이터 수집, 데이터 정리, 환경 구축, 모델 훈련 및 모델 평가에 참여해 왔습니다. 그러나 모델 배포는 이번이 처음입니다. .
그래서 저는 제 경험을 바탕으로 머신러닝 모델 배포에 대한 대중과학을 진행했습니다. 그림 1에서 볼 수 있듯이 기존 프로그래밍에서는 원하는 답을 얻기 위해 규칙과 데이터를 프로그램에 전달합니다. 그러나 기계 학습에서는 답과 데이터를 통해 규칙을 학습합니다.
그림 1 기존 프로그래밍과 머신러닝의 차이점
머신러닝의 모델 배포는 이 규칙(모델)을 머신러닝을 적용해야 하는 터미널에 배포하는 것입니다. 그림 2에서 볼 수 있듯이 머신러닝으로 학습된 모델은 함수, API 또는 SDK로 이해될 수 있으며 해당 터미널(그림의 회색 부분)에 배포됩니다. 배포 후 단말은 모델이 부여하는 기능을 가지게 됩니다. 이때 새로운 데이터를 입력하면 규칙(모델)에 따라 예측된 결과를 얻을 수 있습니다.
그림 2 머신러닝 모델 배포 원리
Xiao Li는 제 소개를 듣고 이해했다고 했으며, 큰 관심을 갖고 프로젝트의 전체 배포 상황을 알려 주었습니다. 말해봐, 나는 내 의견을 묻고 싶다. 그림 3에서 볼 수 있듯이 그들은 IOS, Android, Raspberry Pi, 웹 브라우저 및 서버 측에 이미지 인식 모델을 배포하려고 합니다.
그림 3 모델 배포 시나리오
배포 애플리케이션 시나리오에서는 가볍고 크로스 플랫폼이라는 특징을 가지고 있습니다. 동일한 기계 학습 모델은 여러 다른 플랫폼에 배포되어야 하며 각 플랫폼은 서로 다른 스토리지 및 컴퓨팅 기능을 가지고 있습니다. 동시에 모델 운영의 가용성, 성능, 보안, 확장성을 고려해야 하며, 비교적 안정적인 대규모 플랫폼을 사용해야 합니다. 그래서 저는 그에게 TensorFlow의 머신러닝 배포 프레임워크를 추천했습니다. 그림 4에 표시된 것처럼 TensorFlow의 배포 프레임워크는 다양한 플랫폼에 대한 구성 요소 지원을 제공합니다. 그 중 Android, IOS, Raspberry Pi는 모바일 단말에 특별히 사용되는 모델 배포 프레임워크인 TensorFlow Lite에 해당합니다. 브라우저 측은 TensorFlow.js를 사용할 수 있고, 서버 측은 TensorFlow Serving을 사용할 수 있습니다.
그림 4 TensorFlow 기계 학습 모델 배포 프레임워크
Xiao Li는 특정 배포 프로세스에 대해 더 알고 싶었습니다. 저는 우연히 TensorFlow의 배포 프레임워크를 사용하는 프로젝트를 진행하고 있었습니다. , 그래서 그에게 과정을 보여주세요. 이 프로젝트는 안드로이드 폰에 '고양이와 개 인식' 모델을 배포하는 것입니다. IOS, Android, Raspberry Pi 및 브라우저는 모두 클라이언트이므로 컴퓨팅 리소스를 서버의 컴퓨팅 리소스와 비교할 수 없습니다. 특히 모바일 애플리케이션은 경량화, 짧은 지연 시간, 고효율, 개인 정보 보호, 절전 등의 특성을 갖고 있으므로 TensorFlow는 특별히 배포를 설계하고 TensorFlow Lite를 사용하여 배포합니다.
TensorFlow Lite를 사용하여 모델을 배포하려면 다음 세 단계가 필요합니다.
첫 번째 단계에서는 모델 학습을 완료했습니다. 두 번째 단계에서는 생성된 모델을 TensorFlow Lite가 인식하고 사용할 수 있는 패턴 형식으로 변환합니다. 앞서 언급한 바와 같이, 해당 모델을 모바일 단말에서 사용하는 경우에는 여러 가지 사항을 고려해야 하므로 모바일 단말용으로 특수한 파일 포맷을 생성해야 한다. 세 번째 단계는 변환된 TensorFlow Lite 파일을 모바일 인터프리터에 로드하고 실행하는 것입니다.
우리는 모델 배포에 중점을 두기 때문에 모델 학습의 첫 번째 단계를 일시적으로 건너뛰었습니다. 이는 이미 모델을 학습했다는 의미입니다. 모델 변환의 두 번째 단계는 그림 5를 참조하세요. TensorFlow 모델은 Converter를 통해 접미사 ".tflite"가 붙은 모델 파일로 변환된 후 다양한 플랫폼에 게시되고 각 플랫폼의 인터프리터를 통해 처리됩니다. 설명하고로드하십시오.
그림 5 TensorFlow Lite 모델 변환 아키텍처
TensorFlow Lite의 아키텍처는 위에 소개되어 있습니다. 여기서는 모델을 TensorFlow 모델로 저장하고 변환해야 합니다. 그림 6에서 볼 수 있듯이 TensorFlow에서 save_model.save 메서드를 호출하여 지정된 디렉터리에 모델(학습된 모델)을 저장합니다.
그림 6 TensorFlow 모델 저장
모델을 저장한 후 모델을 변환할 차례입니다. 그림 7과 같이 TensorFlow Lite의 TFLiteConverter 패키지에서 from_saved_model 메서드를 호출하여 변환기(모델 변환기) 인스턴스를 만든 다음 변환기에서 변환 메소드를 호출하여 모델을 변환하고 변환된 파일을 지정된 디렉토리에 저장합니다.
그림 7 tflite 모델 형식으로 변환
이 예제는 Android 시스템의 모델 배포를 위한 것이므로 TensorFlow Lite의 종속성을 Android에 도입해야 합니다. 그림 8과 같이 TensorFlow Lite의 종속성을 도입하고 aaptOptions에서 noCompress를 "tflite"로 설정합니다. 즉, "tflite"가 포함된 파일은 압축이 설정되면 Android 시스템이 tflite 파일을 인식하지 못할 수 있습니다.
그림 8 프로젝트에 도입된 TensorFlow Lite의 종속성
종속성을 구성한 후 그림 9와 같이 변환된 tflite 파일을 자산 파일에 복사합니다. 이 파일은 나중에 로드됩니다. 머신러닝을 수행하는 것입니다.
그림 9 tflite 파일 추가
tflite 파일을 추가한 후 "고양이와 개" 사진을 분류하는 Classifier 분류기를 생성하겠습니다. 그림 10에 표시된 것처럼 인터프리터는 Classifer의 init에서 초기화되고 loadModuleFlie 메소드가 호출되어 tflite 파일을 로드하며 분류 레이블(labelList)이 지정됩니다. 여기서 레이블은 "cat dog"입니다.
그림 10 인터프리터 초기화
분류자를 생성한 후 고양이와 개 분류 모델을 사용하여 이미지를 식별합니다. 즉, Classifier 클래스에서는 그림 10과 같이 ConvertBitmapToByteBuffer 메소드의 입력 매개변수가 비트맵입니다. 이는 우리가 입력한 고양이와 강아지의 그림이 이 메소드에서 변환된다는 점에 유의하세요. for 루프에서 녹색 및 파란색 채널을 변환하고 변환 결과를 byteBuffer에 넣고 반환합니다. recoginzeImage 메소드는 ConvertBitmapToByteBuffer를 호출하고 인터프리터의 run 메소드를 사용하여 이미지 인식 작업, 즉 기계 학습 모델을 사용하여 고양이와 강아지의 이미지를 식별하는 작업을 수행합니다.
그림 11 사진 인식
위의 그래픽 변환 과정은 너무 추상적이므로 그림 12와 같이 구체적으로 만들어 보겠습니다. 우리가 입력하는 이미지는 그림의 왼쪽 상단에 있는 395*500 이미지이며, 이는 imageView의 이미지를 비트맵 형식으로 변환합니다. 모델 입력에는 224*224 형식이 필요하므로 변환이 필요합니다. 다음으로 픽셀을 224*224 ByteBuffer 배열에 넣어 저장하고 마지막으로 RGB(red, green, blue) 픽셀을 모델의 입력 매개변수로 정규화(255로 나눔)합니다.
그림 12 입력 이미지 변환 과정
이제 머신러닝 모델의 로딩과 적용이 완료됩니다. 물론 입력 파일과 레이아웃도 필수입니다. 그림 13과 같이 예측이 필요한 사진(고양이와 개 사진)을 drawable 폴더에 저장합니다. 그런 다음 레이아웃 아래에 Activity_image_classifier.xml 파일을 생성하여 ImageView를 빌드하고 저장합니다.
그림 13 입력 이미지 파일 및 레이아웃 파일
마지막으로 ImageClassifierActivity를 생성하여 이미지를 표시하고 이미지를 식별하는 이벤트에 응답합니다. 그림 14와 같이 initViews 메서드에서 각 이미지의 onclick 이벤트를 바인딩한 다음 onclick 메서드에서 recoginzie Image 메서드를 호출하여 이미지를 식별합니다.
그림 14 onclick에서 이미지 인식 수행
효과를 살펴보겠습니다. 그림 15에 표시된 것처럼 해당 사진을 클릭하면 "개" 프롬프트가 표시되어 예측 결과를 나타냅니다.
그림 15 데모 효과
전체 프로세스를 검토하는 것은 복잡하지 않습니다. TensorFlow 라이트 배포 모델을 다음 단계로 요약합니다.
TensorFlow 모델 배포 기술을 더 배우고 싶은 학생은 TensorFlow의 공식 과정을 배우고, Chinese University MOOC에 계정을 등록하고, 무료로 학습할 수 있습니다: https://www.php. /link/1f5f6ad95cc908a20bb7e30ee28a5958
Google 개발자 전문가가 제공하는 온라인 배포 설명과 Q&A도 매우 좋습니다. TensorFlow 배포 기능에 대한 사전 이해를 원하는 학생이라면 주목해 보시기 바랍니다. https://www.php.cn/link/e046ede63264b10130007afca077877f
머신러닝 모델 배포에 대한 설명을 듣고 TensorFlow 배포 과정을 이해한 후 Xiao Li는 실제 배포를 시도해보고 싶은 마음이 더욱 커졌습니다. TensorFlow를 사용한 배포 프로세스는 논리적으로 명확하고, 방법도 간단하고 구현하기 쉽고, 경력 3~5년의 개발자가 시작하기 쉽다고 생각합니다. 또한 TensorFlow는 머신러닝에 대한 기초가 전혀 없는 초보자에게 적합한 "TensorFlow 입문 실무 과정"을 공식적으로 제공합니다. 저자51CTO 커뮤니티 편집자이자 수석 건축가인 Cui Hao는 20년의 건축 경력을 가지고 있습니다. 그는 한때 HP에서 기술 전문가로 근무했으며 여러 기계 학습 프로젝트에 참여했으며 기계 학습, NLP 등에 관한 20개 이상의 인기 기술 기사를 작성하고 번역했습니다. "분산 아키텍처의 원리와 실제"의 저자입니다.
위 내용은 기계 학습 모델을 배포하는 방법을 모르시나요? 15장의 사진을 통해 TensorFlow 배포 프레임워크를 살펴보세요!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!