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

使用TensorFlow的create_coco_tf_record脚本遇TypeError报错求助

解决create_coco_tf_record.py转换时的TypeError: string indices must be integers问题

我来帮你排查这个报错,TypeError: string indices must be integers本质是脚本在处理你的COCO JSON数据时,把本该是字典/数组的对象当成了字符串来索引,大概率是你的数据格式或者脚本调用方式有问题,咱们一步步来解决:

1. 先确保你的JSON格式完全合法

你贴出来的JSON片段是不完整的(比如images数组里的对象没闭合、file_name的URL截断了),首先要保证整个JSON是可正常解析的。你可以用Python快速验证:

import json
with open('你的标注文件.json', 'r', encoding='utf-8') as f:
    try:
        coco_data = json.load(f)
        # 测试能否正常访问images字段
        print("第一个图片数据:", coco_data['images'][0])
    except json.JSONDecodeError as e:
        print("JSON格式错误:", str(e))

如果这一步报错,说明你的JSON有语法问题(比如缺少括号、引号不匹配),先把这些基础错误修复好。

2. 修正image.id的类型

TensorFlow的这个脚本默认遵循标准COCO格式,其中images里的id要求是整数类型,但你用的是字符串ID:"id": "cjf6gxqjw2fho01619gre5j0y"。脚本在处理时会把它当成字符串,后续尝试用类似字典索引的方式操作就会触发报错。

解决方法:给每个图片分配唯一的整数ID(比如从1开始递增),同时如果你的标注里有annotations字段,要确保annotations.image_id也对应改成相同的整数ID。

3. 检查脚本的调用参数

有时候会不小心把JSON内容直接传给脚本,而不是JSON文件的路径,导致脚本把整个JSON字符串当成处理对象,自然会出现索引错误。确保你运行脚本的命令是传入文件路径,比如:

python create_coco_tf_record.py --input_json=./your_annotations.json --output_tfrecord=./output.record

4. 替换远程图片路径为本地路径

你的file_name是远程URL:"https://firebasestorage.googleapis.com/...",而create_coco_tf_record.py默认期望本地文件路径,脚本在处理远程URL时可能出现类型不兼容的问题。建议先把所有图片下载到本地,然后把file_name改成本地相对路径或者绝对路径,再尝试转换。

按照上面的步骤逐一排查,应该就能解决这个报错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:39:13