數據集003:貓類識別-12種貓分類數據集 (含數據集下載鏈接)

數據集簡介:

訓練集共有2160張貓的圖片, 分為12類. train_list.txt是其標注文件

測試集共有240張貓的圖片. 不含標注信息.

訓練集圖像(部分)

驗證集圖像(部分)

標簽

部分代碼:

# 定義訓練數據集
class TrainData(Dataset):def __init__(self):super().__init__()self.color_jitter = T.ColorJitter(brightness=0.05, contrast=0.05, saturation=0.05, hue=0.05)self.normalize = T.Normalize(mean=0, std=1)self.random_crop = T.RandomCrop(224, pad_if_needed=True)def __getitem__(self, index):# 讀取圖片image_path = train_paths[index]image = np.array(Image.open(image_path))    # H, W, Ctry:image = image.transpose([2, 0, 1])[:3]  # C, H, Wexcept:image = np.array([image, image, image]) # C, H, W# 圖像增廣features = self.color_jitter(image.transpose([1, 2, 0]))features = self.random_crop(features)features = self.normalize(features.transpose([2, 0, 1])).astype(np.float32)# 讀取標簽labels = train_labels[index]return features, labelsdef __len__(self):return len(train_paths)# 定義驗證數據集
class ValidData(Dataset):def __init__(self):super().__init__()self.normalize = T.Normalize(mean=0, std=1)def __getitem__(self, index):# 讀取圖片image_path = valid_paths[index]image = np.array(Image.open(image_path))    # H, W, Ctry:image = image.transpose([2, 0, 1])[:3]  # C, H, Wexcept:image = np.array([image, image, image]) # C, H, W# 圖像變換features = cv2.resize(image.transpose([1, 2, 0]), (256, 256)).transpose([2, 0, 1]).astype(np.float32)features = self.normalize(features)# 讀取標簽labels = valid_labels[index]return features, labelsdef __len__(self):return len(valid_paths)
# 調用resnet50模型
paddle.vision.set_image_backend('cv2')
model = paddle.vision.models.resnet50(pretrained=True, num_classes=12)# 定義數據迭代器
train_dataloader = DataLoader(train_data, batch_size=256, shuffle=True, drop_last=False)# 定義優化器
opt = paddle.optimizer.Adam(learning_rate=1e-4, parameters=model.parameters(), weight_decay=paddle.regularizer.L2Decay(1e-4))# 定義損失函數
loss_fn = paddle.nn.CrossEntropyLoss()# 設置gpu環境
paddle.set_device('gpu:0')# 整體訓練流程
for epoch_id in range(15):model.train()for batch_id, data in enumerate(train_dataloader()):# 讀取數據features, labels = datafeatures = paddle.to_tensor(features)labels = paddle.to_tensor(labels)# 前向傳播predicts = model(features)# 損失計算loss = loss_fn(predicts, labels)# 反向傳播avg_loss = paddle.mean(loss)avg_loss.backward()# 更新opt.step()# 清零梯度opt.clear_grad()# 打印損失if batch_id % 2 == 0:print('epoch_id:{}, batch_id:{}, loss:{}'.format(epoch_id, batch_id, avg_loss.numpy()))model.eval()print('開始評估')i = 0acc = 0for image, label in valid_data:image = paddle.to_tensor([image])pre = list(np.array(model(image)[0]))max_item = max(pre)pre = pre.index(max_item)i += 1if pre == label:acc += 1if i % 10 == 0:print('精度:', acc / i)paddle.save(model.state_dict(), 'acc{}.model'.format(acc / i))
# 進行預測和提交
# 首先拿到預測文件的路徑列表def listdir(path, list_name):for file in os.listdir(path):file_path = os.path.join(path, file)if os.path.isdir(file_path):listdir(file_path, list_name)else:list_name.append(file_path)
test_path = []
listdir('cat_12_test', test_path)# 加載訓練好的模型
pre_model = paddle.vision.models.resnet50(pretrained=True, num_classes=12)
pre_model.set_state_dict(paddle.load('acc0.9285714285714286.model'))
pre_model.eval()pre_classes = []
normalize = T.Normalize(mean=0, std=1)
# 生成預測結果
for path in test_path:image_path = pathimage = np.array(Image.open(image_path))    # H, W, Ctry:image = image.transpose([2, 0, 1])[:3]  # C, H, Wexcept:image = np.array([image, image, image]) # C, H, W# 圖像變換features = cv2.resize(image.transpose([1, 2, 0]), (256, 256)).transpose([2, 0, 1]).astype(np.float32)features = normalize(features)features = paddle.to_tensor([features])pre = list(np.array(pre_model(features)[0]))# print(pre)max_item = max(pre)pre = pre.index(max_item)print("圖片:", path, "預測結果:", pre)pre_classes.append(pre)print(pre_classes)

數據集鏈接:貓類識別-12種貓分類數據集(2400張)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/16862.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/16862.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/16862.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

eNSP華為模擬器-DHCP配置

拓撲圖 要求 PC1通過DHCP獲取192.168.1.1地址PC2和PC3通過DHCP接口地址池方式獲取IP地址配置靜態路由使其ping通 配置 配置主機名及接口IP地址 # AR1 <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sys AR1 [AR1]int g0/0/0 [AR1-Gigabit…

在leaflet上創建圖標

參考之前博客進行創建leaflet地圖 添加圖標 customIcon L.icon({iconUrl: helicopter0.png,//圖片路徑放在public中iconSize: [35, 35],iconAnchor: [15, 15],tooltipAnchor: [20, 0],}); let marker L.marker([obj.lat, obj.lon], { icon: customIcon, rotationAngle: 偏轉…

去重復記錄和排序——kettle開發09

一、去除重復記錄 去除重復記錄&#xff0c;就是將數據流中的數據進行字段比較&#xff0c;從而去掉重復值的過程。去除重復記錄的前提是需要將數據流中的數據進行排序&#xff0c;然后再進行去重操作。 去除重復記錄的邏輯是&#xff0c;如下圖&#xff0c;我們將需要比較的…

MySQL + MyBatis-Plus 分頁數據重復問題

參考文章&#xff1a;java - MySQL MyBatis-Plus 分頁數據重復問題 - 個人文章 - SegmentFault 思否

基礎使用-SQL-圖形化界面工具DataGrip

一、連接mysql &#xff08;1&#xff09;選擇加號&#xff0c;再選擇添加一個數據源&#xff08;Data Source&#xff09;&#xff0c;然后選擇MySQL &#xff08;2&#xff09;接下來就需要去配置MySQL的連接信息&#xff0c;并且去下載它的驅動&#xff0c;安裝驅動時可能要…

微信公眾號怎么做留言板功能

在繁忙的都市生活中&#xff0c;你是否常常感到孤單、渴望有一個可以傾訴心聲的地方&#xff1f;今天&#xff0c;我要為大家介紹一個特別的角落——我們公眾號的留言板功能。它不僅是一個留言板&#xff0c;更是一個情感交流的平臺&#xff0c;一個可以讓我們彼此心靈相通的橋…

百度發布代碼輔助工具,超強

不會用AI的程序員&#xff0c;會跟不會用智能手機的人一樣 百度這個代碼助手助手感覺還是不錯的 https://comate.baidu.com/?inviteCodeijmce7dj 目前看下來這個代碼助手是比較強的&#xff0c;比阿里的那個靈碼好用&#xff0c;他可以引用到當前的文件&#xff0c;并且能分…

安裝electron報鏡像源錯誤

報錯信息如下&#xff1a; F:\xxxxxx>npm i npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion1, but package-lock.json was generated for lockfileVersion2. Ill try to do my best with it!> vue-demi0.14.6 postinstall F…

idea改了代碼,但是需要緊急切換分支,需要把改動的保存到本地

但是如果有沖突&#xff0c;你沒有合并&#xff0c;那也會丟哦&#xff01; 改完那個分支&#xff0c;回到這個分支然后彈出來再。

Delphi 程序例子(DPI變化自動感知及顯示器相關功能演示)

目錄 一、前言 二、Delphi 演示程序&#xff08;D12版本&#xff0c;用D11也都可以&#xff09; 1. 演示程序功能&#xff1a; 2. 程序界面&#xff1a; 3. 程序源代碼下載&#xff08;有償&#xff09;&#xff1a; 一、前言 系列文章&#xff1a; 徹底搞懂 Windows 顯示…

YOLOv5 | 卷積模塊 | 提高網絡的靈活性和表征能力的動態卷積【附代碼+小白可上手】

&#x1f4a1;&#x1f4a1;&#x1f4a1;本專欄所有程序均經過測試&#xff0c;可成功執行&#x1f4a1;&#x1f4a1;&#x1f4a1; 輕量級卷積神經網絡由于其低計算預算限制了CNNs的深度&#xff08;卷積層數&#xff09;和寬度&#xff08;通道數&#xff09;&#xff0c;…

三分鐘一條AI小和尚視頻 ,日引300+創業粉。單日變現四位數 全套工具

經過六個月的不懈努力和無數次的嘗試錯誤&#xff0c;我終于找到了一個高效引流和積累粉絲的新策略&#xff0c;并愿意與大家無私分享。這一次&#xff0c;我將詳盡地介紹這個方法&#xff0c;建議朋友們多次觀看以徹底掌握其精髓。 簡而言之&#xff0c;該策略主要依托于AI繪…

C語言文件編程

C語言文件編程 第一部分 基本概念 1、Linux文件類型 1.-普通文件&#xff1a;存在于外部存儲器中&#xff0c;用于存儲普通數據。 1.txt 1.c 1.mp3 1.mp4 2.d目錄文件&#xff1a;用于存放目錄項&#xff0c;是文件系統管理的重要文件類型。 文件夾 3.p管道文件&#x…

基于springboot+vue的“漫畫之家”系統

開發語言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服務器&#xff1a;tomcat7數據庫&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;數據庫工具&#xff1a;Navicat11開發軟件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

全新交友盲盒+付費進群二合一源碼 包含全套源碼+教程

盲盒交友脫單系統源碼&#xff0c;帶教程&#xff0c;免授權這套源碼已經替你們搭建測試過了 附帶進群系統&#xff0c;定位是正常的 申明需要無限回調&#xff0c;沒有回調的搭建出來不能用不要說源碼不能用 全新系統方便大家使用&#xff0c;已經錄制好詳細的教程&#xf…

【Linux】-Spark分布式內存計算集群部署[20]

注意&#xff1a; 本節的操作&#xff0c;需要前置準備好Hadoop生態集群&#xff0c;請先部署好Hadoop環境 簡介 Spark是一款分布式內存計算引擎&#xff0c;可以支持海量數據的分布式計算。 Spark在大數據體系是明星產品&#xff0c;作為最新一代的綜合計算引擎&#xff0c…

閑話 .NET(6):.NET Core 各個版本的特性

前言 之前我們聊了一下 .NET Core 有哪些優勢&#xff0c;.NET Core 發展非常迅速&#xff0c;不過短短幾年&#xff0c;.NET Core 已經發布 .NET 8 了&#xff0c;基本上保持了一年一個版本的速度&#xff0c;每個版本都有自己的獨有特性&#xff0c;下面我們來簡單的盤點一下…

【一篇文章搞定電腦重裝,簡單易懂,速來學習!】

大家好&#xff01;今天給大家帶來一篇非常實用的文章——電腦系統重裝教程。不管你是電腦小白還是有一定基礎的用戶&#xff0c;這個教程都能滿足你的需求。我們將從前期準備到具體的重裝步驟&#xff0c;一步步教你如何重裝電腦系統。 教程 介紹 [教程名稱]&#xff1a;u盤…

electron-vite-vue配置

1.安裝vite pnpm create vite 2.安裝electron 用npm下載不過來QAQ 下載失敗的話就重新下一遍 cnpm i -D electron 3.安裝concurrently 用來執行多個程序 pnpm i concurrently 4.配置package.json {"name": "demo","private": true,"…

Java學習51-常用類 集合類Collection Arrays數組類

Arrays數組類 & 集合類Collection 內存層面需要針對多個數據進行存儲&#xff0c;此時可以考慮的容器有&#xff1a;數組&#xff0c;集合類 數組Arrays介紹&#xff1a; 數組存儲多個數據方面的特點&#xff1a; 數組一旦初始化&#xff0c;其長度是確定的。 數組中的多…