最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

2、一張圖片屬于多個標簽,但是幾個標簽不全是分類。比如data:一張結(jié)婚現(xiàn)場的圖片.jpg,label:高興,3(表示高興程度)。這時label1是分類,label2時回歸。這種情況就需要多個標簽,模型需要多個輸出。【其實最好的例子,就是目標檢測,不但檢測什么物體(分類),還要檢測到物體的坐標(回歸)】

在這里我主要針對第二種情況加以說明:

keras的ImageDataGenerator.flow_from_directory 只能簡單的讀取單標簽數(shù)據(jù)。所以我自己寫了個data_generate,來生成bathsize多標簽數(shù)據(jù)

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

#目標圖像大小
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,一個單獨數(shù)組,batch_score一個單獨的數(shù)組
  '''
  注釋掉的這段代碼生成的label是錯誤的。
  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]

接下來就是放入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 讀取多標簽圖像數(shù)據(jù)方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python光學(xué)仿真實現(xiàn)波長與顏色之間對應(yīng)關(guān)系示例解析

    Python光學(xué)仿真實現(xiàn)波長與顏色之間對應(yīng)關(guān)系示例解析

    這篇文章主要為大家介紹了Python光學(xué)仿真實現(xiàn)波長與顏色之間對應(yīng)關(guān)系的示例解析,有需要的我朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Python實現(xiàn)Excel和CSV之間的相互轉(zhuǎn)換

    Python實現(xiàn)Excel和CSV之間的相互轉(zhuǎn)換

    通過使用Python編程語言,編寫腳本來自動化Excel和CSV之間的轉(zhuǎn)換過程,可以批量處理大量文件,定期更新數(shù)據(jù),并集成轉(zhuǎn)換過程到自動化工作流程中,本文將介紹如何使用Python 實現(xiàn)Excel和CSV之間的相互轉(zhuǎn)換,需要的朋友可以參考下
    2024-03-03
  • python繪制堆疊條形圖介紹

    python繪制堆疊條形圖介紹

    大家好,本篇文章主要講的是python繪制堆疊條形圖介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Python中assert函數(shù)的使用(含源代碼)

    Python中assert函數(shù)的使用(含源代碼)

    本文主要介紹了Python中assert函數(shù)的使用(含源代碼),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Python獲取操作系統(tǒng)的三種方法

    Python獲取操作系統(tǒng)的三種方法

    在Python中,?如何獲取操作系統(tǒng)的類型、名稱、版本等信息,本文就來介紹三種獲取方法,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • python通過elixir包操作mysql數(shù)據(jù)庫實例代碼

    python通過elixir包操作mysql數(shù)據(jù)庫實例代碼

    這篇文章主要介紹了python通過elixir包操作mysql數(shù)據(jù)庫,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • CNN的Pytorch實現(xiàn)(LeNet)

    CNN的Pytorch實現(xiàn)(LeNet)

    本文主要從CNN的Pytorch實現(xiàn)庫導(dǎo)入,模型定義,數(shù)據(jù)加載、處理,模型訓(xùn)練,代碼匯總等方面入手介紹,運用代碼講解相關(guān)內(nèi)容非常的詳細,大家如果有需要了解相關(guān)知識的可以參考這篇文章
    2021-09-09
  • Python FtpLib模塊應(yīng)用操作詳解

    Python FtpLib模塊應(yīng)用操作詳解

    這篇文章主要介紹了Python FtpLib模塊應(yīng)用操作,結(jié)合實例形式詳細分析了FtpLib模塊的功能、配置、應(yīng)用相關(guān)操作技巧與使用注意事項,需要的朋友可以參考下
    2019-12-12
  • Python的線程之線程同步

    Python的線程之線程同步

    這篇文章主要為大家介紹了Python線程同步,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • python 協(xié)程 gevent原理與用法分析

    python 協(xié)程 gevent原理與用法分析

    這篇文章主要介紹了python 協(xié)程 gevent原理與用法,結(jié)合實例形式分析了Python協(xié)程gevent相關(guān)概念、原理、安裝及使用操作技巧,需要的朋友可以參考下
    2019-11-11

最新評論

徐水县| 上犹县| 道真| 句容市| 东兴市| 呼玛县| 曲阜市| 伽师县| 青河县| 长丰县| 嘉祥县| 长春市| 南宫市| 达孜县| 广安市| 四会市| 西充县| 天门市| 博爱县| 木兰县| 黔西| 班玛县| 利川市| 龙胜| 白玉县| 西平县| 梅河口市| 武功县| 竹溪县| 通化市| 囊谦县| 邳州市| 兴文县| 陇西县| 东台市| 徐闻县| 阜新| 潢川县| 武定县| 青浦区| 溆浦县|