日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

制作图片数据集

發(fā)布時間:2025/4/16 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 制作图片数据集 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)的時候,遇到了cifar10圖像數(shù)據(jù)集,用著挺好,但不想局限于固定的幾種圖像的識別,所以就有了自己制作數(shù)據(jù)集來識別的想法。

一、cifar10數(shù)據(jù)集。
據(jù)原網(wǎng)站介紹,數(shù)據(jù)集為二進(jìn)制。將cifar10解壓后,得到data_batch_1等數(shù)據(jù)集,打開看一下:
import pickle
f = open('./data_batch_1','rb') #以二進(jìn)制讀模式打開
d = pickle.load(f)
print(d)
可知數(shù)據(jù)集為dict型,主要有’data’和’labels’等四種鍵值。

二、爬取圖片
首先要感謝被爬網(wǎng)站的開放性和包容心,潭州教育堅持對爬蟲技術(shù)的無私分享以及博主Jimmy。

import requests
import urllib.parse
import threading

設(shè)置最大線程鎖(與電腦配置和帶寬有關(guān))

thread_lock = threading.BoundedSemaphore(value=10)

def get_page(url):

page = requests.get(url) page = page.content page = page.decode('utf-8') # 將 bytes 轉(zhuǎn)換成 字符串 return page

def pages_from_duitang(label):

pages = [] #找到圖片鏈接規(guī)律

url = 'https://www.duitang.com/napi/blog/list/by_search/?
kw={}&start={}&limit=1000'

#將中文轉(zhuǎn)成url編碼 label = urllib.parse.quote(label) for index in range(0,3600,100):u = url.format(label, index)print(u)page = get_page(u)pages.append(page) return pages

def findall_in_page(page,startpart,endpart):

all_strings = [] end = 0 while page.find(startpart,end) != -1:start = page.find(startpart, end) + len(startpart)end = page.find(endpart,start)string = page[start:end]all_strings.append(string) return all_strings

def pic_urls_from_pages(pages):

pic_urls = [] for page in pages:urls = findall_in_page(page, 'path":"', '"')pic_urls.extend(urls) return pic_urls

def download_pics(url,n):

r = requests.get(url) path = 'pics/fish/' + str(n) + '.jpg' with open(path, 'wb') as f:f.write(r.content) #下載結(jié)束,解鎖 thread_lock.release()

def main(label):

pages = pages_from_duitang(label) pic_urls = pic_urls_from_pages(pages) n = 0 for url in pic_urls:n += 1print('正在下載第 {} 張圖片'.format(n))#上鎖thread_lock.acquire()t = threading.Thread(target=download_pics, args = (url, n))t.start()

main('魚')

三、制作數(shù)據(jù)集

from PIL import Image

import numpy as np
import pickle,glob,os

arr = [[]]

number of pictures

n = 1
for infile in glob.glob('D:/py/pics/trees/*.jpg'):

file,ext = os.path.splitext(infile)#分離文件名和擴(kuò)展名Img = Image.open(infile)print(Img.mode,file)#圖片尺寸和文件名(用于調(diào)試過程中定位錯誤)

if Img.mode != 'RGB':#將所有非'RGB'通道圖片轉(zhuǎn)化為RGB

Img = Img.convert('RGB') width = Img.size[0] height = Img.size[1]print('{} imagesize is:{} X {}'.format(n,width,height)) n += 1

Img = Img.resize([32,32],Image.ANTIALIAS)

抗鋸齒的過濾屬性,這些都是為了保證剪切圖片的時候,最大降低失真度,這樣出

的圖片體積就稍微大些了。

r,g,b = Img.split() r_array = np.array(r).reshape([1024]) g_array = np.array(g).reshape([1024]) b_array = np.array(b).reshape([1024]) merge_array = np.concatenate((r_array,g_array,b_array)) if arr == [[]]:arr = [merge_array]continue #拼接

arr = np.concatenate((arr,[merge_array]),axis=0)

#打亂順序

arr = np.random.shuffle(arr)

生成標(biāo)簽

labelset = np.zeros((arr.shape[0],))
labelset = np.reshape(labelset,[arr.shape[0],])

字典分割出訓(xùn)練集和測試集

train_dic = {'data':arr[:2000],'labels':labelset[:2000]}
test_dic = {'data':arr[2000:],'labels':labelset[2000:]}

f = open('./data_batch_8','wb')#二進(jìn)制寫模式打開,如果不存在,直接生成
pickle.dump(train_dic,f,protocol=2)

序列化操作

由于阿里云平臺用的是Python2.7版本,我的是3.6,所以要進(jìn)行退檔操作protocol=2

g = open('./test_batch_1','wb')
pickle.dump(test_dic,g,protocol=2)

四、訓(xùn)練和測試
由于本機(jī)硬件水平較低,采用阿里云平臺進(jìn)行測試,根據(jù)自己的數(shù)據(jù)集規(guī)模,調(diào)整平臺提供的代**碼。經(jīng)測試,精度達(dá)到76%。對于這個結(jié)果還是相當(dāng)滿意的,因為數(shù)據(jù)集中干擾> > 太多,沒有進(jìn)行篩選。

五、問題
在制作數(shù)據(jù)集過程中,遇到兩個問題:
1、r,g,b = img.split():(已解決)
valueError:too?many?values?to?unpack(expected 3)
unpack的個數(shù)對不上,比如:a,b = tuple(1,2,3) 就會報出這個錯誤
通過Img.mode發(fā)現(xiàn)有的圖片是“1”、“L”、“P”和“RGBA”模式,需要convert。
2、r,g,b = img.split():(待解決)
OSError:cannot identify image file:路徑+格式
暫時理解為系統(tǒng)兼容性問題

總結(jié)

以上是生活随笔為你收集整理的制作图片数据集的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。