TypeError:应为二进制或unicode字符串,获取项错误

2024-04-25 21:39:02 发布

您现在位置:Python中文网/ 问答频道 /正文

你好!这里是初学者。 我有一个tensorflow,我正在做一个手势识别系统。问题是,我不知道如何修复这个错误。 我不想修改.py文件,因为我可能会破坏它们。
此代码来自Jupyter笔记本

我从尼古拉斯·雷诺特的视频中得到了教程。以下是链接: https://www.youtube.com/watch?v=pDXdlXlaCco&t=1393s

WORKSPACE_PATH = 'Tensorflow/workspace'
SCRIPTS_PATH = 'Tensorflow/scripts'
APIMODEL_PATH = 'Tensorflow/models'
ANNOTATION_PATH = WORKSPACE_PATH+'/annotations'
IMAGE_PATH = WORKSPACE_PATH+'/images'
MODEL_PATH = WORKSPACE_PATH+'/models'
PRETRAINED_MODEL_PATH = WORKSPACE_PATH+'/pre-trained-models'
CONFIG_PATH = MODEL_PATH+'/my_ssd_mobnet/pipeline.config'
CHECKPOINT_PATH = MODEL_PATH+'/my_ssd_mobnet/'

labels = [{'name':'1', 'id':1}, {'name':'2', 'id':2}, {'name':'3', 'id':3}, {'name':'4', 'id':4}, {'name':'5', 'id':5}]

with open(ANNOTATION_PATH + '\label_map.pbtxt', 'w') as f:
    for label in labels:
        f.write('item { \n')
        f.write('\tname:\'{}\'\n'.format(label['name']))
        f.write('\tid:{}\n'.format(label['id']))
        f.write('}\n')

!python {SCRIPTS_PATH + '/generate_tfrecord.py'} -x {IMAGE_PATH + '/train'} -l {ANNOTATION_PATH + '/label_map.pbtxt'} -o {ANNOTATION_PATH + '/train.record'}
!python {SCRIPTS_PATH + '/generate_tfrecord.py'} -x{IMAGE_PATH + '/test'} -l {ANNOTATION_PATH + '/label_map.pbtxt'} -o {ANNOTATION_PATH + '/test.record'}

!cd Tensorflow && git clone https://github.com/tensorflow/models

CUSTOM_MODEL_NAME = 'my_ssd_mobnet'

!mkdir {'Tensorflow\workspace\models\\'+CUSTOM_MODEL_NAME}
!cp {PRETRAINED_MODEL_PATH+'/ssd_mobilenet_v2_fpnlite_320x320_coco17_tpu-8/pipeline.config'} {MODEL_PATH+'/'+CUSTOM_MODEL_NAME}

import tensorflow as tf
from object_detection.utils import config_util
from object_detection.protos import pipeline_pb2
from google.protobuf import text_format



***Error:***
Traceback (most recent call last):
  File "Tensorflow/scripts/generate_tfrecord.py", line 62, in <module>
    label_map_dict = label_map_util.get_label_map_dict(label_map)
  File "C:\Users\Admin\anaconda3\envs\tensorflow_env\lib\site-packages\object_detection\utils\label_map_util.py", line 164, in get_label_map_dict
    label_map = load_labelmap(label_map_path)
  File "C:\Users\Admin\anaconda3\envs\tensorflow_env\lib\site-packages\object_detection\utils\label_map_util.py", line 133, in load_labelmap
    label_map_string = fid.read()
  File "C:\Users\Admin\anaconda3\envs\tensorflow_env\lib\site-packages\tensorflow_core\python\lib\io\file_io.py", line 122, in read
    self._preread_check()
  File "C:\Users\Admin\anaconda3\envs\tensorflow_env\lib\site-packages\tensorflow_core\python\lib\io\file_io.py", line 84, in _preread_check
    compat.as_bytes(self.__name), 1024 * 512)
  File "C:\Users\Admin\anaconda3\envs\tensorflow_env\lib\site-packages\tensorflow_core\python\util\compat.py", line 71, in as_bytes
    (bytes_or_text,))
TypeError: Expected binary or unicode string, got item {
  name: "1"
  id: 1
}
item {
  name: "2"
  id: 2
}
item {
  name: "3"
  id: 3
}
item {
  name: "4"
  id: 4
}
item {
  name: "5"
  id: 5
}

Tags: pathnameinpyidmapmodellib
1条回答
网友
1楼 · 发布于 2024-04-25 21:39:02

我在看那段视频时也遇到了同样的问题。 进入工作区->;脚本并使用文本编辑器打开生成_tf记录

替换

label_map = label_map_util.load_labelmap(args.labels_path)
label_map_dict = label_map_util.get_label_map_dict(label_map)

label_map_dict = label_map_util.get_label_map_dict(args.labels_path)

它应该会起作用

相关问题 更多 >