TensorFlow lite를 이용한 실시간 수화 감지 안드로이드 애플리케이션

이 기사에서는 TensorFlow 모델을 tflite 모델로 변환하여 실시간 수화 감지 앱에서 사용할 것입니다. 우리는 이 기사에서 훈련 부분을 다루지 않을 것입니다. btw 나는 그것을 위해 TensorFlow 객체 감지 API를 사용했습니다. 먼저 모델을 훈련하는 동안 생성한 체크포인트에서 추론 모델을 저장합니다. 이 문서는 TensorFlow lite를 시작하는 사용자에게 유용합니다. 도움이 되길 바랍니다. 기사 끝에 응용 프로그램 링크.


  • 먼저 TensorFlow od API를 사용하여 추론 그래프를 고정합니다.
  • freezing infernce_graphFreezing은 필요한 모든 것(그래프, 가중치 등)을 식별하여 쉽게 사용할 수 있는 단일 파일에 저장하는 프로세스입니다.

    python models/research/object_detection/exporter_main_v2.py \
     --input_type image_tensor \
     --pipeline_config_path /output/exported_models/training/001/pipeline.config \
     --trained_checkpoint_dir output/exported_models/training/001/ \
     --output_directory output/exported_models/inference_model
    


    2. 그런 다음 모델을 tflite 추론 그래프로 변환합니다.

    python models/research/object_detection/export_tflite_graph_tf2.py \
     --pipeline_config_path output/exported_models/inference_model/inference_modelsaved_model/pipeline.config \
     --trained_checkpoint_dir output/exported_models/inference_model/saved_model/checkpint \
     --output_directory output/exported_models/tflite_infernce
    




    3. 그런 다음 그래프를 양자화하고 tflite 모델을 저장합니다.

    # save this file as postQuantization.py
    def representative_dataset():
        for _ in range(100):
          data = np.random.rand(1, 320, 320, 3)
          yield [data.astype(np.float32)]
    
    import numpy as np
    import tensorflow as tf
    
    saved_model_dir = "output/exported_models/tflite_infernce/saved_model"
    
    converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
    converter.allow_custom_ops = True
    converter.optimizations = [tf.lite.Optimize.DEFAULT]
    converter.representative_dataset = representative_dataset
    converter.inference_input_type = tf.uint8  # or tf.uint8
    converter.inference_output_type = tf.uint8  # or tf.uint8
    tflite_quant_model = converter.convert()
    
    with tf.io.gfile.GFile(tf_lite_model_path, 'wb') as f:
      f.write(tflite_quant_model)
    


    4.Android와 함께 사용할 tflite 모델에 메타데이터를 작성합니다.

    ''' Writing MetaData to TfLite Model 
    save it as MetaDataWriterFile.py
    '''
    
    from tflite_support.metadata_writers import object_detector
    from tflite_support.metadata_writers import writer_utils
    from tflite_support import metadata
    
    ObjectDetectorWriter = object_detector.MetadataWriter
    _MODEL_PATH = <tf_lite_model_path>
    _LABEL_FILE = <label_path>
    _SAVE_TO_PATH = <path_to_tflite_path/tflite_with_metadata.tflite>
    
    writer = ObjectDetectorWriter.create_for_inference(
        writer_utils.load_file(_MODEL_PATH), [127.5], [127.5], [_LABEL_FILE])
    writer_utils.save_file(writer.populate(), _SAVE_TO_PATH)
    
    # Verify the populated metadata and associated files.
    displayer = metadata.MetadataDisplayer.with_model_file(_SAVE_TO_PATH)
    print("Metadata populated:")
    print(displayer.get_metadata_json())
    print("Associated file(s) populated:")
    print(displayer.get_packed_associated_file_list())
    


    5. TensorFlow GitHub 계정에서 Tensorflow-examples 리포지토리를 복제합니다.

    탐지를 위해 Android 앱을 사용하려면 Android Studio 및 SDK 파일을 다운로드하십시오.

    git clone https://github.com/tensorflow/examples
    

    tflite_with_metadata.tflite 파일을 복사하고 'detect.tflite and save it in the app/src/main/assets/detect.tflite'로 이름을 바꿉니다.
    TF_OD_API_INPUT_SIZE의 모델을 app\src\main\java\org\tensorflow\lite\examples\detection\DetectorActivity.java에서 320으로 변경합니다.

    가상 장치를 만들거나 휴대폰을 연결하고 개체 감지 응용 프로그램을 성공적으로 실행하십시오.

    이 기사가 도움이 되었다면 좋아요를 누르고 채널을 구독하여 더 많은 비디오와 기사를 만들도록 격려하십시오.

    다음 글에서는 객체 감지를 위해 TensorFlow ssdMobilenet을 학습시키는 방법을 공유하겠습니다.


    GitHub Link with all data including android app
    American_sign_Language_detection

    Download the APK for testing from Google Drive

    Thanks to and Roboflow for the Dataset.

    You can read awesome articles like this on Codeperfectplus

    작성자의 더 많은 기사

    주간 업데이트에 참여하세요.

    좋은 웹페이지 즐겨찾기