日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

yolov3-tf2 数据格式压缩

發(fā)布時(shí)間:2025/4/5 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 yolov3-tf2 数据格式压缩 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
對于voc 這樣的圖像數(shù)據(jù)集,占用空間比較大,之前一般以矩陣形式存在內(nèi)存空間中進(jìn)行模型訓(xùn)練,需要計(jì)算機(jī)大量內(nèi)存空間
tensorflow 有 tf.io.TFRecordWriter的數(shù)據(jù)api 可以將數(shù)據(jù)進(jìn)行壓縮,
import time import os import hashlibfrom absl import app, flags, logging from absl.flags import FLAGS import tensorflow as tf import lxml.etree import tqdm# flags.DEFINE_string('data_dir', './data/voc2012_raw/VOCdevkit/VOC2012/', # 'path to raw PASCAL VOC dataset') # flags.DEFINE_enum('split', 'train', [ # 'train', 'val'], 'specify train or val spit') # flags.DEFINE_string('output_file', './data/voc2012_train.tfrecord', 'outpot dataset') # flags.DEFINE_string('classes', './data/voc2012.names', 'classes file')def build_example(annotation, class_map):img_path = os.path.join('./data/voc2012_raw/VOCdevkit/VOC2012', 'JPEGImages', annotation['filename'])img_raw = open(img_path, 'rb').read()key = hashlib.sha256(img_raw).hexdigest()width = int(annotation['size']['width'])height = int(annotation['size']['height'])xmin = []ymin = []xmax = []ymax = []classes = []classes_text = []truncated = []views = []difficult_obj = []if 'object' in annotation:for obj in annotation['object']:difficult = bool(int(obj['difficult']))difficult_obj.append(int(difficult))xmin.append(float(obj['bndbox']['xmin']) / width)ymin.append(float(obj['bndbox']['ymin']) / height)xmax.append(float(obj['bndbox']['xmax']) / width)ymax.append(float(obj['bndbox']['ymax']) / height)classes_text.append(obj['name'].encode('utf8'))classes.append(class_map[obj['name']])truncated.append(int(obj['truncated']))views.append(obj['pose'].encode('utf8'))example = tf.train.Example(features=tf.train.Features(feature={'image/height': tf.train.Feature(int64_list=tf.train.Int64List(value=[height])),'image/width': tf.train.Feature(int64_list=tf.train.Int64List(value=[width])),'image/filename': tf.train.Feature(bytes_list=tf.train.BytesList(value=[annotation['filename'].encode('utf8')])),'image/source_id': tf.train.Feature(bytes_list=tf.train.BytesList(value=[annotation['filename'].encode('utf8')])),'image/key/sha256': tf.train.Feature(bytes_list=tf.train.BytesList(value=[key.encode('utf8')])),'image/encoded': tf.train.Feature(bytes_list=tf.train.BytesList(value=[img_raw])),'image/format': tf.train.Feature(bytes_list=tf.train.BytesList(value=['jpeg'.encode('utf8')])),'image/object/bbox/xmin': tf.train.Feature(float_list=tf.train.FloatList(value=xmin)),'image/object/bbox/xmax': tf.train.Feature(float_list=tf.train.FloatList(value=xmax)),'image/object/bbox/ymin': tf.train.Feature(float_list=tf.train.FloatList(value=ymin)),'image/object/bbox/ymax': tf.train.Feature(float_list=tf.train.FloatList(value=ymax)),'image/object/class/text': tf.train.Feature(bytes_list=tf.train.BytesList(value=classes_text)),'image/object/class/label': tf.train.Feature(int64_list=tf.train.Int64List(value=classes)),'image/object/difficult': tf.train.Feature(int64_list=tf.train.Int64List(value=difficult_obj)),'image/object/truncated': tf.train.Feature(int64_list=tf.train.Int64List(value=truncated)),'image/object/view': tf.train.Feature(bytes_list=tf.train.BytesList(value=views)),}))return exampledef parse_xml(xml):if not len(xml):return {xml.tag: xml.text}result = {}for child in xml:child_result = parse_xml(child)if child.tag != 'object':result[child.tag] = child_result[child.tag]else:if child.tag not in result:result[child.tag] = []result[child.tag].append(child_result[child.tag])return {xml.tag: result}def main():#讀取數(shù)據(jù),并且對類別進(jìn)行編碼,這是一個(gè)人字典class_map = {name: idx for idx, name in enumerate(open('./data/voc2012.names').read().splitlines())}#在這里,用tf2 的新的數(shù)據(jù)格式,將圖像信息重新編碼,而不在是直接用矩陣格式#原因是編碼后數(shù)據(jù)占用空間比較低,writer = tf.io.TFRecordWriter('./data/voc2012_train.tfrecord')image_list = open(os.path.join('./data/voc2012_raw/VOCdevkit/VOC2012', 'ImageSets', 'Main', '%s.txt' % 'train')).read().splitlines()logging.info("Image list loaded: %d", len(image_list))for name in tqdm.tqdm(image_list):annotation_xml = os.path.join('./data/voc2012_raw/VOCdevkit/VOC2012', 'Annotations', name + '.xml')annotation_xml = lxml.etree.fromstring(open(annotation_xml).read())annotation = parse_xml(annotation_xml)['annotation']tf_example = build_example(annotation, class_map)writer.write(tf_example.SerializeToString())writer.close()logging.info("Done")main()# if __name__ == '__main__': # app.run(main)

總結(jié)

以上是生活随笔為你收集整理的yolov3-tf2 数据格式压缩的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久福利精品 | 麻豆国产视频 | 国产精品乱码一区 | 内射国产内射夫妻免费频道 | 久久久久国产精品夜夜夜夜夜 | 伊人久久久久噜噜噜亚洲熟女综合 | 非洲黑妞xxxxhd精品 | 中文字幕人乱码中文字 | sese在线视频 | 欧美xxxbbb| 伦理久久 | 狠狠艹狠狠干 | 国产精品九九九九九 | 一卡二卡在线观看 | 国产在线观看一区二区三区 | 国产女女调教女同 | 少妇极品熟妇人妻无码 | 免费在线精品视频 | 先锋影音一区二区三区 | 影音先锋日韩资源 | 欧美特级视频 | 色综合狠狠爱 | 新久草视频 | 精品一区二区三区成人免费视频 | 欧美一级淫片免费视频魅影视频 | 91精品国产91久久久 | 青青草原综合网 | 男女调教视频 | 欧美黄色影院 | 国产99视频在线 | 国产夫妻性生活 | 114国产精品久久免费观看 | 96av在线视频| 午夜色网站 | 中文在线观看免费高清 | 91精产国品一二三区在线观看 | 台湾佬中文在线 | 国产成年无码久久久久毛片 | 99精品在线 | 大学生三级中国dvd 日韩欧美一区二区区 | 免费高清欧美大片在线观看 | 欧美精品久久久久久久久久 | 波多野结衣中文在线 | 国产精品久久久久久一区二区三区 | 被黑人各种姿势猛c哭h文1 | 天天色天天综合 | 婷婷俺来也 | 波多野结衣视频一区 | 国产粉嫩一区二区三区 | 国产主播一区 | 黄色三级在线播放 | 成人无高清96免费 | 欧美精品18videosex性欧美 | 香蕉在线播放 | 亚洲一级成人 | 中文在线观看免费视频 | 亚洲激情片 | 91看片免费版 | 欧美黄色大片网站 | 黄色av免费播放 | 国产一区二区在线观看视频 | 精品一区二区电影 | 国产精视频 | 久久久久久蜜桃 | 日本人做受免费视频 | 超碰2020| 欧美黄色片免费看 | 国产无套在线观看 | 人人看超碰| 91呦呦| 视频在线观看视频 | 日本精品中文字幕 | 久久国语| 麻豆av一区二区 | 又黄又免费的视频 | 热久久精品免费视频 | 97成人精品视频在线观看 | 一级黄色片欧美 | 天天视频天天爽 | 亚洲国产精品成人无码区 | 白丝美女喷水 | 日韩欧美日本 | 欧美福利视频在线观看 | 久久综合狠狠综合久久综合88 | 成人一级黄色 | av毛片网 | 在线视频精品 | www.x日本 | 91视频最新 | av高潮 | www成年人 | 漂亮人妻被黑人久久精品 | 日本一区二区黄色 | 国产精品久久久久久免费 | 草久影院| 久久a视频 | 男人插入女人阴道视频 | 日韩激情精品 | 韩国色网 |