深度神经网络如何启用卤化物后端以提高效率

介绍

本教程指导如何使用 Halide 语言后端在 OpenCV 深度学习模块中运行模型。Halide 是一个开源项目,它让我们以可读性强的格式编写图像处理算法,根据特定设备安排计算并以相当高的效率对其进行评估。

卤化物项目的官方网站:Halide。

最新的效率比较:https://github.com/opencv/opencv/wiki/DNN-Efficiency

要求

LLVM 编译器

注意

LLVM 编译可能需要很长时间。

  • 从 http://releases.llvm.org/4.0.0/llvm-4.0.0.src.tar.xz 下载 LLVM 源代码。打开包装。let llvm_root 是源代码的根目录。
  • llvm_root/tools/clang 创建目录
  • 下载与 LLVM 版本相同的 Clang。在我们的例子中,它将来自 http://releases.llvm.org/4.0.0/cfe-4.0.0.src.tar.xz。将其解压缩到 llvm_root/tools/clang 中。请注意,它应该是 Clang 源代码的根目录。
  • 在 Linux 上构建 LLVM
    光盘llvm_root
    mkdir 构建 && cd 构建
    cmake -DLLVM_ENABLE_TERMINFO=OFF -DLLVM_TARGETS_TO_BUILD=“X86” -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_BUILD_TYPE=Release ..
    制作 -j4
  • 在 Windows 上构建 LLVM(开发人员命令提示符)
    mkdir \\path-to-llvm-build\\ && cd \\path-to-llvm-build\\
    cmake.exe -DLLVM_ENABLE_TERMINFO=OFF -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=\\path-to-llvm-install\\ -G “Visual Studio 14 Win64” \\path-to-llvm-src\\
    MSBuild.exe /m:4 /t:Build /p:Configuration=Release .\\INSTALL.vcxproj

注意

\\path-to-llvm-build\\和 是不同的目录。\\path-to-llvm-install\\

卤化物语言。

  • 从 GitHub 存储库下载源代码,https://github.com/halide/Halide 或使用 git。根目录将是一个halide_root
    git clone https://github.com/halide/Halide.git
  • 在 Linux 上构建 Halide
    光盘halide_root
    mkdir 构建 && cd 构建
    cmake -DLLVM_DIR=llvm_root/build/lib/cmake/llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_VERSION=40 -DWITH_TESTS=OFF -DWITH_APPS=OFF -DWITH_TUTORIALS=OFF ..
    制作 -j4
  • 在 Windows 上构建 Halide(开发人员命令提示符)
    光盘halide_root
    mkdir 构建 && cd 构建
    cmake.exe -DLLVM_DIR=\\path-to-llvm-install\\lib\\cmake\\llvm -DLLVM_VERSION=40 -DWITH_TESTS=OFF -DWITH_APPS=OFF -DWITH_TUTORIALS=OFF -DCMAKE_BUILD_TYPE=Release -G “Visual Studio 14 Win64” ..
    MSBuild.exe /m:4 /t:Build /p:Configuration=Release .\\ALL_BUILD.vcxproj

使用 Halide 后端构建 OpenCV

构建 OpenCV 时,请添加以下配置标志:

  • WITH_HALIDE- 启用卤化物联动
  • HALIDE_ROOT_DIR- Halide 构建目录的路径

将 Halide 设置为首选后端

net.setPreferableBackend(DNN_BACKEND_HALIDE);

   在线教程

  • 麻省理工学院人工智能视频教程 – 麻省理工人工智能课程
  • 人工智能入门 – 人工智能基础学习。Peter Norvig举办的课程
  • EdX 人工智能 – 此课程讲授人工智能计算机系统设计的基本概念和技术。
  • 人工智能中的计划 – 计划是人工智能系统的基础部分之一。在这个课程中,你将会学习到让机器人执行一系列动作所需要的基本算法。
  • 机器人人工智能 – 这个课程将会教授你实现人工智能的基本方法,包括:概率推算,计划和搜索,本地化,跟踪和控制,全部都是围绕有关机器人设计。
  • 机器学习 – 有指导和无指导情况下的基本机器学习算法
  • 机器学习中的神经网络 – 智能神经网络上的算法和实践经验
  • 斯坦福统计学习

有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

请添加图片描述

人工智能书籍

  • OpenCV(中文版).(布拉德斯基等)
  • OpenCV+3计算机视觉++Python语言实现+第二版
  • OpenCV3编程入门 毛星云编著
  • 数字图像处理_第三版
  • 人工智能:一种现代的方法
  • 深度学习面试宝典
  • 深度学习之PyTorch物体检测实战
  • 吴恩达DeepLearning.ai中文版笔记
  • 计算机视觉中的多视图几何
  • PyTorch-官方推荐教程-英文版
  • 《神经网络与深度学习》(邱锡鹏-20191121)

  • 在这里插入图片描述

第一阶段:零基础入门(3-6个月)

新手应首先通过少而精的学习,看到全景图,建立大局观。 通过完成小实验,建立信心,才能避免“从入门到放弃”的尴尬。因此,第一阶段只推荐4本最必要的书(而且这些书到了第二、三阶段也能继续用),入门以后,在后续学习中再“哪里不会补哪里”即可。

第二阶段:基础进阶(3-6个月)

熟读《机器学习算法的数学解析与Python实现》并动手实践后,你已经对机器学习有了基本的了解,不再是小白了。这时可以开始触类旁通,学习热门技术,加强实践水平。在深入学习的同时,也可以探索自己感兴趣的方向,为求职面试打好基础。

第三阶段:工作应用

这一阶段你已经不再需要引导,只需要一些推荐书目。如果你从入门时就确认了未来的工作方向,可以在第二阶段就提前阅读相关入门书籍(对应“商业落地五大方向”中的前两本),然后再“哪里不会补哪里”。

 有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/370190.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(4)【Python数据分析进阶】Machine-Learning模型与算法应用-回归、分类模型汇总

线性回归、逻辑回归算法应用请参考: https://codeknight.blog.csdn.net/article/details/135693621https://codeknight.blog.csdn.net/article/details/135693621本篇主要介绍决策树、随机森林、KNN、SVM、Bayes等有监督算法以及无监督的聚类算法和应用PCA对数据进行降维的算法…

修改UnityEngine dll

修改UnityEngine dll 由于有些版本的dll与热重载并不兼容,需要小幅修改代码。 使用dnspy工具 我们使用 dnspy 来修改 dll文件。而dnspy只能在Win下运行,故哪怕是mac版本dll, 你也得先将相应dll复制到Win下后再修改。下载 dnspy&#xff0c…

C#之linq和lamda表达式GroupBy分组拼接字符串

文章目录 C#之linq和lamda表达式GroupBy分组拼接字符串业务需求核心代码调试 C#之linq和lamda表达式GroupBy分组拼接字符串 业务需求 点击提示信息,如:“售后单【SH001】序列号【001,002,006】;售后单【SH002】序列号…

【Spring】代理模式

文章目录 代理模式对代理模式的理解静态代理动态代理JDK动态代理原理源码优化 CGLIB动态代理使用原理 JDK与CGLIB的对比 面试题JDK动态代理和CGLIB有什么区别?既然有没有接口都可以用CGLIB,为什么Spring还要使用JDK动态代理? 代理模式 对代理…

3 编辑器(Vim)

1.完成 vimtutor。备注:它在一个 80x24(80 列,24 行) 终端窗口看起来效果最好。 2.下载我们提供的 vimrc,然后把它保存到 ~/.vimrc。 通读这个注释详细的文件 (用 Vim!), 然后观察 …

如何在Shopee平台上进行测款选品

在如今竞争激烈的电商市场,选择合适的产品成为卖家们提高销售业绩的重要一环。在Shopee平台上进行测款选品,可以帮助卖家找到符合市场需求的产品,提高销售业绩。本文将介绍一些策略和步骤,帮助卖家在Shopee平台上进行测款选品。 …

javaEE - 20( 18000字 Tomcat 和 HTTP 协议入门 -1)

一: HTTP 协议 1.1. HTTP 是什么 HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的 应用层协议. HTTP 诞生与1991年. 目前已经发展为最主流使用的一种应用层协议. 最新的 HTTP 3 版本也正在完善中, 目前 Google / Facebook 等公司的产品已经支持了. HTT…

【Python基础021】Python中的何如实现文件的读写

Python中文件的读写在程序运行过程中是一个非常重要的操作,我们通常会将一些大量的临时数据暂时存放到一个临时文件,这就需要用到文件的读取与写入功能。话不多说,我们直接上才艺。 1、文本文件和二进制文件 讲文件读写前,先说说…

sqli.labs靶场(29到40关)

29、第二十九关 id1 id1 尝试发现是单引号闭合, -1 union select 1,2,3-- -1 union select 1,2,database()-- -1 union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schemasecurity)-- -1 union select 1,2,(select…

C#(C Sharp)学习笔记_前言及Visual Studio Code配置C#运行环境【一】

前言 这可以说是我第一次正式的踏入C#的学习道路,我真没想过我两年前是怎么跳过C#去学Unity3D游戏开发的(当然了,游戏开发肯定是没有成功的,都是照搬代码)。而现在,我真正地学习一下C#,就和去年…

STM32--揭秘中断(简易土货版)

抢占优先级响应优先级 视频学习--中断​​​​​​​

队列---数据结构

定义 队列(Queue)简称队,也是一种操作受限的线性表,只允许在表的一端进行插入,而在表的另一端进行删除。向队列中插入元素称为入队或进队;删除元素称为出队或离队。 队头(Front)&a…

单片机的50个电路

单片机 电源 声音模块 收音机 485 蓝牙 光耦 can 光敏电阻 单片机 矩阵 单片机电路 时钟 ADC 接口电路 红外发射 显示模块 红外接收 蜂鸣器驱动 流水灯 usb供电 烧录电路 数码管 EEPROM LCD1602电路 数码管 max485 红外开关 译码器 移位寄存器 步进电机控制 复位电路 下载电路 …

Python之列表的增删改查

列表的查 a ["klvchen", "tom", "jack", "james", "lily", "lucy"] print(a[1:4]) 结果: [tom, jack, james] 注意: 列表的切片的下标以 0 为开始。即: 下标0 --> klvchen…

基于相关向量机和特征选取的短期负荷预测MATLAB程序

微❤关注“电气仔推送”获得资料(专享优惠) 参考文献 相关向量机和特征选取技术在短期负荷预测中的应用——刘刚 运行环境——MATLAB 程序简介 通过改进传统的Relief算法,提出一种短期负荷预测特征输入量的选取方法,并使用相…

【webpack】技巧使用

webpack和TypeScript 安装webpack相关内容安装TS相关内容配置初始化数据初始化运行展示和目录展示报错解决(缺失文件配置) 安装前端必备神奇lodash测试一下entry配置index.html模板配置修改打包出来的index.html的titleinject注入chunks 属性多页面配置 …

C# 信号量(Semaphore)详细使用案例

文章目录 简介信号量的工作原理使用场景使用示例其他使用实例1. 数据库连接池管理2. 文件读写同步3. 生产者消费者问题4. 打印任务队列同步5. Web服务器并发请求限制 简介 在C#中,信号量(Semaphore)是.NET框架提供的一个同步类,位…

【C/Python】Gtk部件ListStore的使用

一、C语言 在GTK中,Gtk.ListStore是一个实现了Gtk.TreeModel接口的存储模型,用于在如Gtk.TreeView这样的控件中存储数据。以下是一个简单的使用Gtk.ListStore的C语言示例,该示例创建了一个列表,并在图形界面中显示: …

【Vue项目中使用videojs播放本地mp4的项目】

目录 以下是一个使用video.js播放本地mp4文件的Vue项目代码示例:1. 首先,在终端中使用以下命令安装video.js和video.js插件:2. 在Vue组件中,引入video.js和videojs-youtube插件:3. 配置video-js.css文件,可…

DS:时间复杂度和空间复杂度

创作不易,感谢三连! 一、算法 1.1 什么是算法 算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。…