0%

最近 rush 代码遇到一些问题,如一种典型的结构

1
2
3
4
5
|-main/
|----test1/
|--------module1.py
|----test2/
|--------module2.py

如上,想在 module2.py 中调用 module1.py 中的某个类,如果在 module2.py 中写:from ..test1 import module1,在 test2 文件夹下执行 python module2.py 会提示:

1
ImportError: attempted relative import with no known parent package

会遇到这样的错误。那么,如何解决呢?如果你只想看如何解决问题,直接翻到文末即可;网上大概搜了一下,需要 __init__.py 来解决下这个问题,但是网上搜了一圈,没啥写的特别好的教程,实在是烂的可以,特此来填坑。

MART(Misclassification Aware adveRsarial Training) 是 2020 年提出的最好的对抗防御算法。传统对抗训练算法中 min-max 时不会考虑当前样本是否被正确分类,统一制作对抗样本。而作者抓住了这一点,发现对于 max 制作对抗样本期间没有被网络正确分类的样本,对结果的影响很大。换句话说,网络连干净样本都不认识,何谈认识它的对抗样本? MART 算法的创新点在于区别对待错分类和正确分类的样本。

和指针联用有佷微妙的地方,之前一直佷晕,现在来继续研究下。诸如以下:

1
2
3
4
5
6
int const;
const int;
const int* p;
int const* p;
int* const p;
const int* const p;

之前在学 C++ 的时候,第一个例子大概是:

1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
int main(){
cout << "hello world" << endl;
return 0;
}
// 或者
#include <iostream>
int main(){
std::cout << "hello world" << std::endl;
return 0;
}

当时也没多想,std 这个东西是什么。后来在接触了其它库后,发现也需要 std 的配合使用,如 std::sort()。今日来仔细研究下名称空间这个东西。

不能继续开坑了,得整理一下。最近在刷二分法,思路很简单,细节是魔鬼。时而减一时而不用,仿佛在面向玄学编程,所以特意来整理一下。本文参考

在对抗攻击中,有人尝试着去用对抗样本攻击目标检测的网络。但是,检测网络与分类网络不同,检测网络还有检测器,存在 RPN、ROI-Align 以及边界框回归器等。而分类接受的图像来自检测器的输出,并不是原始的输入。所以只在图片上产生细微的扰动很可能不起做作用 1。所以衍生出了一些基于 patch (补丁)的攻击。

论文好像是 2020 年底传到 arxiv 1 的,还比较新。正好最近遇到的问题是类别数量是长尾分布,恰好最近看到 mmdetection 也支持了这个损失函数,索性来看一看这篇论文,算是做个论文笔记吧。不过为了能更容易理解论文的思想,没有按照原论文的内容结构进行整理。