从本篇博客正式开始深度学习项目的记录,由于未可知的保密性,实例代码只会放通用的代码,数据集和训练数据也是不会全部放出。

系列文章:

基于Yolov5目标检测的物体分类识别及定位(一) -- 数据集原图获取与标注

基于Yolov5目标检测的物体分类识别及定位(二) -- yolov5运行环境搭建及label格式转换

基于Yolov5目标检测的物体分类识别及定位(三) -- 训练、测试

基于Yolov5目标检测的物体分类识别及定位 -- 全过程总结

目录

原图获取

分析

爬取图片

数据标注

labelme介绍

labelme安装

启动自动化

labelme使用


原图获取

分析

想要让人工智能有智能,得先训练它,训练要有数据集,制作数据集要有原始数据。

所以搭建系统的第一步,就是从网上爬一些图片来构建数据集,为什么是爬虫爬取呢,因为太多了,手动下载根本不现实。

爬取图片

写个爬虫在百度谷歌爬取图片,搜索关键字然后下拉界面到底(设置一个超级大的数或者一直下拉),获取所有的图片元素。

比如百度图片搜索结果的

@class="imgitem"  标签的  data-objurl  属性(图片原图的绝对地址),注意不能获取  @class="main_img img-hover"  标签元素里的  src  和  data-imgurl  属性,这两个里的链接都是缩略图,不是原图。

部分代码展示如下(稍作修改即可复用):

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import sys
import urllib
import urllib.request
import requestsclass PicSpider(object):def main(self):chrome_options = Options()chrome_options.add_argument('--headless')self.browser1 = webdriver.Chrome(chrome_options=chrome_options)get_url = 'https://www.baidu.com'self.browser1.get(get_url)time.sleep(5)keys_search = ['cat', 'dog']key_cur = 0 key_max = len(keys_search) - 1 while True:pic_count = 0if key_cur > key_max:breakthe_keyword = keys_search[key_cur]search_url = 'https://image.baidu.com/search/index?tn=baiduimage'\'&ct=201326592&lm=-1&cl=2&ie=gb18030'\'&word=' + the_keyword + \'&fr=ala&ala=1&alatpl=adress&pos=0&hs=2&xthttps=000000'self.browser1.get(search_url)time.sleep(5)pre_height = 0now_height = 0print(self.browser1.execute_script("return document.documentElement.scrollHeight;"))while True:self.browser1.execute_script("scrollBy(0,10000)")time.sleep(3)now_height = self.browser1.execute_script("return document.documentElement.scrollHeight;")print(now_height)if now_height == pre_height:breakif now_height >= 10000000:  breakpre_height = now_heighttime.sleep(15) try:es = self.browser1.find_elements_by_xpath('//li[@class="imgitem"]') except Exception as e:print(e)if len(es) == 0:breakfor ae in es:try:aurl = ae.get_attribute('data-objurl') except Exception as e:print(e)else:pic_count += 1try:urllib.request.urlretrieve(aurl, './'+the_keyword+'/'+the_keyword+'_%s.jpg'%pic_count)except Exception as e:print('图片下载异常:' + str(e))else:print('下载成功', pic_count)key_cur += 1self.browser1.quit()if __name__ == '__main__':spider = PicSpider()spider.main()

数据标注

图片爬完,分类放在几个文件夹里,然后就可以开始数据标注了。

我们选择labelme来进行这一步工作。

labelme介绍

Labelme 是一个图形界面的图像标注软件,其设计灵感来自于 http://labelme.csail.mit.edu/

它是用 Python 语言编写的,图形界面使用的是 Qt(PyQt)

对图像进行多边形,矩形,圆形,多段线,线段,点形式的标注(可用于目标检测,图像分割,等任务)。

对图像进行进行 flag 形式的标注(可用于图像分类 和 清理 任务)。

视频标注

生成 VOC 格式的数据集(for semantic / instance segmentation)

生成 COCO 格式的数据集(for instance segmentation)

labelme安装

这里介绍Windows的anaconda安装方法(个人办公习惯)

更多安装参考:数据标注软件labelme详解_黑暗星球-CSDN博客_labelme(感谢)

conda create --name=labelme python=3.6
conda activate labelme
pip install pyqt5
pip install labelme
conda install pillow=4.0.0 # Windows 上的 Pillow5 会导致 dll 加载错误,所以请安装 Pillow4。

启动自动化

接下来是启动labelme进行标注,相关命令如下

labelme # 启动的命令
labelme data_annotated/  # 指定图像文件夹的命令

然后我把命令放在了bat文件中,以便直接双击启动label

CALL conda activate labelme # 不用CALL来启动conda的话,cmd程序就会闪退
labelme D:\Python\yolov5\datas\f16\

labelme使用

最常用的是矩形框标注 create rectangle,点击矩形对角的两个点,命名object label,然后save,保存为json格式文件,存在Annotations文件夹中,以备后用。内容示例图如下:

接下来就是大量的单调还带着繁琐的数据清洗和标注了,在用yolov5训练之前还需要把json转为其需要的txt文件格式,这个放在后续博客中。

参考文章:

数据标注软件labelme详解_黑暗星球-CSDN博客_labelme

基于Yolov5目标检测的物体分类识别及定位(一) -- 数据集原图获取与标注相关推荐

  1. 关于AI视觉——目标检测与物体分类(基于FZ5C)

    首先引入一个概念: 边缘计算:是指 在靠近物或数据源头的一侧,采用网络.计算.存储.应用核心能力为一体的开放平台,就近提供最近端服务.边缘计算处于物理实体和工业连接之间,或处于物理实体的顶端. 文章目 ...

  2. 目标检测YOLO实战应用案例100讲-小麦麦穗的目标检测与杂草分类识别研究

    目录 前言 相关理论知识 彩色图像的空间模型简介 卷积神经网络简介

  3. 【论文阅读】目标检测中的分类回归特征解耦

    论文来源:知网 以下仅仅是学习过程中的部分笔记,用作自己复习. 摘要 ..... 目标检测不仅需要判别图像中存在的目标的类别,还需要回归目标在图像中的位置. 特征耦合具体表现:分类和回归部分的网络共享 ...

  4. 如何使用CNN进行物体识别和分类_基于CNN目标检测方法(RCNN系列,YOLO,SSD)

    转载自:基于CNN目标检测方法(RCNN,Fast-RCNN,Faster-RCNN,Mask-RCNN,YOLO,SSD)行人检测 一.研究意义 卷积神经网络(CNN)由于其强大的特征提取能力,近年 ...

  5. Yolov5实现物体分类识别和电子围栏

    一.程序模块详解 进入电子围栏区域标注:将视频逐帧转化为图片,然后以划线的方式对每张图片进行标注作为进入电子围栏区域的区域. 物体分类识别:基于yolov5模块,对里面的detect.py函数进行修改 ...

  6. 基于高通SNPE推理引擎的yolov5目标检测算法

    上图源自Snapdragon Neural Processing Engine SDK Reference Guide,它展示了一个Deep Learning Neural Network在SNPE环 ...

  7. 基于轻量级目标检测模型实现手写汉字检测识别计数

    一般手写相关的数据集,应该是手写数字听得最多最多的,手写汉字也有,但是与手写数字或者是手写字母的知名度相比就低了很多很多,在我前面的一篇很早期入门的时候写过一篇文章,如下: <Yolov3目标检 ...

  8. 基于语义分割Ground Truth(GT)转换yolov5目标检测标签(路面积水检测例子)

    基于语义分割Ground Truth(GT)转换yolov5目标检测标签(路面积水检测例子) 概述 许多目标检测的数据是通过直接标注或者公开平台获得,如果存在语义分割Ground Truth的标签文件 ...

  9. yolov5目标检测神经网络——损失函数计算原理

    前面已经写了4篇关于yolov5的文章,链接如下: 1.基于libtorch的yolov5目标检测网络实现--COCO数据集json标签文件解析 2.基于libtorch的yolov5目标检测网络实现 ...

  10. 用opencv的dnn模块做yolov5目标检测

    最近在微信公众号里看到多篇讲解yolov5在openvino部署做目标检测文章,但是没看到过用opencv的dnn模块做yolov5目标检测的.于是,我就想着编写一套用opencv的dnn模块做yol ...

最新文章

  1. DataGrid能否动态合并一笔订单下面的多个交易
  2. Linux平台Oracle安装脚本
  3. 二叉搜索树的插入、删除、修剪、构造操作(leetcode701、450、669、108)
  4. python选择某一行_Python常用语法有哪些 如何快速入门Python开发
  5. 「兼容M1」iZotope RX 9 Advanced for Mac - 音频修复工具
  6. 按钮插件和按钮状态切换
  7. POJ 2393 Yogurt factory
  8. OCR识别技术之—车牌识别
  9. VxWorks6.8串口示例
  10. stirling formula prove
  11. Install Windows Vista Service Pack 2 (SP2)
  12. 湖北移动B863AV3.1-M2_S905L3A_UWE5621DS_安卓9语音线刷包--支持语音-首页正常-设置不要密码-灯正
  13. 为什么那些美事没有实现---生活中小事有感
  14. 天眼查 Authorized和企查查 sign破解
  15. 【期末复习】操作系统
  16. 千川数据返回值解析(AES)解密
  17. ios上编译c语言,如何构建C编写的库并在iOS中使用
  18. WEB开发技术蓝墨云第一次作业
  19. php日期转微秒,使用PHP生成独特的微秒级
  20. 解决vim E492 Not an editor command M

热门文章

  1. 关于click事件在苹果手机上的阴影的解决方法和关于在安卓手机上的select的灰色背景色的解决...
  2. 解决UTF-8方法归纳
  3. apache无权限访问(You don't have permission to access /docs/index.html on this server)
  4. [学习笔记]数据库设计概览
  5. Ubuntu18.04下NVIDIA CUDA安装指南和DeepLearning4J GPU配置
  6. ENVI入门系列教程---一、数据预处理---1.1基本操作--5.x以后的界面(新界面)
  7. 阿里云服务器部署GeoServer以及跨域处理
  8. 基于GEE平台分析湖北省近35年地表水变化特征
  9. matlab 计算图像的基本参数
  10. 物理机安装linux系统,物理机安装linux的三种方法