Python爬虫和识别数据集建立(消防栓为例)

  • 前言
  • Python爬虫从必应图库爬取训练图片
  • 数据集标定
  • 数据文件夹建立

前言

emm,这一次之所以选择消防栓进行YOLO识别训练,是因为前段时间在Google进行人机验证,识别认证消防栓,斑马线……艰辛的三分钟后,被认定为机器,拒绝登入(泪奔泪奔)
所以这一次找了些Google的验证照片进行验证,用科技打败科技!

废话就不多说了,这一次项目包括:
Python爬虫爬取图片 -> 图片标定 -> 标准 YOLO数据集建立 -> YOLOV5训练配置文件 -> 训练 -> 得出结果

本文主要包括前四模块,也就是说本文为第一部分
第二部分,即后三个模块在 ——>——>传送门

Python爬虫从必应图库爬取训练图片

首先讲讲自己的血泪史吧,一开始用的百度图库进行爬取,一把单双排后,打开一看,图片内容……一言难尽不是广告就还是广告,百度真的有必要调整了,之后被迫转到必应图库爬取

这里我对个别模块进行讲解

if img_name != ".jpg":return -1

里面有些部分我根据个人喜好进行了鲁棒性的调整,只支持.jpg格式的图片,如果需要修改的话将这行中的.jpg该为你需要的格式即可

url = 'https://cn.bing.com/images/async?q=%E6%B6%88%E9%98%B2%E6%A0%93&first=' + str(i) + '&count=35&relp=35&scenario=ImageBasicHover&datsrc=N_I&layout=RowBased&mmasync=1'

这里的url格式为: https://cn.bing.com/images/async?q= + “搜索内容” + &first= + 页数 + &count=35&relp=35&scenario=ImageBasicHover&datsrc=N_I&layout=RowBased&mmasync=1

其中搜索内容为URL格式,需要进行一次转码,转码网址:https://www.matools.com/code-convert
譬如 消防栓 转码后为:%E6%B6%88%E9%98%B2%E6%A0%93

import requests
from lxml import etree
import re
import time
import socket# python爬虫,从必应图库中爬取指定图片
# 这里我以消防栓作为示例
socket.setdefaulttimeout(10)
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
}# 保存图片
# 为了保证图片的格式都为.jpg格式,所以当识别不是.jpg时直接返回-1进行新的图片读取
# 同时,为了防止图片读取超时,建立timeout,当读取超过8s直接跳过
def save_img(url, num):img_name = url[-4:]if img_name != ".jpg":return -1img_name = num + img_namename = re.sub('/', '', img_name)  # img_name中出现/,将其置换成空# 打开图片try:res = requests.get(url, headers=headers, timeout=8)except OSError:print('出现错误,错误的url是:', url)return -1else:# 保存图片# 存放路径为 img/  该处可自行修改with open('img/' + name, 'wb')as f:try:f.write(res.content)return 0except OSError:print('无法保存,url是:', url)return -1def parse_img(url):response = requests.get(url, headers=headers)response.encoding = response.apparent_encodingdata = response.content.decode('utf-8', 'ignore')html = etree.HTML(data)conda_list = html.xpath('//a[@class="iusc"]/@m')all_url = []  # 用来保存全部的urlfor i in conda_list:img_url = re.search('"murl":"(.*?)"', i).group(1)all_url.append(img_url)return all_url# 主函数
def main():a = 0for i in range(0, 2000, 35):# 这里的url格式为: https://cn.bing.com/images/async?q= + "搜索内容" + &first= + 页数 + &count=35&relp=35&scenario=ImageBasicHover&datsrc=N_I&layout=RowBased&mmasync=1# 其中搜索内容为URL格式,需要进行一次转码,转码网址:https://www.matools.com/code-convert# 譬如 消防栓 转码后为:%E6%B6%88%E9%98%B2%E6%A0%93url = 'https://cn.bing.com/images/async?q=%E6%B6%88%E9%98%B2%E6%A0%93&first=' + str(i) + '&count=35&relp=35&scenario=ImageBasicHover&datsrc=N_I&layout=RowBased&mmasync=1'img_data = parse_img(url)for img_url in img_data:b = save_img(img_url, str(a))a = a + 1 + bprint(img_url)time.sleep(10)if __name__ == '__main__':main()

数据集标定

爬取完成后,建议先进行一次筛选,将不需要的或者很离谱的图片进行删除,不然到时候YOLO训练后,就该建立新的世界观了……
标注的话,我发现了一个宝藏级的工具,精灵标注助手
将爬虫爬取的文件夹直接导入标注就行,非常方便,非常使用(emm,我可没拿广告费)
文件的具体操作流程根据软件提示即可,我就不多阐述了

数据文件夹建立

标定好的数据集导出为VOC的xml格式即可,之后在Pycharm工程中建立以下五个文件夹

.xml文件放入Annotations,图片放入images和JPEGImages
然后在根目录建立testRun1.py和testRun2.py
注意,注意将文件中的路径进行修改
该处代码参考作者JulyLi2019yolov5训练自己的数据集,详细教程!
由于涉及版权问题,建议大家到上方链接自行copy以下两端代码,分别对应make_txt.py和voc_label.py
或在我的github链接中下载本文的所有代码
https://github.com/BilboJunzhou/GetPhotoMessage

调整后分别运行两个.py文件,其中,会将.xml文件转换为.txt文件储存在labels中,同时会生成

以下四个文档,注意检测.txt 文档是否为空,如果内有数据
呢么!
至此我们的数据集建立差不多已经大功告成啦!

YOLOV5目标识别数据集采集、标定和准备_Python爬虫爬取目标图片_xml转txt(消防栓为例)相关推荐

  1. python爬取网页数据流程_Python爬虫爬取数据的步骤

    爬虫: 网络爬虫是捜索引擎抓取系统(Baidu.Google等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 步骤: 第一步:获取网页链接 1.观察需要爬取的多 ...

  2. python爬取数据步骤_Python爬虫爬取数据的步骤

    爬虫: 网络爬虫是捜索引擎抓取系统(Baidu.Google等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 步骤: 第一步:获取网页链接 1.观察需要爬取的多 ...

  3. python解析网页数据_python爬虫——爬取网页数据和解析数据

    1.网络爬虫的基本概念 网络爬虫(又称网络蜘蛛,机器人),就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序. 只要浏览器能够做的事情,原则上,爬虫都能够做到. ...

  4. python写爬虫4-多线程爬虫(采集58出租房信息)_python爬虫 爬取58同城上所有城市的租房信息详解...

    代码如下 from fake_useragent import UserAgent from lxml import etree import requests, os import time, re ...

  5. python爬取简历_python爬虫爬取智联简历?

    一.网页请求方式 GET方法和POST 方法.与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分.在发送密码或其他敏感信息时绝不要使用 GET 方法.POST 比 GET ...

  6. python个人简历爬取_python爬虫爬取智联简历?

    一.网页请求方式 GET方法和POST 方法.与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分.在发送密码或其他敏感信息时绝不要使用 GET 方法.POST 比 GET ...

  7. python爬虫抓取信息_python爬虫爬取网上药品信息并且存入数据库

    我最近在学习python爬虫,然后正好碰上数据库课设,我就选了一个连锁药店的,所以就把网上的药品信息爬取了下来. 1,首先分析网页 2,我想要的是评论数比较多的,毕竟好东西大概是买的人多才好.然后你会 ...

  8. python爬网页源码_python爬虫爬取网页的内容和网页源码不同?

    可以看到这里id为k_total的元素值不同,爬出来是1,网页源码是55. 附还未完成的代码:import requests from bs4 import BeautifulSoup import ...

  9. python爬虫提取人名_python爬虫—爬取英文名以及正则表达式的介绍

    python爬虫-爬取英文名以及正则表达式的介绍 爬取英文名: 一. 爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个csv ...

  10. python爬虫搜特定内容的论文_Python 爬虫爬取指定博客的所有文章

    自上一篇文章 Z Story : Using Django with GAE Python 后台抓取多个网站的页面全文 后,大体的进度如下: 1.增加了Cron: 用来告诉程序每隔30分钟 让一个ta ...

最新文章

  1. QIIME 2用户文档. 9数据导出Exporting data(2018.11)
  2. Windows消息备忘录
  3. java用递归删除文件夹_Java中通过递归调用删除文件夹下所有文件
  4. c++ 类 A类调用B类
  5. 运维前线:一线运维专家的运维方法、技巧与实践导读
  6. metasploitable3渗透测试
  7. 异常处理、集合框架和反射
  8. Gstreamer之QT程序无法找到Gstreamer1.0 pulseaudio插件(二十八)
  9. 用C语言写一个函数返回参数二进制中1的个数
  10. 一个景点的给input域一个默认值,然后在聚焦的时候清空它 jquery方法
  11. xp配置iis和php,XP下让IIS支持PHP
  12. 夏普红外测距模块使用笔记
  13. 学术会议 Rebuttal 模板
  14. 贪心算法之田忌赛马(超详细)
  15. 不同设备以及浏览器的userAgent值大全
  16. 程序员被科大讯飞裁员:试用期三个月被开,公司连应届生都不放过
  17. ios开发原生的扫描二维码的实现以及限制扫描区域rectOfInterest遇到的一些坑
  18. 调用android的拍照或本地相册选取再实现相片上传服务器,Android调用系统相机、本地相册上传图片(头像上传(裁剪)、多张图片上传)...
  19. html加css做成的简易木马轮播图
  20. [整理]svn commit obstructed

热门文章

  1. t2016gc01火柴盒
  2. Eclipse+Java+Swing实现学生选课管理系统
  3. 邮件头字段介绍(一)
  4. reactive 与 ref 的区别
  5. 2021级新生个人训练赛第23场 问题 A: 朋友
  6. Windows下Linux子系统WSL2安装cuda显卡驱动
  7. 电源口防雷器电路设计方案
  8. 简述现代加油站的智能防雷设计及其解决措施
  9. 听说丝袜哥(swagger)不好用试试JApiDocs吧
  10. 美农生物深交所上市:市值28亿 第一季净利降幅近30%