麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Python > 正文

python生成lmdb格式的文件實例

2020-02-15 23:34:46
字體:
來源:轉載
供稿:網友

在crnn訓練的時候需要用到lmdb格式的數據集,下面是python生成lmdb個是數據集的代碼,注意一定要在linux系統下,否則會讀入圖像的時候出問題,可能遇到的問題都在代碼里面注釋了,看代碼即可。

#-*- coding:utf-8 -*- import osimport lmdb#先pip install這個模塊哦import cv2import globimport numpy as np  def checkImageIsValid(imageBin): if imageBin is None:  return False imageBuf = np.fromstring(imageBin, dtype=np.uint8) img = cv2.imdecode(imageBuf, cv2.IMREAD_GRAYSCALE) if img is None:  return False imgH, imgW = img.shape[0], img.shape[1] if imgH * imgW == 0:  return False return True def writeCache(env, cache): with env.begin(write=True) as txn:  for k, v in cache.iteritems():   txn.put(k, v) def createDataset(outputPath, imagePathList, labelList, lexiconList=None, checkValid=True): """ Create LMDB dataset for CRNN training.# ARGS:  outputPath : LMDB output path  imagePathList : list of image path  labelList  : list of corresponding groundtruth texts  lexiconList : (optional) list of lexicon lists  checkValid : if true, check the validity of every image """ # print (len(imagePathList) , len(labelList)) assert(len(imagePathList) == len(labelList)) nSamples = len(imagePathList) print '...................' env = lmdb.open(outputPath, map_size=8589934592)#1099511627776)所需要的磁盤空間的最小值,之前是1T,我改成了8g,否則會報磁盤空間不足,這個數字是字節  cache = {} cnt = 1 for i in xrange(nSamples):  imagePath = imagePathList[i]  label = labelList[i]  if not os.path.exists(imagePath):   print('%s does not exist' % imagePath)   continue  with open(imagePath, 'r') as f:   imageBin = f.read()  if checkValid:   if not checkImageIsValid(imageBin):    print('%s is not a valid image' % imagePath)#注意一定要在linux下,否則f.read就不可用了,就會輸出這個信息    continue   imageKey = 'image-%09d' % cnt  labelKey = 'label-%09d' % cnt  cache[imageKey] = imageBin  cache[labelKey] = label  if lexiconList:   lexiconKey = 'lexicon-%09d' % cnt   cache[lexiconKey] = ' '.join(lexiconList[i])  if cnt % 1000 == 0:   writeCache(env, cache)   cache = {}   print('Written %d / %d' % (cnt, nSamples))  cnt += 1 nSamples = cnt - 1 cache['num-samples'] = str(nSamples) writeCache(env, cache) print('Created dataset with %d samples' % nSamples)  def read_text(path):  with open(path) as f:  text = f.read() text = text.strip()  return text  if __name__ == '__main__': # lmdb 輸出目錄 outputPath = 'D:/ruanjianxiazai/tuxiangyangben/fengehou/train'#訓練集和驗證集要跑兩遍這個程序,分兩次生成  path = "D:/ruanjianxiazai/tuxiangyangben/fengehou/chenguang/*.jpg"#將txt與jpg的都放在同一個文件里面 imagePathList = glob.glob(path) print '------------',len(imagePathList),'------------' imgLabelLists = [] for p in imagePathList:  try:   imgLabelLists.append((p, read_text(p.replace('.jpg', '.txt'))))  except:   continue    # imgLabelList = [ (p, read_text(p.replace('.jpg', '.txt'))) for p in imagePathList] # sort by labelList imgLabelList = sorted(imgLabelLists, key = lambda x:len(x[1])) imgPaths = [ p[0] for p in imgLabelList] txtLists = [ p[1] for p in imgLabelList]  createDataset(outputPath, imgPaths, txtLists, lexiconList=None, checkValid=True)             
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产亚洲精品影达达兔 | 一级成人欧美一区在线观看 | 国内久久久久 | 黄网站在线免费看 | 日产精品久久久一区二区福利 | 黄色网电影 | 国产羞羞视频 | 欧美视频一二三区 | 久久国产精品久久久久久电车 | 蜜桃网站免费 | 亚洲精品3 | 久久久久久久久久久久久久久久久久 | 精品国产一区二区三区久久久蜜月 | 亚洲国产成人久久一区www妖精 | 在线成人精品视频 | 欧美一级在线免费 | 国产 日韩 亚洲 欧美 | 国产精品久久久久久久av | 最新中文字幕在线 | 懂色av懂色aⅴ精彩av | 黄色免费小网站 | 91av爱爱 | 国产精品视频六区 | 欧美成人精品欧美一级乱黄 | h色网站在线观看 | 一区二区三区国产在线 | 国产精品久久久久久久亚洲按摩 | 亚洲一区免费观看 | 久久国产在线观看 | 九色新网址 | 九九视屏 | 欧美日韩高清一区 | 一级电影在线观看 | 久久羞羞| 一级做受毛片免费大片 | 欧美一区成人 | 美女视频免费一区二区 | 久久精品视频一区 | 国产精品久久久久久久亚洲按摩 | 国产精品久久av | 免费人成在线观看网站 |