tetsuo.yamashita
2022年2月24日 16時37分
「Armadillo Base OS 開発ガイド 6.2.2 推論モデルの生成」に記載の google colab 上の notebook で転移学習+TF Lite モデルの生成に取り組んでいますが、現在、以下のようなエラーにて途中で止まります。
御社側でも同様の現象が確認できるか、また、対応方法について教えていただけませんでしょうか?
1. ライブラリ群のインポート
import cv2 のところでエラーになるようです。
--------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-7-06c3fa389423> in <module>() 10 import shutil 11 import copy ---> 12 import cv2 13 import numpy as np 14 from six import BytesIO 3 frames /usr/local/lib/python3.7/dist-packages/cv2/__init__.py in <module>() 7 8 from .cv2 import * ----> 9 from .cv2 import _registerMatType 10 from . import mat_wrapper 11 from . import gapi ImportError: cannot import name '_registerMatType' from 'cv2.cv2' (/usr/local/lib/python3.7/dist-packages/cv2/cv2.cpython-37m-x86_64-linux-gnu.so) --------------------------------------------------------------------------- NOTE: If your import is failing due to a missing package, you can manually install dependencies using either !pip or !apt. To view examples of installing some common dependencies, click the "Open Examples" button below. ---------------------------------------------------------------------------
こちらは、このセルを実行する前に
!pip install "opencv-python-headless<4.3"
を実行することでエラーが出なくなりました。
(参照 https://github.com/opencv/opencv-python/issues/591)
2. tfrecord 形式に変換 - 学習用データセットを tfrecord 化
label_map.pbtxt が /02_annotaions/ に無い旨でエラーが出ます。
これは事前作成済の label_map.pbtxt を /02_annotations/ に置くことで解決しました。
Traceback (most recent call last): File "models/research/object_detection/dataset_tools/create_pascal_tf_record.py", line 185, in <module> tf.app.run() File "/usr/local/lib/python3.7/dist-packages/tensorflow/python/platform/app.py", line 36, in run _run(main=main, argv=argv, flags_parser=_parse_flags_tolerate_undef) File "/usr/local/lib/python3.7/dist-packages/absl/app.py", line 312, in run _run_main(main, args) File "/usr/local/lib/python3.7/dist-packages/absl/app.py", line 258, in _run_main sys.exit(main(argv)) File "models/research/object_detection/dataset_tools/create_pascal_tf_record.py", line 160, in main label_map_dict = label_map_util.get_label_map_dict(FLAGS.label_map_path) File "/usr/local/lib/python3.7/dist-packages/object_detection/utils/label_map_util.py", line 201, in get_label_map_dict label_map = load_labelmap(label_map_path_or_proto) File "/usr/local/lib/python3.7/dist-packages/object_detection/utils/label_map_util.py", line 168, in load_labelmap label_map_string = fid.read() File "/usr/local/lib/python3.7/dist-packages/tensorflow/python/lib/io/file_io.py", line 114, in read self._preread_check() File "/usr/local/lib/python3.7/dist-packages/tensorflow/python/lib/io/file_io.py", line 77, in _preread_check compat.path_to_str(self.__name), 1024 * 512) tensorflow.python.framework.errors_impl.NotFoundError: /content/working/02_annotations/label_map.pbtxt; No such file or directory
label_map.pbtxt を配置後に実行してみると、次は ValueError が出てしまいます。
I0224 07:44:47.120877 140626652034944 create_pascal_tf_record.py:163] Reading from PASCAL VOC2007 dataset. I0224 07:44:47.122071 140626652034944 create_pascal_tf_record.py:170] On image 0 of 57 /usr/local/lib/python3.7/dist-packages/object_detection/utils/dataset_util.py:83: FutureWarning: The behavior of this method will change in future versions. Use specific 'len(elem)' or 'elem is not None' test instead. if not xml: Traceback (most recent call last): File "models/research/object_detection/dataset_tools/create_pascal_tf_record.py", line 185, in <module> tf.app.run() File "/usr/local/lib/python3.7/dist-packages/tensorflow/python/platform/app.py", line 36, in run _run(main=main, argv=argv, flags_parser=_parse_flags_tolerate_undef) File "/usr/local/lib/python3.7/dist-packages/absl/app.py", line 312, in run _run_main(main, args) File "/usr/local/lib/python3.7/dist-packages/absl/app.py", line 258, in _run_main sys.exit(main(argv)) File "models/research/object_detection/dataset_tools/create_pascal_tf_record.py", line 178, in main FLAGS.ignore_difficult_instances) File "models/research/object_detection/dataset_tools/create_pascal_tf_record.py", line 92, in dict_to_tf_example raise ValueError('Image format not JPEG') ValueError: Image format not JPEG
しかし working/train.record は生成されていたので、そのまま進めました。
このエラーに対して何かできることを教えていただけませんでしょうか?
3. 学習開始
学習開始すると「DNN library is not found.」で止まってしまいます。
これについて、御社でも確認できるか、また、解消方法について教えていただけませんでしょうか?
2022-02-24 07:50:34.218309: W tensorflow/core/common_runtime/gpu/gpu_bfc_allocator.cc:39] Overriding allow_growth setting because the TF_FORCE_GPU_ALLOW_GROWTH environment variable is set. Original config value was 0. INFO:tensorflow:Using MirroredStrategy with devices ('/job:localhost/replica:0/task:0/device:GPU:0',) I0224 07:50:34.224514 139897355097984 mirrored_strategy.py:374] Using MirroredStrategy with devices ('/job:localhost/replica:0/task:0/device:GPU:0',) INFO:tensorflow:Maybe overwriting train_steps: 1000 I0224 07:50:34.229172 139897355097984 config_util.py:552] Maybe overwriting train_steps: 1000 INFO:tensorflow:Maybe overwriting use_bfloat16: False I0224 07:50:34.229360 139897355097984 config_util.py:552] Maybe overwriting use_bfloat16: False WARNING:tensorflow:From /usr/local/lib/python3.7/dist-packages/object_detection/model_lib_v2.py:564: StrategyBase.experimental_distribute_datasets_from_function (from tensorflow.python.distribute.distribute_lib) is deprecated and will be removed in a future version. Instructions for updating: rename to distribute_datasets_from_function W0224 07:50:34.412206 139897355097984 deprecation.py:343] From /usr/local/lib/python3.7/dist-packages/object_detection/model_lib_v2.py:564: StrategyBase.experimental_distribute_datasets_from_function (from tensorflow.python.distribute.distribute_lib) is deprecated and will be removed in a future version. Instructions for updating: rename to distribute_datasets_from_function INFO:tensorflow:Reading unweighted datasets: ['/content/working/train.record'] I0224 07:50:34.418149 139897355097984 dataset_builder.py:163] Reading unweighted datasets: ['/content/working/train.record'] INFO:tensorflow:Reading record datasets for input file: ['/content/working/train.record'] I0224 07:50:34.418397 139897355097984 dataset_builder.py:80] Reading record datasets for input file: ['/content/working/train.record'] INFO:tensorflow:Number of filenames to read: 1 I0224 07:50:34.418554 139897355097984 dataset_builder.py:81] Number of filenames to read: 1 WARNING:tensorflow:num_readers has been reduced to 1 to match input file shards. W0224 07:50:34.418692 139897355097984 dataset_builder.py:88] num_readers has been reduced to 1 to match input file shards. WARNING:tensorflow:From /usr/local/lib/python3.7/dist-packages/object_detection/builders/dataset_builder.py:105: parallel_interleave (from tensorflow.python.data.experimental.ops.interleave_ops) is deprecated and will be removed in a future version. Instructions for updating: Use `tf.data.Dataset.interleave(map_func, cycle_length, block_length, num_parallel_calls=tf.data.AUTOTUNE)` instead. If sloppy execution is desired, use `tf.data.Options.deterministic`. W0224 07:50:34.421730 139897355097984 deprecation.py:343] From /usr/local/lib/python3.7/dist-packages/object_detection/builders/dataset_builder.py:105: parallel_interleave (from tensorflow.python.data.experimental.ops.interleave_ops) is deprecated and will be removed in a future version. Instructions for updating: Use `tf.data.Dataset.interleave(map_func, cycle_length, block_length, num_parallel_calls=tf.data.AUTOTUNE)` instead. If sloppy execution is desired, use `tf.data.Options.deterministic`. WARNING:tensorflow:From /usr/local/lib/python3.7/dist-packages/object_detection/builders/dataset_builder.py:237: DatasetV1.map_with_legacy_function (from tensorflow.python.data.ops.dataset_ops) is deprecated and will be removed in a future version. Instructions for updating: Use `tf.data.Dataset.map() W0224 07:50:34.446030 139897355097984 deprecation.py:343] From /usr/local/lib/python3.7/dist-packages/object_detection/builders/dataset_builder.py:237: DatasetV1.map_with_legacy_function (from tensorflow.python.data.ops.dataset_ops) is deprecated and will be removed in a future version. Instructions for updating: Use `tf.data.Dataset.map() WARNING:tensorflow:From /usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:1082: sparse_to_dense (from tensorflow.python.ops.sparse_ops) is deprecated and will be removed in a future version. Instructions for updating: Create a `tf.sparse.SparseTensor` and use `tf.sparse.to_dense` instead. W0224 07:50:43.217514 139897355097984 deprecation.py:343] From /usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:1082: sparse_to_dense (from tensorflow.python.ops.sparse_ops) is deprecated and will be removed in a future version. Instructions for updating: Create a `tf.sparse.SparseTensor` and use `tf.sparse.to_dense` instead. WARNING:tensorflow:From /usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:1082: sample_distorted_bounding_box (from tensorflow.python.ops.image_ops_impl) is deprecated and will be removed in a future version. Instructions for updating: `seed2` arg is deprecated.Use sample_distorted_bounding_box_v2 instead. W0224 07:50:47.361238 139897355097984 deprecation.py:343] From /usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:1082: sample_distorted_bounding_box (from tensorflow.python.ops.image_ops_impl) is deprecated and will be removed in a future version. Instructions for updating: `seed2` arg is deprecated.Use sample_distorted_bounding_box_v2 instead. WARNING:tensorflow:From /usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:1082: to_float (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version. Instructions for updating: Use `tf.cast` instead. W0224 07:50:50.862764 139897355097984 deprecation.py:343] From /usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:1082: to_float (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version. Instructions for updating: Use `tf.cast` instead. /usr/local/lib/python3.7/dist-packages/keras/backend.py:450: UserWarning: `tf.keras.backend.set_learning_phase` is deprecated and will be removed after 2020-10-11. To update it, simply pass a True/False value to the `training` argument of the `__call__` method of your layer or model. warnings.warn('`tf.keras.backend.set_learning_phase` is deprecated and ' INFO:tensorflow:depth of additional conv before box predictor: 0 I0224 07:51:03.271291 139892860987136 convolutional_keras_box_predictor.py:154] depth of additional conv before box predictor: 0 INFO:tensorflow:depth of additional conv before box predictor: 0 I0224 07:51:03.271718 139892860987136 convolutional_keras_box_predictor.py:154] depth of additional conv before box predictor: 0 INFO:tensorflow:depth of additional conv before box predictor: 0 I0224 07:51:03.271968 139892860987136 convolutional_keras_box_predictor.py:154] depth of additional conv before box predictor: 0 INFO:tensorflow:depth of additional conv before box predictor: 0 I0224 07:51:03.272193 139892860987136 convolutional_keras_box_predictor.py:154] depth of additional conv before box predictor: 0 INFO:tensorflow:depth of additional conv before box predictor: 0 I0224 07:51:03.272479 139892860987136 convolutional_keras_box_predictor.py:154] depth of additional conv before box predictor: 0 INFO:tensorflow:depth of additional conv before box predictor: 0 I0224 07:51:03.272708 139892860987136 convolutional_keras_box_predictor.py:154] depth of additional conv before box predictor: 0 2022-02-24 07:51:23.336147: E tensorflow/stream_executor/cuda/cuda_dnn.cc:361] Loaded runtime CuDNN library: 8.0.5 but source was compiled with: 8.1.0. CuDNN library needs to have matching major version and equal or higher minor version. If using a binary install, upgrade your CuDNN library. If building from sources, make sure the library loaded at runtime is compatible with the version specified during compile configuration. 2022-02-24 07:51:23.337923: W tensorflow/core/framework/op_kernel.cc:1745] OP_REQUIRES failed at conv_ops.cc:1120 : UNIMPLEMENTED: DNN library is not found. Traceback (most recent call last): File "/content/models/research/object_detection/model_main_tf2.py", line 115, in <module> tf.compat.v1.app.run() File "/usr/local/lib/python3.7/dist-packages/tensorflow/python/platform/app.py", line 36, in run _run(main=main, argv=argv, flags_parser=_parse_flags_tolerate_undef) File "/usr/local/lib/python3.7/dist-packages/absl/app.py", line 312, in run _run_main(main, args) File "/usr/local/lib/python3.7/dist-packages/absl/app.py", line 258, in _run_main sys.exit(main(argv)) File "/content/models/research/object_detection/model_main_tf2.py", line 112, in main record_summaries=FLAGS.record_summaries) File "/usr/local/lib/python3.7/dist-packages/object_detection/model_lib_v2.py", line 609, in train_loop train_input, unpad_groundtruth_tensors) File "/usr/local/lib/python3.7/dist-packages/object_detection/model_lib_v2.py", line 400, in load_fine_tune_checkpoint _ensure_model_is_built(model, input_dataset, unpad_groundtruth_tensors) File "/usr/local/lib/python3.7/dist-packages/object_detection/model_lib_v2.py", line 178, in _ensure_model_is_built labels, File "/usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py", line 1312, in run return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs) File "/usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py", line 2888, in call_for_each_replica return self._call_for_each_replica(fn, args, kwargs) File "/usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/mirrored_strategy.py", line 677, in _call_for_each_replica self._container_strategy(), fn, args, kwargs) File "/usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/mirrored_run.py", line 82, in call_for_each_replica return wrapped(args, kwargs) File "/usr/local/lib/python3.7/dist-packages/tensorflow/python/util/traceback_utils.py", line 153, in error_handler raise e.with_traceback(filtered_tb) from None File "/usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/execute.py", line 55, in quick_execute inputs, attrs, num_outputs) tensorflow.python.framework.errors_impl.UnimplementedError: Graph execution error: Detected at node 'ssd_mobile_net_v2_keras_feature_extractor/model/Conv1/Conv2D' defined at (most recent call last): File "/usr/lib/python3.7/threading.py", line 890, in _bootstrap self._bootstrap_inner() File "/usr/lib/python3.7/threading.py", line 926, in _bootstrap_inner self.run() File "/usr/local/lib/python3.7/dist-packages/object_detection/model_lib_v2.py", line 170, in _dummy_computation_fn return _compute_losses_and_predictions_dicts(model, features, labels, File "/usr/local/lib/python3.7/dist-packages/object_detection/model_lib_v2.py", line 123, in _compute_losses_and_predictions_dicts prediction_dict = model.predict( File "/usr/local/lib/python3.7/dist-packages/object_detection/meta_architectures/ssd_meta_arch.py", line 569, in predict if self._feature_extractor.is_keras_model: File "/usr/local/lib/python3.7/dist-packages/object_detection/meta_architectures/ssd_meta_arch.py", line 570, in predict feature_maps = self._feature_extractor(preprocessed_inputs) File "/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py", line 64, in error_handler return fn(*args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/keras/engine/base_layer.py", line 1096, in __call__ outputs = call_fn(inputs, *args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py", line 92, in error_handler return fn(*args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/object_detection/meta_architectures/ssd_meta_arch.py", line 251, in call return self._extract_features(inputs) File "/usr/local/lib/python3.7/dist-packages/object_detection/models/ssd_mobilenet_v2_keras_feature_extractor.py", line 161, in _extract_features image_features = self.classification_backbone( File "/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py", line 64, in error_handler return fn(*args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/keras/engine/base_layer.py", line 1096, in __call__ outputs = call_fn(inputs, *args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py", line 92, in error_handler return fn(*args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/keras/engine/functional.py", line 452, in call inputs, training=training, mask=mask) File "/usr/local/lib/python3.7/dist-packages/keras/engine/functional.py", line 589, in _run_internal_graph outputs = node.layer(*args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py", line 64, in error_handler return fn(*args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/keras/engine/base_layer.py", line 1096, in __call__ outputs = call_fn(inputs, *args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py", line 92, in error_handler return fn(*args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/keras/layers/convolutional.py", line 248, in call outputs = self.convolution_op(inputs, self.kernel) File "/usr/local/lib/python3.7/dist-packages/keras/layers/convolutional.py", line 240, in convolution_op name=self.__class__.__name__) Node: 'ssd_mobile_net_v2_keras_feature_extractor/model/Conv1/Conv2D' DNN library is not found. [[{{node ssd_mobile_net_v2_keras_feature_extractor/model/Conv1/Conv2D}}]] [Op:__inference__dummy_computation_fn_21524]
移行のセルはまだ実行できておりませんが、以上の 3 つについて教えていただけまでんでしょうか?
また、よろしければ、このノートブックで最終的に得られる TFLite モデルのファイルを頂くことは可能でしょうか?
(Armadillo-IoT G4 でのサンプルアプリケーションの作成の試行自体は TFLite モデルのファイルがあれば進められそうなので)
よろしくお願いいたします。
コメント
tetsuo.yamashita
> > また、よろしければ、このノートブックで最終的に得られる TFLite モデルのファイルを頂くことは可能でしょうか?
> > (Armadillo-IoT G4 でのサンプルアプリケーションの作成の試行自体は TFLite モデルのファイルがあれば進められそうなので)
>
> 取り急ぎ上記への回答のみお送りします。
> 開発ガイド内で使用しているファイルは以下からダウンロード出来ます。
> https://download.atmark-techno.com/armadillo-iot-g4/example/armadillo-b…
> 上記リンクのread_meter.tar.gzをダウンロード・展開することで、
> model.tfliteが得られます。
> そのmodel.tfliteが、当方で生成したTFLiteファイルですのでお試しください。
> もしくは、上記リンクからコンテナイメージをダウンロードし、そちらを
> podman loadすることでもサンプルを手軽に動かすことが可能です。
> 詳しい手順は開発ガイドの以下をご参照ください。
> https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-base-os-dev…
回答ありがとうございます。
こちらのファイルでサンプルアプリの試行を進めてみます。
> その他の頂いた質問に関しましては、当方で確認でき次第回答いたします。
かしこまりました。よろしくお願いいたします。
at_akihito.irie
入江です。
> 1. ライブラリ群のインポート
> import cv2 のところでエラーになるようです。
当方でも同様のエラーが発生しました。
本Colab Notebook作成時には発生しなかったエラーですが、現在は発生するようです。
現在のところは、お客様が行った対処法で問題ないはずです。
Colab Notebookは今後修正します。
> 2. tfrecord 形式に変換 - 学習用データセットを tfrecord 化
> label_map.pbtxt が /02_annotaions/ に無い旨でエラーが出ます。
こちらについては、Armadillo Base OS開発ガイド内で作成する手順があります。
わかりにくいかもしれませんが、Colab Notebook内の「教師データを用意」セク
ションで、label_map.pbtxtを.xmlファイルと共に02_annotations/内に配置す
るよう記述しています。
そのため、お客様のご対応のとおり、事前作成済の label_map.pbtxtを
02_annotations/に置いていただく対処で問題ありません。
こちらについても02_annotationsに配置するファイルがわかりやすくなるよう
な修正を今後行います。
> label_map.pbtxt を配置後に実行してみると、次は ValueError が出てしまいます。
こちらについては、お客様がご用意された画像ファイルにjpegフォーマットで
ない画像が紛れ込んでいると起こるエラーです。
今一度、用意した画像データをご確認ください。
> 学習開始すると「DNN library is not found.」で止まってしまいます。
こちらについては、tensorflowのバージョンの差異によって発生する現象のよ
うです。Colab Notebook作成当初は2.7.0で動作しましたが、現在は2.8.0にて
動作するようです。
「TensorFlowのインストール」セクションにて、デフォルトではv2.7.0をイン
ストールしていますが、以下のように2.8.0に変更することで転移学習ができ
ることを確認しました。
!pip install -U --pre tensorflow=="2.7.0"
↓
!pip install -U --pre tensorflow=="2.8.0"
こちらについても後日Colab Notebookを修正いたします。
ご迷惑おかけしまして申し訳ございません。
以上、よろしくお願いいたします。
tetsuo.yamashita
at_akihito.irie
at_akihito.irie
2022年2月24日 17時16分
入江です。
> また、よろしければ、このノートブックで最終的に得られる TFLite モデルのファイルを頂くことは可能でしょうか?
> (Armadillo-IoT G4 でのサンプルアプリケーションの作成の試行自体は TFLite モデルのファイルがあれば進められそうなので)
取り急ぎ上記への回答のみお送りします。
開発ガイド内で使用しているファイルは以下からダウンロード出来ます。
https://download.atmark-techno.com/armadillo-iot-g4/example/armadillo-b…
上記リンクのread_meter.tar.gzをダウンロード・展開することで、
model.tfliteが得られます。
そのmodel.tfliteが、当方で生成したTFLiteファイルですのでお試しください。
もしくは、上記リンクからコンテナイメージをダウンロードし、そちらを
podman loadすることでもサンプルを手軽に動かすことが可能です。
詳しい手順は開発ガイドの以下をご参照ください。
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-base-os-dev…
その他の頂いた質問に関しましては、当方で確認でき次第回答いたします。
以上、よろしくお願いいたします。