You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac系统下TensorFlow生成.record文件无报错但未创建求助

问题

跟着TFODCourse教程在Jupyter Notebook(Mac OS环境)中进行TensorFlow目标检测,在生成.record文件的步骤(对应视频2:12位置)遇到问题:已完成图像收集与标注,运行代码后无任何报错,但目标.record文件未生成,已确认文件并非隐藏状态,怀疑存在语法或路径问题,求排查思路。

运行代码

import os

CUSTOM_MODEL_NAME = 'my_ssd_mobnet' 
PRETRAINED_MODEL_NAME = 'ssd_mobilenet_v2_fpnlite_320x320_coco17_tpu-8'
PRETRAINED_MODEL_URL =      'http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_mobilenet_v2_fpnlite_320x320_coco17_tpu-8.tar.gz'
TF_RECORD_SCRIPT_NAME = 'generate_tfrecord.py'
LABEL_MAP_NAME = 'label_map.pbtxt'


paths = {
    'WORKSPACE_PATH': os.path.join('Tensorflow', 'workspace'),
    'SCRIPTS_PATH': os.path.join('Tensorflow','scripts'),
    'APIMODEL_PATH': os.path.join('Tensorflow','models'),
    'ANNOTATION_PATH': os.path.join('Tensorflow', 'workspace','annotations'),
    'IMAGE_PATH': os.path.join('Tensorflow', 'workspace','images'),
    'MODEL_PATH': os.path.join('Tensorflow', 'workspace','models'),
    'PRETRAINED_MODEL_PATH': os.path.join('Tensorflow', 'workspace','pre-trained-models'),
    'CHECKPOINT_PATH': os.path.join('Tensorflow', 'workspace','models',CUSTOM_MODEL_NAME), 
    'OUTPUT_PATH': os.path.join('Tensorflow', 'workspace','models',CUSTOM_MODEL_NAME,         'export'), 
     'TFJS_PATH':os.path.join('Tensorflow', 'workspace','models',CUSTOM_MODEL_NAME, '       tfjsexport'), 
    'TFLITE_PATH':os.path.join('Tensorflow', 'workspace','models',CUSTOM_MODEL_NAME, 'tfliteexport'), 
    'PROTOC_PATH':os.path.join('Tensorflow','protoc')
 }


files = {
    'PIPELINE_CONFIG':os.path.join('Tensorflow', 'workspace','models', CUSTOM_MODEL_NAME,    'pipeline.config'),
    'TF_RECORD_SCRIPT': os.path.join(paths['SCRIPTS_PATH'], TF_RECORD_SCRIPT_NAME), 
    'LABELMAP': os.path.join(paths['ANNOTATION_PATH'], LABEL_MAP_NAME)
}


 for path in paths.values():
     if not os.path.exists(path):
         if os.name == 'posix':
             !mkdir -p {path}
         if os.name == 'nt':
             !mkdir {path}

 if not os.path.exists(files['TF_RECORD_SCRIPT']):
     !git clone https://github.com/nicknochnack/GenerateTFRecord {paths['SCRIPTS_PATH']}

!python {files['TF_RECORD_SCRIPT']} -x {os.path.join(paths['IMAGE_PATH'], 'train')} -l      {files['LABELMAP']} -o {os.path.join(paths['ANNOTATION_PATH'], 'train.record')} 
!python {files['TF_RECORD_SCRIPT']} -x {os.path.join(paths['IMAGE_PATH'], 'test')} -l {files['LABELMAP']} -o {os.path.join(paths['ANNOTATION_PATH'], 'test.record')}

排查思路

  • 验证路径有效性:在代码中添加print语句,输出关键路径确认文件/文件夹是否真实存在,比如:

    print(f"TF Record Script Path: {files['TF_RECORD_SCRIPT']}")
    print(f"Train Image Directory: {os.path.join(paths['IMAGE_PATH'], 'train')}")
    print(f"Output Train Record Path: {os.path.join(paths['ANNOTATION_PATH'], 'train.record')}")
    

    若路径不存在,先手动创建缺失目录或修正路径拼接逻辑。

  • 检查脚本完整性与依赖:确认scripts目录下已成功克隆generate_tfrecord.py,且脚本无损坏。同时检查是否安装了tensorflow、pillow、lxml等依赖,可在终端单独运行脚本命令,查看是否有隐藏报错(Jupyter的!命令可能截断输出)。

  • 核对标注文件与Label Map:确保train/test文件夹中的XML标注文件与图像一一对应,无文件名错误。检查label_map.pbtxt格式是否正确,示例格式如下:

    item {
      id: 1
      name: 'your_label'
    }
    

    避免括号不匹配、引号缺失等语法错误。

  • 排查权限问题:Mac OS下若目标目录(如annotations)无写入权限,会导致文件无法生成。可通过ls -l命令查看目录权限,或尝试在命令前添加sudo提升权限(Jupyter中使用sudo需谨慎)。

  • 修正命令参数格式:代码中部分参数存在多余空格(如-l {files['LABELMAP']}),虽Shell会自动忽略,但建议统一格式去掉多余空格,避免潜在解析问题。

内容的提问来源于stack exchange,提问作者coding_world

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 05:25:34