使用TFRecordWriter编写TFRecord时出错:“'tuple'对象没有属性'SerializeToString'”

时间:2018-03-26 15:47:13

标签: python tensorflow tfrecord

我使用create_coco_tf_record-script将带有COCO标签的json文件转换为TFRecords,使用以下代码:

with open('coco_labels.json') as json_data:
    label_info = json.load(json_data)
    category_index = {}
IMAGE_FOLDER = "coco_images"
with tf.python_io.TFRecordWriter("training.record") as writer:
    for i,image in enumerate(label_info["images"]):
        img_data = requests.get(image["file_name"]).content
        image_name = "image"+str(i)+".jpg"
        image_path = os.path.join(IMAGE_FOLDER,image_name)
        image["file_name"] = image_name
        category_index = {}
        for category in label_info["categories"]:
            category_index[category['id']] = category
        tfRecord = create_coco_tf_record.create_tf_example(image,
                                                             [label_info["annotations"][i]],
                                                             IMAGE_FOLDER,
                                                             category_index
                                                            )
        writer.write(tfRecord.SerializeToString())

现在create_coco_tf_record.create_tf_example脚本运行没有错误,但是最后一行

writer.write(tfRecord.SerializeToString())

应该使用TFRecordWriter写TFRecord会引发以下异常:

AttributeError                            Traceback (most recent call last)
<ipython-input-23-04219e8e0d15> in <module>()
     15                                                              category_index
     16                                                             )
---> 17         writer.write(tfRecord.SerializeToString())

AttributeError: 'tuple' object has no attribute 'SerializeToString'

我做错了什么?

我的COCO json文件如下所示:

{"info": {
    "year": 2018,
    "version": null,
    "description": "TransferLearningTest",
    "contributor": "ralph@r4robotics.com.au",
    "url": "labelbox.io",
    "date_created": "2018-03-25T08:30:27.427851+00:00"
},
"images": [{
    "id": "cjf6gxqjw2fho01619gre5j0y",
    "width": 615,
    "height": 409,
    "file_name": "https://firebasestorage.googleapis.com/v0/b/labelbox-193903.appspot.com/o/cjf6gtsr950sr0125idy65yiy%2Ff245e964-d756-4c01-98de-b6e5a9070588%2Fbottles1.jpg?alt=media&token=b381c976-da30-49d7-8e95-eb4ae8588354",
    "license": null,
    "flickr_url": "https://firebasestorage.googleapis.com/v0/b/labelbox-193903.appspot.com/o/cjf6gtsr950sr0125idy65yiy%2Ff245e964-d756-4c01-98de-b6e5a9070588%2Fbottles1.jpg?alt=media&token=b381c976-da30-49d7-8e95-eb4ae8588354",
    "coco_url": "https://firebasestorage.googleapis.com/v0/b/labelbox-193903.appspot.com/o/cjf6gtsr950sr0125idy65yiy%2Ff245e964-d756-4c01-98de-b6e5a9070588%2Fbottles1.jpg?alt=media&token=b381c976-da30-49d7-8e95-eb4ae8588354",
    "date_captured": null
}, {
    "id": "cjf6gyhtl55sv01385xtqjrqi",
    "width": 259,
    "height": 194,
    "file_name": "https://firebasestorage.googleapis.com/v0/b/labelbox-193903.appspot.com/o/cjf6gtsr950sr0125idy65yiy%2Ff245e964-d756-4c01-98de-b6e5a9070588%2Fbottles2.jpg?alt=media&token=9b274e2e-c541-4e80-8f3d-b198f3ba9b4d",
    "license": null,
    "flickr_url": "https://firebasestorage.googleapis.com/v0/b/labelbox-193903.appspot.com/o/cjf6gtsr950sr0125idy65yiy%2Ff245e964-d756-4c01-98de-b6e5a9070588%2Fbottles2.jpg?alt=media&token=9b274e2e-c541-4e80-8f3d-b198f3ba9b4d",
    "coco_url": "https://firebasestorage.googleapis.com/v0/b/labelbox-193903.appspot.com/o/cjf6gtsr950sr0125idy65yiy%2Ff245e964-d756-4c01-98de-b6e5a9070588%2Fbottles2.jpg?alt=media&token=9b274e2e-c541-4e80-8f3d-b198f3ba9b4d",
    "date_captured": null
}, {
    "id": "cjf6gzj9v2g1h0161bwh18chv",
    "width": 277,
    "height": 182,
    "file_name": "https://firebasestorage.googleapis.com/v0/b/labelbox-193903.appspot.com/o/cjf6gtsr950sr0125idy65yiy%2Ff245e964-d756-4c01-98de-b6e5a9070588%2Fbottles3.jpg?alt=media&token=3cfc13ca-432d-4501-b574-00d3874a4682",
    "license": null,
    "flickr_url": "https://firebasestorage.googleapis.com/v0/b/labelbox-193903.appspot.com/o/cjf6gtsr950sr0125idy65yiy%2Ff245e964-d756-4c01-98de-b6e5a9070588%2Fbottles3.jpg?alt=media&token=3cfc13ca-432d-4501-b574-00d3874a4682",
    "coco_url": "https://firebasestorage.googleapis.com/v0/b/labelbox-193903.appspot.com/o/cjf6gtsr950sr0125idy65yiy%2Ff245e964-d756-4c01-98de-b6e5a9070588%2Fbottles3.jpg?alt=media&token=3cfc13ca-432d-4501-b574-00d3874a4682",
    "date_captured": null
}, {
    "id": "cjf6h0p9n55wz0178pg79lc3c",
    "width": 301,
    "height": 167,
    "file_name": "https://firebasestorage.googleapis.com/v0/b/labelbox-193903.appspot.com/o/cjf6gtsr950sr0125idy65yiy%2Ff245e964-d756-4c01-98de-b6e5a9070588%2Fbottles4.jpg?alt=media&token=d2660bc4-d576-45f0-8de6-557270fc683d",
    "license": null,
    "flickr_url": "https://firebasestorage.googleapis.com/v0/b/labelbox-193903.appspot.com/o/cjf6gtsr950sr0125idy65yiy%2Ff245e964-d756-4c01-98de-b6e5a9070588%2Fbottles4.jpg?alt=media&token=d2660bc4-d576-45f0-8de6-557270fc683d",
    "coco_url": "https://firebasestorage.googleapis.com/v0/b/labelbox-193903.appspot.com/o/cjf6gtsr950sr0125idy65yiy%2Ff245e964-d756-4c01-98de-b6e5a9070588%2Fbottles4.jpg?alt=media&token=d2660bc4-d576-45f0-8de6-557270fc683d",
    "date_captured": null
}],
"annotations": [{
    "id": 1,
    "image_id": "cjf6gxqjw2fho01619gre5j0y",
    "category_id": 1,
    "segmentation": [
        [118.39765618513167, 313.457848898712, 179.7169976455091, 299.1734470204843, 294.6908226914901, 310.3222212573321, 337.1962867729657, 334.7101881586143, 366.4623832276035, 338.89097185223864, 372.03689297966736, 385.5765403887654, 332.31863061175864, 389.75732408238974, 282.84505592143563, 406.48051201843583, 215.9512047089942, 408.5708772844735, 192.2596180064203, 390.4541125044023, 151.8445552101198, 403.6933051688366, 105.1582353958287, 376.51813141795526, 118.39765618513167, 313.457848898712]
    ],
    "area": 22106.876283900496,
    "bbox": [105.1582353958287, 0.42912271552648545, 266.8786575838387, 109.39743026398922],
    "iscrowd": 0
}, {
    "id": 2,
    "image_id": "cjf6gxqjw2fho01619gre5j0y",
    "category_id": 1,
    "segmentation": [
        [160.20631983821562, 142.04523900617488, 195.04687288245222, 131.24488556110788, 308.62704390918475, 134.03209241070698, 356.01021731433246, 152.1488571907783, 381.7922053020817, 150.75522718520426, 384.57951334057844, 186.64038911511503, 349.7389071338769, 187.68559832890833, 317.6856089656722, 202.3183678373679, 159.50946624735892, 195.3503772941444, 160.20631983821562, 142.04523900617488]
    ],
    "area": 13123.705213053147,
    "bbox": [159.50946624735892, 206.6816321626321, 225.07004709321953, 71.07348227626002],
    "iscrowd": 0
}, {
    "id": 3,
    "image_id": "cjf6gyhtl55sv01385xtqjrqi",
    "category_id": 1,
    "segmentation": [
        [80.06035395893144, 68.18619344603749, 119.11342792196902, 74.69491256085784, 131.84812313721997, 72.14801308536389, 177.97602777539703, 78.09078572494903, 187.59778022105084, 91.67421361042045, 203.1624077063576, 93.37213939731716, 201.18146375358646, 112.04938782407424, 184.76784795099502, 111.200414135477, 169.20322046568833, 122.51994816851872, 128.16920254987957, 117.42614921753086, 114.86852951688535, 114.03029764373744, 93.07803808305403, 114.31328167650393, 70.43857992260781, 103.2767316762287, 80.06035395893144, 68.18619344603749]
    ],
    "area": 4995.907009222967,
    "bbox": [70.43857992260781, 71.48005183148128, 132.7238277837498, 54.33375472248123],
    "iscrowd": 0
}, {
    "id": 4,
    "image_id": "cjf6gzj9v2g1h0161bwh18chv",
    "category_id": 1,
    "segmentation": [
        [173.46162883883662, 160.28013107383993, 255.65715601241382, 148.2998138472238, 266.2728180897869, 177.11325728633884, 184.68389092165103, 182.8759506021435, 159.20627416758742, 180.1462513325615, 154.35340470313542, 170.74397441725296, 175.28142885516084, 167.7109803710303, 173.46162883883662, 160.28013107383993]
    ],
    "area": 2509.1082874191734,
    "bbox": [154.35340470313542, -0.8759506021434983, 111.91941338665146, 34.576136754919716],
    "iscrowd": 0
}, {
    "id": 5,
    "image_id": "cjf6gzj9v2g1h0161bwh18chv",
    "category_id": 1,
    "segmentation": [
        [37.58112185203197, 87.03332022958155, 45.16373762158412, 93.40262623857566, 94.90570169790779, 106.44448675338808, 106.73458692647054, 87.03332022958155, 46.680260775494574, 73.08155224493905, 40.31086815713212, 74.901344044691, 33.63817553604898, 74.901344044691, 27.875382923127926, 80.9673321371363, 37.58112185203197, 87.03332022958155]
    ],
    "area": 1386.09176276128,
    "bbox": [27.875382923127926, 75.55551324661192, 78.85920400334261, 33.36293450844903],
    "iscrowd": 0
}, {
    "id": 6,
    "image_id": "cjf6gzj9v2g1h0161bwh18chv",
    "category_id": 1,
    "segmentation": [
        [200.7590456092244, 136.92608617388885, 181.95412147624396, 120.09295996138994, 234.4258318576678, 85.2135284298296, 255.05055600697247, 103.71478748380605, 200.7590456092244, 136.92608617388885]
    ],
    "area": 1614.301579806095,
    "bbox": [181.95412147624396, 45.073913826111145, 73.09643453072852, 51.71255774405926],
    "iscrowd": 0
}, {
    "id": 7,
    "image_id": "cjf6h0p9n55wz0178pg79lc3c",
    "category_id": 1,
    "segmentation": [
        [17.847508506087518, 28.63952607163654, 66.60858665657888, 24.08859036914734, 77.98617155836023, 14.986669362689923, 145.27644948557162, 14.49906202292621, 147.5519565454611, 51.881911126804255, 75.0605019090974, 56.10780833710362, 64.0079859014193, 47.98110201017366, 24.3489855928197, 53.34473314609532, 17.847508506087518, 28.63952607163654]
    ],
    "area": 4189.730491764894,
    "bbox": [17.847508506087518, 110.89219166289638, 129.7044480393736, 41.60874631417741],
    "iscrowd": 0
}, {
    "id": 8,
    "image_id": "cjf6h0p9n55wz0178pg79lc3c",
    "category_id": 1,
    "segmentation": [
        [223.94433711573117, 23.27591973645434, 257.10186033759857, 27.82685543894354, 261.32783036444124, 48.306165303102944, 179.73427308501883, 104.86804629868364, 145.27644948557162, 113.3198159185429, 128.37261898053467, 122.42173692500033, 111.46876367433086, 108.76885541531423, 131.29826382863067, 96.09118858515549, 137.14960312715638, 77.56230808005091, 223.94433711573117, 23.27591973645434]
    ],
    "area": 6031.236484118768,
    "bbox": [111.46876367433086, 44.57826307499967, 149.85906669011038, 99.14581718854599],
    "iscrowd": 0
}, {
    "id": 9,
    "image_id": "cjf6h0p9n55wz0178pg79lc3c",
    "category_id": 1,
    "segmentation": [
        [26.299423758605975, 125.34733136210352, 40.60267830965016, 111.53193060632253, 117.97024076106304, 72.6862842838929, 133.57379568968702, 80.81299061082292, 132.59856420621048, 93.16559414805232, 111.46876367433086, 115.2702204768582, 64.33305479552251, 138.67514957886033, 46.128923912905776, 139.65033945764822, 23.37375410934314, 148.75226046410563, 8.095292875989244, 141.11316147693933, 26.299423758605975, 125.34733136210352]
    ],
    "area": 3857.6591542480846,
    "bbox": [8.095292875989244, 18.24773953589436, 125.47850281369777, 76.06597618021274],
    "iscrowd": 0
}],
"licenses": [],
"categories": [{
    "supercategory": "Bottle",
    "id": 1,
    "name": "Bottle"
}]
}

1 个答案:

答案 0 :(得分:0)

脚本返回一个元组,其中第二个条目是实际的TFRecord。所以以下更正的脚本对我有用:

with open('coco_labels.json') as json_data:
    label_info = json.load(json_data)
    category_index = {}
IMAGE_FOLDER = "coco_images"
with tf.python_io.TFRecordWriter("training.record") as writer:
    for i,image in enumerate(label_info["images"]):
        img_data = requests.get(image["file_name"]).content
        image_name = "image"+str(i)+".jpg"
        image_path = os.path.join(IMAGE_FOLDER,image_name)
        image["file_name"] = image_name
        category_index = {}
        for category in label_info["categories"]:
            category_index[category['id']] = category
        _,tfRecord,_ = create_coco_tf_record.create_tf_example(image,
                                                             [label_info["annotations"][i]],
                                                             IMAGE_FOLDER,
                                                             category_index
                                                            )
        writer.write(tfRecord.SerializeToString())