回顾 — SFA:简化快速 AlexNet(模糊分类)

一、说明
在本文回顾了基于深度学习的模糊图像分类(SFA)。在本文中:Simplified-Fast-AlexNet (SFA)旨在对图像是否因散焦模糊、高斯模糊、雾霾模糊或运动模糊而模糊进行分类。
二、大纲
- 图像模糊建模简要概述
- 简化快速 AlexNet (SFA):网络架构
- 数据集
- 实验结果
三、图像模糊建模概述
- 图像模糊问题可以看作是从高质量图像到低质量模糊图像的图像退化过程:
- 其中F表示退化图像,f是无损图像,h 表示模糊核,又名点扩散函数(PSF),*表示卷积算子,n表示附加噪声,这里,n是高斯白噪声。
3.1. 高斯模糊
- 在许多实际应用中,例如遥感和卫星成像,高斯核函数被视为大气湍流的核函数:
- 其中,σ为核半径,R为支撑区域,通常满足3σ标准。
3.2. 运动模糊
- 运动模糊是另一种需要考虑的模糊,它是由目标和相机之间的相对线性运动引起的:
- 其中M表示运动长度(以像素为单位),ω表示运动方向与x轴之间的角度。
3.3. 散焦模糊
- 散焦模糊是日常生活中最常见的,可以通过柱面函数来建模:
- 其中r表示 模糊半径,与散焦程度成正比。
3.4. 雾霾模糊
- 雾霾模糊是由自然雾的干扰造成的。在本文中,雾霾模糊没有通过任何PSF来模拟,因为现实生活中存在大量样本并且易于收集用于实验应用。
四、简化快速AlexNet(SFA):网络架构
简化快速 AlexNet (SFA):网络架构
- 有5个卷积层和1个全连接层。
- AlexNet每个卷积层的输出数按0.5的比例进行比例压缩。这样做的原因是,与 2012 年 ImageNet 分类竞赛中数千个图像类别相比,四种模糊类型分类是一个相对简单的任务。
- 另一方面,由于80%以上的参数存储在FC中,因此从AlexNet的原始模型中删除了前两个FC,以提高速度和实时性。
- 在第 1、2 和 5 层使用批量标准化,而不是原始的局部响应标准化。
- 输入:输入图像的大小为227×227×3。
- 第一层:Conv_1:48 个大小为 11×11 的核,步长为 4 像素,pad 为 0;MaxPool_1:大小为 3×3 的内核,2 个像素的步长和 0 的填充。获得 48×27×27 的特征图作为输出。
- 第二层:Conv_2 使用大小为 5×5 的内核、1 像素的步长和 2 像素的垫;MaxPool_2:大小为 3×3 的内核,步长为 1 像素,填充为 0。
- 第三层:Conv_3:尺寸为 5×5 的内核,1 像素的步长和 2 像素的填充。
- 第 4 层:Conv_4 为:尺寸为 3×3 的内核,2 像素的步长和 0 的填充。
- 第5层:Conv_5:尺寸为3×3的内核,1像素的步长和1的垫;MaxPool_5:内核大小为 3×3,步长为 2 像素,pad 为 0。
- 第 6 层:全连接层和 ReLU。
- 因此,SFA不同隐藏层的数据流如下: 227×227×3 > 27×27×48 > 13×13×128 > 13×13×192 > 13×13×192 > 6×6× 128 > 1×1×4。
- 使用咖啡。
五、数据集
5.1. 训练数据集
- 使用200,000 个 128×128×3 全局模糊块进行训练。
- 简而言之,这些补丁是从牛津建筑数据集和加州理工学院 101 数据集应用的合成高斯模糊、运动模糊和散焦模糊中裁剪出来的,以及从在线网站收集的真实雾霾模糊图像中裁剪出来的。
5.2. 测试数据集1
- 选择 Berkeley 数据集 200 张图像和 Pascal VOC 2007 数据集作为测试数据集。
- 总共获得了22,240 个全局模糊测试样本块,其中 5560 个雾霾模糊图像块与训练样本具有相同的来源。
5.3. 测试数据集2
- 构建了由10,080 个自然全局模糊图像块组成的数据集。这些样本都是从与训练数据集中的雾霾模糊样本相同的网站收集的。
六、实验结果
6.1. 损耗曲线和精度曲线
AlexNet和SFA的损失曲线和准确率曲线
- 尽管AlexNet和SFA这两个模型的细节有所不同,但损失和准确率都达到了相似的值,这表明两个模型在分类准确率标准方面的性能相当。
6.2. 与AlexNet的比较
与AlexNet的比较
- P_N:模型参数编号。
- L_N:模型深度。
- F_T:单幅图像的前向传播时间。
- B_T:单幅图像的误差后向传播时间。
- CLF_T:识别单张图像的时间。
- Tr_T:模型训练时间。
- 错误:测试数据集1的分类错误率。
AlexNet的P_N大约是SFA的1000倍。
SFA的CLF_T比AlexNet经济0.5s ,这表明SFA更适合实际应用。
SFA的总训练时间不到一天,而AlexNet则需要大约两天。
SFA的分类错误率仅比AlexNet大0.0105 。
6.3. SOTA比较
- 两步法[4]、单层神经网络[8]和DNN[9]的分类精度来自原始文章。(这很奇怪,因为数据集不同。但可以理解的是,可能无法重新实现。)
- Accuracy1 是在测试数据集 1 上进行测试,Accuracy2 是在测试数据集 2 上进行测试。
- 基于学习特征的方法的预测精度(>90%)通常优于手工制作特征的方法(<90%)。
- SFA在模拟测试数据集上的分类准确率为96.99%,略低于AlexNet的97.74%,但仍然优于DNN模型的95.2%。
- 此外,SFA在自然模糊数据集上的最佳性能为93.75%,略低于94.10%,但SFA的速度和实时性明显优于AlexNet。
七、参考
[2017 ISA] [SFA]
基于深度学习的模糊图像分类 曾锡豪
相关文章:

回顾 — SFA:简化快速 AlexNet(模糊分类)
模糊图像的样本 一、说明 在本文回顾了基于深度学习的模糊图像分类(SFA)。在本文中:Simplified-Fast-AlexNet (SFA)旨在对图像是否因散焦模糊、高斯模糊、雾霾模糊或运动模糊而模糊进行分类。 二、大纲 图像模糊建模简要概述简化快速 AlexNet…...

基于51单片机PCF8591数字电压表数码管显示设计( proteus仿真+程序+设计报告+讲解视频)
PCF8591数字电压表数码管显示 1.主要功能:讲解视频:2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单&&下载链接资料下载链接(可点击): 基于51单片机PCF8591数字电压表数码管设计( proteus仿真程序设计报告讲…...

分发饼干(贪心算法+图解)
455. 分发饼干 - 力扣(LeetCode) 题目描述 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最…...

vue项目路由使用history模式,nginx配置,刷新页面显示404
需要在配置项中添加 try_files $uri $uri/ /index.html;...
redis的redis.service配置
在CentOS中,可以使用以下步骤配置redis.service: 创建redis用户和组 在终端中执行以下命令: 复制插入 sudo useradd -r -s /bin/false redis复制插入 这将创建一个名为redis的系统用户,并禁止该用户登录系统。 安装Redis 在…...

高频SQL50题(基础版)-3
文章目录 主要内容一.SQL练习题1.1174-即时食物配送代码如下(示例): 2.550-游戏玩法分析代码如下(示例): 3.2356-每位教师所教授的科目种类的数量代码如下(示例): 4.1141-查询近30天活跃用户数代码如下&…...

OpenMMlab导出yolov3模型并用onnxruntime和tensorrt推理
导出onnx文件 直接使用脚本 import torch from mmdet.apis import init_detector, inference_detectorconfig_file ./configs/yolo/yolov3_mobilenetv2_8xb24-ms-416-300e_coco.py checkpoint_file yolov3_mobilenetv2_mstrain-416_300e_coco_20210718_010823-f68a07b3.pth…...
单链表的插入删除
#include <iostream>#include <stdio.h> #include <stdlib.h>using namespace std;//带头指针的单链表typedef struct LNode{int data;struct LNode *next;}LNode, *LinkList;bool InitList(LinkList &L){L (LNode *) malloc(sizeof(LNode));if(L NUL…...

github使用手册
核心代码 配置用户名/邮箱 best practice git init #在本地初始化一个仓库 git add . #将当前目录所有的文件加入(注意这里是加入)到缓存区 git commit -m "xxx" #将当前缓存区里的内容提交到本地仓库 git remote add <remote_rep_name&g…...
怎样做ChatGPT应用开发?
要开发一个基于ChatGPT的应用,你可以按照以下步骤进行: 步骤1:了解ChatGPT API ChatGPT的使用通常通过API进行。你需要了解ChatGPT的API文档,包括如何进行请求、API端点、身份验证等信息。在开发之前,确保你已经获取了…...

漏洞-任意账号注册
一漏洞介绍 1.未验证邮箱/手机号 情景:应用为了方便用户记录用户名,使用邮箱和手机号作为用户名(因此很多应用在注册的时候就要求用户填写,多数时候都会给用户发送激活信息,激活后才能登录) 缺陷ÿ…...

一个关于jdbc操作mysql和java基础练手的通讯录管理系统小项目
首先 : 整个项目的项目结构为 : 1.第一步先导入数据库的驱动,我的mysql数据库是8.0以上版本,然后导入的驱动就是8.0.16版本的jar包; 1.JdbcBase : JDBC基础操作封装成了JdbcBase类,在里面先静态定义了数据库连接对象和DQL查询结果&#x…...
C++用条件变量实现线程安全的queue容器
#include <queue> #include <memory> #include <mutex> #include <condition_variable> template<typename T> class threadsafe_queue { private:mutable std::mutex mut; // 1 互斥量必须是可变的 std::queue<T> data_queue;std::condi…...

EDA实验-----3-8译码器设计(QuartusII)
目录 一. 实验目的 二. 实验仪器 三. 实验原理及内容 1.实验原理 2.实验内容 四.实验步骤 五. 实验报告 六. 注意事项 七. 实验过程 1.创建Verilog文件,写代码 编辑 2.波形仿真 3.连接电路图 4.烧录操作 一. 实验目的 学会Verilog HDL的…...

NFTScan | 11.06~11.12 NFT 市场热点汇总
欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2023.11.06~ 2023.11.12 NFT Hot News 01/ 《辛普森一家》提及 NFT 及区块链,相关 NFT 地板价涨至 0.35 ETH 11 月 6 日,据 Coindesk 报道,美国时间周…...

2022年12月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试
Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 下面哪个语句正确定义了元组类型数据tuple1?( ) A: tuple1=[“张三”,“李四”,“王五”] B: tuple1=(“张三”;“李四”;“王五”) C: tuple1=(张三,李四,王五) D: tuple1=(“张三…...
第三章 将对象映射到 XML - 使用列表或数组定义的属性
文章目录 第三章 将对象映射到 XML - 使用列表或数组定义的属性使用列表或数组定义的属性%ListOfDataTypes 或 %ArrayOfDataTypes 类型的属性%ListOfObjects 或 %ArrayOfObjects 类型的属性 第三章 将对象映射到 XML - 使用列表或数组定义的属性 使用列表或数组定义的属性 对…...
C/S架构学习之基于TCP的本地通信(客户机)
基于TCP的本地通信(客户机):创建流程:一、创建字节流式套接字(socket函数): int sock_fd socket(AF_LOCAL,SOCK_STREAM,0);二、创建客户机和服务器的本地网络信息结构体并填充客户机和服务器本…...
CCF 备忘
一、不错的网站 CCF CCSP 竞赛历年资料 官网 http://118.190.20.162/home.page 二、基础套路 循环输入 数组标记法(数组下标-数值 的映射) 两个矩阵相乘 map<long long, map<long long, long long> > ans; for(int i1;i<d;i){for(int…...

Spring Framework中的依赖注入:构造器注入 vs. Setter注入
前言 构造器注入和Setter注入是依赖注入(Dependency Injection,DI)中两种常见的方式,用于向一个对象注入其所依赖的其他对象或数值。这两种注入方式有各自的特点和用途。 构造器注入(Constructor Injectionÿ…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...