本文目錄一覽:
【代碼閱讀】vit做貓狗分類
exists:是否在目錄存在時觸發異常。
如果exist_ok為False(默認值),則在目標目錄已存在的情況下觸發FileExistsError異常;
如果exist_ok為True,則在目標目錄已存在的情況下不會觸發FileExistsError異常。
這裡設置為true,表示目錄存在的時候不觸發異常,這樣就不用檢查目錄是否存在
表示把train.zip解壓到data目錄下。
搜索文件的方式
利用了sklearn
函數sklearn.model_selection.train_test_split 用法
在使用python做機械學習時候,為了製作訓練數據(training samples)和測試數據(testing samples),常使用sklearn裡面的sklearn.model_selection.train_test_split模塊。
train_test_split的使用方法:sklearn.model_selection.train_test_split(*arrays, **options)
train_test_split裡面常用的因數(arguments)介紹:
arrays:分割對象同樣長度的列表或者numpy arrays,矩陣。
test_size:兩種指定方法。1:指定小數。小數範圍在0.0~0.1之間,它代表test集佔據的比例。2:指定整數。整數的大小必須在這個數據集個數範圍內,總不能指定一個數超出了數據集的個數範圍吧。要是test_size在沒有指定的場合,可以通過train_size來指定。(兩個是對應關係)。如果train_size也沒有指定,那麼默認值是0.25.
train_size:和test_size相似。
random_state:這是將分割的training和testing集合打亂的個數設定。如果不指定的話,也可以通過numpy.random來設定隨機數。
shuffle和straify不常用。straify就是將數據分層。
包括
類需要包含
目的是的,對可以索引的數據,處理成多種方便讀取方式
按照batch_size來讀取(包裝後,一次返回的不是一個數據,而是一個batch的數據)
按照是否打亂來讀取,(如果打亂之後,返回的數據就是打亂之後的一個batch的數據,而不是之前沒有打亂的連續數據,這樣有助於送入訓練的數據集分布更加均勻)
這裡的Linformer,ViT都是從pip安裝的庫裡面得到的,也可以自己寫模型。
初始化efficient_transformer的參數
efficient作為參數和其他的參數一起初始化ViT模型
模型轉到cuda上運行
其他優化算法包括:
opt_SGD = torch.optim.SGD(net_SGD.parameters(),lr=Learning_rate)
opt_Momentum = torch.optim.SGD(net_Momentum.parameters(),lr=Learning_rate,momentum=0.8,nesterov=True)
opt_RMSprop = torch.optim.RMSprop(net_RMSprop.parameters(),lr=Learning_rate,alpha=0.9)
opt_Adam = torch.optim.Adam(net_Adam.parameters(),lr=Learning_rate,betas=(0.9,0.99))
opt_Adagrad = torch.optim.Adagrad(net_Adagrad.parameters(),lr=Learning_rate)
補充知識:
PyTorch學習率調整策略通過torch.optim.lr_scheduler接口實現。PyTorch提供的學習率調整策略分為三大類,分別是
有序調整:等間隔調整(Step),按需調整學習率(MultiStep),指數衰減調整(Exponential)和 餘弦退火CosineAnnealing。
自適應調整:自適應調整學習率 ReduceLROnPlateau。
自定義調整:自定義調整學習率 LambdaLR。
等間隔調整學習率 StepLR,等間隔調整學習率,調整倍數為 gamma 倍,調整間隔為 step_size。間隔單位是step。需要注意的是, step 通常是指 epoch,不要弄成 iteration 了。
按需調整學習率 MultiStepLR, 按設定的間隔調整學習率。這個方法適合後期調試使用,觀察 loss 曲線,為每個實驗定製學習率調整時機。
指數衰減調整學習率 ExponentialLR
餘弦退火調整學習率 CosineAnnealingLR
自適應調整學習率 ReduceLROnPlateau
自定義調整學習率 LambdaLR
求一份計算機本科的畢業設計,題目只要計算機類的就可以
計算機畢業設計
基於Python的SIFT和KCF的運動目標匹配與跟蹤 畢業論文+項目源碼
基於Python決策樹算法的學生學習行為數據分析 設計報告+代碼及數據
基於Sring+bootstrap+MySQL的住房公積金管理系統 課程報告+項目源碼及數據庫文件
基於C++的即時通信軟件設計 畢業論文+項目源碼
基於JavaWeb+MySQL的圖書管理系統 課程報告+項目源碼及數據庫文件
基於Android Studio+Android SDK的手機通訊錄管理軟件設計 課程報告+項目源碼
基於JSP+MySQL的校園網上訂餐系統 畢業論文+項目源碼及數據庫文件
基於AndroidStudio的花藝分享平台APP設計 報告+源碼及APK文件
基於Python的酒店評論情感分析 課程報告+答辯PPT+項目源碼
基於QT的教務選課管理系統設計與實現 畢業論文+項目源碼
基於Android+Springboot+Mybatis+Mysql的個人生活APP設計 說明書+項目源碼
基於Vue.js+Go的Web3D宇宙空間數據可視化系統 設計報告+前後端源碼及數據
基於java+android+SQLite的保健型果飲在線銷售APP設計 畢業論文+源碼數據庫及APK文件
基於Vue.js+SpringBoot+MyBatis+MySQL的高校綜合資源發布分享社交二手平台 畢業論文+項目源碼及數據庫文件+演示視頻
基於Delphi+MySQL的大學生競賽發布及組隊系統 設計報告+源碼數據庫及可執行文件+使用說明書
基於Android的名片信息管理系統設計與實現 畢業論文+任務書+外文翻譯及原文+演示視頻+項目源碼
基於Python的電影數據可視化分析系統 設計報告+答辯PPT+項目源碼
基於JavaWeb的企業公司管理系統設計與實現 畢業論文+答辯PPT+演示視頻+項目源碼
高校成績管理數據庫系統的設計與實現 畢業論文+項目源碼
基於JavaWeb的家庭食譜管理系統設計與實現 畢業論文+項目源碼及數據庫文件
基於Python+SQLSERVER的快遞業務管理系統的設計與實現 畢業論文+項目源碼及數據庫文件
基於Python的語音詞頻提取雲平台 設計報告+設計源碼
在推薦系統中引入 Serendipity 的算法研究 畢業論文+參考文獻+項目源碼
基於Html+Python+Django+Sqlite的機票預訂系統 畢業論文+項目源碼及數據庫文件
基於Python的卷積神經網絡的貓狗圖像識別系統 課程報告+項目源碼
基於C++的雲安全主動防禦系統客戶端服務端設計 畢業論文+項目源碼
基於JavaSSM的學生成績管理APP系統設計與實現 畢業論文+答辯PPT+前後台源碼及APK文件
基於JavaSwing+MySQL的清朝古代名人數據管理系統設計 畢業論文+任務書+項目源碼及數據庫文件
基於Python_Django的社會實踐活動管理系統設計與實現 畢業論文
基於Servlet WebSocket MySQL實現的網絡在線考試系統 畢業論文+項目源碼
基於JavaWEB+MySQL的學生成績綜合管理系統 畢業論文+項目源碼及數據庫文件
基於SpringBoot+Vue和MySQL+Redis的網絡課程平台設計與實現 畢業論文+任務書+開題報告+中期報告+初稿+前後台項目源碼
基於Java的畢業設計題目收集系統 課程報告+項目源碼
基於Java+Python+html的生產者與消費者算法模擬 畢業論文+任務書+項目源碼
基於JavaWeb+MySQL的學院黨費繳費系統 畢業論文+項目源碼及數據庫文件
基於Java+MySQL的學生成績管理系統 畢業論文+任務書+答辯PPT+項目源碼及數據庫文件
基於Java+MySQL的學生和客戶信息管理系統 課程報告+項目源碼及數據庫文件
基於Java的長整數加減法算法設計 畢業論文+項目源碼
基於vue+MySQL的畢業設計網上選題系統 畢業論文+項目源碼
基於背景建模和FasterR-CNN的視頻前景和目標檢測 畢業論文+答辯PPT+項目源碼
基於Python的智能視頻分析之人數統計的多種實現 畢業論文+答辯PPT+項目源碼
基於C#+SQL server的校園卡消費信息管理系統 畢業論文+項目源碼及數據庫文件
Python如何圖像識別?
1. 簡介。
圖像處理是一門應用非常廣的技術,而擁有非常豐富第三方擴展庫的 Python 當然不會錯過這一門盛宴。PIL (Python Imaging Library)是 Python 中最常用的圖像處理庫,目前版本為 1.1.7,我們可以 在這裡 下載學習和查找資料。
Image 類是 PIL 庫中一個非常重要的類,通過這個類來創建實例可以有直接載入圖像文件,讀取處理過的圖像和通過抓取的方法得到的圖像這三種方法。
2. 使用。
導入 Image 模塊。然後通過 Image 類中的 open 方法即可載入一個圖像文件。如果載入文件失敗,則會引起一個 IOError ;若無返回錯誤,則 open 函數返回一個 Image 對象。現在,我們可以通過一些對象屬性來檢查文件內容,即:
1 import Image
2 im = Image.open(“j.jpg”)
3 print im.format, im.size, im.mode
4 JPEG (440, 330) RGB
這裡有三個屬性,我們逐一了解。
format : 識別圖像的源格式,如果該文件不是從文件中讀取的,則被置為 None 值。
size : 返回的一個元組,有兩個元素,其值為象素意義上的寬和高。
mode : RGB(true color image),此外還有,L(luminance),CMTK(pre-press image)。
現在,我們可以使用一些在 Image 類中定義的方法來操作已讀取的圖像實例。比如,顯示最新載入的圖像:
1 im.show()
2
輸出原圖:
3. 函數概貌。
3.1 Reading and Writing Images : open( infilename ) , save( outfilename )
3.2 Cutting and Pasting and Merging Images :
crop() : 從圖像中提取出某個矩形大小的圖像。它接收一個四元素的元組作為參數,各元素為(left, upper, right, lower),坐標系統的原點(0, 0)是左上角。
paste() :
merge() :
1 box = (100, 100, 200, 200)
2 region = im.crop(box)
3 region.show()
4 region = region.transpose(Image.ROTATE_180)
5 region.show()
6 im.paste(region, box)
7 im.show()
其效果圖為:
旋轉一幅圖片:
1 def roll(image, delta):
2 “Roll an image sideways”
3
4 xsize, ysize = image.size
5
6 delta = delta % xsize
7 if delta == 0: return image
8
9 part1 = image.crop((0, 0, delta, ysize))
10 part2 = image.crop((delta, 0, xsize, ysize))
11 image.paste(part2, (0, 0, xsize-delta, ysize))
12 image.paste(part1, (xsize-delta, 0, xsize, ysize))
13
14 return image
3.3 幾何變換。
3.3.1 簡單的幾何變換。
1 out = im.resize((128, 128)) #
2 out = im.rotate(45) #逆時針旋轉 45 度角。
3 out = im.transpose(Image.FLIP_LEFT_RIGHT) #左右對換。
4 out = im.transpose(Image.FLIP_TOP_BOTTOM) #上下對換。
5 out = im.transpose(Image.ROTATE_90) #旋轉 90 度角。
6 out = im.transpose(Image.ROTATE_180) #旋轉 180 度角。
7 out = im.transpose(Image.ROTATE_270) #旋轉 270 度角。
各個調整之後的圖像為:
圖片1:
圖片2:
圖片3:
圖片4:
3.3.2 色彩空間變換。
convert() : 該函數可以用來將圖像轉換為不同色彩模式。
3.3.3 圖像增強。
Filters : 在 ImageFilter 模塊中可以使用 filter 函數來使用模塊中一系列預定義的增強濾鏡。
1 import ImageFilter
2 imfilter = im.filter(ImageFilter.DETAIL)
3 imfilter.show()
3.4 序列圖像。
即我們常見到的動態圖,最常見的後綴為 .gif ,另外還有 FLI / FLC 。PIL 庫對這種動畫格式圖也提供了一些基本的支持。當我們打開這類圖像文件時,PIL 自動載入圖像的第一幀。我們可以使用 seek 和 tell 方法在各幀之間移動。
1 import Image
2 im.seek(1) # skip to the second frame
3
4 try:
5 while 1:
6 im.seek( im.tell() + 1)
7 # do something to im
8 except EOFError:
9 pass
3.5 更多關於圖像文件的讀取。
最基本的方式:im = Image.open(“filename”)
類文件讀取:fp = open(“filename”, “rb”); im = Image.open(fp)
字符串數據讀取:import StringIO; im = Image.open(StringIO.StringIO(buffer))
從歸檔文件讀取:import TarIO; fp = TarIo.TarIO(“Image.tar”, “Image/test/lena.ppm”); im = Image.open(fp)
基本的 PIL 目前就練習到這裡。其他函數的功能可點擊 這裡 進一步閱讀。
python處理圖片數據?
生成一張純色的圖片
先設置圖片的顏色,接着利用Image模塊的new方法新生成一張圖片,png格式的圖片需要設置成rgba,類似的還有rgb,L(灰度圖等),尺寸設定為640,480,這個可以根據自己的情況設定,顏色同樣如此。
批量生成圖片
上面生成了一張圖片,那要生成十張圖片呢,這種步驟一樣,只是顏色改變的,利用循環就可以解決。首先創建一個顏色列表,把要生成的圖片顏色放進去。接着循環獲取不同的顏色,保存的時候利用字符串拼接的方法改變圖片的名字。
本地生成的圖片
封裝成函數
前面的方法已經可以批量生成圖片了,為了通用性強一點,我們可以封裝成函數,把哪些可以改變的參數單獨抽離出來。尺寸也同樣,使用的時候,可以根據自己的需要定義顏色列表和尺寸。當然還有加一些提示用語和報錯兼容性,這裡就不講了。
本地生成的圖片
貓狗識別問題屬於
貓狗分類屬於計算機視覺中圖像分類的一個粗粒度的問題。
圖像分類是指根據各自在圖像信息中所反映的不同特徵,把不同類別的目標區分開來的圖像處理方法。它利用計算機對圖像進行定量分析,把圖像或圖像中的每個像元或區域劃歸為若干個類別中的某一種,以代替人的視覺判讀。
圖像分類核心是從給定的分類集合中給圖像分配一個標籤的任務。實際上,這意味着我們的任務是分析一個輸入圖像並返回一個將圖像分類的標籤。
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/129655.html