训练一个基于 ResNet 的回归模型来预测街景图片_旨在研究人们如何通过视觉感知来评估城市的街道环境。可用于训练街景感知评分模型_街景数据集
MIT Place Pulse 2.0 是一个大型的城市街景感知数据集旨在研究人们如何通过视觉感知来评估城市的街道环境。该数据集收集了全球50多个地区的11万张街景图片并通过众包平台让参与者对这些图片在六个不同的感知维度上进行评分。这些感知维度包括美丽Beauty这条街看起来有多美安全Safety在这条街上走动感觉有多安全繁华Liveliness这条街看起来有多繁华富裕Wealth这条街看起来有多富裕独特性Unique这条街看起来有多独特无聊Boring这条街看起来有多无聊数据集结构图片数量11万张街景图片。来源全球50多个地区。格式JPEG。标签感知评分每个图片在上述六个感知维度上的评分。格式CSV文件包含图片路径和对应的感知评分。数据集下载你可以从 MIT Place Pulse 2.0 的官方网站或 GitHub 仓库下载数据集。以下是下载链接官方网站MIT Place Pulse 2.0GitHub 仓库PlacePulse数据集文件结构下载后的数据集通常会有一个类似如下的目录结构深色版本PlacePulse2.0/├── images/│ ├── 000001.jpg│ ├── 000002.jpg│ └── …├── labels/│ ├── beauty.csv│ ├── safety.csv│ ├── liveliness.csv│ ├── wealth.csv│ ├── unique.csv│ └── boring.csv└── README.mdCSV 文件格式每个感知维度的标签文件如 beauty.csv通常包含以下列image_path图片的相对路径。score该图片在特定感知维度上的评分。例如beauty.csv 可能如下所示深色版本image_path,scoreimages/000001.jpg,4.5images/000002.jpg,3.2…数据预处理在使用数据集之前通常需要进行一些预处理步骤以便于后续的模型训练和评估。以下是一个简单的预处理示例python深色版本import pandas as pdimport osfrom PIL import Imageimport torchfrom torch.utils.data import Dataset, DataLoaderfrom torchvision import transforms读取标签文件def load_labels(file_path):return pd.read_csv(file_path)自定义数据集类class StreetViewDataset(Dataset):definit(self, csv_file, root_dir, transformNone):self.labels load_labels(csv_file)self.root_dir root_dirself.transform transformdef __len__(self): return len(self.labels) def __getitem__(self, idx): img_name os.path.join(self.root_dir, self.labels.iloc[idx, 0]) image Image.open(img_name).convert(RGB) score self.labels.iloc[idx, 1] if self.transform: image self.transform(image) return image, score数据变换transform transforms.Compose([transforms.Resize((224, 224)),transforms.ToTensor(),transforms.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225])])创建数据集实例root_dir ‘PlacePulse2.0/images/’csv_file ‘PlacePulse2.0/labels/beauty.csv’dataset StreetViewDataset(csv_file, root_dir, transformtransform)创建数据加载器dataloader DataLoader(dataset, batch_size32, shuffleTrue, num_workers4)检查数据for images, scores in dataloader:print(images.shape, scores.shape)break训练模型你可以使用上述数据集和数据加载器来训练一个深度学习模型例如使用ResNet进行回归任务。以下是一个简单的训练示例python深色版本import torchimport torch.nn as nnimport torch.optim as optimfrom torchvision.models import resnet50定义模型model resnet50(pretrainedTrue)model.fc nn.Linear(model.fc.in_features, 1) # 修改最后一层为回归输出将模型移到GPUdevice torch.device(“cuda” if torch.cuda.is_available() else “cpu”)model.to(device)定义损失函数和优化器criterion nn.MSELoss()optimizer optim.Adam(model.parameters(), lr0.001)训练模型num_epochs 10for epoch in range(num_epochs):model.train()running_loss 0.0for images, scores in dataloader:images, scores images.to(device), scores.to(device).float().unsqueeze(1)optimizer.zero_grad() outputs model(images) loss criterion(outputs, scores) loss.backward() optimizer.step() running_loss loss.item() * images.size(0) epoch_loss running_loss / len(dataset) print(fEpoch [{epoch1}/{num_epochs}], Loss: {epoch_loss:.4f})保存模型torch.save(model.state_dict(), ‘street_view_perception_model.pth’)评估模型训练完成后你可以使用测试集来评估模型的性能python深色版本加载测试数据集test_dataset StreetViewDataset(‘PlacePulse2.0/labels/beauty_test.csv’, root_dir, transformtransform)test_dataloader DataLoader(test_dataset, batch_size32, shuffleFalse, num_workers4)评估模型model.eval()with torch.no_grad():total_mse 0.0for images, scores in test_dataloader:images, scores images.to(device), scores.to(device).float().unsqueeze(1)outputs model(images)mse criterion(outputs, scores)total_mse mse.item() * images.size(0)test_mse total_mse / len(test_dataset) print(fTest MSE: {test_mse:.4f})总结通过以上步骤你可以使用 MIT Place Pulse 2.0 数据集来训练和评估一个街景感知评分模型。这个数据集提供了丰富的街景图片和多维度的感知评分非常适合用于研究城市环境的视觉感知下面是一个详细的步骤指南以使用 MIT Place Pulse 2.0 数据集为例训练一个基于 ResNet 的回归模型来预测街景图片的感知评分。一、数据准备下载数据集首先确保你已经从 MIT Place Pulse 2.0 的官方网站或 GitHub 仓库下载了数据集。解压数据集将下载的数据集解压到指定的目录中例如 PlacePulse2.0。读取标签文件每个感知维度的标签文件如 beauty.csv包含图片路径和对应的评分。二、数据预处理自定义数据集类创建一个自定义的 PyTorch 数据集类来加载和预处理数据。python深色版本import pandas as pdimport osfrom PIL import Imageimport torchfrom torch.utils.data import Dataset, DataLoaderfrom torchvision import transforms读取标签文件def load_labels(file_path):return pd.read_csv(file_path)自定义数据集类class StreetViewDataset(Dataset):definit(self, csv_file, root_dir, transformNone):self.labels load_labels(csv_file)self.root_dir root_dirself.transform transformdef __len__(self): return len(self.labels) def __getitem__(self, idx): img_name os.path.join(self.root_dir, self.labels.iloc[idx, 0]) image Image.open(img_name).convert(RGB) score self.labels.iloc[idx, 1] if self.transform: image self.transform(image) return image, score数据变换transform transforms.Compose([transforms.Resize((224, 224)),transforms.ToTensor(),transforms.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225])])创建数据集实例root_dir ‘PlacePulse2.0/images/’csv_file ‘PlacePulse2.0/labels/beauty.csv’dataset StreetViewDataset(csv_file, root_dir, transformtransform)创建数据加载器dataloader DataLoader(dataset, batch_size32, shuffleTrue, num_workers4)检查数据for images, scores in dataloader:print(images.shape, scores.shape)break三、模型选择选择一个预训练的 ResNet 模型并修改其最后一层以适应回归任务。python深色版本import torchimport torch.nn as nnfrom torchvision.models import resnet50定义模型model resnet50(pretrainedTrue)model.fc nn.Linear(model.fc.in_features, 1) # 修改最后一层为回归输出将模型移到GPUdevice torch.device(“cuda” if torch.cuda.is_available() else “cpu”)model.to(device)四、训练模型定义损失函数、优化器并进行模型训练。python深色版本定义损失函数和优化器criterion nn.MSELoss()optimizer optim.Adam(model.parameters(), lr0.001)训练模型num_epochs 10for epoch in range(num_epochs):model.train()running_loss 0.0for images, scores in dataloader:images, scores images.to(device), scores.to(device).float().unsqueeze(1)optimizer.zero_grad() outputs model(images) loss criterion(outputs, scores) loss.backward() optimizer.step() running_loss loss.item() * images.size(0) epoch_loss running_loss / len(dataset) print(fEpoch [{epoch1}/{num_epochs}], Loss: {epoch_loss:.4f})五、评估模型使用测试集来评估模型的性能。python深色版本加载测试数据集test_dataset StreetViewDataset(‘PlacePulse2.0/labels/beauty_test.csv’, root_dir, transformtransform)test_dataloader DataLoader(test_dataset, batch_size32, shuffleFalse, num_workers4)评估模型model.eval()with torch.no_grad():total_mse 0.0for images, scores in test_dataloader:images, scores images.to(device), scores.to(device).float().unsqueeze(1)outputs model(images)mse criterion(outputs, scores)total_mse mse.item() * images.size(0)test_mse total_mse / len(test_dataset) print(fTest MSE: {test_mse:.4f})六、保存模型训练完成后保存模型以供后续使用。python深色版本保存模型torch.save(model.state_dict(), ‘street_view_perception_model.pth’)七、完整代码将上述所有步骤整合成一个完整的脚本python深色版本import pandas as pdimport osfrom PIL import Imageimport torchfrom torch.utils.data import Dataset, DataLoaderfrom torchvision import transformsimport torch.nn as nnimport torch.optim as optimfrom torchvision.models import resnet50读取标签文件def load_labels(file_path):return pd.read_csv(file_path)自定义数据集类class StreetViewDataset(Dataset):definit(self, csv_file, root_dir, transformNone):self.labels load_labels(csv_file)self.root_dir root_dirself.transform transformdef __len__(self): return len(self.labels) def __getitem__(self, idx): img_name os.path.join(self.root_dir, self.labels.iloc[idx, 0]) image Image.open(img_name).convert(RGB) score self.labels.iloc[idx, 1] if self.transform: image self.transform(image) return image, score数据变换transform transforms.Compose([transforms.Resize((224, 224)),transforms.ToTensor(),transforms.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225])])创建数据集实例root_dir ‘PlacePulse2.0/images/’csv_file ‘PlacePulse2.0/labels/beauty.csv’dataset StreetViewDataset(csv_file, root_dir, transformtransform)创建数据加载器dataloader DataLoader(dataset, batch_size32, shuffleTrue, num_workers4)定义模型model resnet50(pretrainedTrue)model.fc nn.Linear(model.fc.in_features, 1) # 修改最后一层为回归输出将模型移到GPUdevice torch.device(“cuda” if torch.cuda.is_available() else “cpu”)model.to(device)定义损失函数和优化器criterion nn.MSELoss()optimizer optim.Adam(model.parameters(), lr0.001)训练模型num_epochs 10for epoch in range(num_epochs):model.train()running_loss 0.0for images, scores in dataloader:images, scores images.to(device), scores.to(device).float().unsqueeze(1)optimizer.zero_grad() outputs model(images) loss criterion(outputs, scores) loss.backward() optimizer.step() running_loss loss.item() * images.size(0) epoch_loss running_loss / len(dataset) print(fEpoch [{epoch1}/{num_epochs}], Loss: {epoch_loss:.4f})加载测试数据集test_dataset StreetViewDataset(‘PlacePulse2.0/labels/beauty_test.csv’, root_dir, transformtransform)test_dataloader DataLoader(test_dataset, batch_size32, shuffleFalse, num_workers4)评估模型model.eval()with torch.no_grad():total_mse 0.0for images, scores in test_dataloader:images, scores images.to(device), scores.to(device).float().unsqueeze(1)outputs model(images)mse criterion(outputs, scores)total_mse mse.item() * images.size(0)test_mse total_mse / len(test_dataset) print(fTest MSE: {test_mse:.4f})保存模型torch.save(model.state_dict(), ‘street_view_perception_model.pth’)八、运行脚本将上述代码保存为一个 Python 脚本文件例如 train_street_view_perception.py然后在命令行中运行bash深色版本python train_street_view_perception.py九、注意事项数据集路径确保数据集路径正确特别是图片和标签文件的路径。硬件资源训练大型模型可能需要较多的计算资源建议使用 GPU。超参数调整根据实际情况调整学习率、批量大小等超参数以获得更好的训练效果。希望这些步骤能帮助你成功训练一个街景感知评分模型

相关新闻

Ubuntu 22.04 LTS 全新安装指南:清除磁盘安装与自动化分区详解

Ubuntu 22.04 LTS 全新安装指南:清除磁盘安装与自动化分区详解

1. 项目概述:为什么需要“清除磁盘并安装”? 如果你正准备在一台电脑上安装Ubuntu 22.04 LTS,并且这台电脑的硬盘里已经没有任何你需要保留的数据,那么“清除磁盘并安装”就是你最应该选择的安装方式。这听起来像是一句废话&#…

2026/10/17 6:49:19 阅读更多 →
SAP Login Manager上下文菜单:场景化登录提升SAP工作效率

SAP Login Manager上下文菜单:场景化登录提升SAP工作效率

你有没有过这样的体验?每天上班,第一件事就是打开一堆SAP客户端,输入不同的系统地址、客户端号、用户名、密码,然后重复登录、切换、再登录?对于SAP顾问、开发或高频用户来说,这几乎是每天的“开机仪式”&a…

2026/10/17 6:49:22 阅读更多 →
C++物理引擎构建:从DOP架构到GJK碰撞检测的实战指南

C++物理引擎构建:从DOP架构到GJK碰撞检测的实战指南

1. 项目概述:为什么选择C构建物理引擎?如果你正在读这篇文章,大概率和我一样,对游戏、动画或者机器人仿真背后的“魔法”感到着迷。屏幕上那些布料随风飘动、刚体碰撞翻滚、流体奔腾流淌的画面,其核心驱动力就是一个高…

2026/10/16 23:40:43 阅读更多 →

最新新闻

.NET 10 Blazor WASM缓存自动清除机制详解与迁移指南

.NET 10 Blazor WASM缓存自动清除机制详解与迁移指南

做 Blazor WASM 项目这些年,我对官方的每次改版都是又期待又忐忑。期待是因为 C# 写前端的体验确实独一份,忐忑是因为每次发版之后,总有几个用户跑来反馈“还是旧数据”“页面白屏”“功能点了没反应”。排查到最后,十有八九都是浏…

2026/10/18 6:36:53 阅读更多 →
大数据安全体系建设实战:从权限管控到审计监控

大数据安全体系建设实战:从权限管控到审计监控

1. 从一次内部审计说起:为什么大数据安全越来越难做我做数据平台这一行也有十年了,早年大家谈数据安全,多半是“买套防火墙”、“装个杀毒软件”就完事。可到了现在,尤其是数据量真正跑起来之后,你会发现情况完全变了—…

2026/10/18 6:36:53 阅读更多 →
推荐系统评估指标详解:准确率、召回率、F1与NDCG的实战选择

推荐系统评估指标详解:准确率、召回率、F1与NDCG的实战选择

前阵子评审一个推荐项目,算法同学在台上很兴奋地说:“我们的准确率从1.2%升到了1.5%,模型效果显著提升。”台下业务方沉默了几秒,问了一句:“那这个提升,对用户来说意味着什么?”场面一度有点尴…

2026/10/18 6:36:53 阅读更多 →
数据可视化如何驱动大数据分析?5大核心应用场景实战拆解

数据可视化如何驱动大数据分析?5大核心应用场景实战拆解

聊到数据可视化,我接触过不少做数据分析的同行,第一反应都是“不就是最后画几张图交差嘛”。这个看法我在早期项目里也有过,直到有一次在某电商数据平台监控中心里,凌晨两点靠一张实时趋势图抓住了支付链路的异常,才彻…

2026/10/18 6:36:53 阅读更多 →
CRM选型实战指南:从需求分析到避坑落地

CRM选型实战指南:从需求分析到避坑落地

CRM选型这件事,我见过太多企业把它搞成了一场豪赌。有团队花了大半年时间调研考察、轮番演示,终于签下一家,结果上线三个月,活跃度只剩百分之二十;也有公司压根没搞正式选型,让销售负责人自己挑了个工具&am…

2026/10/18 6:36:53 阅读更多 →
2026互联网大厂职级薪资全解析:AI测试开发面试与晋升指南

2026互联网大厂职级薪资全解析:AI测试开发面试与晋升指南

1. 从一份薪资爆料帖说起:为什么大家都在盯着这套职级表最近技术圈里聊得最热的话题之一,就是某头部视频平台流出的2026年职级与薪资体系对照表。我前后翻了好几份不同渠道的版本,也跟几位在不同业务线待过的朋友交叉验证了一下,发…

2026/10/18 6:35:53 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →