当前位置: 首页 > news >正文

卷积神经网络学习(一)

CNN应用对象是图像,CNN可被应用于的任务:
1、分类(classification):对图像按其中的物体进行分类,如图像中有人与猫,则图像可分为两类。
2、目标检测(object detection):即分类+定位(localization),不光要进行物体分类,还要用方框标识出物体。
3、语义分割(semantic segmentation):对图像的每个像素进行分类。是目标检测的更进一步,不光要进行物体分类,还会很精细的标识出物体(用物体的所有像素来标识物体,而不是用方框)。
4、实例分割(instance segmentation):语义分割的更进一步。对同一类物体的不同个体,语义分割不进行区分,实例分割可以区分。
5、全景分割(panoptic segmentation):实例分割的更进一步。对背景也进行分割,如背景中的树,白云,蓝天也都被分割。

福岛邦彦(Kunihiko Fukushima)于1979年提出神经认知机,由于这项工作他于2021年获得了鲍尔奖,获奖理由:通过发明第一个深度卷积神经网络「Neocognitron」将神经科学原理应用于工程的开创性研究,这是对人工智能发展的关键贡献。
神经认知机中包含了卷积层与池化层。

1989年,Yann LeCun提出将反向传播应用于卷积神经网络。
1998年,Yann LeCun提出了LeNet-5用于手写数字识别。(第一个现代概念上的CNN)

2012年,Alex Krizhevsky提出了AlexNet,帮助其赢得了大规模视觉识别挑战赛(ILSVRC)。
与之前的卷积网络相比,其层数更多(深),采用GPU训练模型,ReLU激活函数,DropOut防止过拟合,局部响应归一化(Local Response Normalization)使下一层的输入更合理。

CNN由三种层组成:卷积层,池化层,全连接层。前两种用于提取特征,后一种用于特征分类。

几篇经典论文

Fukushima, K. (1975). Cognitron: A self-organizing multilayered neural network. Biological cybernetics, 20(3-4), 121-136.
Fukushima, K. (1980). Neocognitron: A self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position. Biological cybernetics, 36(4), 193-202.LeCun, Y. (1989). Generalization and network design strategies. Connectionism in perspective, 19(143-155), 18.
LeCun, Y., Boser, B., Denker, J. S., Henderson, D., Howard, R. E., Hubbard, W., & Jackel, L. D. (1989). Backpropagation applied to handwritten zip code recognition. Neural computation, 1(4), 541-551.
LeCun, Y., Bottou, L., Bengio, Y., & Haffner, P. (1998). Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11), 2278-2324.Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). Imagenet classification with deep convolutional neural networks. Advances in neural information processing systems, 25.

三通道图像的卷积运算:
O = f ( I 1 ∗ K 1 + I 2 ∗ K 2 + I 3 ∗ K 3 + b ) O = f(I_1 * K_1 + I_2 * K_2 + I_3 * K_3 + b) O=f(I1K1+I2K2+I3K3+b)
I i I_i Ii为图像的一个通道, K i K_i Ki为卷积核, ∗ * 为卷积运算, b b b为偏置是一个标量, f f f为激活函数, O O O为输出(特征图)。

卷积层常采用ReLU激活函数: y = m a x ( x , 0 ) y = max(x,0) y=max(x,0)
ReLU是非线性函数,但其可以求导: y ′ = 0 , x < 0 ; x , x ≥ 0 y' = 0, x<0; x, x\geq 0 y=0,x<0;x,x0,因此可进行反向传播。

池化也称下采样,用于缩减特征图的尺寸且保留特征图中最重要的信息。
池化操作常用的包括:最大,平均。
池化层不采用激活函数。

最后一层全连接层常采用softmax函数: y ⃗ = s o f t m a x ( x ⃗ ) \vec{y} = softmax(\vec{x}) y =softmax(x )
x ⃗ , y ⃗ \vec{x},\vec{y} x ,y 为向量, y i = e x i Σ k e x k y_i = \frac{e^{x_i}}{\Sigma_k e^{x_k}} yi=Σkexkexi
可以看出与ReLU不同,在计算一个元素时,还要考虑其他元素的大小。
输入 [ 1 , 2 , 3 , 4 , 5 ] [1,2,3,4,5] [1,2,3,4,5],输出大约为 [ 0.01 , 0.03 , 0.08 , 0.2 , 0.6 ] [0.01,0.03,0.08,0.2,0.6] [0.01,0.03,0.08,0.2,0.6](输出总和为1,由于我这里近似表示导致总和非1)
softmax函数可导, i = j i=j i=j时, d y i d x j = y i − y i 2 \frac{dy_i}{d x_j} = y_i - y_i^2 dxjdyi=yiyi2 i ≠ j i\neq j i=j时, d y i d x j = − y i ⋅ y j \frac{dy_i}{d x_j} = -y_i\cdot y_j dxjdyi=yiyj
手推softmax的求导 - Mr.Jian的文章 - 知乎 https://zhuanlan.zhihu.com/p/419862067

损失函数可采用交叉熵: L o s s = Σ i ( y i ⋅ l o g y i ) Loss = \Sigma_i (y_i \cdot log y_i) Loss=Σi(yilogyi)(对应最大似然估计)

分类任务的CNN:VGG-16,ResNets,Inception(GoogLeNet)
目标检测任务的CNN:Faster R-CNN,YOLO(you only look once)
语义分割任务的CNN:FCN,U-Net,Mask R-CNN

相关文章:

卷积神经网络学习(一)

CNN应用对象是图像&#xff0c;CNN可被应用于的任务&#xff1a; 1、分类&#xff08;classification&#xff09;&#xff1a;对图像按其中的物体进行分类&#xff0c;如图像中有人与猫&#xff0c;则图像可分为两类。 2、目标检测&#xff08;object detection&#xff09;&a…...

使用KEIL自带的仿真器仿真遇到问题解决

*** error 65: access violation at 0x40021000 : no read permission 修改debug选项设置为下方内容。...

4700 万美元损失,Xn00d 合约漏洞攻击事件分析

4700 万美元损失&#xff0c;Xn00d 合约漏洞攻击事件分析 基础知识 ERC777 ERC777 是 ERC20 标准的高级代币标准&#xff0c;要提供了一些新的功能&#xff1a;运营商及钩子。 运营商功能。通过此功能能够允许第三方账户代表某一合约或者地址 进行代币的发送交易钩子功能。…...

第5讲:v-if与v-show的使用方法及区别

v-if条件判断 v-if是条件渲染指令&#xff0c;它根据表达式的真假来删除和插入元素&#xff0c;它的基本语法如下&#xff1a; v-if “expression” expression是一个返回bool值的表达式&#xff0c;表达式可以是一个bool属性&#xff0c;也可以是一个返回bool的运算式 &#…...

C理解(一):内存与位操作

本文主要探讨C语言的内存和为操作操作相关知识。 冯诺依曼结构和哈佛结构 冯诺依曼结构&#xff1a;数据和代码放在一起,便于读取和修改,安全性低 哈佛结构是&#xff1a;数据和代码分开存放,安全性高,读取和修麻烦 内存 内存是用来存储全局变量、局…...

ESP8266使用记录(四)

放上最终效果 ESP8266&Unity游戏 整合放进了坏玩具车遥控器里 最终只使用了mpu6050的yaw数据&#xff0c;因为roll值漂移…… 使用了https://github.com/ElectronicCats/mpu6050 整个流程 ESP8266取MPU6050数据&#xff0c;处理后通过udp发送给Unity显示出来 MPU6050_Z…...

云原生Kubernetes:K8S安全机制

目录 一、理论 1.K8S安全机制 2.Authentication认证 3.Authorization授权 4.Admission Control准入控制 5.User访问案例 6.ServiceAccount访问案例 二、实验 1.Admission Control准入控制 2.User访问案例 3.ServiceAccount访问案例 三、问题 1.生成资源报错 2.镜…...

【数据结构】归并排序、基数排序算法的学习知识点总结

目录 1、归并排序 1.1 算法思想 1.2 代码实现 1.3 例题分析 2、基数排序 2.1 算法思想 2.2 代码实现 2.3 例题分析 1、归并排序 1.1 算法思想 归并排序是一种采用分治思想的经典排序算法&#xff0c;通过将待排序数组分成若干个子序列&#xff0c;将每个子序列排序&#xff…...

【C++】C++模板进阶 —— 非类型模板参数、模板的特化以及模板的分离编译

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C学习 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【C】C多…...

HTML的相关知识

1.什么是HTML&#xff1f;基本语法 HTML: Hyper Text Markup Language &#xff08;超文本标记语言&#xff09; 超文本&#xff1f;超级文本&#xff0c;例如流媒体&#xff0c;声音、视频、图片等。 标记语言&#xff1f;这种语言是由大量的标签组成。HTML标签参考手…...

基于微信小程的流浪动物领养小程序设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…...

Java后端接口编写流程

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Java后端接口编写流程 Java后端接口编写流程&#xff0c;更具业务逻辑编写Java后端接口&#xff0c;提供给前端访问 实现逻辑流程 POJO&#xff1a;实体类编写 Data B…...

【问题记录】解决“命令行终端”和“Git Bash”操作本地Git仓库时出现 中文乱码 的问题!

环境 Windows 11 家庭中文版git version 2.41.0.windows.1 问题情况 在使用 “命令行终端” 和 “Git Bash” 在本地Git仓库敲击命令时&#xff0c;对中文名称文件显示一连串的数字&#xff0c;如下所示&#xff1a;这种情况通常是由于字符编码设置不正确所引起的 解决办法 设置…...

软考高级之系统架构师之软件需求工程

概述 一个完整的软件生存周期是以需求为出发点。软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望。 需求开发&#xff1a; 需求获取需求分析需求定义&#xff08;需求规格说明书&#xff09;需求验证 需求管理: 变更控制版本控制需求跟踪需求状态跟踪 需…...

使用 Velocity 模板引擎的 Spring Boot 应用

使用 Velocity 模板引擎的 Spring Boot 应用 模板引擎是构建动态内容的重要工具&#xff0c;特别适用于生成HTML、邮件内容、报告和其他文本文档。Velocity是一个强大的模板引擎&#xff0c;它具有简单易用的语法和灵活性。本文将介绍如何在Spring Boot应用中使用Velocity模板…...

mysql的mvcc详解

一 MVCC的作用 1.1 mvcc的作用 1.MVCC&#xff08;Multiversion Concurrency Control&#xff09;多版本并发控制。即通过数据行的多个版本管理来实现数据库的并发控制&#xff0c;使得在InnoDB事务隔离级别下执行一致性读操作有了保障。 2.mysql中的InnoDB中实现了MVCC主要…...

FreeRTOS两个死机原因(中断调用接口异常)【杂记】

1、中断回调函数中没有使用中断级API (xxFromISR) 函数 xSemaphoreGiveFromISR(uart_busy,&HighterTask);----正确 xSemaphoreGive(uart_busy);-----错误2、比configMAX_SYSCALL_INTERRUPT_PRIORITY优先级高的中断函数中使用了FreeRTOS的函数 3、临界代码保护后不可调用os…...

【AI视野·今日Robot 机器人论文速览 第四十三期】Thu, 28 Sep 2023

AI视野今日CS.Robotics 机器人学论文速览 Thu, 28 Sep 2023 Totally 37 papers &#x1f449;上期速览✈更多精彩请移步主页 Interesting: &#x1f4da;****触觉力控学习策略,基于触觉的主动推理与力控用于小孔插入任务。提出了姿态控制与插入控制双策略模型。 (from 东京大学…...

批量快捷创建新数组的几种方式

1. for循环, push(比较简单, 就不上代码了) 2.创建空数组,填充null,然后map: function createData() { return new Array(1000) .fill(null) .map((v,i)>({name: name${i1}})) } console.log(createData()) 3.Array.frommap function createData() { return Array.from…...

单目标应用:基于沙丁鱼优化算法(Sardine optimization algorithm,SOA)的微电网优化调度MATLAB

一、沙丁鱼优化算法 沙丁鱼优化算法(Sardine optimization algorithm,SOA)由Zhang HongGuang等人于2023年提出&#xff0c;该算法模拟沙丁鱼的生存策略&#xff0c;具有搜索能力强&#xff0c;求解精度高等特点。 沙丁鱼主要以浮游生物为食&#xff0c;这些生物包括细菌、腔肠…...

微信聊天记录永久保存:免费开源工具WeChatExporter完整使用指南

微信聊天记录永久保存&#xff1a;免费开源工具WeChatExporter完整使用指南 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾担心珍贵的微信聊天记录会随着手机更…...

别再只会用ActivePart了!CATIA二次开发中,如何用C#递归遍历任意复杂结构树?

CATIA二次开发进阶&#xff1a;用C#递归算法征服任意复杂装配树 在CATIA二次开发领域&#xff0c;ActivePart就像新手司机的自动挡——简单易用却限制重重。当面对包含数百个零件的飞机发动机装配体&#xff0c;或是横跨多个产品的汽车底盘系统时&#xff0c;仅能操作当前激活零…...

设计器模版底图,一直渲染错误,是因为第一张图变形后内存中图片数据被改了,其他尺码一直错误

这其实是你们现在更需要的组合&#xff1a;不是只看 decode()&#xff0c;而是再确认“这次 decode 对应的还是当前这张图”。再确认“这次 decode 对应的还是当前这张图” 是怎么做到的&#xff0c;详细列举代码我直接从现在这次改动的代码里&#xff0c;把"确认图片身份…...

用MATLAB复现机载雷达杂波频谱:从Morchin模型到LFM信号仿真的保姆级教程

MATLAB实战&#xff1a;机载雷达杂波频谱建模与LFM信号仿真全解析 雷达信号处理工程师常面临一个经典难题&#xff1a;如何将教科书中的杂波理论转化为可运行的代码&#xff1f;本文将以Morchin模型为核心&#xff0c;手把手带你完成从地/海杂波建模到LFM雷达回波仿真的完整链路…...

基于MCP协议的食品安全供应链智能风险评估服务器设计与应用

1. 项目概述&#xff1a;一个为AI工作流赋能的食品安全供应链智能MCP服务器如果你在食品制造、餐饮连锁或进口贸易领域工作&#xff0c;那么“食品安全”这四个字背后&#xff0c;是无数个不眠之夜和如履薄冰的日常。从原料采购到成品上架&#xff0c;每一个环节都可能潜藏着生…...

Nodeunit自定义reporters开发:打造个性化测试输出格式

Nodeunit自定义reporters开发&#xff1a;打造个性化测试输出格式 【免费下载链接】nodeunit Easy unit testing in node.js and the browser, based on the assert module. 项目地址: https://gitcode.com/gh_mirrors/no/nodeunit Nodeunit是一款简单易用的Node.js单元…...

QtScrcpy终极指南:高效实现Android投屏控制

QtScrcpy终极指南&#xff1a;高效实现Android投屏控制 【免费下载链接】QtScrcpy Android实时投屏软件&#xff0c;此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/QtScrcpy QtScr…...

如何快速解密RPG Maker加密文件:终极解密工具使用指南

如何快速解密RPG Maker加密文件&#xff1a;终极解密工具使用指南 【免费下载链接】RPGMakerDecrypter Tool for decrypting and extracting RPG Maker XP, VX and VX Ace encrypted archives and MV and MZ encrypted files. 项目地址: https://gitcode.com/gh_mirrors/rp/R…...

第一份工作选大厂还是创业公司?5年后的差距令人深思

对于刚刚走出校门的软件测试工程师而言&#xff0c;第一份工作的选择&#xff0c;如同一场没有回头路的开局落子。它不仅仅关乎起薪的高低&#xff0c;更将深刻塑造你的技术视野、职业习惯和未来五年的成长曲线。五年&#xff0c;足以让一个初出茅庐的新人成长为独当一面的技术…...

别再被代码劝退!用LilyPond 2.20.0写《铃儿响叮当》乐谱,5分钟搞定你的第一份五线谱

别再被代码劝退&#xff01;用LilyPond 2.20.0写《铃儿响叮当》乐谱&#xff0c;5分钟搞定你的第一份五线谱 第一次看到LilyPond的界面&#xff0c;很多人会下意识皱眉——满屏的代码和符号&#xff0c;仿佛在劝退非程序员背景的音乐爱好者。但事实上&#xff0c;用LilyPond制…...