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完成视觉识别(二)的更多相关文章

  1. 一步一步理解word2Vec

    一.概述 关于word2vec,首先需要弄清楚它并不是一个模型或者DL算法,而是描述从自然语言到词向量转换的技术.词向量化的方法有很多种,最简单的是one-hot编码,但是one-hot会有维度灾难的 ...

  2. 如何一步一步用DDD设计一个电商网站(十二)—— 提交并生成订单

    阅读目录 前言 解决数据一致性的方案 回到DDD 设计 实现 结语 一.前言 之前的十一篇把用户购买商品并提交订单整个流程上的中间环节都过了一遍.现在来到了这最后一个环节,提交订单.单从业务上看,这个 ...

  3. 如何一步一步用DDD设计一个电商网站(十三)—— 领域事件扩展

    阅读目录 前言 回顾 本地的一致性 领域事件发布出现异常 订阅者处理出现异常 结语 一.前言 上篇中我们初步运用了领域事件,其中还有一些问题我们没有解决,所以实现是不健壮的,下面先来回顾一下. 二.回 ...

  4. NLP(二十九)一步一步,理解Self-Attention

      本文大部分内容翻译自Illustrated Self-Attention, Step-by-step guide to self-attention with illustrations and ...

  5. 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑

    阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...

  6. 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成

    阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...

  7. 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车

     阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...

  8. 如何一步一步用DDD设计一个电商网站(七)—— 实现售价上下文

    阅读目录 前言 明确业务细节 建模 实现 结语 一.前言 上一篇我们已经确立的购买上下文和销售上下文的交互方式,传送门在此:http://www.cnblogs.com/Zachary-Fan/p/D ...

  9. 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文

    阅读目录 前言 如何在一个项目中实现多个上下文的业务 售价上下文与购买上下文的集成 结语 一.前言 前几篇已经实现了一个最简单的购买过程,这次开始往这个过程中增加一些东西.比如促销.会员价等,在我们的 ...

  10. 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发

    阅读目录 前言 单元测试 纠正错误,重新出发 结语 一.前言 实际编码已经写了2篇了,在这过程中非常感谢有听到观点不同的声音,借着这个契机,今天这篇就把大家提出的建议一个个的过一遍,重新整理,重新出发 ...

随机推荐

  1. 牛客多校3 C-Shuffle Cards(rope大法解决数组分块)

    Shuffle Cards 链接:https://www.nowcoder.com/acm/contest/141/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26 ...

  2. git常用命令和linux下安装git教程

    Debian/Ubuntu下使用apt-get安装git #安装libz-dev libssl-dev $ apt-get install libcurl4-gnutls-dev libexpat1- ...

  3. Luogu P1637 三元上升子序列【权值线段树】By cellur925

    题目传送门 emmm..不开结构体的线段树真香! 首先我们知道"三元上升子序列"的个数就是对于序列中的每个数,**它左边比他小的数*它右边比他大的数**.但是如何快速求出这两个数? ...

  4. gui - tkinter 开发

    GUI 用户交互界面 tkinter 介绍 tkinter python自带的gui库,对图形图像处理库tk的封装 其他gui:pythonwin,wxpython,pyQT.. 概念介绍 组件:组成 ...

  5. 【VueJS】sublime text3支持VueJS语法高亮显示插件vue-syntax-highlight

    1. sublime text3支持VueJS语法高亮显示插件vue-syntax-highlightgithub地址: https://github.com/vuejs/vue-syntax-hig ...

  6. PAT刷题记录

    1. 1007 素数对猜想 :运行超时 算法问题还是语言本身效率低下? import math def is_prime(num): if num == 2: return num temp = in ...

  7. codechef FIBTREE 码农题 线段树 树剖 标记永久化

    好烦啊,调了半天 线段树部分标记比较多,手抖打错了一个 剩下的都是取模的问题 我自己瞎jb推的公式里保留了abs,但是在模意义下是gg的,所以必须把正负区分开 调试的时候一定要注意构造各种形状的树,不 ...

  8. 二开获取yigo设计器里查询集合里中的某个SQL

    package com.bokesoft.lrp_v3.mid.dongming.service; import java.math.BigDecimal; import java.util.Arra ...

  9. JavaScript实现一个简单的密码输入功能

    常见的密码输入框当输入字符后会被替换成‘*’,而且旁边会有个小眼睛可以查看原本的字符,虽然input标签有这个功能,但这只是自己正在看正则表达式的时候突然想到的,就当做个练习,自己手动实现下: < ...

  10. JS中void(0)的含义

    看别人些的JavaScript脚本可以看到这样的代码: <a href="javascript:doTest2();void(0);">here</a> 但 ...