项目介绍:

本科毕业选的深度学习的毕设,一开始只是学习了一下YOLOv3模型, 按照作者的指示在官网上下载下来权重,配好环境跑出来Demo,后来想着只是跑模型会不会太单薄,于是想了能不能做出来个比较实用的东西(因为模型优化做不了)。于是乎做一个可以检测人体的可操控移动小车的想法就诞生了。

实现的功能:1. 控制小车行进,并实时检测人体目标。

​ 2. 作为家庭监控,可以将出现在摄像头中的人体目标通过微信发到手机上,并可以人为决定是否通过蜂鸣器发出警报。

大致的工作包括:1. YOLOv3 tiny 模型的训练

​ 2. Darknet模型到tensorflow模型再到NCS(神经计算加速棒)模型的两次转化

​ 3. 小车控制以及视频流直播程序

​ 4. 微信报警程序


一 、环境搭建

一、安装NVIDIA显卡驱动

1.删除旧的驱动。

原来Linux默认安装的显卡驱动不是英伟达的驱动,所以先把旧得驱动删除掉。

sudo apt-get purge nvidia*

2.禁止自带的nouveau nvidia驱动。

2.1 打开配置文件:

sudo gedit /etc/modprobe.d/blacklist-nouveau.conf

2.2填写禁止配置的内容:

blacklist nouveau``options nouveau modeset=0

2.3更新配置文件:

sudo update-initramfs -u

重启电脑!

2.4检查设置

(因为禁止了显卡的驱动,这时你的电脑分辨率会变成800*600,图标格式将会很不和谐,当然通过这个可以看出,是否完成这上面的操作)

lsmod | grep nouveau

*如果屏幕没有输出则禁用nouveau成功

3 正式安装

法一:ppa源安装(原生安装)

1.添加Graphic Drivers PPA

sudo add-apt-repository ppa:graphics-drivers/ppa``sudo apt-get update

2.查看合适的驱动版本:

ubuntu-drivers devices

3.在这里我选择合适的396版本:

sudo apt-get install nvidia-driver-396

重启电脑!

4.安装成功检查:

sudo nvidia-smi``sudo nvidia-settings

*最直接的方法是进入到系统的“软件和更新”,点击进入到“附加驱动”,选择你需要安装的英伟达驱动,然后点击“应用更改”,便能进行安装了。注意的是这个方法适合网速较好的环境下进行。

二、安装CUDA

1、官网下载:https://developer.nvidia.com/cuda-90-download-archive

我的如下:

2、安装依赖库

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

否则将会报错:

3、注意C++\G++版本

CUDA9.0要求GCC版本是5.x或者6.x,其他版本不可以,需要自己进行配置,通过以下命令才对gcc版本进行修改。

查看版本:

g++ --version

版本安装:

sudo apt-get install gcc-5
sudo apt-get install g++-5

通过命令替换掉之前的版本:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50

最后记得再次查看版本是否修改成功。

4、运行run文件

sudo sh cuda_9.0.176_384.81_linux.run

安装协议可以直接按q跳到最末尾,注意一项:

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit: n # 安装NVIDIA加速图形驱动程序,这里选择n

5、添加环境变量

进行环境的配置,打开环境变量配置文件

sudo gedit ~/.bashrc

在末尾把以下配置写入并保存:

#CUDA
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

最后执行:

source ~/.bashrc

6、安装测试

在安装的时候也也相应安装了一些cuda的一些例子,可以进入例子的文件夹然后使用make命令执行。

例一:

1.进入例子文件

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery

2.执行make命令

sudo make

\3. 第三步

./deviceQuery

如果结果有GPU的信息,说明安装成功。

例二:

\1. 进入例子对应的文件夹

cd NVIDIA_CUDA-9.0_Samples/5_Simulations/fluidsGL

2.执行make

make clean && make

\3. 运行

./fluidsGL

当执行这个例子,我们会看到流动的图,刚开始可能看不到黑洞,需要等待一小段时间。不过记得用鼠标点击下绿色的画面。

三、安装cuDNN

1、官网下载:https://developer.nvidia.com/rdp/form/cudnn-download-survey

这个需要注册账号,拿自己的邮箱注册即可。

只需下载下面3个安装包即可

2、顺序执行下面3个安装命令:

sudo dpkg -i libcudnn7_7.0.3.11-1+cuda9.0_amd64.deb``sudo dpkg -i libcudnn7-dev_7.0.3.11-1+cuda9.0_amd64.deb``sudo dpkg -i libcudnn7-doc_7.0.3.11-1+cuda9.0_amd64.deb

3、安装测试

输入以下命令:

cp -r /usr/src/cudnn_samples_v7/ $HOME``cd $HOME/cudnn_samples_v7/mnistCUDNN``make clean && make``./mnistCUDNN

最终如果有提示信息:“Test passed! ”,则说明安装成功!

四、安装TensorFlow

1.pip直接安装

pip install tensorflow_gpu-1.9.0
五、安装darknet

打开YOLOv3官网,https://pjreddie.com/darknet/,按着教程一步一步的照做。

  1. 把项目克隆到本地,编译

    git clone https://github.com/pjreddie/darknet
    cd darknet
    make
  2. 下载已经训练好的yolov3权重,或者直接wget,如果下载速度太慢可以去百度找一下。

    wget https://pjreddie.com/media/files/yolov3.weights
  3. 下载完之后就可以使用权重模型来进行测试了。

    ./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

这里不会弹出来检测的图片是因为没有安装OpenCV,检测的结果会在项目文件夹下生成predictions.png.

  1. 如果你有摄像头,你也可以直接通过视频测试模型

    ./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights
六、总结

至此已完成了,模型训练端的环境搭建,下一篇文章将介绍如何利用YOLOv3模型训练自己的数据集。

基于树莓派与YOLOv3模型的人体目标检测小车(一)的更多相关文章

  1. 目标检测-基于Pytorch实现Yolov3(1)- 搭建模型

    原文地址:https://www.cnblogs.com/jacklu/p/9853599.html 本人前段时间在T厂做了目标检测的项目,对一些目标检测框架也有了一定理解.其中Yolov3速度非常快 ...

  2. 基于候选区域的深度学习目标检测算法R-CNN,Fast R-CNN,Faster R-CNN

    参考文献 [1]Rich feature hierarchies for accurate object detection and semantic segmentation [2]Fast R-C ...

  3. 基于深度学习的安卓恶意应用检测----------android manfest.xml + run time opcode, use 深度置信网络(DBN)

    基于深度学习的安卓恶意应用检测 from:http://www.xml-data.org/JSJYY/2017-6-1650.htm 苏志达, 祝跃飞, 刘龙     摘要: 针对传统安卓恶意程序检测 ...

  4. CVPR2020|3D-VID:基于LiDar Video信息的3D目标检测框架

    作者:蒋天园 Date:2020-04-18 来源:3D-VID:基于LiDar Video信息的3D目标检测框架|CVPR2020 Brief paper地址:https://arxiv.org/p ...

  5. EGADS介绍(二)--时序模型和异常检测模型算法的核心思想

    EDADS系统包含了众多的时序模型和异常检测模型,这些模型的处理会输入很多参数,若仅使用默认的参数,那么时序模型预测的准确率将无法提高,异常检测模型的误报率也无法降低,甚至针对某些时间序列这些模型将无 ...

  6. .NET - 基于事件的异步模型

    注:这是大概四年前写的文章了.而且我离开.net领域也有四年多了.本来不想再发表,但是这实际上是Active Object模式在.net中的一种重要实现方法,因此我把它掏出来发布一下.如果该模型有新的 ...

  7. 基于Pre-Train的CNN模型的图像分类实验

    基于Pre-Train的CNN模型的图像分类实验  MatConvNet工具包提供了好几个在imageNet数据库上训练好的CNN模型,可以利用这个训练好的模型提取图像的特征.本文就利用其中的 “im ...

  8. word2vec 中的数学原理具体解释(五)基于 Negative Sampling 的模型

      word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了非常多人的关注. 因为 word2vec 的作者 Tomas ...

  9. word2vec 中的数学原理具体解释(四)基于 Hierarchical Softmax 的模型

      word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了非常多人的关注.因为 word2vec 的作者 Tomas M ...

随机推荐

  1. 重大改革!Python,最接近人工智能的语言~将被加入高考科目!

    就在前几天,和一位浙江省高校的信息技术老师聊天,我得到了一个震惊的消息: 明年,浙江省信息技术教材将不会在使用晦涩难懂的VB语言,而是改学更简单易懂的Python语言.也就是说, Python语言将纳 ...

  2. 通过python脚本读取多台虚机硬件信息

    主要通过fabric模块实现 import fabric ''' hosts = [] ,): host = "192.168.75." + str(i) hosts.append ...

  3. Azure Devops/TFS测试管理(下)

    紧接着 上篇 经过上篇折腾,我们已经有了: ①手工测试的流程规范 ②测试用例的管理 对于开发出身的我,我觉得一个项目上线流程应该主要瓶颈只能是开发本身,因为我认为最复杂过程应该就是开发,而肯定不能是测 ...

  4. CSS3实现一个旋转的花朵

    要效果图如下: 实现原理:其实很简单,就是中间的圆圈定位在中间,其他的6个圆圈,进行不同的绝对定位,然后进行旋转!代码: <!DOCTYPE html> <html lang=&qu ...

  5. 那些年,我的前端/Java后端书单

    全文为这些年,我曾阅读.深入理解过(或正在阅读学习.即将阅读)的一些优秀经典前端/Java后端书籍.全文为纯原创,且将持续更新,未经许可,不得进行转载.当然,如果您喜欢这篇文章,可以动手点点赞或者收藏 ...

  6. 最新IntelliJ IDEA 2019.3版本永久激活,一步到位!

    简单介绍一下什么是IDEA? IDEA全称 IntelliJ IDEA,是java编程语言开发的集成环境.IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手.代码自动提示.重构. ...

  7. 关于javascript 的reduce方法

    作为一个前端菜鸟,觉得资料比较好,特地分享一下~~ reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值. 你一定也和我一样看的有点 ...

  8. 前端Tips#6 - 在 async iterator 上使用 for-await-of 语法糖

    视频讲解 前往原文 前端Tips 专栏#6,点击观看 文字讲解 本期主要是讲解如何使用 for-await-of 语法糖进行异步操作迭代,让组织异步操作的代码更加简洁易读. 1.场景简述 以下代码中的 ...

  9. Matplotlib数据可视化(6):饼图与箱线图

    In [1]: from matplotlib import pyplot as plt import numpy as np import matplotlib as mpl mpl.rcParam ...

  10. SpringBoot框架——从SpringBoot看IoC容器初始化流程之方法分析

    目录 一.概观Spring Boot 二.Spring Boot应用初始化 2.1 初始化入口 2.2 SpringApplication的run方法 2.3 方法分析 三.容器创建与初始化 3.1 ...