怎么看目标检测的效果
怎么看目标检测的效果
怎么看目标检测的效果
Recall&Precision 引用一个知乎上的例子:某池塘有 1400
条鲤鱼,300 只虾,300 只鳖。现在以捕鲤鱼为目的。撒一大网,逮着了 700
条鲤鱼,200 只虾,100 只鳖。那么,这些指标分别如下:正确率 Precision =
700 / (700 + 200 + 100) = 70% 召回率 Recall = 700 / 1400 = 50%
(出处:https://www.zhihu.com/question/19645541/answer/39732647)
IoU:预测区域和目标区域重合比例,即交集除并集
IoU=0.50: 重合比例大于 0.5 的算正例。
IoU=0.75: 重合比例大于 0.75 的算正例。
IoU=0.50:0.95: 从 0.50 到 0.95 每隔 0.5
计算一次,然后取均值。
area:区域大小
small:x<32x32
medium:32x32<x<96x96
large:x>96x96
maxDets:最多取几个目标区域
其 ...
调节学习率
调节学习率
在深度学习和其它一些循环迭代算法中,学习率都非常重要。在效率上,它几乎是与算力同等重要的因素;在效果上,它也决定着模型的准确率。如果设置太小,则收敛缓慢,也有可能收敛到局部最优解;设置太大又导致上下摆动,甚至无法收敛。
设定学习率
下面总结了设置学习率的一些方法:
理论上,如果将学习率调大 10 倍,现在 10 次训练就可以达成之前 100
次的训练效果。
一般使用工具默认的学习率,如果收敛太慢,比如训练了十几个小时,在训练集和验证集上仍在收敛,则可尝试将学习率加大几倍,不要一下调成太大。
如果误差波动过大,无法收敛,则可考虑减小学习率,以便微调模型。
在测试阶段建议使用较大的学习率,在短时间内测算过拟合位置,尤其好用。
在预训练模型的基础上 fine-tune
模型时,一般使用较小的学习率;反之,如果直接训练,则使用较大的学习率。
对于不同层可使用不同学习率,比如可对新添加的层使用较大的学习率,或者“冻住”某些层。
下图展示了不同学习率的误差变化曲线。
图片来自网络
手动调节学习率
Pytorch
提供在迭代过程中修改学习率的方法。最简单的方法是手动修改学习率的 ...
18_少儿Python编程_第十八讲:搭建网站
少儿 Python 编程 _
第十八讲:搭建网站
上一讲学习了编写网页代码的方法,到目前为止,创建的网页文件只能用浏览器打开。如果需要用同一网络中的其它电脑或者手机访问该页面,则需要搭建
HTTP 服务。
普通电脑上也可以搭建 HTTP 服务,成为小型的 HTTP 服务器,使用 Python
搭建 HTTP 服务非常简单,不需要额外安装软件,只要安装 Python 的三方模块
Flask 即可实现。
使用 Python 开发网站,只需要加入少量代码,就可以将 Python
的工作成果快速地展示给用户。
18.1 简单例程
Flask 是一个轻量级的 Web
应用框架,占用资源少,使用简单。本节将学习如何用 Flask
创建一个最简单的网站。
在 Anaconda 安装时已经安装了
Flask,因此可以直接使用,程序代码如下:
01 from flask import Flask
02
03 app = Flask(__name__)
04
05 @app.route('/test.html')
06 def hello_world():
07 retur ...
用深度学习模型提取特征
用深度学习模型提取特征
用途
有时候需要从图片(或文本)中提取出数值型特征,供各种模型使用。深度学习模型不仅可以用于分类回归,还能用于提取特征。通常使用训练好的模型,输入图片,输出为提取到的特征向量。
加入特征之后,结果往往不尽如人意,大致有以下原因:
深度学习模型一般有 N 层结构,不能确定求取哪一层输出更合适。
深度学习模型很抽象——几十层的卷积、池化、信息被分散在网络参数之中。提取自然语言的特征时,常常提取词向量层的输出作为特征,有时也取最后一层用于描述句意;图像处理时往往提取最后一层输出向量;在图像目标识别问题中,常提取后两层子网络的输出作为组合向量。如何选择提取位置,取决于对模型的理解,后文将对图像处理层进行详细说明。
针对不同问题训练出的模型,输出的特征也不同。 通常下载的
ResNet,VGG,BERT
预训练模型,虽然通用性高,但解决具体问题的能力比较弱。比如在自然语言处理中,用
GPT-2 或者 BERT
训练的模型只面对普通文章,如果从中提取特征用于判断辱骂,有些脏字可能有效,但是更多的“多义词”会被它的普通含义淹没。用自己的数据
fine-tune 后往往更有针 ...
Pytorch_基于预训练的ResNet模型训练自己的分类器
Pytorch_
基于预训练的 ResNet 模型训练自己的分类器
加载数据
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586import osimport torch.utils.data as dataimport torchimport torch.optim as optimimport torch.nn as nnfrom torch.optim import lr_schedulerfrom torchvision import datasets, models, transformsfrom PIL import Imageimport timeimport copyimport pandas as pdimport matplotlib.pyplot as pltimport numpy as ...
论文检索
论文检索
#工具 #论文阅读
科学文献数据库:http://arxiv.org
查找 arxiv 上论文的工具:http://www.arxiv-sanity.com/
, 可查找关键字相关的论文,并按时间远近排序,列表中也显示了
introduce。
[](https://img-blog.csdnimg.cn/20200323101240784.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpZXlhbjA4MTE=,size_16,color_FFFFFF,t_70)
show similar 可查找与之类似的论文(内部使用 tf/idf 方法实现)
实战文本分类对抗攻击
实战文本分类对抗攻击
#算法实战
文章写得比较长,先列出大纲,以便读者直取重点。
“文本分类对抗攻击”是清华大学和阿里安全 2020 年 2 月举办的一场 AI
比赛,从开榜到比赛结束 20 天左右,内容是主办方在线提供 1000
条辱骂样本,参赛者用算法逐条扰动,使线上模型将其判别为非辱骂样本,尽量让扰动较小同时又保留辱骂性质(辱骂性质前期由模型判定,最终由人工判定)。
比赛规则
线上模型和评测使用的 1000
条样本不公开,选手根据赛方指定的接口实现算法,并用 docker
方式提交以供线上评测,每天最多评测 15 次,单次运行时间需控制在 30
分钟之内。
(第一个知识点:熟悉 Docker,简单环境调试)
其评价公式如下:
共 1000 条评测样本(samples=1000 且全部为辱骂文本),vi
为最终的人工评测结果,1 为辱骂,0
为非辱骂在(只对最终入围数据作人工评测,前期提交都认为 vi=1);ci
是分类结果,由多个线上模型作出评判并取均值,攻击成功为 1,攻击失败为
0;pi 是原始文本与扰动文本的差异,综合考虑了字符差异和语义差异,最终结果
Sfinal 满 ...
Fasttext快速文本分类
1 简介
Fasttext 源于 2016 年的论文《Bag of Tricks for Efficient Text
Classification》,论文地址:https://arxiv.org/pdf/1607.01759.pdf。论文非常短,加上
References 不过五页,Model architecture 只有一页。
深度学习神经网络在自然语言处理中表现非常优秀,但动辄几十层,上亿参数的大型网络速度慢且需要大量算力支持,限制了使用场景。FastText
是 Facebook 开源的一款简单而高效的文本分类器,它使用浅层的神经网络实现了
word2vec
以及文本分类功能,效果与深层网络差不多,节约资源,且有百倍的速度提升,可谓高效的工业级解决方案。本篇将介绍
Fasttext 的相关概念、原理及用法。
2 相关技术
2.1 BOW
BOW BOW 是词袋 Bag of Words 的简称,BOW
是文本分类中常用的文本向量化的方法,它忽略了顺序和语法,将文本看成词汇的集合,且词汇间相互独立,如同把词放进了一个袋子。在分类任务中使用
BOW
时,就是根据各个词义综合分析文 ...
轻量级BERT模型ALBERT
轻量级 BERT 模型 ALBERT
BERT 有很多改进版本,ALBERT 是一个轻量化版本。ALBERT 源自 2020
年的发表论文《ALBERT: A LITE BERT FOR SELF-SUPERVISED LEARNING OF
LANGUAGE REPRESENTATIONS》,论文地址:https://arxiv.org/pdf/1909.11942.pdf。从题目可以看出,论文重点是轻量化
BERT 模型,以及优化了半监督学习,本文主要关注轻量化模型部分。
目前 NLP 的高级模型 BERT、GPT-2 都基于 Pretrain/fine-tune
模式,先使用无监督学习的海量文本预训练出一个带有“语言常识”的大模型,然后再根据具体任务调优,这就完美解决了具体任务训练集不足的问题。模型往往拥有千万或亿级的参数,目前的趋势是随着模型功能能越来越强大,模型的规模也越来越大,这使普通开发者越发无法企及。
随着 BERT
模型越来越频繁地被使用到真实场景中,模型的速度、规模、硬件逐渐成为瓶颈。预训练模型一般都规模庞大,在后期调优以及调用模型时也都需要花费大量的内存、算力和时 ...
序列对抗网络SeqGAN
序列对抗网络 SeqGAN
SeqGAN 源自 2016 年的论文《SeqGAN: Sequence Generative Adversarial
Nets with Policy
Gradient》,论文地址:https://arxiv.org/pdf/1609.05473.pdf。其核心是用生成对抗网络处理离散的序列数据。
之前介绍了使用 GAN
生成图像的方法,由于图像是连续数据,可以使用调整梯度的方法逐步生成图像,而离散数据很难使用梯度更新。在自然语言处理(NLP)中使用
GAN
生成文字时,由于词索引与词向量转换过程中数据不连续,微调参数可能不起作用;且普通
GAN
的判别模型只对生成数据整体打分,而文字一般都是逐词(token)生成,因此无法控制细节。SeqGAN
借鉴了强化学习(RL)的策略,解决了 GAN 应用于离散数据的问题。
概念
与基本的 GAN 算法一样,SeqGAN 的基本原理也是迭代训练生成模型 G
和判别模型 D。假设用 G 生成一个词序列组成句子,由 D
来判别这个句子是训练集中的真实句子(True
data),还是模型生成的句子(Generate);最 ...