在城市中穿梭,寻找停车位总是一件令人头疼的事情。例如,当去购物中心购物时,找到一个停车位可能是一项令人沮丧的任务。尽管如此,摄像头和计算机视觉算法可以协同工作,在停车场中识别车辆是否占据了停车位。
计算机视觉在停车场监控中的应用,可以实时监测空置和已被占用的车位。通过这种方式,可以利用计算机视觉技术,使停车变得更加高效,减少在停车场内寻找车位的时间,从而降低燃油消耗和排放。
这种计算机视觉的应用可以与停车场内已经部署用于安全监控的CCTV摄像头集成。摄像头的实时视频流可以通过计算机视觉模型进行处理,以跟踪空置和被占用的车位数量。这有助于提供停车位的实时更新,并且比基于人工的系统更加精确。
现在,将逐步介绍如何创建一个系统,使用户能够识别停车场中空置和被占用的车位数量,并可视化他们的车辆可能停放的位置。
在深入构建此系统的步骤之前,让先来看一下将要使用的目标检测模型。将使用一个训练有素的模型来检测停车位,这个模型来自Roboflow Universe。Roboflow Universe是一个计算机视觉平台,提供开源数据集和模型。Roboflow Universe拥有庞大的收藏,提供超过200,000个数据集和50,000个模型供使用。
要开始使用,需要创建一个Roboflow账户,并导航到Roboflow Universe上托管的“Car Space Detection”模型页面。在页面上,将看到一个代码片段(如下图所示),展示了如何使用这个模型的API。
# 导入Roboflow库并加载预训练模型
from roboflow import Roboflow
# 替换为Roboflow API密钥
rf = Roboflow(api_key="ROBOFLOW_API_KEY")
project = rf.workspace().project("car-space-find")
model = project.version(2).model
# 在本地图像上进行推理
output = model.predict("your_image.jpg", confidence=40, overlap=30).json()
然后,将使用推理的输出,并从结果中提取预测的类别标签。
# 遍历输出中的预测结果
for prediction in output['predictions']:
predicted_class = prediction['class']
以下代码片段将帮助统计空置和被占用的停车位数量。
occupied_count = 0
empty_count = 0
for prediction in output['predictions']:
predicted_class = prediction['class']
# 根据预测的类别增加计数
if predicted_class == 'occupied':
occupied_count += 1
elif predicted_class == 'empty':
empty_count += 1
可以打印出总的计数,并使用以下代码将输出可视化到本地文件中的图像上。
print("停车场中被占用的车位总数:", occupied_count)
print("停车场中空置的车位总数:", empty_count)
total_spots = occupied_count + empty_count
print("停车场中车位总数:", total_spots)
# 可视化预测结果
model.predict("your_image.jpg", confidence=40, overlap=30).save("prediction.jpg")
最后,将步骤1-5整合在一起,代码将如下所示。
from roboflow import Roboflow
# 替换为Roboflow API密钥
rf = Roboflow(api_key="ROBOFLOW_API_KEY")
project = rf.workspace().project("car-space-find")
model = project.version(2).model
output = model.predict("your_image.jpg", confidence=40, overlap=30).json()
occupied_count = 0
empty_count = 0
for prediction in output['predictions']:
predicted_class = prediction['class']
# 根据预测的类别增加计数
if predicted_class == 'occupied':
occupied_count += 1
elif predicted_class == 'empty':
empty_count += 1
# 打印总的计数
print("停车场中被占用的车位总数:", occupied_count)
print("停车场中空置的车位总数:", empty_count)
total_spots = occupied_count + empty_count
print("停车场中车位总数:", total_spots)
# 可视化预测结果
model.predict("your_image.jpg", confidence=40, overlap=30).save("prediction.jpg")
当运行上述代码时,将在终端看到以下输出。保存到电脑上的图像将显示模型结果:模型成功地用“empty”标签识别出空置的车位,用“occupied”标签识别出被占用的车位。这个模型可以通过使用更多代表其部署停车场的数据来改进。要了解更多关于如何使用自己的数据训练自定义视觉模型的信息,请参阅Roboflow入门指南。
这个模型可以与其他业务数据结合使用(例如,摄像头的位置),以识别停车场中的车位区域。可以在停车场入口处建立显示每个区域空闲车位数量的信息。这些信息将帮助驾驶员评估他们应该去哪里停车。
停车管理系统是智能城市愿景的一部分。计算机视觉可以与安全摄像头和物联网设备无缝集成,实现自动停车引导和支付系统等功能。
近年来,计算机视觉在停车管理中发挥了重要作用,旧金山、伦敦和新加坡等城市实施了智能停车系统。预计到2028年,基于AI和计算机视觉的解决方案将推动全球智能停车市场规模达到数十亿美元。
总的来说,使用目标检测可以改变停车场管理,让了解停车场中有多少人在停车。随着计算机视觉技术的不断发展和部署,无障碍停车体验和减少拥堵的愿景变得更加现实。