本文目錄一覽:
- 1、Python 製作Pascal VOC數據集
- 2、mxnet數據集的製作和訓練
- 3、如何用python imageio製作圖像數據集
- 4、Python實操:手把手教你用Matplotlib把數據畫出來
- 5、如何使用Python的Pandas庫繪製折線圖
Python 製作Pascal VOC數據集
下圖是 Pascal VOC 數據集格式。
1、 Annotations 目錄是存放 xml 文件;
2、 ImageSets 目錄是存放 txt 文件,主要是測試集、訓練集、驗證集等文件名稱的集合;
3、 JPEGImages 目錄是存放圖片文件( jpg );
1、從 Annotations 目錄下讀取 xml 目錄;
2、把 xml 目錄,隨機重置一下,這樣在訓練的時候,各個分類是隨機讀取,不會出現某一個分類聚集讀取,從而影響訓練效果。當然,你也可以在訓練的時候選擇隨機重置,道理是一樣的;
3、創建將要寫入的 txt 文件。這裡示範了訓練集、驗證集,其他的可自行添加;
4、讀取目錄文件,通過前綴判斷,寫入 txt 文件。
有時候不需要指定數據集,只是從一個大的原始數據集中,隨機選取一部分當中訓練集、一部分當作驗證集、一部分當作測試集。
mxnet數據集的製作和訓練
安裝mxnet
Cpu版:pip install mxnet
Gpu版:pip install mxnet-cu80
若cuda版本為cuda-9.0,改為pip install mxnet-90
pip或apt安裝sklearn,easydict
製作數據集
將圖片分類並放入不同文件夾
運行python im2rec.py train –list ./可生成.list文件,包含圖片列表
運行python im2rec.py train ./ train.rec和train.idx訓練文件
–train-ratio 0.9生成驗證數據集.bin文件參數為訓練數據集和驗證數據集之比
–resize 128 128指定生成數據集的圖片大小
參考
將生成的.rec,.idx,.bin(非必須)文件放入datasets/faces_emore中
新建property文本,寫入圖片數量,圖片長寬 example : 86545 128 128
例:
python -u train.py –network m1 –loss softmax –dataset emore,1
使用softma、nosoftmax、arcface或cosface訓練完成後,使用生成模型運行三元組損失訓練
例:
Python -u train.py –network m1 -loss triplet –lr 0.005 –pretrained ./models/m1-softmax-emore
參數說明
–dataset訓練集位置,具體位置查看config.py 108至120行
–network網絡模型 候選參數 : r100 r100fc r50 r50v1(基於resnet) d169 d201(基於densenet) y1 y2(基於mobilefacenet) m1 m0.5(基於mobilenet) mnas mnas05 mnas025(基於mnasnet)
–loss損失函數 候選參數 :softmax(標準損失函數) nsoftmax (組合損失函數)arcface cosface combined triplet(三元組損失) atriplet
–ckpt模型存儲時間。0: 放棄存儲 1:必要時存儲(驗證集準確率達標時,若無驗證集則不存儲 3:總是存儲)
–lr學習率
–lr-steps學習率改變方法 例:』10000,20000,2200000』即達到圖片數量時學習率*0.1
–per-batch-size每次的訓練的數量 數量越少,佔用顯卡內存越少
參考
如何用python imageio製作圖像數據集
聲明在此使用的彩色圖轉灰度圖進行的單通道的圖像存儲,對於多通道的圖像隨後進行總結
主要流程是將圖像數據讀出
將圖像轉換成numpy的數組形式
將圖像進行行的處理編程行向量的存儲
之後是將數據與標籤進行合併存儲
存儲在一個list中
將這個數據集進行數據的打亂順序,(隨機化的過程)
主要的過程就是這些了
下面是代碼的
===========================
# -*-coding:utf-8-*-
import numpy
import theano
from PIL import Image
from pylab import *
import os
import theano.tensor as T
import random
import pickle
def dataresize(path=r’D:\worksapce_python\20160426_cp\testing’):
# test path
path_t =r”D:\worksapce_python\20160426_cp\training”
# train path
datas = []
train_x= []
train_y= []
valid_x= []
valid_y= []
test_x= []
test_y= []
for dirs in os.listdir(path):
# print dirs
for filename in os.listdir(os.path.join(path,dirs)):
imgpath =os.path.join(os.path.join(path,dirs),filename)
img = Image.open(imgpath)
img =img.convert(‘L’).resize((28,28))
width,hight=img.size
img = numpy.asarray(img,dtype=’float64′)/256.
Python實操:手把手教你用Matplotlib把數據畫出來
作者:邁克爾·貝耶勒(Michael Beyeler)
如需轉載請聯繫華章 科技
如果已安裝Anaconda Python版本,就已經安裝好了可以使用的 Matplotlib。否則,可能要訪問官網並從中獲取安裝說明:
正如使用np作為 NumPy 的縮寫,我們將使用一些標準的縮寫來表示 Matplotlib 的引入:
在本書中,plt接口會被頻繁使用。
讓我們創建第一個繪圖。
假設想要畫出正弦函數sin(x)的線性圖。得到函數在x坐標軸上0≤x<10內所有點的值。我們將使用 NumPy 中的 linspace 函數來在x坐標軸上創建一個從0到10的線性空間,以及100個採樣點:
可以使用 NumPy 中的sin函數得到所有x點的值,並通過調用plt中的plot函數把結果畫出來:
你親自嘗試了嗎?發生了什麼嗎?有沒有什麼東西出現?
實際情況是,取決於你在哪裡運行腳本,可能無法看到任何東西。有下面幾種可能性:
1. 從.py腳本中繪圖
如果從一個腳本中運行 Matplotlib,需要加上下面的這行調用:
在腳本末尾調用這個函數,你的繪圖就會出現!
2. 從 IPython shell 中繪圖
這實際上是交互式地執行Matplotlib最方便的方式。為了讓繪圖出現,需要在啟動 IPython 後使用所謂的%matplotlib魔法命令。
接下來,無須每次調用plt.show()函數,所有的繪圖將會自動出現。
3. 從 Jupyter Notebook 中繪圖
如果你是從基於瀏覽器的 Jupyter Notebook 中看這段代碼,需要使用同樣的%matplotlib魔法命令。然而,也可以直接在notebook中嵌入圖形,這會有兩種輸出選項:
在本書中,將會使用inline選項:
現在再次嘗試一下:
上面的命令會得到下面的繪圖輸出結果:
如果想要把繪圖保存下來留作以後使用,可以直接在 IPython 或者 Jupyter Notebook 使用下面的命令保存:
僅需要確保你使用了支持的文件後綴,比如.jpg、.png、.tif、.svg、.eps或者.pdf。
作為本章最後一個測試,讓我們對外部數據集進行可視化,比如scikit-learn中的數字數據集。
為此,需要三個可視化工具:
那麼開始引入這些包吧:
第一步是載入實際數據:
如果沒記錯的話,digits應該有兩個不同的數據域:data域包含了真正的圖像數據,target域包含了圖像的標籤。相對於相信我們的記憶,我們還是應該對digits稍加 探索 。輸入它的名字,添加一個點號,然後按Tab鍵:digits.TAB,這個操作將向我們展示digits也包含了一些其他的域,比如一個名為images的域。images和data這兩個域,似乎簡單從形狀上就可以區分。
兩種情況中,第一維對應的都是數據集中的圖像數量。然而,data中所有像素都在一個大的向量中排列,而images保留了各個圖像8×8的空間排列。
因此,如果想要繪製出一副單獨的圖像,使用images將更加合適。首先,使用NumPy的數組切片從數據集中獲取一幅圖像:
這裡是從1797個元素的數組中獲取了它的第一行數據,這行數據對應的是8×8=64個像素。下面就可以使用plt中的imshow函數來繪製這幅圖像:
上面的命令得到下面的輸出:
此外,這裡也使用cmap參數指定了一個顏色映射。默認情況下,Matplotlib 使用MATLAB默認的顏色映射jet。然而,在灰度圖像的情況下,gray顏色映射更有效。
最後,可以使用plt的subplot函數繪製全部數字的樣例。subplot函數與MATLAB中的函數一樣,需要指定行數、列數以及當前的子繪圖索引(從1開始計算)。我們將使用for 循環在數據集中迭代出前十張圖像,每張圖像都分配到一個單獨的子繪圖中。
這會得到下面的輸出結果:
關於作者:Michael Beyeler,華盛頓大學神經工程和數據科學專業的博士後,主攻仿生視覺計算模型,用以為盲人植入人工視網膜(仿生眼睛),改善盲人的視覺體驗。 他的工作屬於神經科學、計算機工程、計算機視覺和機器學習的交叉領域。同時他也是多個開源項目的積極貢獻者。
本文摘編自《機器學習:使用OpenCV和Python進行智能圖像處理》,經出版方授權發佈。
如何使用Python的Pandas庫繪製折線圖
我們經常會使用Python的Pandas繪製各種數據圖形,那麼如何使用它繪製折線圖呢?下面我給大家分享一下。
工具/材料
Pycharm
01
首先我們需要打開Excel軟件準備需要的數據,這裡多準備幾列數據,一列就是一條折線,如下圖所示
02
然後我們打開Pycharm軟件,新建Python文件,導入Pandas庫,接着將Excel中的數據讀取進數據集緩存,如下圖所示
03
接下來我們利用plot方法繪製折線圖,如下圖所示,這裡只添加了一列標題
04
運行文件以後我們就可以看到折線圖顯示出來了,但是比較的簡單,下面我們逐漸的豐富它
05
然後在plot方法中將excel裏面的多列標題都添加進來,如下圖所示
06
這次在運行文件的時候我們就可以看到折線圖上有多條線了,如下圖所示
07
接下來我們在為折線圖設置標題,X,Y坐標軸的內容,如下圖所示
08
然後通過plot方法下面的area方法對摺線圖的空白區域進行疊加填充,如下圖所示
09
最後我們運行完善好後的文件,就可以看到如下圖所示的折線圖了,到此我們的折線圖繪製也就完成了
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/248336.html