TF

博客介绍了Tensorflow Object Detection API的环境搭建及案例测试,还提及使用TensorFlow训练识别视频图像中物体,给出了安装TensorFlow 1.3.0的命令及相关参考链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

E:\python3.9.13\python.exe E:\pycharm\study\计算机视觉\test2.py 2025-06-22 19:33:45.947350: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`. 2025-06-22 19:33:46.966126: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`. 2025-06-22 19:33:49.689406: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations. To enable the following instructions: SSE3 SSE4.1 SSE4.2 AVX AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags. Saved artifact at 'C:\Users\27731\AppData\Local\Temp\tmpsq8u2rw_'. The following endpoints are available: * Endpoint 'serve' args_0 (POSITIONAL_ONLY): TensorSpec(shape=(None, 224, 224, 3), dtype=tf.float32, name='input_layer_1') Output Type: TensorSpec(shape=(None, 5), dtype=tf.float32, name=None) Captures: 2723523238368: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523274704: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523275760: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523272944: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523274528: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523368912: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523401328: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523402384: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523399744: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523401152: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523417712: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523441936: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523442992: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523419472: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523441760: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523444576: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543670848: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543671904: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523459200: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523460960: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543705376: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543725504: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543726560: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543707136: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543725328: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543746336: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543758272: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543759328: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543748096: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543758096: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543760560: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543806192: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543807248: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543787824: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543806016: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543809712: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543843056: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543844112: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543824688: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543842880: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543846576: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543888112: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543889168: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543873840: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543887936: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543891808: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543929248: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543930304: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543910880: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543929072: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543968048: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543984080: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543985136: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543982144: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543983904: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544000816: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544025040: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544026096: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544023104: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544024864: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544040544: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544060672: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544061728: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544042304: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544060496: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544093792: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544101632: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544102688: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544095552: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544101456: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544138848: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544146688: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544147744: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544140608: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544146512: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544176064: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544204384: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544205440: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544177824: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544204208: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544229312: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544245344: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544246400: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544231072: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544245168: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544262080: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544290400: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544291456: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544263840: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544290224: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544311584: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544331712: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544332768: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544313344: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544331536: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544350032: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544370160: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544391744: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544368224: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544369984: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544395088: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544411120: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544432704: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544409184: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544410944: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544434816: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544450848: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544451904: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544449264: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544450672: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544488064: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544504096: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544505152: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544502512: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544503920: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544524928: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544536864: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544537920: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544535280: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544536688: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544570336: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544586368: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544587424: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544584432: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544586192: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544607200: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544627328: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544628384: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544625392: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544627152: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544652256: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544668288: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544669344: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544666352: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544668112: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544697664: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544721888: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544722944: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544719952: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544721712: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544738624: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544758752: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544759808: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544756816: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544758576: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544787776: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544807904: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544808960: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544805968: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544807728: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544829088: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544853312: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544867056: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544851376: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544853136: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544870048: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544894272: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544920304: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544892336: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544894096: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544923296: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544939328: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544957168: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544937392: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544939152: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544958928: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544991344: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544992400: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544989760: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544991168: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545008080: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545036400: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545037456: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545034816: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545036224: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545053136: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545073264: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545074320: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545071680: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545073088: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545102640: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545110480: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545111536: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545108544: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545110304: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545139504: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545159632: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545160688: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545157696: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545159456: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545184560: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545200592: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545201648: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545198656: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545200416: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545213584: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561830704: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561831760: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561828768: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561830528: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561856336: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561894656: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561894832: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561879504: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561881264: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561897296: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561935616: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561935792: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561920464: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561922224: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561937904: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561958032: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561984064: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561956096: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561957856: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561987056: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723562003088: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723562020928: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723562001152: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723562002912: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723562023920: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723562048144: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568492608: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723562046208: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723562047968: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568495952: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568511984: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568529472: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568510048: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568511808: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568532816: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568557040: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568578624: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568555104: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568556864: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568581968: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568606192: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568619584: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568604256: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568606016: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568623280: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568660720: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568660896: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568645568: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568647328: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568664240: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568705776: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568705952: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568698816: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568700576: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568709296: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723577209072: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723577209248: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568731584: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568733344: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723577211360: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723577227392: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723577228448: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723577225456: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723577227216: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723451363392: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523040000: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723521543328: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723521531744: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723521487968: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723521486912: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723522242512: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723522242688: TensorSpec(shape=(), dtype=tf.resource, name=None) E:\python3.9.13\lib\site-packages\tensorflow\lite\python\convert.py:854: UserWarning: Statistics for quantized inputs were expected, but not specified; continuing anyway. warnings.warn( WARNING: All log messages before absl::InitializeLog() is called are written to STDERR W0000 00:00:1750592036.782204 18108 tf_tfl_flatbuffer_helpers.cc:365] Ignored output_format. W0000 00:00:1750592036.782307 18108 tf_tfl_flatbuffer_helpers.cc:368] Ignored drop_control_dependency. 2025-06-22 19:33:56.783212: I tensorflow/cc/saved_model/reader.cc:83] Reading SavedModel from: C:\Users\27731\AppData\Local\Temp\tmpsq8u2rw_ 2025-06-22 19:33:56.795014: I tensorflow/cc/saved_model/reader.cc:52] Reading meta graph with tags { serve } 2025-06-22 19:33:56.795037: I tensorflow/cc/saved_model/reader.cc:147] Reading SavedModel debug info (if present) from: C:\Users\27731\AppData\Local\Temp\tmpsq8u2rw_ I0000 00:00:1750592036.912750 18108 mlir_graph_optimization_pass.cc:425] MLIR V1 optimization pass is not enabled 2025-06-22 19:33:56.934221: I tensorflow/cc/saved_model/loader.cc:236] Restoring SavedModel bundle. 2025-06-22 19:33:57.833679: I tensorflow/cc/saved_model/loader.cc:220] Running initialization op on SavedModel bundle at path: C:\Users\27731\AppData\Local\Temp\tmpsq8u2rw_ 2025-06-22 19:33:58.061998: I tensorflow/cc/saved_model/loader.cc:471] SavedModel load for tags { serve }; Status: success: OK. Took 1278790 microseconds. 2025-06-22 19:33:58.314124: I tensorflow/compiler/mlir/tensorflow/utils/dump_mlir_util.cc:269] disabling MLIR crash reproducer, set env var `MLIR_CRASH_REPRODUCER_DIRECTORY` to enable. fully_quantize: 0, inference_type: 6, input_inference_type: UINT8, output_inference_type: UINT8 E:\python3.9.13\lib\site-packages\tensorflow\lite\python\interpreter.py:457: UserWarning: Warning: tf.lite.Interpreter is deprecated and is scheduled for deletion in TF 2.20. Please use the LiteRT interpreter from the ai_edge_litert package. See the [migration guide](https://ai.google.dev/edge/litert/migration) for details. warnings.warn(_INTERPRETER_DELETION_WARNING) INFO: Created TensorFlow Lite XNNPACK delegate for CPU. Traceback (most recent call last): File "E:\pycharm\study\计算机视觉\test2.py", line 529, in <module> tflite_deployer = ObjectRecognitionDeployer( File "E:\pycharm\study\计算机视觉\test2.py", line 25, in __init__ self.load_tflite_model(model_path) File "E:\pycharm\study\计算机视觉\test2.py", line 40, in load_tflite_model self.print_model_metadata(model_path) File "E:\pycharm\study\计算机视觉\test2.py", line 44, in print_model_metadata displayer = metadata.MetadataDisplayer.with_model_file(model_path) File "E:\python3.9.13\lib\site-packages\tensorflow_lite_support\metadata\python\metadata.py", line 719, in with_model_file return cls.with_model_buffer(f.read()) File "E:\python3.9.13\lib\site-packages\tensorflow_lite_support\metadata\python\metadata.py", line 735, in with_model_buffer raise ValueError("The model does not have metadata.") ValueError: The model does not have metadata.E:\python3.9.13\python.exe E:\pycharm\study\计算机视觉\test2.py 2025-06-22 19:33:45.947350: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`. 2025-06-22 19:33:46.966126: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`. 2025-06-22 19:33:49.689406: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations. To enable the following instructions: SSE3 SSE4.1 SSE4.2 AVX AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags. Saved artifact at 'C:\Users\27731\AppData\Local\Temp\tmpsq8u2rw_'. The following endpoints are available: * Endpoint 'serve' args_0 (POSITIONAL_ONLY): TensorSpec(shape=(None, 224, 224, 3), dtype=tf.float32, name='input_layer_1') Output Type: TensorSpec(shape=(None, 5), dtype=tf.float32, name=None) Captures: 2723523238368: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523274704: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523275760: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523272944: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523274528: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523368912: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523401328: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523402384: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523399744: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523401152: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523417712: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523441936: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523442992: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523419472: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523441760: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523444576: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543670848: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543671904: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523459200: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523460960: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543705376: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543725504: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543726560: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543707136: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543725328: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543746336: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543758272: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543759328: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543748096: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543758096: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543760560: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543806192: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543807248: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543787824: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543806016: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543809712: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543843056: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543844112: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543824688: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543842880: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543846576: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543888112: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543889168: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543873840: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543887936: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543891808: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543929248: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543930304: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543910880: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543929072: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543968048: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543984080: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543985136: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543982144: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723543983904: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544000816: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544025040: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544026096: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544023104: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544024864: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544040544: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544060672: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544061728: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544042304: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544060496: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544093792: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544101632: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544102688: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544095552: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544101456: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544138848: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544146688: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544147744: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544140608: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544146512: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544176064: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544204384: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544205440: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544177824: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544204208: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544229312: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544245344: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544246400: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544231072: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544245168: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544262080: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544290400: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544291456: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544263840: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544290224: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544311584: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544331712: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544332768: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544313344: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544331536: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544350032: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544370160: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544391744: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544368224: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544369984: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544395088: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544411120: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544432704: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544409184: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544410944: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544434816: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544450848: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544451904: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544449264: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544450672: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544488064: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544504096: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544505152: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544502512: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544503920: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544524928: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544536864: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544537920: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544535280: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544536688: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544570336: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544586368: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544587424: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544584432: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544586192: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544607200: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544627328: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544628384: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544625392: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544627152: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544652256: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544668288: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544669344: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544666352: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544668112: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544697664: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544721888: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544722944: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544719952: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544721712: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544738624: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544758752: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544759808: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544756816: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544758576: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544787776: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544807904: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544808960: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544805968: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544807728: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544829088: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544853312: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544867056: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544851376: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544853136: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544870048: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544894272: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544920304: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544892336: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544894096: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544923296: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544939328: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544957168: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544937392: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544939152: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544958928: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544991344: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544992400: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544989760: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723544991168: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545008080: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545036400: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545037456: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545034816: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545036224: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545053136: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545073264: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545074320: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545071680: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545073088: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545102640: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545110480: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545111536: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545108544: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545110304: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545139504: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545159632: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545160688: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545157696: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545159456: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545184560: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545200592: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545201648: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545198656: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545200416: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723545213584: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561830704: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561831760: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561828768: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561830528: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561856336: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561894656: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561894832: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561879504: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561881264: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561897296: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561935616: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561935792: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561920464: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561922224: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561937904: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561958032: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561984064: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561956096: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561957856: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723561987056: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723562003088: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723562020928: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723562001152: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723562002912: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723562023920: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723562048144: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568492608: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723562046208: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723562047968: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568495952: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568511984: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568529472: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568510048: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568511808: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568532816: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568557040: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568578624: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568555104: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568556864: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568581968: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568606192: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568619584: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568604256: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568606016: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568623280: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568660720: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568660896: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568645568: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568647328: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568664240: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568705776: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568705952: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568698816: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568700576: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568709296: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723577209072: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723577209248: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568731584: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723568733344: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723577211360: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723577227392: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723577228448: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723577225456: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723577227216: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723451363392: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723523040000: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723521543328: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723521531744: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723521487968: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723521486912: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723522242512: TensorSpec(shape=(), dtype=tf.resource, name=None) 2723522242688: TensorSpec(shape=(), dtype=tf.resource, name=None) E:\python3.9.13\lib\site-packages\tensorflow\lite\python\convert.py:854: UserWarning: Statistics for quantized inputs were expected, but not specified; continuing anyway. warnings.warn( WARNING: All log messages before absl::InitializeLog() is called are written to STDERR W0000 00:00:1750592036.782204 18108 tf_tfl_flatbuffer_helpers.cc:365] Ignored output_format. W0000 00:00:1750592036.782307 18108 tf_tfl_flatbuffer_helpers.cc:368] Ignored drop_control_dependency. 2025-06-22 19:33:56.783212: I tensorflow/cc/saved_model/reader.cc:83] Reading SavedModel from: C:\Users\27731\AppData\Local\Temp\tmpsq8u2rw_ 2025-06-22 19:33:56.795014: I tensorflow/cc/saved_model/reader.cc:52] Reading meta graph with tags { serve } 2025-06-22 19:33:56.795037: I tensorflow/cc/saved_model/reader.cc:147] Reading SavedModel debug info (if present) from: C:\Users\27731\AppData\Local\Temp\tmpsq8u2rw_ I0000 00:00:1750592036.912750 18108 mlir_graph_optimization_pass.cc:425] MLIR V1 optimization pass is not enabled 2025-06-22 19:33:56.934221: I tensorflow/cc/saved_model/loader.cc:236] Restoring SavedModel bundle. 2025-06-22 19:33:57.833679: I tensorflow/cc/saved_model/loader.cc:220] Running initialization op on SavedModel bundle at path: C:\Users\27731\AppData\Local\Temp\tmpsq8u2rw_ 2025-06-22 19:33:58.061998: I tensorflow/cc/saved_model/loader.cc:471] SavedModel load for tags { serve }; Status: success: OK. Took 1278790 microseconds. 2025-06-22 19:33:58.314124: I tensorflow/compiler/mlir/tensorflow/utils/dump_mlir_util.cc:269] disabling MLIR crash reproducer, set env var `MLIR_CRASH_REPRODUCER_DIRECTORY` to enable. fully_quantize: 0, inference_type: 6, input_inference_type: UINT8, output_inference_type: UINT8 E:\python3.9.13\lib\site-packages\tensorflow\lite\python\interpreter.py:457: UserWarning: Warning: tf.lite.Interpreter is deprecated and is scheduled for deletion in TF 2.20. Please use the LiteRT interpreter from the ai_edge_litert package. See the [migration guide](https://ai.google.dev/edge/litert/migration) for details. warnings.warn(_INTERPRETER_DELETION_WARNING) INFO: Created TensorFlow Lite XNNPACK delegate for CPU. Traceback (most recent call last): File "E:\pycharm\study\计算机视觉\test2.py", line 529, in <module> tflite_deployer = ObjectRecognitionDeployer( File "E:\pycharm\study\计算机视觉\test2.py", line 25, in __init__ self.load_tflite_model(model_path) File "E:\pycharm\study\计算机视觉\test2.py", line 40, in load_tflite_model self.print_model_metadata(model_path) File "E:\pycharm\study\计算机视觉\test2.py", line 44, in print_model_metadata displayer = metadata.MetadataDisplayer.with_model_file(model_path) File "E:\python3.9.13\lib\site-packages\tensorflow_lite_support\metadata\python\metadata.py", line 719, in with_model_file return cls.with_model_buffer(f.read()) File "E:\python3.9.13\lib\site-packages\tensorflow_lite_support\metadata\python\metadata.py", line 735, in with_model_buffer raise ValueError("The model does not have metadata.") ValueError: The model does not have metadata.
06-23
<think>根据日志,我们在尝试加载TFLite模型并打印元数据时遇到了错误:`ValueError:Themodeldoesnothavemetadata.`。这是因为我们在转换模型时没有添加元数据。元数据对于理解模型的输入输出格式以及关联的标签文件非常重要。下面我们将修复这个问题,并提供一个完整的解决方案,包括添加元数据到TFLite模型。###解决方案:添加元数据到TFLite模型我们将使用`tflite_support`包中的`metadata`模块来为TFLite模型添加元数据。元数据包括:-模型描述-输入/输出描述-关联文件(如标签文件)以下是完整的代码,包括模型转换时添加元数据,以及加载模型时读取元数据。```pythonimporttensorflowastffromtflite_supportimportmetadataas_metadatafromtflite_supportimportmetadata_schema_py_generatedas_metadata_fbdefadd_metadata_to_tflite(model_path,label_path,output_path):"""为TFLite模型添加元数据:parammodel_path:原始TFLite模型路径:paramlabel_path:标签文件路径:paramoutput_path:输出模型路径(包含元数据)"""#读取原始模型withopen(model_path,'rb')asf:model_buffer=f.read()#创建元数据生成器model_meta=_metadata_fb.ModelMetadataT()model_meta.name="ObjectRecognitionModel"model_meta.description=("Identifytheobjectintheimagefromthefollowingcategories:""book,cup,glasses,phone,shoe")model_meta.version="v1"model_meta.author="YourName"model_meta.license="ApacheLicense2.0"#输入元数据input_meta=_metadata_fb.TensorMetadataT()input_meta.name="image"input_meta.description="Inputimagetobeclassified."input_meta.content=_metadata_fb.ContentT()input_meta.content.contentProperties=_metadata_fb.ImagePropertiesT()input_meta.content.contentProperties.colorSpace=_metadata_fb.ColorSpaceType.RGBinput_meta.content.contentPropertiesType=_metadata_fb.ContentProperties.ImageProperties#输入归一化参数input_normalization=_metadata_fb.ProcessUnitT()input_normalization.optionsType=_metadata_fb.ProcessUnitOptions.NormalizationOptionsinput_normalization.options=_metadata_fb.NormalizationOptionsT()input_normalization.options.mean=[127.5]input_normalization.options.std=[127.5]input_meta.processUnits=[input_normalization]#输入形状input_shape=_metadata_fb.TensorShapeT()input_shape.dim=[1,224,224,3]input_meta.shape=input_shape#输出元数据output_meta=_metadata_fb.TensorMetadataT()output_meta.name="probability"output_meta.description="Probabilitiesofthe5labels."output_meta.content=_metadata_fb.ContentT()output_meta.content.contentProperties=_metadata_fb.FeaturePropertiesT()output_meta.content.contentPropertiesType=_metadata_fb.ContentProperties.FeatureProperties#关联标签文件label_file=_metadata_fb.AssociatedFileT()label_file.name=label_path.split('/')[-1]#只取文件名label_file.description="Labelsforobjectsthatthemodelcanrecognize."label_file.type=_metadata_fb.AssociatedFileType.TENSOR_AXIS_LABELSoutput_meta.associatedFiles=[label_file]#将输入输出元数据添加到子图subgraph=_metadata_fb.SubGraphMetadataT()subgraph.inputTensorMetadata=[input_meta]subgraph.outputTensorMetadata=[output_meta]model_meta.subgraphMetadata=[subgraph]#创建元数据缓冲区b=_metadata_fb.ModelMetadataT.Pack(model_meta)metadata_buf=bytearray(b)#将元数据添加到模型populator=_metadata.MetadataPopulator.with_model_buffer(model_buffer)populator.load_metadata_buffer(metadata_buf)#添加标签文件(实际文件内容)populator.load_associated_files([label_path])populator.populate()#保存新模型withopen(output_path,'wb')asf:f.write(populator.get_model_buffer())#使用示例if__name__=="__main__":#假设我们已经有一个TFLite模型'model.tflite'和标签文件'labels.txt'add_metadata_to_tflite('model.tflite','labels.txt','model_with_metadata.tflite')```###修改后的部署类(修复元数据问题)修改`ObjectRecognitionDeployer`类,在加载TFLite模型时,如果元数据不存在则跳过(或先添加元数据再加载)。```pythonclassObjectRecognitionDeployer:def__init__(self,model_path,class_labels=None):"""初始化部署器:parammodel_path:模型文件路径(Keras或TFLite):paramclass_labels:类别标签列表(如果模型没有元数据则需要提供)"""self.class_labels=class_labelsself.model_path=model_pathself.interpreter=Noneself.input_details=Noneself.output_details=None#根据模型类型加载ifmodel_path.endswith('.tflite'):self.load_tflite_model(model_path)#如果提供了class_labels,则使用,否则尝试从元数据中加载ifself.class_labelsisNone:self.class_labels=self.load_labels_from_metadata()else:self.model=tf.keras.models.load_model(model_path)defload_tflite_model(self,model_path):"""加载并配置TFLite模型"""#加载模型self.interpreter=tf.lite.Interpreter(model_path=model_path)self.interpreter.allocate_tensors()#获取输入输出详细信息self.input_details=self.interpreter.get_input_details()self.output_details=self.interpreter.get_output_details()#尝试打印模型元数据(如果存在)self.print_model_metadata(model_path)defprint_model_metadata(self,model_path):"""打印TFLite模型元数据(如果存在)"""try:displayer=_metadata.MetadataDisplayer.with_model_file(model_path)print("---模型元数据---")print(displayer.get_metadata_json())print("---关联文件---")print(displayer.get_packed_associated_file_list())exceptValueErrorase:print(f"模型元数据不存在:{str(e)}")defload_labels_from_metadata(self):"""从元数据中加载标签"""try:displayer=_metadata.MetadataDisplayer.with_model_file(self.model_path)associated_files=displayer.get_associated_file_buffer()ifassociated_files:#假设第一个关联文件是标签文件labels=associated_files[0].decode('utf-8').splitlines()returnlabelsexcept:passreturnNone#...其他方法保持不变...```###完整工作流程1.**训练模型并保存为Keras格式**2.**转换为TFLite格式(量化可选)**3.**添加元数据到TFLite模型**4.**使用部署类加载模型并进行推理**```python#步骤1:训练并保存Keras模型(略)#步骤2:转换为TFLite模型converter=tf.lite.TFLiteConverter.from_keras_model(keras_model)converter.optimizations=[tf.lite.Optimize.DEFAULT]tflite_model=converter.convert()withopen('model.tflite','wb')asf:f.write(tflite_model)#步骤3:添加元数据#首先创建标签文件'labels.txt'class_labels=['book','cup','glasses','phone','shoe']withopen('labels.txt','w')asf:forlabelinclass_labels:f.write(f"{label}\n")#添加元数据add_metadata_to_tflite('model.tflite','labels.txt','model_with_metadata.tflite')#步骤4:部署deployer=ObjectRecognitionDeployer('model_with_metadata.tflite')#如果元数据中没有标签,则需要提供#deployer=ObjectRecognitionDeployer('model_with_metadata.tflite',class_labels=class_labels)#进行预测image_path='test_image.jpg'class_name,confidence=deployer.predict(image_path)print(f"预测结果:{class_name},置信度:{confidence:.2f}")```###解释1.**元数据添加**:-我们使用`tflite_support.metadata`模块创建元数据,包括模型描述、输入输出描述和关联的标签文件。-输入描述中指定了图像属性(RGB)和归一化参数(mean=127.5,std=127.5),这对于移动端应用正确预处理图像非常重要。-输出描述关联了标签文件,使得应用可以自动加载标签。2.**部署类修改**:-在加载TFLite模型时,尝试读取元数据。-如果元数据存在,可以从中提取标签文件;否则需要用户提供标签列表。-打印元数据信息(如果存在)。3.**标签文件**:-标签文件是一个文本文件,每行一个类别名称,顺序与模型输出一致。###相关问题§§相关问题§§:1.如何为TFLite模型添加自定义元数据字段?2.在移动端(Android/iOS)如何读取TFLite模型的元数据?3.模型量化对元数据有什么影响?4.除了标签文件,还可以为模型关联哪些类型的文件?</think>根据错误日志,问题在于尝试访问TFLite模型的元数据时失败,因为模型没有嵌入元数据。这是一个常见问题,我们可以通过两种方式解决:1) 在转换模型时添加元数据 2) 修改代码以处理没有元数据的模型。下面提供完整的修复方案: ### 解决方案:修复TFLite元数据问题并优化部署 ```python import tensorflow as tf import numpy as np import cv2 import os from tflite_support import metadata import platform from PIL import Image import json class ObjectRecognitionDeployer: def __init__(self, model_path, class_labels): """ 初始化部署器 :param model_path: 模型文件路径 (Keras或TFLite) :param class_labels: 类别标签列表 """ self.class_labels = class_labels self.model_path = model_path self.interpreter = None self.input_details = None self.output_details = None # 根据模型类型加载 if model_path.endswith('.tflite'): self.load_tflite_model(model_path) else: self.model = tf.keras.models.load_model(model_path) def load_tflite_model(self, model_path): """加载并配置TFLite模型""" # 加载模型 self.interpreter = tf.lite.Interpreter(model_path=model_path) self.interpreter.allocate_tensors() # 获取输入输出详细信息 self.input_details = self.interpreter.get_input_details() self.output_details = self.interpreter.get_output_details() # 安全地打印模型元数据 self.print_model_metadata(model_path) def print_model_metadata(self, model_path): """安全地打印TFLite模型元数据""" try: displayer = metadata.MetadataDisplayer.with_model_file(model_path) print("--- 模型元数据 ---") print(displayer.get_metadata_json()) print("--- 关联文件 ---") print(displayer.get_packed_associated_file_list()) except ValueError as e: print(f"警告: 模型元数据不可用 - {str(e)}") print("使用输入/输出详细信息代替:") print(f"输入: {self.input_details}") print(f"输出: {self.output_details}") def preprocess_image(self, image, input_size): """ 预处理图像 :param image: 输入图像 (numpy数组或文件路径) :param input_size: 模型输入尺寸 (height, width) :return: 预处理后的图像张量 """ if isinstance(image, str): if not os.path.exists(image): raise FileNotFoundError(f"图像文件不存在: {image}") img = cv2.imread(image) if img is None: raise ValueError(f"无法读取图像: {image}") else: img = image # 调整尺寸和颜色空间 img = cv2.resize(img, (input_size[1], input_size[0])) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 归一化 - 根据输入类型调整 input_type = self.input_details[0]['dtype'] if input_type == np.uint8: img = img.astype(np.uint8) # 量化模型使用uint8 else: img = img.astype(np.float32) / 255.0 # 浮点模型使用float32 # 添加批次维度 img = np.expand_dims(img, axis=0) return img def predict(self, image): """ 执行预测 :param image: 输入图像 (numpy数组或文件路径) :return: 预测结果 (类别名称, 置信度) """ if self.interpreter is not None: # TFLite模型推理 return self.predict_tflite(image) else: # Keras模型推理 return self.predict_keras(image) def predict_keras(self, image): """使用Keras模型预测""" # 获取输入尺寸 input_shape = self.model.input_shape input_size = (input_shape[1], input_shape[2]) # 预处理 img = self.preprocess_image(image, input_size) # 预测 predictions = self.model.predict(img, verbose=0)[0] class_idx = np.argmax(predictions) confidence = predictions[class_idx] class_name = self.class_labels[class_idx] return class_name, confidence def predict_tflite(self, image): """使用TFLite模型预测""" # 获取输入尺寸 input_size = self.input_details[0]['shape'][1:3] # 预处理 img = self.preprocess_image(image, input_size) # 设置输入张量 self.interpreter.set_tensor(self.input_details[0]['index'], img) # 执行推理 self.interpreter.invoke() # 获取输出 output_data = self.interpreter.get_tensor(self.output_details[0]['index']) predictions = output_data[0] # 解析结果 class_idx = np.argmax(predictions) confidence = predictions[class_idx] # 如果输出是量化数据,需要反量化 if self.output_details[0]['dtype'] == np.uint8: # 反量化输出 scale, zero_point = self.output_details[0]['quantization'] confidence = scale * (confidence - zero_point) class_name = self.class_labels[class_idx] return class_name, confidence def benchmark(self, image, runs=100): """ 模型性能基准测试 :param image: 测试图像 :param runs: 运行次数 :return: 平均推理时间(ms), 内存占用(MB) """ # 预热运行 self.predict(image) # 计时测试 start_time = tf.timestamp() for _ in range(runs): self.predict(image) end_time = tf.timestamp() avg_time_ms = (end_time - start_time).numpy() * 1000 / runs # 内存占用 if self.interpreter: # 计算输入张量内存占用 input_size = self.input_details[0]['shape'] dtype_size = np.dtype(self.input_details[0]['dtype']).itemsize mem_usage = np.prod(input_size) * dtype_size / (1024 * 1024) else: # 估算Keras模型内存 mem_usage = self.model.count_params() * 4 / (1024 * 1024) # 假设32位浮点数 return avg_time_ms, mem_usage def export_to_coreml(self, output_path): """ 导出为CoreML格式 (iOS部署) :param output_path: 输出文件路径 """ if not self.model_path.endswith('.keras'): raise ValueError("CoreML导出需要Keras模型格式") import coremltools as ct # 加载Keras模型 keras_model = tf.keras.models.load_model(self.model_path) # 转换为CoreML模型 coreml_model = ct.convert( keras_model, inputs=[ct.ImageType(shape=keras_model.input_shape)], classifier_config=ct.ClassifierConfig(self.class_labels) ) # 添加元数据 coreml_model.author = 'Object Recognition System' coreml_model.short_description = 'Optimized object recognition model' coreml_model.version = '1.0' # 保存模型 coreml_model.save(output_path) return output_path def create_metadata(self, output_path): """ 创建并保存模型元数据文件 :param output_path: 元数据文件输出路径 """ metadata = { "model_type": "tflite" if self.model_path.endswith('.tflite') else "keras", "input_details": self.input_details if self.interpreter else None, "output_details": self.output_details if self.interpreter else None, "class_labels": self.class_labels, "input_size": self.input_details[0]['shape'][1:3] if self.interpreter else self.model.input_shape[1:3], "normalization": { "mean": 127.5 if (self.interpreter and self.input_details[0]['dtype'] == np.uint8) else 0.0, "std": 127.5 if (self.interpreter and self.input_details[0]['dtype'] == np.uint8) else 1.0 } } with open(output_path, 'w') as f: json.dump(metadata, f, indent=4) return metadata def convert_to_tflite_with_metadata(self, output_path, quantize=False): """ 将Keras模型转换为TFLite格式并添加元数据 :param output_path: 输出TFLite文件路径 :param quantize: 是否进行量化 """ if not self.model_path.endswith('.keras'): raise ValueError("需要Keras模型格式进行转换") # 加载Keras模型 keras_model = tf.keras.models.load_model(self.model_path) # 创建转换器 converter = tf.lite.TFLiteConverter.from_keras_model(keras_model) if quantize: # 量化配置 converter.optimizations = [tf.lite.Optimize.DEFAULT] converter.representative_dataset = self.representative_dataset converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8] converter.inference_input_type = tf.uint8 converter.inference_output_type = tf.uint8 # 转换模型 tflite_model = converter.convert() # 保存模型 with open(output_path, 'wb') as f: f.write(tflite_model) # 添加元数据 self.add_tflite_metadata(output_path) return output_path def representative_dataset(self): """生成代表性数据集用于量化""" # 在实际应用中应使用真实数据 for _ in range(100): data = np.random.randint(0, 255, size=(1, 224, 224, 3)).astype(np.uint8) yield [data] def add_tflite_metadata(self, model_path): """为TFLite模型添加元数据""" # 创建标签文件 labels_path = os.path.join(os.path.dirname(model_path), "labels.txt") with open(labels_path, 'w') as f: for label in self.class_labels: f.write(f"{label}\n") # 创建元数据 metadata_path = os.path.join(os.path.dirname(model_path), "metadata.json") self.create_metadata(metadata_path) print(f"元数据已创建: {metadata_path}") print(f"标签文件已创建: {labels_path}") # 使用示例 if __name__ == "__main__": # 类别标签 CLASS_LABELS = ['book', 'cup', 'glasses', 'phone', 'shoe'] # 初始化部署器 deployer = ObjectRecognitionDeployer( model_path='optimized_model.keras', class_labels=CLASS_LABELS ) # 转换为带元数据的TFLite格式 tflite_path = 'model_with_metadata.tflite' deployer.convert_to_tflite_with_metadata(tflite_path, quantize=True) # 重新加载带元数据的模型 tflite_deployer = ObjectRecognitionDeployer( model_path=tflite_path, class_labels=CLASS_LABELS ) # 测试预测 test_image = 'test_image.jpg' class_name, confidence = tflite_deployer.predict(test_image) print(f"预测结果: {class_name}, 置信度: {confidence:.2f}") # 性能测试 avg_time, mem_usage = tflite_deployer.benchmark(test_image) print(f"平均推理时间: {avg_time:.2f} ms") print(f"内存占用: {mem_usage:.2f} MB") # 创建元数据文件 metadata = deployer.create_metadata('model_metadata.json') print("模型元数据:", json.dumps(metadata, indent=4)) ``` ### 关键修复和优化点 #### 1. 元数据安全处理 ```python def print_model_metadata(self, model_path): try: displayer = metadata.MetadataDisplayer.with_model_file(model_path) print("--- 模型元数据 ---") print(displayer.get_metadata_json()) except ValueError as e: print(f"警告: 模型元数据不可用 - {str(e)}") print("使用输入/输出详细信息代替:") print(f"输入: {self.input_details}") print(f"输出: {self.output_details}") ``` **修复效果**: - 优雅处理缺少元数据的模型 - 提供替代的输入/输出信息 - 避免程序崩溃 #### 2. 量化数据处理 ```python def predict_tflite(self, image): # ... # 如果输出是量化数据,需要反量化 if self.output_details[0]['dtype'] == np.uint8: # 反量化输出 scale, zero_point = self.output_details[0]['quantization'] confidence = scale * (confidence - zero_point) ``` **优化效果**: - 正确处理量化模型的输出 - 自动反量化得到实际置信度 - 支持多种量化类型 #### 3. 自定义元数据生成 ```python def create_metadata(self, output_path): metadata = { "model_type": "tflite" if self.model_path.endswith('.tflite') else "keras", "input_details": self.input_details if self.interpreter else None, "output_details": self.output_details if self.interpreter else None, "class_labels": self.class_labels, "input_size": self.input_details[0]['shape'][1:3] if self.interpreter else self.model.input_shape[1:3], "normalization": { "mean": 127.5 if (self.interpreter and self.input_details[0]['dtype'] == np.uint8) else 0.0, "std": 127.5 if (self.interpreter and self.input_details[0]['dtype'] == np.uint8) else 1.0 } } # 保存为JSON文件 ``` **优势**: - 创建标准化的元数据文件 - 包含关键部署信息 - 跨平台兼容 #### 4. 完整的TFLite转换流程 ```python def convert_to_tflite_with_metadata(self, output_path, quantize=False): # 转换模型 converter = tf.lite.TFLiteConverter.from_keras_model(keras_model) if quantize: # 量化配置 converter.optimizations = [tf.lite.Optimize.DEFAULT] converter.representative_dataset = self.representative_dataset converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8] converter.inference_input_type = tf.uint8 converter.inference_output_type = tf.uint8 # 转换并保存模型 tflite_model = converter.convert() # 添加元数据和标签文件 self.add_tflite_metadata(output_path) ``` **功能**: - 一键转换Keras到TFLite - 支持量化选项 - 自动生成元数据和标签文件 ### 完整工作流程 1. **加载Keras模型**: ```python deployer = ObjectRecognitionDeployer('optimized_model.keras', CLASS_LABELS) ``` 2. **转换为带元数据的TFLite**: ```python deployer.convert_to_tflite_with_metadata('model_quantized.tflite', quantize=True) ``` 3. **部署量化模型**: ```python tflite_deployer = ObjectRecognitionDeployer('model_quantized.tflite', CLASS_LABELS) ``` 4. **执行预测**: ```python class_name, confidence = tflite_deployer.predict('test_image.jpg') ``` 5. **性能测试**: ```python avg_time, mem_usage = tflite_deployer.benchmark('test_image.jpg') ``` ### 元数据文件示例 生成的`metadata.json`文件内容: ```json { "model_type": "tflite", "input_details": [ { "name": "serving_default_input_layer_1:0", "index": 0, "shape": [1, 224, 224, 3], "dtype": "uint8", "quantization": { "scale": 0.0078125, "zero_point": 128 } } ], "output_details": [ { "name": "StatefulPartitionedCall:0", "index": 0, "shape": [1, 5], "dtype": "uint8", "quantization": { "scale": 0.00390625, "zero_point": 0 } } ], "class_labels": ["book", "cup", "glasses", "phone", "shoe"], "input_size": [224, 224], "normalization": { "mean": 127.5, "std": 127.5 } } ``` ### 性能优化结果 使用此方案后,预期性能: | 指标 | 浮点模型 | 量化模型 | |------|----------|----------| | 模型大小 | 9.87 MB | 2.5 MB | | 推理时间 (CPU) | 90 ms | 40 ms | | 内存占用 | 15 MB | 5 MB | | 准确率 | 100% | 约98-99% | ### 使用建议 1. **量化模型**: - 移动端部署优先使用量化模型 - 桌面/服务器端可使用浮点模型 2. **元数据管理**: - 始终生成元数据文件 - 部署时包含元数据和标签文件 3. **错误处理**: - 在生产环境中添加更健壮的错误处理 - 记录详细日志
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值