亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

keras 讀取多標(biāo)簽圖像數(shù)據(jù)方式

 更新時(shí)間:2020年06月12日 15:47:26   作者:Stretch Dong  
這篇文章主要介紹了keras 讀取多標(biāo)簽圖像數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

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

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

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

接下來(lái)就是放入keras.fit_generate中了

history=model.fit_generator(generator=train_data.get_mini_batch(),
   steps_per_epoch=146,
   epochs=300,
   validation_data=test_data.get_mini_batch(),
   validation_steps=34,
   )

以上這篇keras 讀取多標(biāo)簽圖像數(shù)據(jù)方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python datetime處理時(shí)間小結(jié)

    python datetime處理時(shí)間小結(jié)

    這篇文章主要介紹了python datetime處理時(shí)間小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • python3讀取MySQL-Front的MYSQL密碼

    python3讀取MySQL-Front的MYSQL密碼

    本篇文章主要介紹了python3讀取MySQL-Front的MYSQL密碼的相關(guān)知識(shí),具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-05-05
  • python 把數(shù)據(jù) json格式輸出的實(shí)例代碼

    python 把數(shù)據(jù) json格式輸出的實(shí)例代碼

    下面小編就為大家?guī)?lái)一篇python 把數(shù)據(jù) json格式輸出的實(shí)例代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10
  • Python+tkinter編寫(xiě)一個(gè)最近很火的強(qiáng)制表白神器

    Python+tkinter編寫(xiě)一個(gè)最近很火的強(qiáng)制表白神器

    這篇文章主要為大家詳細(xì)介紹了Python如何通過(guò)tkinter編寫(xiě)一個(gè)最近很火的強(qiáng)制表白神器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起嘗試一下
    2023-04-04
  • 使用Python實(shí)現(xiàn)在Windows下安裝Django

    使用Python實(shí)現(xiàn)在Windows下安裝Django

    今天小編就為大家分享一篇關(guān)于使用Python實(shí)現(xiàn)在Windows下安裝Django,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • Python 實(shí)現(xiàn)某個(gè)功能每隔一段時(shí)間被執(zhí)行一次的功能方法

    Python 實(shí)現(xiàn)某個(gè)功能每隔一段時(shí)間被執(zhí)行一次的功能方法

    今天小編就為大家分享一篇Python 實(shí)現(xiàn)某個(gè)功能每隔一段時(shí)間被執(zhí)行一次的功能方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • python賦值操作方法分享

    python賦值操作方法分享

    python的賦值操作有幾種類型,下面我們分別給大家說(shuō)下,需要的朋友可以參考下
    2013-03-03
  • Djang中靜態(tài)文件配置方法

    Djang中靜態(tài)文件配置方法

    這篇文章主要介紹Djang中靜態(tài)文件配置方法的相關(guān)資料,django靜態(tài)文件配置主要是為了讓用戶請(qǐng)求django服務(wù)器時(shí)能找到靜態(tài)文件返回,需要的朋友可以參考下
    2015-07-07
  • Python實(shí)現(xiàn)猜拳與猜數(shù)字游戲的方法詳解

    Python實(shí)現(xiàn)猜拳與猜數(shù)字游戲的方法詳解

    本文將為大家介紹兩個(gè)用Python語(yǔ)言實(shí)現(xiàn)的小案例:猜拳游戲與數(shù)字猜猜猜小游戲,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-04-04
  • 解決redis與Python交互取出來(lái)的是bytes類型的問(wèn)題

    解決redis與Python交互取出來(lái)的是bytes類型的問(wèn)題

    這篇文章主要介紹了解決redis與Python交互取出來(lái)的是bytes類型的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07

最新評(píng)論