七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第1张图片

What?女神说要来我家吹空调?

我揉了揉惺忪的双眼,反复确认了多遍,嗯,没有看错!

为了给女神一个好的印象,我打算提前打开空调让室内降到一个舒适的温度;可猛然间发现空调遥控器找不见了!

这可怎么办?我急中生智:可以用 Yolov5 训练个空调遥控器目标识别模型并调用手机摄像头找找看嘛! 

事不宜迟,开整!

目录

1 万事大吉

1.1 数据集准备

1.2 标注数据集

1.3 训练模型

2 别高兴得太早

2.1 调用人家训练好的模型

3 大功告成

3.1 调用手机摄像头找遥控器


1 万事大吉

1.1 数据集准备

训练一个模型, 首先要准备一定量的数据集,如果一张一张从网上下载的话太费时间,没等收集完照片女神早就来了,那时还没找到空调遥控器的话不太好,于是我打算用 python 爬虫技术来快速完成这一步操作!

读者若有对爬虫的学习需求可以点击下方链接参考我的 python 爬虫专栏:
Python 网络数据爬取及分析「从入门到精通」

1.1.1 基于requests库的百度图片爬取

我决定就对百度图片库中的 “空调遥控器” 相关图片进行爬取,今天是七夕,就爬 520 张吧。 

百度图片库  “空调遥控器” 相关图片爬取代码如下:

#!/usr/bin/python
# -*- coding:utf-8 -*-
import re
import requests

word = "空调遥控器"
url = 'https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + word + '&pn='
numPicture = 520
file = 'E:/images'
t, num = 0, 0

headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'
}
response = requests.Session()
response.headers = headers

while t <= numPicture:
    url = url + str(t)
    html = response.get(url, timeout=10, allow_redirects=False)
    pic_urls = re.findall('"objURL":"(.*?)",', html.text, re.S)
    for pic_url in pic_urls:
        print('Download 第' + str(num) + '张图片,图片 url:' + str(pic_url))
        string = file + r'\\' + word + '+' + str(num) + '.jpg'
        local_path = open(string, 'wb')
        photo = requests.get(pic_url, timeout=7)
        local_path.write(photo.content)
        local_path.close()
        num += 1
    t = t + 52

爬取结果示例:

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第2张图片

1.1.2 重命名

为了便于下一步框选数据集标签操作,吻合 yolov5 对于数据集图片及对应标签名字必须一致的特点,以及避免因出现中文而报错的隐患,我打算在标注数据集图片之前先进行一下重命名操作:直接按顺序依次重命名为 1.jpg、2.jpg、3.jpg ……

重命名代码如下:

#!/usr/bin/python
# -*- coding:utf-8 -*-
import os

folderpath = r'E:\images'
picsPath = os.listdir(folderpath)

i = 1
for picPath in picsPath:
    pass_name = os.path.join(folderpath, picPath)
    new_name = os.path.join(folderpath + '/' + str(i) + '.jpg')
    os.rename(pass_name, new_name)
    print("旧路径:", pass_name," --->  重命名后路径:", new_name)
    i += 1

运行结果展示: 

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第3张图片

至此,数据集准备工作就告一段落啦! 

1.2 标注数据集

关于如何制作和训练自己的数据集,我之前也写过相应文章,读者可点击下方链接查看:
GitHub YOLOv5 开源代码项目系列讲解(二)------制作和训练自己的数据集 

这一步我按照 Github Yolov5 官网源码指示,选用下面链接网站进行线上数据标注:https://www.makesense.ai/  

值得注意的是,yolov5 要求图片与对应标签名称必须一致,且要求必须分别放置到 images 和labels 文件夹中。

而这部分要求,这个线上标注数据的网站就可以帮我们制作好。

因为我要做的是 “空调遥控器” 的目标检测,所以仅设置一个标签:"remote"
:若设置两个或多个标签,则依次为第 “0" 个"、第 “1” 个,顺序很重要喔。 

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第4张图片

接再来就是漫长而枯燥的框选目标的过程…… 

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第5张图片

520 张图片终于标完啦,伸个懒腰,把它们对应目标的标签 txt 文件。

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第6张图片

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第7张图片

至此,枯燥乏味的数据标注工作也结束啦。 

1.3 训练模型

在 yolov5-v5.0 目录下新建 mydata 文件夹,并在其中新建 images 文件夹和 labels 文件夹,随后在 images 文件夹和 labels 文件夹下新建 train 文件夹和 test 文件夹。将上几步得到的 label 文件和 image 文件分别传入对应位置。

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第8张图片

接下来在开源代码 data 目录下新建 mydata.yaml 文件并键入

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第9张图片

值得注意的是,在 train.py 文件的 add_argument 方法中找到 “--data”,并将其设置为上一步新建的 mydata.yaml 文件目录;强烈建议将 “--workers” 值设置为 “0”,避免因多线程问题而报错。

:train.py 文件的参数作用可点击下面链接参考
GitHub YOLOv5 开源代码项目系列讲解(四)------训练相关参数解释

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第10张图片

正在欢天喜地打算庆祝工作做完大半之时,突然想到官网给出的训练模型已经提供了 80 种物体识别实例, 我记得其中有个叫 “remote” 的物体可识别,应该就是遥控器!

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第11张图片

于是我果断点了暂停,还好这一想法迸发得早,不然在女神来之前恐怕都训练不完呢!

2 别高兴得太早

2.1 调用人家训练好的模型

一拍大腿,都怪我太冲动,仔细想想就不用干那么多无用功了。

接受现实,赶紧数一数 “remote” 在第几类吧,并注意一些重要配置参数待会要进行键入。

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第12张图片

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第13张图片

:datect.py 文件的参数作用可点击下面链接参考
GitHub YOLOv5 开源代码项目系列讲解(三)------预测相关参数解释 

3 大功告成

3.1 调用手机摄像头找遥控器

首先打开手机上的 “IP摄像头” APP。 

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第14张图片  

点击 “打开IP摄像头服务器”。

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第15张图片

勾选 “RTSP” 并点击 “分享”。

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第16张图片

记下局域网地址 

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第17张图片

在 GitHub 上就已经提供了连接手机实时检测的代码示例。

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第18张图片

打开 PyCharm,在右上角点击 “Edit Configuration”,填入 “Parameters” 值。

  • --view-img:用于在电脑上实时显示目标检测画面。
  • --source:用于接入手机上的局域网地址。 
--source http://admin:admin@后面紧接局域网地址
 
如:--source http://admin:admin@192.***.***.***:****

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第19张图片

3.2 运行结果

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第20张图片

啊这……这结果看得我目瞪口呆:空调遥控器这不在电脑键盘上呢么;可能是想到女神要来我家我激动地脑袋嗡嗡的叭,不然怎么会 “骑着毛驴找毛驴” 呢!

就在这时,门口传来了温柔而轻盈敲门声 ……


版权声明:本文为CSDN博主「荣仔!最靓的仔!」的原创文章,遵循 CC 4.0 BY-SA 版权协议。
         转载请在醒目位置附上原文出处链接及本声明。

CSDN博主「荣仔!最靓的仔!」的其他原创专栏链接:
《机器学习》学习笔记专栏:https://blog.csdn.net/it_charge/category_9920949.html 
《数字图像处理》学习笔记专栏:https://blog.csdn.net/it_charge/category_9899861.html 
《Python网络数据爬取及分析》专栏:https://blog.csdn.net/it_charge/category_10097766.html
《GitHub YOLOv5 开源代码项目系列讲解》专栏:https://blog.csdn.net/it_charge/category_11244228.html
《「深度学习一遍过」必修篇》专栏:https://blog.csdn.net/it_charge/category_11251478.html
《23种设计模式在王者荣耀中的应用》专栏:https://blog.csdn.net/it_charge/category_9842143.html

博主B站地址:https://space.bilibili.com/386691571

七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!_第21张图片

感谢阅读 ! 感谢支持 !  感谢关注 !

欢迎大家交流评论,一起学习!

2021 年七夕节于中国大陆 • 重庆

END

你可能感兴趣的:(七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!)