| # Copyright 2021 The IREE Authors | |
| # | |
| # Licensed under the Apache License v2.0 with LLVM Exceptions. | |
| # See https://llvm.org/LICENSE.txt for license information. | |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| # This tool handles mirroring tflite testing files from their source to the | |
| # the iree-model-artifacts test bucket. This avoids taking dependency on | |
| # external test files that may change or no longer be available. | |
| # | |
| # To update all files: | |
| # python update_tflite_models.py --file all | |
| # | |
| # To update a specific file: | |
| # python update_tflite_models.py --file posenet_i8_input.jpg | |
| # | |
| # Note you must have write permission to the iree-model-artifacts GCS bucket | |
| # with local gcloud authentication. | |
| from absl import app | |
| from absl import flags | |
| from google.cloud import storage | |
| from google_auth_oauthlib import flow | |
| import tempfile | |
| import urllib | |
| FLAGS = flags.FLAGS | |
| flags.DEFINE_string('file', '', 'file to update') | |
| file_dict = dict({ | |
| "mobilenet_v1.tflite": | |
| "https://tfhub.dev/tensorflow/lite-model/mobilenet_v1_1.0_160/1/default/1?lite-format=tflite", | |
| "posenet_i8.tflite": | |
| "https://tfhub.dev/google/lite-model/movenet/singlepose/lightning/tflite/int8/4?lite-format=tflite", | |
| "posenet_i8_input.jpg": | |
| "https://github.com/tensorflow/examples/raw/master/lite/examples/pose_estimation/raspberry_pi/test_data/image3.jpeg" | |
| }) | |
| BUCKET_NAME = "iree-model-artifacts" | |
| FOLDER_NAME = "tflite-integration-tests" | |
| def upload_model(source, destination, tmpfile): | |
| """Uploads a file to the bucket.""" | |
| urllib.request.urlretrieve(source, tmpfile) | |
| storage_client = storage.Client() | |
| bucket = storage_client.get_bucket(BUCKET_NAME) | |
| blob = bucket.blob("/".join([FOLDER_NAME, destination])) | |
| blob.upload_from_filename(tmpfile) | |
| def main(argv): | |
| tf = tempfile.NamedTemporaryFile() | |
| items = file_dict.items() | |
| if FLAGS.file in file_dict: | |
| items = [(FLAGS.file, file_dict[FLAGS.file])] | |
| elif FLAGS.file != "all": | |
| print('Unknown file to upload: ', "\"" + FLAGS.file + "\"") | |
| exit() | |
| for dst, src in items: | |
| upload_model(src, dst, tf.name) | |
| if __name__ == '__main__': | |
| app.run(main) |