尝试全流程用paddlepaddle做AI安全管理 安全帽识别

本文介绍了如何使用PaddlePaddle的PaddleDetection套件,结合飞浆平台的资源,完成安全帽识别项目。作者分享了数据预处理、标注问题的解决、模型选择(Tiny YOLOv8)以及训练过程中的注意事项,项目数据集来源于GitHub和飞浆,并计划将数据集公开。最后,提供了项目地址供读者参考。

尝试全流程用paddlepaddle做完一个项目,项目基于paddledetection套件,主要应用于装配式工厂以及工地的安全管理及使用摄像头推流的模式进行是否佩戴安全帽的识别,抽烟,识别。

选择飞浆主要是因为飞浆可以白嫖算力,初步选择的是yolov8的模型,考虑到后期的优化加速v5可能会比较好用v5也会训练一个。

首先是数据的处理,安全帽的数据主要来自于GitHub和飞浆的公开数据集这个还是不错的,这种常规的数据集相对比较多也很全,最主要下载速度很快。后期会把整理好的数据集也公开在飞浆的数据大厅。

数据集链接:

数据及整理:

其中annitation里面一共有25951个文件 ,jpegimages里面有26234个文件,因为是把搜集到的数据粗略的放到一起,造成了数据和标注匹配不上。顺便从网上找个脚本(00.py)查看一下标注情况。

import os
import xml.dom.minidom
 
xml_path = '.\Annotations\\'
files = os.listdir(xml_path)

gt_dict = {}
 
if __name__ == '__main__':
 
    for xm in files:
        xmlfile = xml_path + xm
        dom = xml.dom.minidom.parse(xmlfile)  # 读取xml文档
        root = dom.documentElement  # 得到文档元素对象
        filenamelist = root.getElementsByTagName("filename")
        filename = filenamelist[0].childNodes[0].data
        objectlist = root.getElementsByTagName("object")
        ##
        for objects in objectlist:
            namelist = objects.getElementsByTagName("name")
            objectname = namelist[0].childNodes[0].data
            if objectname == '-':
                print(filename)
            if objectname in gt_dict:
                gt_dict[objectname] += 1
            else:
                gt_dict[objectname] = 1
            # for nl in namelist:
            #     objectname = nl.childNodes[0].data
            #     if objectname in gt_dict:
            #         gt_dict[objectname] += 1
            #     else:
            #         gt_dict[objectname] = 1
    dic = sorted(gt_dict.items(), key=lambda d: d[1], reverse=True)
    print(dic)
    print("总类别",len(dic))

输出结果不出所料同一种类比标注不统一:

[('person', 115976), ('hat', 21791), ('helmet', 18966), ("['Wear_helmet']", 13095), ('P', 8163), ('head', 5785), ('PH', 5174), ('PHV', 3735), ("['No_helmet']", 3173), ('PLC', 2403), ('PV', 2304), ('dog', 3), ('cavity', 1)]
总类别 13

首先就是统一标签格式主要分为这三类person、helmet、head

这时候就出现一个问题 一些数据集只有 安全帽是否佩戴 没有人体 比如这种:

当然有很多种思路解决这个样本的问题 我这算是比较工程一些的做法

这里介绍一个大佬的开源自动标注工具 https://github.com/cnyvfang/labelGo-Yolov5AutoLabelImg<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值