用ChatGPT全自动开发安全头盔佩戴检测项目
创始人
2025-06-30 13:31:09
0

哈喽,大家好。

今天给大家分享用ChatGPT开发安全头盔佩戴检测。代码完全用GPT4完成。

首先,给ChatGPT设定角色,告诉我们要完成的任务,然后让ChatGPT给出详细的步骤。

图片图片

从数据准备与标注、模型选择与设计到模型部署,ChatGPT给出非常具体、详细、可执行的步骤。

这里,我们主要关注数据准备和模型选择训练。

如果自己收集数据,再标注费时费力,我们可以让ChatGPT帮我们查找一下是否有现成的资源

图片图片

他没有直接给我们找到数据集,但是提供了可以搜索资源的网站,如:Kaggle、GitHub,我们可以在这些网站搜索。

我在Kaggle和GitHub上查找后,都能找到已经标注好的数据集,最后,我选择了Kaggle上的一个数据集

图片图片

数据集包含戴头盔和未戴头盔两种分类,标注文件是PASCAL格式。

图片图片

下载数据集,让 ChatGPT写代码解析标注文件,在原图上绘制标注结果

图片图片

代码是正确的,只要修改下输入文件的路径,就可以直接运行,看到标注的检测框

import cv2
import xml.etree.ElementTree as ET
import random


# 随机生成一个颜色
def random_color():
    return (0, random.randint(0, 255), random.randint(0, 255))


# 读取PASCAL VOC格式的XML标注文件
def read_annotations(xml_file):
    tree = ET.parse(xml_file)
    root = tree.getroot()

    boxes = []
    for obj in root.iter('object'):
        name = obj.find('name').text
        xmlbox = obj.find('bndbox')
        x1 = int(xmlbox.find('xmin').text)
        y1 = int(xmlbox.find('ymin').text)
        x2 = int(xmlbox.find('xmax').text)
        y2 = int(xmlbox.find('ymax').text)

        boxes.append([name, x1, y1, x2, y2])

    return boxes


# 读取图片
image_path = "./archive (1)/images/BikesHelmets38.png"  # 更改为你的图片路径
image = cv2.imread(image_path)

# 读取标注
xml_path = "./archive (1)/annotations/BikesHelmets38.xml"  # 更改为你的XML文件路径
annotations = read_annotations(xml_path)

# 在图片上画出标注框
for annotation in annotations:
    name, x1, y1, x2, y2 = annotation
    color = random_color()
    cv2.rectangle(image, (x1, y1), (x2, y2), color, 2)
    cv2.putText(image, name, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 1)

# 显示图片
cv2.imshow('Annotated Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

图片图片

有了数据集,我们再在ChatGPT选择合适的模型

图片图片

图片图片

ChatGPT在经过了一番对比说明之后,最终选择了YOLO。

但由于数据集的标注文件是PASCAL格式,因此,我们还需要让ChatGPT将其转为YOLO格式

图片图片

为了节省篇幅,我就不贴代码了。这里,ChatGPT只拿1个文件做实例进行转换,你也可以让ChatGPT写一个遍历目录的程序,来批量转换。

至此,数据集已经完全准备好了,剩下的就是ChatGPT训练模型。

图片图片

刚开始ChatGPT自己编写了YOLO网络架构,我估计把握住不住,弄不好得陪他调一天的BUG,所以,我让他改成用开源的方案完成,他选择了YOLOv5。

安装依赖,配置yaml文件,执行训练命令三步走即可。

因为我事前没有告诉ChatGPT有多少分类,所以他默认生成的yaml配置文件类别是1,大家根据自己的业务灵活调整即可。

训练命令也没有问题,使用yolov5s模型作为预训练模型,执行命令的时候会自动下载yolov5s.pt,如果你已经下载好了,可以添加--weights参数本地的权重文件即可。

模型训练完成后,可以查看训练效果

图片图片

最后,让ChatGPT生成推理代码,就可以应用。

图片图片

图片图片

ChatGPT生成的代码基本都是能直接用的,但还是需要要了解一些深度学习的知识,用起来会更高效。不然一报错,直接贴给ChatGPT容易越走越偏。

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...