pytorch

PyTorch FGSM Attack 对抗样本生成

那年仲夏 提交于 2021-02-14 13:35:39
要阅读 带有插图的文章版本 请前往 http://studyai.com/pytorch-1.4/beginner/fgsm_tutorial.html 如果你正在阅读这篇文章,希望你能体会到一些机器学习模型是多么的有效。研究不断推动ML模型变得更快、更准确和更高效。 然而,设计和训练模型的一个经常被忽视的方面是安全性和健壮性,特别是在面对希望欺骗模型的对手时。 本教程将提高您对ML模型的安全漏洞的认识,并将深入了解对抗性机器学习的热门话题。 您可能会惊讶地发现,在图像中添加不可察觉的扰动会导致截然不同的模型性能。 鉴于这是一个教程,我们将通过一个图像分类器的例子来探讨这个主题。 具体来说,我们将使用第一种也是最流行的攻击方法-快速梯度符号攻击(Fast Gradient Sign Attack ,FGSM)来欺骗MNIST分类器。 威胁模型(Threat Model) 有很多种类的对抗性攻击,每种攻击都有不同的目标和攻击者的知识假设。但是,总体目标 是在输入数据中增加最少的扰动量,以导致期望的错误分类。攻击者的知识有几种假设,其中两种假设是: 白盒子(white-box) 和 黑盒子(black-box)。 白盒子 攻击假定攻击者拥有对模型的全部知识和访问权限,包括体系结构、输入、输出和权重。 黑盒子 攻击假设攻击者只能访问模型的输入和输出,而对底层架构或权重一无所知。

目标检测算法之SSD代码解析(万字长文超详细)

耗尽温柔 提交于 2021-02-13 08:50:03
前言 前面的推文已经介绍过SSD算法,我觉得原理说的还算清楚了,但是一个算法不深入到代码去理解是完全不够的。因此本篇文章是在上篇SSD算法原理解析的基础上做的代码解析,解析SSD算法原理的推文的地址如下:https://mp.weixin.qq.com/s/lXqobT45S1wz-evc7KO5DA。今天要解析的SSD源码来自于github一个非常火的Pytorch实现,已经有3K+星,地址为:https://github.com/amdegroot/ssd.pytorch/ 网络结构 为了比较好的对应SSD的结构来看代码,我们首先放出SSD的网络结构,如下图所示: 可以看到原始的SSD网络是以VGG-16作Backbone(骨干网络)的。为了更加清晰看到相比于VGG16,SSD的网络使用了哪些变化,知乎上的一个帖子做了一个非常清晰的图,这里借用一下,原图地址为:https://zhuanlan.zhihu.com/p/79854543 。带有特征图维度信息的更清晰的骨干网络和VGG16的对比图如下: 源码解析 OK,现在我们就要开始从源码剖析SSD了 。主要弄清楚三个方面,网络结构的搭建,Anchor还有损失函数,就算是理解这个源码了。 网络搭建 从上面的图中我们可以清晰的看到在以VGG16做骨干网络时,在conv5后丢弃了CGG16中的全连接层改为了 和 的卷积层。其中

在Windows上安装pytorch

家住魔仙堡 提交于 2021-02-13 07:22:03
电脑环境为 :windows10 python3.5 cuda8.0 可以在 官网 查询各个版本的安装方式 这里使用pip的安装方式,通过以下命令: 1 pip3 install http: // download.pytorch.org/whl/cu80/torch-0.4.0-cp35-cp35m-win_amd64.whl 2 pip3 install torchvision 在安装完成后在python中验证安装: Python 3.5 . 2 (v3. 5.2 :4def2a2901a5, Jun 25 2016 , 22 : 18 : 55 ) [MSC v. 1900 64 bit (AMD64)] on win32 Type " help " , " copyright " , " credits " or " license " for more information. >>> import torch >>> import torchvision >>> 可能出现的问题: 在import torch时出现 from torch._C import * ImportError: DLL load failed: 找不到指定的模块 的错误 原因是缺少一些dll文件,通过以下几步来解决: 1.下载 win-64/intel-openmp-2018.0.0-8.tar

一文解读 | 计算机视觉中的注意力机制

回眸只為那壹抹淺笑 提交于 2021-02-13 02:55:46
点击上方“ 迈微电子研发社 ”,选择“ 星标★ ”公众号 重磅干货,第一时间送达 之前在看DETR这篇论文中的self_attention,然后结合之前实验室组会经常提起的注意力机制,所以本周时间对注意力机制进行了相关的梳理,以及相关的源码阅读了解其实现的机制. 一、注意力机制(attention mechanism) attention机制可以它认为是一种资源分配的机制,可以理解为对于原本平均分配的资源根据attention对象的重要程度重新分配资源,重要的单位就多分一点,不重要或者不好的单位就少分一点,在深度神经网络的结构设计中,attention所要分配的资源基本上就是权重了。 视觉注意力分为几种,核心思想是基于原有的数据找到其之间的关联性,然后突出其某些重要特征,有通道注意力,像素注意力,多阶注意力等,也有把NLP中的自注意力引入。 二、自注意力(self-attention) 参考文献: Attention is All you Need http://papers.nips.cc/paper/7181-attention-is-all-you-need 参考资料: zhuanlan.zhihu.com/p/48 GitHub: git hub.com/huggingface/ 自注意力有时候也称为内部注意力,是一个与单个序列的不同位置相关的注意力机制

目标检测算法之SSD代码解析(万字长文超详细)

≡放荡痞女 提交于 2021-02-13 01:43:04
前言 前面的推文已经介绍过SSD算法,我觉得原理说的还算清楚了,但是一个算法不深入到代码去理解是完全不够的。因此本篇文章是在上篇SSD算法原理解析的基础上做的代码解析,解析SSD算法原理的推文的地址如下:https://mp.weixin.qq.com/s/lXqobT45S1wz-evc7KO5DA。今天要解析的SSD源码来自于github一个非常火的Pytorch实现,已经有3K+星,地址为:https://github.com/amdegroot/ssd.pytorch/ 网络结构 为了比较好的对应SSD的结构来看代码,我们首先放出SSD的网络结构,如下图所示: 可以看到原始的SSD网络是以VGG-16作Backbone(骨干网络)的。为了更加清晰看到相比于VGG16,SSD的网络使用了哪些变化,知乎上的一个帖子做了一个非常清晰的图,这里借用一下,原图地址为:https://zhuanlan.zhihu.com/p/79854543 。带有特征图维度信息的更清晰的骨干网络和VGG16的对比图如下: 源码解析 OK,现在我们就要开始从源码剖析SSD了 。主要弄清楚三个方面,网络结构的搭建,Anchor还有损失函数,就算是理解这个源码了。 网络搭建 从上面的图中我们可以清晰的看到在以VGG16做骨干网络时,在conv5后丢弃了CGG16中的全连接层改为了 和 的卷积层。其中

conda创建和使用python的虚拟环境

倾然丶 夕夏残阳落幕 提交于 2021-02-12 04:28:55
https://uoa-eresearch.github.io/eresearch-cookbook/recipe/2014/11/20/conda/ 当我们使用服务器的时候,会存在多个用户,并且可能系统管理员也安装了anaconda,这样python指向的环境有肯能是管理员的目录, 我们可以通过 conda env list 查看存在的环境,以及当前使用的是哪个环境, 可以根据pytorch的不同版本安装在相应的环境中,便于适应不同的项目 $conda env list # conda environments: # pytorch1.0 /home/username1/.conda/envs/ pytorch1.0 /home/username1/ anaconda2 base * /home/username2/install/anaconda2 其中星号表示当前使用的环境路径,我们可以通过以下方式修改 1. 创建虚拟环境 conda create -n env_name python=2.7.14 env_name:要创建的虚拟环境名称 2. 激活环境 source activate env_name 3. 查看环境 conda env list 显示结果,当前环境已经变为我们设置的目录了 # conda environments: # pytorch1.0 * /home

Faster R-CNN 目标检测体验篇

时光毁灭记忆、已成空白 提交于 2021-02-11 19:56:04
本文建议阅读时间 12 min 上次我们分享了目标检测 One-Stage 的代表 YOLO,从体验、理论到代码实战。其实 One-Stage 还有一个代表是 SSD ,这个等到下一次我们再讲解,因为 SSD 涉及到部分 Two-Stage 目标检测的知识。 本期我们分享的是 Two-Stage 的代表作 Fater R-CNN ,这是属于 R-CNN 系列中比较经典的一个,目前比较流行。今天我们就带大家体验一把 Faster R-CNN 的检测,代码不多。 代码说明 我们代码使用的是 Pytorch 提供的目标检测模型 fasterrcnn_resnet50_fpn model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained= True ) 模型预测后得到的结果是 Bounding boxes [x0, y0, x1, y1] 边框的四个值 Labels 所有预测的标签 Scores 所有标签的分数 以下就是本次内容的所有代码: import torchvision # 0.3.0 version 这里指的是所使用包的版本 from torchvision import transforms as T import cv2 # 4.1.1 version import matplotlib

基于Faster R-CNN的安全帽目标检测

独自空忆成欢 提交于 2021-02-11 19:19:58
向AI转型的程序员都关注了这个号 👇👇👇 机器学习AI算法工程 公众号:datayx 训练模型前的准备 A.数据准备 数据的标注仍然采用VOC格式的数据标注形式,如果是其他的标注形式比如COCO请自行实现相关代码。将数据最终转化为如下形式: path_filename, x1, y1, x2, y2, class_name 格式说明 代码及运行教程,数据集 获取: 关注微信公众号 datayx 然后回复 安全帽 即可获取。 AI项目体验地址 https://loveai.tech 可以运行如下代码实现数据集的准备工作: python3 ./data/data_pro.py 将在 ./data 文件夹下生成 annotation.txt 文件,这样训练数据的准备工作即完成。 B.配置文件准备 根据自己的训练集和训练任务修改 ./keras_frcnn/config.py 的配置文件,相关参数的解释和配置如下: 训练模型 预训练模型的下载地址:https://github.com/fchollet/deep-learning-models Shell下运行: python3 train_frcnn.py --path="./data/annotation.txt" --network="vgg" --input_weight_path="./pre_train/vgg16

Pytorch Quantization RuntimeError: Trying to create tensor with negative dimension

痴心易碎 提交于 2021-02-11 17:03:55
问题 I am trying out the pytorch quantization module. When doing static post training quantization I follow the next procedure detailed in the documentation: adding QuantStub and DeQuantStub modules Fuse operations Specify qauntization config torch.quantization.prepare() Calibrate the model by running inference against a calibration dataset torch.quantization.convert() However, when calibrating the model after preparing it the program breaks. The error appears at the last fully connected layers.

Pytorch Quantization RuntimeError: Trying to create tensor with negative dimension

混江龙づ霸主 提交于 2021-02-11 17:03:48
问题 I am trying out the pytorch quantization module. When doing static post training quantization I follow the next procedure detailed in the documentation: adding QuantStub and DeQuantStub modules Fuse operations Specify qauntization config torch.quantization.prepare() Calibrate the model by running inference against a calibration dataset torch.quantization.convert() However, when calibrating the model after preparing it the program breaks. The error appears at the last fully connected layers.