[神经网络]一步一步使用Mobile-Net完成视觉识别(二)
1.环境配置
2.数据集获取
3.训练集获取
4.训练
5.调用测试训练结果
6.代码讲解
本文是第二篇,调用官方例子并获取数据集。
上一节里面记得我们需要配置PYTHONPATH,大家应该发现,每次运行程序之前,都必须执行一次
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
为了解决这个问题,我们在运行以下命令
sudo gedit ~/.bashrc
在最后一行添加以下内容
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
其中,我们需要把两个pwd分别替换为绝对路径到research目录,例如/home/xueaoru/models/research。
接下来我们运行下官方的识别例子,
在命令行下打开jupyter notebook
jupyter notebook
前提是你已经安装了jupyter notebook,你装的anaconda的话就已经装好了,否则你就
sudo pip install jupyter
然后到object_detection 路径下打开官方的object_detection_tutorial.ipynb文件,然后逐个执行,中间会下载相关的预训练模型和数据集,耐心等待即可。
如果中途出现报错,一般是没有安装相应的库,那就很简单了,根据报错看缺什么库,然后pip安装。比如缺少xxx,就pip insrall xxx。
执行到最后效果是这样的:

下一步我们就要准备自己的数据集了。
ubuntu 上一般装个cheese就可以打开摄像头了,执行以下命令安装cheese
sudo apt-get install cheese
安装完之后我们打开它,然后前后移动对小车录像,也可以用手机录像,只不过手机录出来的更加清晰罢了,咱比赛的时候用的摄像头没那么清晰。对红色灯管的小车和蓝色灯管的小车分别从远近旋转角度进行拍摄,拿到两个mp4文件。
下一步从mp4文件里提取图片,每隔5帧提取一次图片。
用python执行以下代码:
import cv2 as cv
import os
FILEPATH = "/home/xueaoru/pics/out"
VIDEOPATH = "/home/xueaoru/projects/srm"
VIDEONAME = "car1.mp4"
cap = cv.VideoCapture(os.path.join(VIDEOPATH,VIDEONAME))
sp = 5
ci = 0*sp
while(1):
ret,frame = cap.read()
if ret!=True:
break
#out = frame
out = cv.resize(frame,(640,480))
#cv.imshow("frame",out)
k = cv.waitKey(1) & 0xFF
if ci%sp ==0:
cv.imwrite(os.path.join(FILEPATH,"image"+str(ci//sp + 1)+".jpg"),out)
ci = ci + 1
if k == 27:
break
cap.release()
cv.destroyAllWindows()
需要注意,我们需要根据情况更改里面的FILEPATH、VIDEOPATH、VIDEONAME。
这时候我们就拿到了640*480的很多图片了。如图:

到这一步差不多就搜集完了,然后就是标准的打标签了。
我们需要下载一个工具来帮助我们打标签:
git clone https://github.com/tzutalin/labelImg.git
git下来之后进入该目录下执行以下语句
sudo apt-get install pyqt5-dev-tools
sudo pip3 install -r requirements/requirements-linux-python3.txt
make qt5py3
python3 labelImg.py
就能打开labelImg
或者更简单的,你直接pip安装就可以了
pip install labelImg
labelImg
一样可以打开labelImg,打开图像目录进行标注吧,右键可以选择标注,其中还有快捷键,w是标注,a是上一张图,d是下一张图,保存的默认是xml文件,这正是我们需要的。

在上面所有的工作完成之后,我们就拿到了所有标注的数据集xml.

[神经网络]一步一步使用Mobile-Net完成视觉识别(二)的更多相关文章
- 一步一步理解word2Vec
一.概述 关于word2vec,首先需要弄清楚它并不是一个模型或者DL算法,而是描述从自然语言到词向量转换的技术.词向量化的方法有很多种,最简单的是one-hot编码,但是one-hot会有维度灾难的 ...
- 如何一步一步用DDD设计一个电商网站(十二)—— 提交并生成订单
阅读目录 前言 解决数据一致性的方案 回到DDD 设计 实现 结语 一.前言 之前的十一篇把用户购买商品并提交订单整个流程上的中间环节都过了一遍.现在来到了这最后一个环节,提交订单.单从业务上看,这个 ...
- 如何一步一步用DDD设计一个电商网站(十三)—— 领域事件扩展
阅读目录 前言 回顾 本地的一致性 领域事件发布出现异常 订阅者处理出现异常 结语 一.前言 上篇中我们初步运用了领域事件,其中还有一些问题我们没有解决,所以实现是不健壮的,下面先来回顾一下. 二.回 ...
- NLP(二十九)一步一步,理解Self-Attention
本文大部分内容翻译自Illustrated Self-Attention, Step-by-step guide to self-attention with illustrations and ...
- 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑
阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...
- 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成
阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...
- 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车
阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...
- 如何一步一步用DDD设计一个电商网站(七)—— 实现售价上下文
阅读目录 前言 明确业务细节 建模 实现 结语 一.前言 上一篇我们已经确立的购买上下文和销售上下文的交互方式,传送门在此:http://www.cnblogs.com/Zachary-Fan/p/D ...
- 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文
阅读目录 前言 如何在一个项目中实现多个上下文的业务 售价上下文与购买上下文的集成 结语 一.前言 前几篇已经实现了一个最简单的购买过程,这次开始往这个过程中增加一些东西.比如促销.会员价等,在我们的 ...
- 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发
阅读目录 前言 单元测试 纠正错误,重新出发 结语 一.前言 实际编码已经写了2篇了,在这过程中非常感谢有听到观点不同的声音,借着这个契机,今天这篇就把大家提出的建议一个个的过一遍,重新整理,重新出发 ...
随机推荐
- 4.ctf实战题
一道ctf实战题. 先亮出网址: http://fb2ad00f-0a28-4e38-8fff-849d7391e2d0.coding.io 打开连接,看到下面页面.Web题,首先就是扫描(御剑啊还有 ...
- girdspec实现画布
对于简单的画布可以很轻松的使用subplot解决,可是对于一些复杂的画布比如下面的这个 就不易使用subplot解决,这是就需要subplot的扩展版gridspec 构造函数GridSpec(nro ...
- Spark 中的 checkpoint
为了实现容错,需要做checkpoint.以Streaming为例,checkpoint中有两种数据: 1. Metadata checkpointing:用于恢复driver端出错的情况.其中包含: ...
- 洛谷P4770 [NOI2018]你的名字(后缀自动机+线段树)
传送门 我有种自己根本没学过SAM的感觉……最后还是抄了老半天的题解…… 首先,对$S$和每一次的$T$都建一个SAM 先考虑一下$l=1,r=\left| S \right|$的情况 设$lim_i ...
- RabbiMQ原理与SpringBoot使用
RabbiMQ介绍 具体代码可参考我的github:https://github.com/UniqueDong/springboot-study 一.使用场景 RabbitMQ是一个消息中间件,所以最 ...
- python-django框架中使用FastDFS分布式文件系统
一.安装FastDFS 1-1:执行docker命令安装 # 安装tracker docker run -dti --network=host --name tracker -v /var/fdfs/ ...
- Luogu P3941 入阵曲【前缀和】By cellur925
题目传送门 题目大意:给你一个\(n\)*\(m\)的矩阵,每个位置都有一个数,求有多少不同的子矩阵使得矩阵内所有数的和是\(k\)的倍数. 数据范围给的非常友好233,期望得到的暴力分:75分.前1 ...
- cmd 中粘贴复制(转)
1 如右图,右键命令提示符窗口的标题栏,选择属性. 2 选择“编辑选项”里的“快速编辑模式”,并确定之: 3 在弹出的应用选择提示框上选择“保存属性,供以后具有相同标题的窗口使用”: 4 如此你就可以 ...
- symbol lookup error: /lib64/libpango-1.0.so.0: undefined symbol: g_log_structured_standard 错误
通过更新glib2包修复.(yum update glib2)即可 拿走不谢,我也找得好辛苦!!!
- Django之Form组件归类
目录: Django内置字段 Django内置插件 常用选择插件 创建Form类时,主要涉及到 [字段] 和 [插件],字段用于对用户请求数据的验证,插件用于自动生成HTML; Field requi ...