test
典型的用法
result = F.contrib.box_nms(
result, overlap_thresh=self.nms_thresh, topk=self.nms_topk,
valid_thresh=self.score_thresh,
id_index=0, score_index=1, coord_start=2, force_suppress=False)
第一阶段:我应该只需要计算 TP、FP 这些数值
self._n_pos[l]
就是 True Object 的个数np.sum(self._match[l] == 1)
就是 True Positive 的个数np.sum(self._match[l] == 0)
就是 False Positive 的个数len(self._match[l])
就是 Positive 的个数- recall 就是 #TP / #T,precision 就是 #TP / #P
因此,我感觉功能只要如下就可以了
输入是大小为 (N, H_1 x W_1 + ... + H_6 x W_6, self.num_classes + 1) 的 Prediction Probability,axis = -1 上的 self.num_classes + 1 类的概率和加起来为 1
scores = x.slice_axis(axis=self._axis, begin=1, end=None) # b x N x fg_class
slice_axis
是切片函数,指定 axis,然后 begin 和 end,end 是不包括在内的,这行代码就是将 Background 的 Prediction Probability 去掉,得到仅有 Foreground Class 的 Prediction Probability 矩阵,大小为 (N, H_1 x W_1 + ... + H_6 x W_6, self.num_classes)
template = F.zeros_like(x.slice_axis(axis=-1, begin=0, end=1))
Linux 没有回收站,rm 错删文件文件就回不来了,教训实在太惨痛。从 pansz 在知乎上对基于文本的 Linux 为什么没有回收站?的回答中得知,linux 也有类似回收站的工具 trash-cli
。这篇日志记录下没有 root 权限下的安装过程。
$ git clone https://github.com/andreafrancia/trash-cli.git
$ cd trash-cli
$ python setup.py install --user
下面的设置是我找到的 best practice 了。
顾名思义,代码是 Bounding box anchor generator。Anchor 是什么,是平铺过去的 box,不管里面有没有目标。box 的表示方式为 [cx, cy, w, h]。如果知道 Anchor sizes 和 ratio,对于最左上角像素的 Anchor 闭着眼睛也知道肯定是 [11, 11, 21, 21] 这样的,唯一不确定的是要在哪里(最右下角 anchor 的 cx,cy)截止,而这个是要看进来的 features 大小确定的。
这里代码的思路是先生成一个足够大的 Anchor Map (128 x 128),假设所有 feature map 都小于 128 x 128,只要从预设的 Anchor Map 左上角开始 截取 feature map 大小的 Anchor Map 就可以了,这就是 SSDAnchorGenerator
这个函数的思路。
__init__
的下面代码负责生成 128 x 128 大小的预设的 Anchor Map
关于香港现在的情势,我觉得其实是一场“宗教战争”。现代海外社会在西方知识界和媒体努力下,自由民主明显成为了一种“宗教”一样的事物,绝对正确,不容质疑。香港民众,我认为是大部分不管有没有上街头,其实都是反感大陆的,这种反感来自于意识形态的不同。与实际经济利益上的冲突不同,意识形态上的冲突只可以视而不见,但一旦冲突则是不可妥协且极其惨烈的,参见历史上各个教派对异端的讨伐。这也可以解释为什么林郑哭诉香港未来而黑小将们置之不理且要更加勇武的原因。他们也知道自己的暴力行为对香港经济不利,但即使牺牲经济利益也在所不惜,这就是宗教战争。