目录

一.数据集准备

二.标签设置

三.模型训练

四.模型测试


最近尝试了Yolov5训练识别人体,用的是自己尝试做的训练集。见识到Yolo的强大后,决定分享给大家。

一.数据集准备

数据集是从百度图片上下载的,我当然不可能一个一个下载,会累死的。。。

既然会python,就做最好的爬虫~

from fake_useragent import UserAgent
import requests
import re
import uuid
#参考:
#https://blog.csdn.net/weixin_56198196/article/details/120470874
#https://blog.csdn.net/weixin_52971139/article/details/125065788headers={                            #遇到Forbid spider access就在请求头多加一些东西,试了一下'Accept-Encoding'是关键# 'Accept': 'text/plain, */*; q=0.01',# 'Accept-Encoding': 'gzip, deflate, br',# 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',# 'Connection': 'keep-alive','Cookie': 'BDqhfp=%E5%8F%B2%E5%8A%AA%E6%AF%94%26%260-10-1undefined%26%263746%26%264; BIDUPSID=5A04241009FD166564DACF4050551F2D; PSTM=1611376447; __yjs_duid=1_2de46e288096c13a7edea3d05a5204421620544039468; BAIDUID=F163DBC1DF098AF604AE753E72659BAA:FG=1; BDUSS=Tczc3RnamRhaUhicm5rfm83V3pkMTBySUd1Z0V4Q25mbXhYdElRemJHdVktVnRoRVFBQUFBJCQAAAAAAQAAAAEAAACR090iR3JpZmZleTUxMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJhsNGGYbDRhN; BDUSS_BFESS=Tczc3RnamRhaUhicm5rfm83V3pkMTBySUd1Z0V4Q25mbXhYdElRemJHdVktVnRoRVFBQUFBJCQAAAAAAQAAAAEAAACR090iR3JpZmZleTUxMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJhsNGGYbDRhN; BAIDUID_BFESS=F163DBC1DF098AF604AE753E72659BAA:FG=1; BDORZ=AE84CDB3A529C0F8A2B9DCDD1D18B695; userFrom=cn.bing.com; IMG_WH=573_756; H_WISE_SIDS=110085_178384_179349_181588_182531_183327_183611_183750_184578_185029_185517_185653_185750_186317_186411_187020_187195_187206_187292_187450_187663_187670_187928_8000097_8000100_8000126_8000140_8000150_8000169_8000177_8000185; BDRCVFR[X_XKQks0S63]=mk3SLVN4HKm; firstShowTip=1; cleanHistoryStatus=0; indexPageSugList=%5B%22%E5%8F%B2%E5%8A%AA%E6%AF%94%22%2C%22%E6%B5%B7%E8%B4%BC%E7%8E%8B%22%2C%22%E8%8A%B1%E6%9C%B5%22%2C%22undertale%22%2C%22python%22%2C%22%E8%8A%B1%E7%AE%80%E7%AC%94%E7%94%BB%22%2C%22%E5%90%8C%E5%9E%8B%E4%B8%96%E4%BB%A3%E4%BA%A4%E6%9B%BF%22%2C%22%E6%A8%9F%E7%A7%91%E8%8A%B1%22%2C%22%E6%A8%9F%E7%A7%91%E8%8A%B1%E7%9A%84%E8%A7%A3%E5%89%96%22%5D; BDRCVFR[dG2JNJb_ajR]=mk3SLVN4HKm; ab_sr=1.0.1_MTY1OTI2YjEyMzViNzQyYWVhZjdhZWQxNzc0YjE1NzA2NGEyZmMwZGEwNzRmMWVjZGM3N2IzMDlkYjViZWVlOGYyNTllZDMzZjgwZGMxZWZhOWFiMmEyYjg0NjgyYzgwYjk0Y2QxYWVmM2E1ZTFiZjkyYTNlOGYzMDg1MWVjNjUyODViYzMyZjc2Mjk2OGFmZmZjZTkwNjg3OWI4NjhjZjdiNzJmNTY3NTIyZjg2ODVjMzUzNTExYjhiMjkxZjEx; BDRCVFR[-pGxjrCMryR]=mk3SLVN4HKm','Referer': 'https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=index&fr=&hs=0&xthttps=111110&sf=1&fmq=&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=%E5%8F%B2%E5%8A%AA%E6%AF%94&oq=%E5%8F%B2%E5%8A%AA%E6%AF%94&rsp=-1','User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Mobile Safari/537.36 Edg/93.0.961.52'
}img_re = re.compile('"thumbURL":"(.*?)"')
img_format = re.compile("f=(.*).*?w")def file_op(img):uuid_str = uuid.uuid4().hextmp_file_name = './arsenal/%s.jpg' % uuid_strwith open(file=tmp_file_name, mode="wb") as file:file.write(img)def xhr_url(url_xhr, start_num=0, page=5):end_num = page*30for page_num in range(start_num, end_num, 30):resp = requests.get(url=url_xhr+str(page_num), headers=headers)if resp.status_code == 200:print(resp.text)img_url_list = img_re.findall(resp.text)  # 这是个列表形式for img_url in img_url_list:img_rsp = requests.get(url=img_url, headers=headers)file_op(img=img_rsp.content)else:breakprint("爬取了"+str(page_num)+"张")print("内容已经全部爬取")if __name__ == "__main__":org_url = "https://image.baidu.com/search/acjson?tn=resultjson_com&word={text}&pn=".format(text=input("输入你想检索内容:"))xhr_url(url_xhr=org_url, start_num=int(input("开始页:")), page=int(input("所需爬取页数:")))

用这样的代码就可以把指定关键词的照片爬取下来,如下图所示是爬取下来的照片。爬取代码位于newdata目录下。

(图源网络侵删)

在上图中,爬取的数据关键词为“路人照片”。

二.标签设置

标签有很多可以打的工具,我采用的是vott,图片和安装包链接如下。

链接:https://pan.baidu.com/s/1CtAiR6ub072WvgfoFkm6Ig?pwd=0kqu 
        提取码:0kqu 
        --来自百度网盘超级会员V5的分享

具体使用方法参考:标注工具 VoTT 详细教程_vott使用_清欢守护者的博客-CSDN博客

如果要识别人,就把人的区域都框起来~

         最后输出的标签如下:

json内的标签数据

标签数据需要经过如下代码处理成yolov5的可识别数据

import os
import json
import shutil
img_folder_path = "img/"
# 使用os.listdir()函数获取文件夹下的所有文件名
img_file_names = os.listdir(img_folder_path)
lab_folder_path = "label/"
# 使用os.listdir()函数获取文件夹下的所有文件名
lab_file_names = os.listdir(lab_folder_path)
# 打印所有文件名
'''for file_name in img_file_names:print(file_name)'''
# 打印所有文件名
data_num=0
outdir_img="outdata/images/"
outdir_lab="outdata/labels/"
for file_name in lab_file_names:with open(lab_folder_path+file_name,'r',encoding = 'utf-8') as fp:# read()方法将fp(一个支持.read()的文件类对象,包含一个JSON文档)转换成字符串data = json.loads(fp.read())#print(fp.read())for img_file_name in img_file_names:if img_file_name[-4:]==".jpg":if img_file_name[-18:]==data['asset']['name'][-18:]:name="im"+str(data_num)data_num+=1shutil.copy(img_folder_path+img_file_name,outdir_img+name+".jpg")for item in data['regions']:data1=str((item['points'][0]['x']+item['points'][1]['x'])/(2*data['asset']['size']['width']))data2=str((item['points'][0]['y']+item['points'][2]['y'])/(2*data['asset']['size']['height']))data3=str(item['boundingBox']['width']/data['asset']['size']['width'])data4=str(item['boundingBox']['height']/data['asset']['size']['height'])Note=open(outdir_lab+name+".txt",mode='a')Note.write("0 "+data1+" "+data2+" "+data3+" "+data4+"\n")Note.close()

(代码仅供参考,具体以实际情况为准)

上述代码的目录架构:

img
-xx.jpg
-xx.jpg
...
label
-xx.json
-xx.json
...outdata
-images
-labels

运行后在outdata文件夹会生成转换格式成功的图像和标签

其中,标签的格式如下:

参考yolov5的数据格式:

Train Custom Data - Ultralytics YOLOv8 Docs

三.模型训练

准备好数据集,就可以训练啦~

GitHub - ultralytics/yolov5: YOLOv5

Yolov5训练日记~如何用Yolov5训练识别自己想要的模型~相关推荐

  1. NLP命名实体识别NER数据准备及模型训练实例

    NLP命名实体识别NER数据准备及模型训练实例 目录 NLP命名实体识别NER数据准备及模型训练实例 ​ 方案一

  2. 深度学习目标检测:YOLOv5实现车辆检测(含车辆检测数据集+训练代码)

    深度学习目标检测:YOLOv5实现车辆检测(含车辆检测数据集+训练代码) 目录 深度学习目标检测:YOLOv5实现车辆检测(含车辆检测数据集+训练代码) 1. 前言 2. 车辆检测数据集说明 (1)车 ...

  3. Yolov5如何在训练意外中断后接续训练

    Yolov5如何在训练意外中断后接续训练 1.配置环境 2.问题描述 3.解决方法 3.1设置需要接续训练的结果 3.2设置训练代码 4.原理 5.结束语 1.配置环境 操作系统:Ubuntu20.0 ...

  4. yolov5 从配置环境到自己训练数据集合

    yolov5 (Macre) 目录 文章目录 yolov5 (Macre) 一.yolov5介绍 1 四种网络模型 2 yolov5 输入结构 2.1 **Mosaic数据增强** 2.2 **自适应 ...

  5. YOLOv5实战之输电线路绝缘子缺陷检测识别

    在前面的文章中已经详细介绍了在本机上安装YOLOv5的教程,安装YOLOv5可参考前面的文章YOLOv5训练自己的数据集(超详细)https://blog.csdn.net/qq_40716944/a ...

  6. 融合CBAM注意力机制基于YOLOv5开发构建毛尖茶叶嫩芽检测识别系统

    首先看下整体效果: 要进行茶叶嫩芽的检测和识别,可以使用计算机视觉和深度学习技术来实现.下面是一种基本的流程: 数据收集:收集包含毛尖.嫩芽以及其他类型茶叶图像的数据集.确保数据集中包含不同角度.光照 ...

  7. 程序员的训练日记:编程也是一项耐力活动

    全文共1809字,预计学习时长6分钟 图源:unsplash 笔者曾经是一名长跑运动员,当开始编程之后,我发现二者有许多相似之处.于是,我将自己运动员时期的一些训练习惯应用到了当前的"耐力活 ...

  8. HALCON示例程序color_pieces.hdev通过MLP训练器对彩色棋子进行分类识别

    HALCON示例程序color_pieces.hdev通过MLP训练器对彩色棋子进行分类识别:分别在彩色图像下与灰度图像下进行,从而产生对比. 示例程序源码(加注释) 关于显示类函数解释 dev_up ...

  9. 如何用PyTorch训练图像分类器

    本文为 AI 研习社编译的技术博客,原标题 : How to Train an Image Classifier in PyTorch and use it to Perform Basic Infe ...

最新文章

  1. 利用被入侵的路由器迈入内网——抓包,利用路由器漏洞入侵,进行流量劫持...
  2. ROS学习笔记九:ROS工具
  3. mysql二进制日志内容说明_MySQL二进制日志相关问题详细说明
  4. android 访问权限,Android 使用情况访问权限
  5. 防抖函数和节流函数的实现,这个是在某保险公司笔试题遇到的。
  6. 计算机网络(四)网络层
  7. kafka topic 目录存放在哪_Kafka系列文章之安装测试-第2篇
  8. imkey只支持imtoken吗_辛巴表态我只认天道 不认散打!等天道回来我还他1000万关注!散打哥喊话辛巴 不要说只认道不认散打哥!...
  9. CSDN很火的汤小洋老师全部课程总共有哪些(问号问号问号)
  10. Unity网格编程篇(三) 温度图、热力图
  11. 宝塔面板配置服务器代理
  12. ABAP 语法备忘 刘欣
  13. ERROR: Error while obtaining start requests
  14. 8Manage:大宗商品采购,专注构建企业采购信息化!
  15. DeFi:过去、现在和未来
  16. 分享一个自己写的可视化编程工具
  17. 利用定时器实现PWM波对Zigbee(CC2530)上LED亮度进行强弱调整
  18. 圆满收官!第六届99趣拿节精彩盘点!
  19. 读 L. S. Stavrianos 之 《全球通史:从史前到21世纪》
  20. 秦智杂志秦智杂志社秦智编辑部2022年第12期目录

热门文章

  1. 学习-Java字符串之字符串、字符数组与字节数组间的使用之单词重新排序
  2. java故事之以月引序
  3. php 网页内容下载,如何使用PHP下载网页
  4. 面试官问你期待工资多少时,该怎么回答?
  5. mpvue 微信小程序api_mpVue 小程序框架 SDK
  6. 【Node】Error: ENOENT: no such file or directory,解决方案
  7. chrome 报错connection is not private. NET::ERR_CERT_COMMON_NAME_INVALID Provisional headers warning
  8. GEE|时间序列分析(二)
  9. 与Xcode比照Adobe AIR开发iOS的优势和局限
  10. 2246xt u盘开卡详细教程_联想y700-15笔记本如何使用bios设置u盘启动【详细步骤】...