0%

还是老样子,不看代码永远不能称为学会了。况且 YOLO V2 有一些优化还是很常见的,如 Anchor Box 和多尺度训练。我之前也只是听说过这些名词,并不知道如何在程序中使用,索性直接读了程序了解一下,程序写的还是比较精彩的。另外:这是第一篇用 vim 写的博客。

学习 vim 的时候曾经4进4出一直没学会,这次下定决心要学一下了,也不求一口吃个胖子,每天学习一点点。首先从基础操作开始练习,先不要配置插件,也不管高亮和编程。IDE是人类退步的阶梯,沃茨基说的。

当然,这份文档不一定包含所有命令,只是教学的目的,遇到没有涵盖的命令自行查阅即可。有些命令是我自己的总结,不一定对。此外,本文涉及的命令之间可以任意组合实现各类高级功能,这个没办法统一列出。

此外,纸上得来终觉浅,学习 vim 一定多动手练习,在平时任务中多用 vim,自然而然就掌握了。我前后花了 6 天能使用 vim 应付日常开发工作,所以本文也叫六天掌握 vim。

忙里偷闲,写几篇长文,从 YOLO 的 v1 到 v5。没想到时隔多年会回来重新看 YOLO 系列的东西,相比两阶段检测,YOLO 真的太快了,加上一些训练的 trick,mAP 也不会很低。网上看了好多教程不明所以,索性还是直接去读原论文了,读了原论文有些东西还是不理解,索性又去读了源程序。不过为了便于理解,有的地方不会按照论文顺序进行整理。少问问题,读论文产生的疑问在代码里都有解答,不看代码永远不能被称为学会了。

rush 项目的时候,有些地方可以并行化,可以借助 C++ 的多线程来加速程序的执行。多线程的基本概念在一年前整过了,这里只是来看一下 C++ 的多线程该怎么写,顺便查漏补缺。

在做对抗样本的时候,我发现对抗防御和 GAN 在某种程度上很像:

  • 对抗防御:内部生成对抗样本攻击分类器,分类器更新参数防御攻击;
  • GAN:生成器 $G$ 生成样本欺骗判别器,判别器更新防御 $G$ 的欺骗。

所以说,这俩在某种程度上真的很像,所以决定整理一下 GAN 的知识,开拓一下思路,视频内容来自这里。警告:里面有大量数学公式的推导,而我就不一样了,不仅有公式推导还有代码。

忙完了其它的,还是要回归科研做好整理,相当于论文笔记吧。对抗样本去噪算法算是告以段落,或者说叫对抗样本提纯。本文总结了一些近几年的、思路还行结果也还好的对抗样本去噪算法,就相当于写个类似的综述了,注意,并非详解。优缺点仅是个人分析,其实论文读多了或者看了代码,总会有一些想法。包含以下论文:

  1. Comdefend: An efficient image compression model to defend adversarial examples, CVPR 2019
  2. Feature denoising for improving adversarial robustness, CVPR 2019
  3. Defense against adversarial attacks using high-level representation guided denoiser, CVPR 2018
  4. A Self-supervised Approach for Adversarial Robustness, CVPR 2020
  5. Denoised Smoothing: A Provable Defense for Pretrained Classifiers, NIPS 2020
  6. Stochastic Security: Adversarial Defense Using Long-Run Dynamics of Energy-Based Models, ICLR 2021
  7. Online Adversarial Purification based on Self-Supervision, ICLR 2021
  8. Adversarial Purification with Score-based Generative Models, ICML 2021

因为开发图像检索系统的需要,需要学习局部敏感哈希算法。我在网上看了很多局部敏感哈希算法的讲解,也没有一个能讲清楚的。什么打乱表格、计数 1 最开始出现的索引、minHash 等没啥用的东西把人说的云里雾里。

而如何设计哈希函数、如何把相似内容放到同一个桶中、计算相似度则闭口不谈。所以,关于数学理论推导,本文就不描述了,网上其他博客多的是,本文从代码的角度来理解局部敏感哈希算法,相对更清晰,附 C++ 程序实现。