成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

自己打包一個數據集代碼案例——使用Numpy計算框架自定義一個類似MINST的數據集 原創

發布于 2025-3-11 10:10
瀏覽
0收藏

“ 自定義數據集既是未來人工智能技術的重點,也是人工智能技術的難點 ”

在人工智能領域中,數據的重要性得到了充分的體現;但很多人還不知道怎么打造一個數據集,所以今天我們就用一些圖片來模仿MINST數據集打造一個類MINST數據集,能夠直接被神經網絡加載和使用。

當然,為了簡單起見我們對數據就只進行簡單的處理,如統一圖片大小,不會按照嚴格的數據處理方式;比如說圖片裁剪,增強等。

自定義數據集實現

以MINST數據集為例,其主要由四個壓縮文件組成;訓練集的圖片和標簽,以及測試集的圖片和標簽。如下圖所示:

自己打包一個數據集代碼案例——使用Numpy計算框架自定義一個類似MINST的數據集-AI.x社區

而我們今天就以訓練圖片數據為例,使用一些圖片構造一個訓練集。

首先我們需要從網上或者其它地方找到一些特征數據,放到一個目錄里面,作者這里使用的是一些螞蟻的圖片數據。如下圖所示:

自己打包一個數據集代碼案例——使用Numpy計算框架自定義一個類似MINST的數據集-AI.x社區

由于找到的圖片格式不同,大小也不同,因此我們第一步就通過對圖片大小進行變換以獲取同樣大小的圖片,如MINST數據集的圖片就是28*28統一大小的數據。統一圖片大小的好處是方便神經網絡進行處理。

首先我們需要讀取圖片數據,并對圖片數據大小進行統一處理,如下所示,可以明顯看到圖片的size參差不齊。

自己打包一個數據集代碼案例——使用Numpy計算框架自定義一個類似MINST的數據集-AI.x社區

因此,我們需要對圖片大小進行統一處理;函數如下:

# 圖片大小轉換函數 這種只是簡單的大小變換 會導致圖片變形只作為例子使用
def resize_image(img, target_size=(500, 500)): # img 是待處理圖片 target_size是目標大小,如(500, 500)    
  return img.resize(target_size, Image.Resampling.LANCZOS)

如下圖所示,變換之后的圖片大小變成了統一的500*500;但這里只是舉個簡單的圖片處理例子,在實際的業務場景中,對圖片數據的處理會更復雜,更嚴格;比如對圖片進行裁剪,統一通道,等比縮放等;而現在這種簡單的變形方式會導致圖片變形,因此只作為例子使用。

這里對圖片處理的工具使用的是Python經典的圖片處理包PIL,當然讀者也可以選擇自己喜歡的其它工具包,如OpenCV等??傊康木褪前褕D片處理成自己需要的格式。

在對圖片數據進行初步處理之后,就可以使用Numpy把圖片轉換為向量格式,也就是多維矩陣。

img = np.array(img)

完整代碼如下所示:

import os
from PIL import Image
import numpy as np
import struct
"""自定義圖片數據集 缺少的包需要自己按照 pip(3) install 包名"""
# 圖片大小轉換函數
def resize_image(img, target_size=(500, 500)): 
# img 是待處理圖片 target_size是目標大小,如(500, 500)    
  return img.resize(target_size, Image.Resampling.LANCZOS)
# 把處理后的圖片打包成類似MINST的二進制格式 數據集的前部分是數據集的描述內容 因此需要添加文件頭  類似于MINST的真實圖片都是從16字節開始的
def save_images_as_minst(file_path, images):    
  """    將圖像數據保存為 MNIST 格式    :param file_path:    :param images: 圖像數據,形狀為 (num_samples, height, width)    :return:    """    
  num_samples, height, width = images.shape    
  with open(file_path, 'wb') as f:        
  # 寫入文件頭        
  f.write(struct.pack('>IIII', 0x00000803, num_samples, height, width))        
  # 寫入圖像數據        
  f.write(images.tobytes())
# 自定義數據集函數
def custom_data(ants_path):    
  # 收集向量化的圖片列表    
  image_data = []    
  for path in os.listdir(ants_path):        
    ant_path = os.path.join(ants_path, path)  
    # 獲取圖片完整路徑        
    image = Image.open(ant_path)        
    # print(image) # 打印螞蟻圖片類型        
    img = resize_image(image) # 變換之后的圖片大小        
    # print(img)        
    # 在對圖片進行向量化之前 也可以指定圖片對模式 L-灰度模式 RGB-彩色 PIL一共有九種模式 讀者可以自信百度        
    # 目前圖片的默認模式是RGB模式 而MINST數據集是灰度模式 也就是L 表示黑白色 讀者可以根據自己的需求進行處理 或采用默認即可        
    img = img.convert('L') # 這里由于圖片格式不一致 導致其通道數不同 因此這里使用最簡單的灰度圖——L 來統一圖片 方便后續處理        
    img = np.array(img)        # 把向量化的圖片放到一個列表中        
    image_data.append(img)    
  # print("image_data: ", image_data)    
  # 統一轉換成numpy 數組  方便使用二進制存儲    
  data = np.array(image_data)    
  print("轉換后的圖片數組: ", data)    
  # 打包文件名 保存在當前目錄下 data是待打包的數據    
  save_images_as_minst("custom_images_ants_ubyte", data)
ants_path = "./ants_image"
custom_data(ants_path)




# 讀取打包的文件
def read_image(file_path):    
  with open(file_path, 'rb') as f:        
    magic, num, rows, cols = struct.unpack('>IIII', f.read(16))        
    images = np.frombuffer(f.read(), dtype=np.uint8).reshape(num, rows, cols)    
  return images
  
for img in read_image("./custom_images_ants_ubyte"):    
  im = Image.fromarray(img)    
  print(im)

這里只是舉了一個簡單的處理和打包數據集的例子,在真實的場景中數據處理要遠比這復雜的多。

而且這里主要針對的是圖片數據,工具使用的主要是PIL圖片處理工具和Numpy科學計算工具。

如果是文本數據,還會涉及到詞表的構建等;總之,數據處理是作為人工智能從業者所必備的技能。

完整數據和代碼,也可以在公眾號回復: 自定義MINST數據集 獲取


本文轉載自公眾號AI探索時代 作者:DFires

原文鏈接:??https://mp.weixin.qq.com/s/TqaN0c522d3b4At5B28Cyw??

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
已于2025-3-11 10:10:14修改
收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 欧美精品导航 | 日韩在线视频观看 | 黄色网页在线 | 狠狠亚洲 | 亚洲自拍偷拍欧美 | 免费一级淫片aaa片毛片a级 | 日韩在线中文字幕 | 欧美一区二区三 | 日韩精品在线播放 | 久久99精品久久久久 | 色偷偷人人澡人人爽人人模 | 欧美亚洲一区二区三区 | 九热在线 | 国内精品久久久久久 | 日日日日操 | 国产精品毛片一区二区三区 | 久久电影一区 | 中文字幕一区二区三区在线观看 | 国产免费一区二区 | 国产高清在线 | 一区二区三区在线免费观看视频 | 久久久久久久久久久高潮一区二区 | 日韩欧美在线一区 | 亚洲精品电影网在线观看 | 日韩成人国产 | 81精品国产乱码久久久久久 | 日本一二区视频 | 亚洲精品免费视频 | 亚洲成人av | 久久99精品久久久 | 欧美精品欧美精品系列 | 日本一区二区高清不卡 | 欧美精品一区二区三区在线 | 精品熟人一区二区三区四区 | 日本在线视频不卡 | 久久久久久国产 | 精品不卡 | 欧美在线一区二区三区 | 在线观看亚洲精品视频 | 高清一区二区三区 | 久久精品97 |