真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

keras讀取多標(biāo)簽圖像數(shù)據(jù)的方法-創(chuàng)新互聯(lián)

不懂keras 讀取多標(biāo)簽圖像數(shù)據(jù)的方法?其實(shí)想解決這個(gè)問(wèn)題也不難,下面讓小編帶著大家一起學(xué)習(xí)怎么去解決,希望大家閱讀完這篇文章后大所收獲。

創(chuàng)新互聯(lián)公司是一家業(yè)務(wù)范圍包括IDC托管業(yè)務(wù),虛擬空間、主機(jī)租用、主機(jī)托管,四川、重慶、廣東電信服務(wù)器租用,珉田數(shù)據(jù)中心,成都網(wǎng)通服務(wù)器托管,成都服務(wù)器租用,業(yè)務(wù)范圍遍及中國(guó)大陸、港澳臺(tái)以及歐美等多個(gè)國(guó)家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務(wù)公司。

我所接觸的多標(biāo)簽數(shù)據(jù),主要包括兩類(lèi):

1、一張圖片屬于多個(gè)標(biāo)簽,比如,data:一件藍(lán)色的上衣圖片.jpg,label:藍(lán)色,上衣。其中l(wèi)abel包括兩類(lèi)標(biāo)簽,label1第一類(lèi):上衣,褲子,外套。label2第二類(lèi),藍(lán)色,黑色,紅色。這樣兩個(gè)輸出label1,label2都是是分類(lèi),我們可以直接把label1和label2整合為一個(gè)label,直接編碼,比如[藍(lán)色,上衣]編碼為[011011]。這樣模型的輸出也只需要一個(gè)輸出。實(shí)現(xiàn)了多分類(lèi)。

2、一張圖片屬于多個(gè)標(biāo)簽,但是幾個(gè)標(biāo)簽不全是分類(lèi)。比如data:一張結(jié)婚現(xiàn)場(chǎng)的圖片.jpg,label:高興,3(表示高興程度)。這時(shí)label1是分類(lèi),label2時(shí)回歸。這種情況就需要多個(gè)標(biāo)簽,模型需要多個(gè)輸出?!酒鋵?shí)最好的例子,就是目標(biāo)檢測(cè),不但檢測(cè)什么物體(分類(lèi)),還要檢測(cè)到物體的坐標(biāo)(回歸)】

在這里我主要針對(duì)第二種情況加以說(shuō)明:

keras的ImageDataGenerator.flow_from_directory 只能簡(jiǎn)單的讀取單標(biāo)簽數(shù)據(jù)。所以我自己寫(xiě)了個(gè)data_generate,來(lái)生成bathsize多標(biāo)簽數(shù)據(jù)

#此模塊主要用來(lái)讀取數(shù)據(jù)集,返回一個(gè)數(shù)據(jù)可迭代對(duì)象
#重點(diǎn)是,此模塊分批次的把圖像讀入內(nèi)存的,而不是一次全讀入,有效的減少了內(nèi)存溢出
import os
import cv2
import numpy as np
import keras
from random import shuffle

#目標(biāo)圖像大小
image_size= (229, 229, 3)
#類(lèi)別編碼
class_dict=dict(zip(['neg','pos','neu'],[0,1,2]))
#處理.txt文件,并加載圖片文件夾里的圖片名
#txt_path,txt文件路徑,data_path,圖片文件夾路徑

def read_txt(txt_path,data_path):
 # 中間數(shù)組
 labels_class = []
 labels_score = []
 with open(txt_path) as f:
 lines_list = f.readlines()
 for lines in lines_list:
  line = lines.split(' ')
  labels_class.append(line[0].rstrip(".jpg"))
  labels_score.append(line[2])
 labels_dict=dict(zip(labels_class,labels_score))
 #處理圖片數(shù)據(jù)集
 all_picture_name = os.listdir(data_path)
 #打亂數(shù)據(jù)集
 shuffle(all_picture_name)
 all_picture_path=[os.path.join(data_path,one)for one in all_picture_name]
 return all_picture_name,all_picture_path,labels_dict

class data_generate:
 def __init__(self,all_piture_name,all_picture_path,labels_dict,batch_size):
 self.index=0
 self.all_picture_name=all_piture_name
 self.all_picture_path=all_picture_path
 self.labels_dict=labels_dict
 self.batch_size = batch_size
 def get_mini_batch(self):
  while True:
  batch_images=[]
  batch_labels=[]
  batch_class=[]
  batch_score=[]
  for i in range(self.batch_size):
  if(self.index==len(self.all_picture_name)):
   self.index=0

  bgr_image = cv2.imread(self.all_picture_path[self.index])
  if len(bgr_image.shape) == 2: # 若是灰度圖則轉(zhuǎn)為三通道
   bgr_image = cv2.cvtColor(bgr_image, cv2.COLOR_GRAY2BGR)
  rgb_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2RGB)
  rgb_image=cv2.resize(rgb_image,(image_size[0], image_size[1]))
  img = np.array(rgb_image)
  img=keras.applications.inception_v3.preprocess_input(img)
  batch_images.append(img)
  #label=[]
  label1=self.all_picture_name[self.index].rstrip(".jpg")
  batch_class.append(keras.utils.to_categorical(class_dict[label1[:3]], 3))
  batch_score.append(np.array(self.labels_dict[label1]))
  #batch_labels.append(label)
  self.index+=1
  batch_images=np.array(batch_images)
  batch_class = np.array(batch_class)
  batch_score = np.array(batch_score)
  #注意label的生成batch_class,一個(gè)單獨(dú)數(shù)組,batch_score一個(gè)單獨(dú)的數(shù)組
  '''
  注釋掉的這段代碼生成的label是錯(cuò)誤的。
  batch_images=[]
  batch_labels=[]
  for i in range(self.batch_size):
  if(self.index==len(self.images)):
   self.index=0
  batch_images.append(self.images[self.index])
  batch_labels.append(self.labels[self.index])
  self.index+=1
  batch_images=np.array(batch_images)
  batch_labels=np.array(batch_labels)
  yield batch_images,batch_labels
  '''
  yield batch_images,[batch_class,batch_score]

文章標(biāo)題:keras讀取多標(biāo)簽圖像數(shù)據(jù)的方法-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://weahome.cn/article/dpiejp.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部