-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathatom.xml
608 lines (421 loc) · 130 KB
/
atom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>LJK' Notes</title>
<link href="/atom.xml" rel="self"/>
<link href="http://yoursite.com/"/>
<updated>2019-08-13T03:52:48.439Z</updated>
<id>http://yoursite.com/</id>
<author>
<name>LJK</name>
</author>
<generator uri="http://hexo.io/">Hexo</generator>
<entry>
<title>Memory-Guided-Video-Detection-CVPR19</title>
<link href="http://yoursite.com/2019/08/01/Memory-Guided-Video-Detection-CVPR19/"/>
<id>http://yoursite.com/2019/08/01/Memory-Guided-Video-Detection-CVPR19/</id>
<published>2019-08-01T03:51:20.000Z</published>
<updated>2019-08-13T03:52:48.439Z</updated>
<content type="html"><![CDATA[<h1 id="Memory-Guided-Video-Detection-CVPR19"><a href="#Memory-Guided-Video-Detection-CVPR19" class="headerlink" title="Memory-Guided-Video-Detection-CVPR19"></a>Memory-Guided-Video-Detection-CVPR19</h1><ul><li>Looking Fast and Slow: Memory-Guided Mobile Video Object Detection</li><li>Paper: <a href="https://arxiv.org/abs/1903.10172" target="_blank" rel="noopener">https://arxiv.org/abs/1903.10172</a></li><li>Code: <a href="https://github.com/tensorflow/models/tree/master/research" target="_blank" rel="noopener">https://github.com/tensorflow/models/tree/master/research</a></li></ul><h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol><li>提出了memory-guided的多特征网络提取的网络结构,使用快/慢特征提取网络分别提取不同帧特征,可以减少冗余计算。</li><li>使用Double Q-learning强化学习策略来执行memory更新,进行特征提取网络的选择。</li><li>在移动设备上可以实现高精度,高速度(70fps)。</li></ol><a id="more"></a><h2 id="why"><a href="#why" class="headerlink" title="why"></a>why</h2><ol><li>作者将video object detection大致分为三类。</li></ol><ul><li>后处理方法。使用单帧检测的方式,然后与前帧中的track进行数据关联。seq-nms通过动态编程和提高弱检测的置信度来进行跟踪。TCNN使用光流法来传播检测,同时使用跟踪算法寻找tubelets来重评分。<strong>缺点</strong>是仍然是在每帧上做检测。(看描述感觉是多目标跟踪)</li><li>特征流方法。将网络的中间特征通过光流方式传播。DFF在稀疏关键帧上进行检测,然后再其他所有帧上按照计算光流的方式进行传播。FGFA通过相邻帧与当前帧特征进行加权平均。</li><li>多帧方式。即同时对多帧做处理。D&T做了检测和跟踪的结合,使用了ROI tracking和相邻帧loss的方法。STSN使用DCN来采样相邻帧特征。<strong>缺点</strong>是仍然需要高精度检测而不是直接使用之前帧的检测结果。</li></ul><ol start="2"><li>稀疏处理视频帧有很多方式,从固定间隔,到启发式策略。文中使用强化学习方式来构建关键帧选择策略。</li></ol><h2 id="what"><a href="#what" class="headerlink" title="what"></a>what</h2><ol><li>交叉模型。使用memory guided策略,结合多个特征(大/小)提取网络,大/小网络在视频检测过程中交替使用。</li><li>使用DDQN强化学习策略来选取网络使用策略来进行memory更新。</li></ol><h2 id="how"><a href="#how" class="headerlink" title="how"></a>how</h2><ol><li>交叉模型结构。多个特征提取器顺序或同时执行,提取的feature通过memory机制进行增强/调整。<br><img src="/2019/08/01/Memory-Guided-Video-Detection-CVPR19/model.PNG" alt="interleaved-model" title="interleaved-model"></li><li>memory模型。在LSTMs的基础上,对LSTM cell进行了三点改进,融合不同特征提取器的feature。 </li></ol><ul><li>在bottleneck和output之间添加了skip connection。</li><li>使用channel-wise的方式,将LSTM state等分为G组,然后使用组卷积。</li><li>使用state skip update方法。相当于跳过f1的状态更新,直接使用之前f0的状态。这是因为LSTM中sigmoid的缺点,在多次更新之后几乎会完全遗忘之前的状态。<br><img src="/2019/08/01/Memory-Guided-Video-Detection-CVPR19/speedoptimizedLSTMcell.PNG" alt="speed-opt-LSTM-Cell" title="speed-opt-LSTM-Cell"></li></ul><ol start="3"><li>DDQN寻找自适应交叉策略</li></ol><ul><li>动作空间。包含m个动作。</li><li>状态空间。S = (ct,ht,ct − ct−1,ht − ht−1,ηt) ,当前LSTM的状态,状态的相对之前改变,动作的历史参数(长度为20的向量,运行的前k步是1,其余是0)</li><li>奖励函数。速度奖励 + 精度奖励,给出γ奖励。其中,L(Di)为使用feature_i做检测的loss。<br><img src="/2019/08/01/Memory-Guided-Video-Detection-CVPR19/reward-func.PNG" alt="reward-func" title="reward-func"></li><li>DDQN的网络结构如下。<br><img src="/2019/08/01/Memory-Guided-Video-Detection-CVPR19/reforcement-netword.PNG" alt="reforcement-netword" title="reforcement-netword"></li></ul><h2 id="result"><a href="#result" class="headerlink" title="result"></a>result</h2><p><img src="/2019/08/01/Memory-Guided-Video-Detection-CVPR19/result.PNG" alt="result" title="result"></p>]]></content>
<summary type="html">
<h1 id="Memory-Guided-Video-Detection-CVPR19"><a href="#Memory-Guided-Video-Detection-CVPR19" class="headerlink" title="Memory-Guided-Video-Detection-CVPR19"></a>Memory-Guided-Video-Detection-CVPR19</h1><ul>
<li>Looking Fast and Slow: Memory-Guided Mobile Video Object Detection</li>
<li>Paper: <a href="https://arxiv.org/abs/1903.10172" target="_blank" rel="noopener">https://arxiv.org/abs/1903.10172</a></li>
<li>Code: <a href="https://github.com/tensorflow/models/tree/master/research" target="_blank" rel="noopener">https://github.com/tensorflow/models/tree/master/research</a></li>
</ul>
<h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol>
<li>提出了memory-guided的多特征网络提取的网络结构,使用快/慢特征提取网络分别提取不同帧特征,可以减少冗余计算。</li>
<li>使用Double Q-learning强化学习策略来执行memory更新,进行特征提取网络的选择。</li>
<li>在移动设备上可以实现高精度,高速度(70fps)。</li>
</ol>
</summary>
<category term="Video Detection" scheme="http://yoursite.com/categories/Video-Detection/"/>
<category term="detection" scheme="http://yoursite.com/tags/detection/"/>
</entry>
<entry>
<title>Bottleneck-LSTM-Video-Object-CVPR18</title>
<link href="http://yoursite.com/2019/07/31/Bottleneck-LSTM-Video-Object-CVPR18/"/>
<id>http://yoursite.com/2019/07/31/Bottleneck-LSTM-Video-Object-CVPR18/</id>
<published>2019-07-31T06:20:33.000Z</published>
<updated>2019-08-13T03:51:24.481Z</updated>
<content type="html"><![CDATA[<h1 id="Bottleneck-LSTM-Video-Object-Detection-CVPR18"><a href="#Bottleneck-LSTM-Video-Object-Detection-CVPR18" class="headerlink" title="Bottleneck-LSTM-Video-Object-Detection-CVPR18"></a>Bottleneck-LSTM-Video-Object-Detection-CVPR18</h1><ul><li>Bottleneck-LSTM:Mobile Video Object Detection with Temporally-Aware Feature </li><li>Paper: <a href="https://arxiv.org/abs/1711.06368" target="_blank" rel="noopener">https://arxiv.org/abs/1711.06368</a></li><li>Code: <a href="https://github.com/tensorflow/models/tree/master/research" target="_blank" rel="noopener">https://github.com/tensorflow/models/tree/master/research</a></li></ul><h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol><li>构建Conv Bottleneck-LSTM,并将Bottleneck-LSTM与one stage检测相结合。其中,Bottleneck-LSTM借鉴了深度可分离卷积和bottleneck。</li><li>在video detection中的速度,相比现存检测算快,FPS为15(个人感觉比较慢)。</li></ol><a id="more"></a><h2 id="why"><a href="#why" class="headerlink" title="why"></a>why</h2><ol><li>现存常规的检测器,针对视频检测速度较慢,无法达到实时。</li><li>有一部分没有考虑视频检测中的时序信息。</li><li>同时部分使用<strong>光流</strong>的方法存在速度较慢的劣势。</li><li>使用LSTM的方法并没有将LSTM和卷积网络完全融合。</li></ol><ul><li>LRCNs将每帧的feature序列输入LSTM</li><li>ROLO使用YOLO做检测,然后将检测的BBox和feature送入到LSTM</li></ul><h2 id="what"><a href="#what" class="headerlink" title="what"></a>what</h2><ol><li>使用CNN提取图像特征,然后将特征送入convolutional LSTM进行历史帧特征融合(记忆重要信息,特征结合),输出。<br><img src="/2019/07/31/Bottleneck-LSTM-Video-Object-CVPR18/main.PNG" alt="Framework" title="Framework"></li></ol><h2 id="how"><a href="#how" class="headerlink" title="how"></a>how</h2><ol><li>大体思路。使用前t帧的图像,前t-1帧的feature,来获取当前帧的bboxes和分类置信度。<br><strong>F(I_t,S_t-1) = (D_t , S_t)</strong><br>其中,I_t表示第t帧的视频序列,S_t-1表示前t-1帧的feature,D_t表示相对于I_t帧的bboxes和confidences集合</li><li>LSTM-SSD中SSD的网络结构更换为MobileNet,并使用深度可分离卷积代替了所有的常规卷积。<br><img src="/2019/07/31/Bottleneck-LSTM-Video-Object-CVPR18/framework.PNG" alt="LSTM-SSD" title="LSTM-SSD"></li><li>Bottleneck-LSTM。借鉴了深度可分离卷积,bottleneck。</li></ol><ul><li>Conv LSTM的定义。<br>其中,M,N分别为LSTM输入/输出的通道数。LSTM将x_t和h_t-1(featue map)进行channel-wise操作,输出h_t和c_t,W(j,k)⭐X代表深度可分离卷积操作,j表示输入通道,k表示输出通道,o表示矩阵对应元素相乘,∮表示ReLU激活函数。<br><img src="/2019/07/31/Bottleneck-LSTM-Video-Object-CVPR18/Conv-LSTM.PNG" alt="Conv-LSTM" title="Conv-LSTM"></li><li>使用如下的b_t代替所有门的输入。<br><img src="/2019/07/31/Bottleneck-LSTM-Video-Object-CVPR18/b_t.PNG" alt="b_t" title="b_t"></li><li>添加通道调整超参数a_base = a,a_lstm = 0.5a,a_ssd = 0.25a来分别控制不同网络模块通道维度,从而来控制网络的计算量。<br><img src="/2019/07/31/Bottleneck-LSTM-Video-Object-CVPR18/BottleNeck-LSTM.PNG" alt="BottleNeck-LSTM" title="BottleNeck-LSTM"></li><li>优势:减少了标准LSTM中的计算;BottleNeck-LSTM的网络结构更深,效果更好。</li></ul><ol start="4"><li>具体实现</li></ol><ul><li>单个LSTM模块的网络结构。</li><li><img src="/2019/07/31/Bottleneck-LSTM-Video-Object-CVPR18/single-lstm-network.PNG" alt="single-lstm-network" title="single-lstm-network"></li><li>首先finetune 无LSTM的SSD网络,freeze基准网络(到conv13),然后在train的时候添加LSTM模块。最终在conv13之后的所有feature map后都添加了LSTM模块作为最终模型。</li></ul><h2 id="result"><a href="#result" class="headerlink" title="result"></a>result</h2><ol><li>单个LSTM模块,mAP相对提升3.2%<br><img src="/2019/07/31/Bottleneck-LSTM-Video-Object-CVPR18/single-LSTM.PNG" alt="single-LSTM" title="single-LSTM"></li><li>单个LSTM模块,在参数量,和计算量方面的对比,大约可以减少10-20倍的参数量,减少20倍左右的计算量。其中MAC代表multi-adds。<br><img src="/2019/07/31/Bottleneck-LSTM-Video-Object-CVPR18/layers-compare.PNG" alt="deferent layers" title="deferent layers"></li><li>多个LSTM模块,LSTM模块的重复堆叠没有提升,多层放置LSTM的效果会比单个放置提高0.9%,计算量不会有太大变化。<br><img src="/2019/07/31/Bottleneck-LSTM-Video-Object-CVPR18/multi-LSTMs.PNG" alt="multi-LSTMs" title="multi-LSTMs"></li></ol>]]></content>
<summary type="html">
<h1 id="Bottleneck-LSTM-Video-Object-Detection-CVPR18"><a href="#Bottleneck-LSTM-Video-Object-Detection-CVPR18" class="headerlink" title="Bottleneck-LSTM-Video-Object-Detection-CVPR18"></a>Bottleneck-LSTM-Video-Object-Detection-CVPR18</h1><ul>
<li>Bottleneck-LSTM:Mobile Video Object Detection with Temporally-Aware Feature </li>
<li>Paper: <a href="https://arxiv.org/abs/1711.06368" target="_blank" rel="noopener">https://arxiv.org/abs/1711.06368</a></li>
<li>Code: <a href="https://github.com/tensorflow/models/tree/master/research" target="_blank" rel="noopener">https://github.com/tensorflow/models/tree/master/research</a></li>
</ul>
<h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol>
<li>构建Conv Bottleneck-LSTM,并将Bottleneck-LSTM与one stage检测相结合。其中,Bottleneck-LSTM借鉴了深度可分离卷积和bottleneck。</li>
<li>在video detection中的速度,相比现存检测算快,FPS为15(个人感觉比较慢)。</li>
</ol>
</summary>
<category term="Video Detection" scheme="http://yoursite.com/categories/Video-Detection/"/>
<category term="detection" scheme="http://yoursite.com/tags/detection/"/>
</entry>
<entry>
<title>Interview-Summary</title>
<link href="http://yoursite.com/2019/07/31/Interview-Summary/"/>
<id>http://yoursite.com/2019/07/31/Interview-Summary/</id>
<published>2019-07-31T01:55:42.000Z</published>
<updated>2019-08-08T01:13:45.729Z</updated>
<content type="html"><![CDATA[<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><div id="hbe-security"> <div class="hbe-input-container"> <input type="password" class="hbe-form-control" id="pass" placeholder="Please enter the password to read the blog." /> <label for="pass">Please enter the password to read the blog.</label> <div class="bottom-line"></div> </div></div><div id="decryptionError" style="display: none;">Incorrect Password!</div><div id="noContentError" style="display: none;">No content to display!</div><div id="encrypt-blog" style="display:none">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</div><script src="/lib/crypto-js.js"></script><script src="/lib/blog-encrypt.js"></script><link href="/css/blog-encrypt.css" rel="stylesheet" type="text/css">]]></content>
<summary type="html">
The article has been encrypted, please enter your password to view.<br>
</summary>
<category term="Summary" scheme="http://yoursite.com/categories/Summary/"/>
<category term="Summary" scheme="http://yoursite.com/tags/Summary/"/>
</entry>
<entry>
<title>Object Detection Summary</title>
<link href="http://yoursite.com/2019/07/10/object-detection-summary/"/>
<id>http://yoursite.com/2019/07/10/object-detection-summary/</id>
<published>2019-07-10T10:07:38.000Z</published>
<updated>2019-08-01T01:56:38.351Z</updated>
<content type="html"><![CDATA[<h1 id="目标检测(待完善)"><a href="#目标检测(待完善)" class="headerlink" title="目标检测(待完善)"></a>目标检测(待完善)</h1><h2 id="简述"><a href="#简述" class="headerlink" title="简述"></a>简述</h2><ol><li><strong>one-stage</strong></li></ol><ul><li>主要思想:均匀地在图片的不同位置进行密集抽样,抽样时可以采用不同尺度和长宽比,然后利用CNN提取特征后直接进行分类与回归,整个过程只需要一步</li><li>代表:Yolo,SSD</li><li>特点:速度快,准确率一般没有two-stage高</li></ul><ol start="2"><li><strong>two-stage</strong></li></ol><ul><li>主要思想:一阶段生成proposals,二阶段对这些proposals进行分类和回归</li><li>代表:R-CNN,Fast R-CNN, Faster R-CNN</li></ul><a id="more"></a><h2 id="R-CNN-2013-11-mAP-58-5"><a href="#R-CNN-2013-11-mAP-58-5" class="headerlink" title="R-CNN - 2013.11 - mAP:58.5"></a>R-CNN - 2013.11 - mAP:58.5</h2><h3 id="网络结构"><a href="#网络结构" class="headerlink" title="网络结构"></a>网络结构</h3><p><img src="/2019/07/10/object-detection-summary/RCNN.jpg" alt="RCNN" title="RCNN"> </p><ol><li><strong>步骤</strong> </li></ol><ul><li>找出候选框; </li><li>利用CNN提取特征向量; </li><li>利用SVM进行特征向量分类(N个SVM分类器)。</li></ul><ol><li><strong>selective search</strong> </li></ol><ul><li>首先通过基于图的图像分割方法初始化原始区域,就是将图像分割成很多很多的小块。</li><li>然后我们使用贪心策略,计算每两个相邻的区域的相似度(纹理/颜色/大小),然后每次合并最相似的两块,直到最终只剩下一块完整的图片。 </li><li>然后这其中每次产生的图像块包括合并的图像块我们都保存下来,这样就得到图像的分层表示。<h3 id="特点-改进点"><a href="#特点-改进点" class="headerlink" title="特点/改进点"></a>特点/改进点</h3></li></ul><ol><li>使用selective search提取预测框。</li><li>使用CNN进行特征提取。<h3 id="优-缺点"><a href="#优-缺点" class="headerlink" title="优/缺点"></a>优/缺点</h3></li><li><strong>优点</strong></li></ol><ul><li>是CNN在目标检测领域得开篇之作,变检测问题为分类问题。</li></ul><ol start="2"><li><strong>缺点</strong></li></ol><ul><li>需要训练三个模型(proposal,CNN,Regression)</li><li>selective search仍然十分耗时</li><li>存在大量得重复计算</li></ul><h2 id="Fast-RCNN-2015-04-mAP-70-fps-0-5"><a href="#Fast-RCNN-2015-04-mAP-70-fps-0-5" class="headerlink" title="Fast RCNN - 2015.04 - mAP:70,fps:0.5"></a>Fast RCNN - 2015.04 - mAP:70,fps:0.5</h2><h3 id="网络结构-1"><a href="#网络结构-1" class="headerlink" title="网络结构"></a>网络结构</h3><h3 id="特点-改进点-1"><a href="#特点-改进点-1" class="headerlink" title="特点/改进点"></a>特点/改进点</h3><h3 id="优-缺点-1"><a href="#优-缺点-1" class="headerlink" title="优/缺点"></a>优/缺点</h3><h2 id="YOLO-v1-2015-06-mAP-63-4-fps-45"><a href="#YOLO-v1-2015-06-mAP-63-4-fps-45" class="headerlink" title="YOLO v1 - 2015.06 - mAP:63.4,fps:45"></a>YOLO v1 - 2015.06 - mAP:63.4,fps:45</h2><h3 id="网络结构-2"><a href="#网络结构-2" class="headerlink" title="网络结构"></a>网络结构</h3><p><img src="/2019/07/10/object-detection-summary/YOLOV1.PNG" alt="Yolo v1" title="Yolo v1"> </p><ol><li><strong>步骤</strong></li></ol><ul><li>对输入图像进行<strong>网格划分</strong>。</li><li>使用CNN网络生成对应大小的feature map,最后使用两个FC层来进行预测。<h3 id="特点-改进点-2"><a href="#特点-改进点-2" class="headerlink" title="特点/改进点"></a>特点/改进点</h3></li></ul><ol><li>抛弃了滑动窗口和RCNN中selective search的方法,而是将image切分为7x7的网格,利用卷积生成相同大小的feature map来进行预测。<h3 id="优-缺点-2"><a href="#优-缺点-2" class="headerlink" title="优/缺点"></a>优/缺点</h3></li><li>优点</li></ol><ul><li>速度很快,155fps</li><li>不容易对背景误判</li></ul><ol start="2"><li>缺点</li></ol><ul><li>每个cell预测2个bbox,但共享一个类别,对密集物体表现不好。</li><li>定位不精准</li><li>对小物体不友好</li></ul><h2 id="Faster-RCNN-2015-06-mAP-73-2-fps-7"><a href="#Faster-RCNN-2015-06-mAP-73-2-fps-7" class="headerlink" title="Faster RCNN - 2015.06 - mAP:73.2,fps:7"></a>Faster RCNN - 2015.06 - mAP:73.2,fps:7</h2><h3 id="网络结构-3"><a href="#网络结构-3" class="headerlink" title="网络结构"></a>网络结构</h3><p><img src="/2019/07/10/object-detection-summary/FASTERRCNN.PNG" alt="Faster RCNN" title="Faster RCNN"></p><ol><li><strong>步骤</strong></li></ol><ul><li>阶段一,特征提取。</li><li>阶段二,使用<strong>RPN提取ROIs</strong>,并对其中部分样本(256)进行二分类和回归,NMS过滤。</li><li>阶段三,使用<strong>ROI Pooling</strong>,对ROIs中的部分ROI进行Pooling操作统一到相同尺度,在做分类和回归,NMS过滤。 <h3 id="特点-改进点-3"><a href="#特点-改进点-3" class="headerlink" title="特点/改进点"></a>特点/改进点</h3></li></ul><ol><li>使用RPN网络代替selective search,极大减少了生成proposals的时间。</li><li>两阶段(粗分类/回归+细分类/回归),可以获得更高的精度。<h3 id="优-缺点-3"><a href="#优-缺点-3" class="headerlink" title="优/缺点"></a>优/缺点</h3></li><li>优点</li></ol><ul><li>检测精度极大提升</li></ul><ol start="2"><li>缺点</li></ol><ul><li>速度比Yolo慢</li></ul><h2 id="SSD-2015-12-mAP-72-1-fps-58"><a href="#SSD-2015-12-mAP-72-1-fps-58" class="headerlink" title="SSD - 2015.12 - mAP:72.1,fps:58"></a>SSD - 2015.12 - mAP:72.1,fps:58</h2><h3 id="网络结构-4"><a href="#网络结构-4" class="headerlink" title="网络结构"></a>网络结构</h3><p><img src="/2019/07/10/object-detection-summary/SSD.PNG" alt="SSD" title="SSD"></p><ol><li><strong>步骤</strong></li></ol><ul><li>输入图像可以为300x300/512x512</li><li>使用CNN(VGG16改装版)进行特征提取。</li><li>结合5层不同尺度的feature map进行不同尺度(<strong>anchors</strong>)物体的预测。<h3 id="特点-改进点-4"><a href="#特点-改进点-4" class="headerlink" title="特点/改进点"></a>特点/改进点</h3></li></ul><ol><li>改Yolo的FC层预测为<strong>卷积预测</strong>,每个预测框输出一套对应的检测值。</li><li>使用了<strong>FPN</strong>(5层)。</li><li>借鉴了Faster RCNN的<strong>anchor</strong>。<h3 id="优-缺点-4"><a href="#优-缺点-4" class="headerlink" title="优/缺点"></a>优/缺点</h3></li><li>优点</li></ol><ul><li>准确度比Yolo好</li><li>对小物体的检测也比Yolo好</li></ul><h2 id="YOLO-v2-2016"><a href="#YOLO-v2-2016" class="headerlink" title="YOLO v2 - 2016"></a>YOLO v2 - 2016</h2><h3 id="网络结构-5"><a href="#网络结构-5" class="headerlink" title="网络结构"></a>网络结构</h3><h3 id="特点-改进点-5"><a href="#特点-改进点-5" class="headerlink" title="特点/改进点"></a>特点/改进点</h3><ol><li>高分辨率输入</li><li>BN层</li><li>卷积预测 + anchors</li><li>边界框聚类分析</li><li>DarkNet-19</li><li>位置预测限定(沿用Yolo v1思想)</li><li>pass through层(信息融合)</li><li>多尺度输入训练<h3 id="优-缺点-5"><a href="#优-缺点-5" class="headerlink" title="优/缺点"></a>优/缺点</h3></li><li>优点</li></ol><ul><li>引入了其他文章的点,性能提升很多</li></ul><ol start="2"><li>缺点</li></ol><ul><li>对小物体的检测仍然不友好</li></ul><h2 id="YOLO-v3-2017"><a href="#YOLO-v3-2017" class="headerlink" title="YOLO v3 - 2017"></a>YOLO v3 - 2017</h2><h3 id="网络结构-6"><a href="#网络结构-6" class="headerlink" title="网络结构"></a>网络结构</h3><h3 id="特点-改进点-6"><a href="#特点-改进点-6" class="headerlink" title="特点/改进点"></a>特点/改进点</h3><ol><li>使用了FPN结构</li><li>DarkNet-53</li><li>Loss Function: softmax -> logistic loss<h3 id="优-缺点-6"><a href="#优-缺点-6" class="headerlink" title="优/缺点"></a>优/缺点</h3></li><li>优点</li></ol><ul><li>对小物体的检测有很好的改善</li><li>性能提升</li></ul>]]></content>
<summary type="html">
<h1 id="目标检测(待完善)"><a href="#目标检测(待完善)" class="headerlink" title="目标检测(待完善)"></a>目标检测(待完善)</h1><h2 id="简述"><a href="#简述" class="headerlink" title="简述"></a>简述</h2><ol>
<li><strong>one-stage</strong></li>
</ol>
<ul>
<li>主要思想:均匀地在图片的不同位置进行密集抽样,抽样时可以采用不同尺度和长宽比,然后利用CNN提取特征后直接进行分类与回归,整个过程只需要一步</li>
<li>代表:Yolo,SSD</li>
<li>特点:速度快,准确率一般没有two-stage高</li>
</ul>
<ol start="2">
<li><strong>two-stage</strong></li>
</ol>
<ul>
<li>主要思想:一阶段生成proposals,二阶段对这些proposals进行分类和回归</li>
<li>代表:R-CNN,Fast R-CNN, Faster R-CNN</li>
</ul>
</summary>
<category term="objection" scheme="http://yoursite.com/categories/objection/"/>
<category term="objection" scheme="http://yoursite.com/tags/objection/"/>
</entry>
<entry>
<title>Faster-rcnn-NIPS2015-detection</title>
<link href="http://yoursite.com/2019/07/10/faster-rcnn-detection/"/>
<id>http://yoursite.com/2019/07/10/faster-rcnn-detection/</id>
<published>2019-07-10T03:16:30.000Z</published>
<updated>2019-08-01T15:07:49.259Z</updated>
<content type="html"><![CDATA[<h2 id="Faster-rcnn-NIPS2015"><a href="#Faster-rcnn-NIPS2015" class="headerlink" title="Faster-rcnn-NIPS2015"></a>Faster-rcnn-NIPS2015</h2><ul><li>Faster RCNN:Towards Real-Time Object Detection with Region Proposal Networks</li><li>Paper:<a href="https://arxiv.org/abs/1506.01497" target="_blank" rel="noopener">https://arxiv.org/abs/1506.01497</a></li><li>Code :<a href="https://github.com/chenyuntc/simple-faster-rcnn-pytorch" target="_blank" rel="noopener">https://github.com/chenyuntc/simple-faster-rcnn-pytorch</a></li><li>参考:<a href="https://zhuanlan.zhihu.com/p/32404424" target="_blank" rel="noopener">https://zhuanlan.zhihu.com/p/32404424</a></li></ul><h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol><li>使用RPN代替了耗时的selective search操作。</li><li>大致过程如下图。<strong>特征提取,RPN提取ROI(二分类+回归),ROI Head(多分类+回归)</strong><br><img src="/2019/07/10/faster-rcnn-detection/main.PNG" alt="main-framework" title="main-framework"></li></ol><a id="more"></a><h2 id="why"><a href="#why" class="headerlink" title="why"></a>why</h2><ol><li>基于<strong>selective search的方法速度太慢</strong>。</li><li><strong>二阶段</strong>(粗细粒度的筛选),可以使得检测的精度极大提升。</li></ol><h2 id="what"><a href="#what" class="headerlink" title="what"></a>what</h2><ol><li>主要贡献在于,使用RPN替代了selective search方法。</li><li>Faster RCNN可主要分为三个阶段。</li></ol><ul><li>阶段一,<strong>特征提取</strong>。</li><li>阶段二,使用<strong>RPN提取ROIs</strong>,并对其中部分样本(256)进行二分类和回归,NMS过滤。</li><li>阶段三,使用<strong>ROI Pooling</strong>,对ROIs中的部分ROI进行Pooling操作统一到相同尺度,在做分类和回归,NMS过滤。</li></ul><h2 id="how"><a href="#how" class="headerlink" title="how"></a>how</h2><ol><li>Faster RCNN主要分三步:特征提取,RPN提取ROIs(<strong>二分类</strong>+回归),ROI Head/Pooling(<strong>多分类</strong>+回归)<br><img src="/2019/07/10/faster-rcnn-detection/network1.jpg" alt="network" title="network"><h3 id="Feature-Extractor"><a href="#Feature-Extractor" class="headerlink" title="Feature Extractor"></a>Feature Extractor</h3></li><li>一般使用与训练好的VGG16,前4层的卷积的学习率设为0(为节省显存),Conv5_3的feature作为输出;VGG最后的三层全连接层的前两层,一般用来初始化RoIHead的部分参数。<br><img src="/2019/07/10/faster-rcnn-detection/VGG2.jpg" alt="VGG16" title="VGG16"><h3 id="RPN"><a href="#RPN" class="headerlink" title="RPN"></a>RPN</h3></li><li>每个位置使用的anchor个数为9个,所以整张图大概会生成20000个anchors。</li><li><strong>RPN结构</strong><br>3x3的卷积不太清楚什么用意?后接两个1x1的卷积分别用于二分类(9x2)和位置回归(9x4)。</li><li><strong>AnchorTargetCreator</strong><br>RPN利用AnchorTargetCreator从20000个anchor中选取256个做分类和回归。</li></ol><ul><li>计算所有anchors与GT的iou,每个GT对应IOU<strong>最高</strong>的anchor作为正样本。</li><li>其余样本随机选择与GT的iou大于阈值0.7的样本作为正样本。</li><li>随机选择与GT的iou小于阈值0.1的样本作为负样本。正负样本的比例大概为1:1,总数为256。</li></ul><ol start="4"><li><strong>ProposalCreator</strong><br>RPN利用ProposalCreator生成ROIs。</li></ol><ul><li>计算20000个anchors属于前景的概率,对应的位置参数</li><li>选取概率较大的12000个anchors,利用回归的位置参数修正这些anchors</li><li>使用NMS,选择出anchors最大的2000个ROIs</li><li>inference时候,12000,2000分别对应6000,300</li></ul><ol start="5"><li><strong>损失计算</strong></li></ol><ul><li>分类损失,使用交叉熵。</li><li>回归损失,使用Smooth L1 loss<br><img src="/2019/07/10/faster-rcnn-detection/RPN.jpg" alt="RPN" title="RPN"><h3 id="ROI-Head-pooling"><a href="#ROI-Head-pooling" class="headerlink" title="ROI Head/pooling"></a>ROI Head/pooling</h3></li></ul><ol><li><strong>ProposalTargetCreator</strong></li></ol><ul><li>ROIs和GT的iou大于0.5的选择32个。</li><li>ROIs和GT的iou小于0/1的选择96个。</li></ul><ol start="2"><li><strong>ROI Pooling</strong><br>在RPN提供的2000个ROIs上,首先使用ProposalTargetCreator挑选128个ROIs,然后使用ROI Pooling将其pooling到统一的尺寸(128x512x7x7,ROI pooling是为了<strong>共享权重</strong>),继续进行分类和回归。FC21用来分类,20+1背景;F84用来回归,21x4。</li><li><strong>损失计算</strong></li></ol><ul><li>分类,交叉熵;回归,Smooth L1 loss</li><li>回归,只对ROI中的正样本计算loss<br><img src="/2019/07/10/faster-rcnn-detection/ROIHead.jpg" alt="ROI Head" title="ROI Head"></li></ul><ol start="4"><li>小结</li></ol><ul><li>RPN阶段是前/背景的二分类,ROIHead是21分类</li><li>RPN阶段,ROIHead阶段都做了NMS</li><li>RPN阶段,ROIHead阶段都进行了回归<h3 id="Loss"><a href="#Loss" class="headerlink" title="Loss"></a>Loss</h3></li></ul><ol><li>4种损失加权求和</li><li>RPN分类/回归损失,ROI分类/回归损失</li></ol><h2 id="result"><a href="#result" class="headerlink" title="result"></a>result</h2><ol><li>mAP为0.699,fps为5<br><img src="/2019/07/10/faster-rcnn-detection/result.PNG" alt="result" title="result"></li></ol>]]></content>
<summary type="html">
<h2 id="Faster-rcnn-NIPS2015"><a href="#Faster-rcnn-NIPS2015" class="headerlink" title="Faster-rcnn-NIPS2015"></a>Faster-rcnn-NIPS2015</h2><ul>
<li>Faster RCNN:Towards Real-Time Object Detection with Region Proposal Networks</li>
<li>Paper:<a href="https://arxiv.org/abs/1506.01497" target="_blank" rel="noopener">https://arxiv.org/abs/1506.01497</a></li>
<li>Code :<a href="https://github.com/chenyuntc/simple-faster-rcnn-pytorch" target="_blank" rel="noopener">https://github.com/chenyuntc/simple-faster-rcnn-pytorch</a></li>
<li>参考:<a href="https://zhuanlan.zhihu.com/p/32404424" target="_blank" rel="noopener">https://zhuanlan.zhihu.com/p/32404424</a></li>
</ul>
<h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol>
<li>使用RPN代替了耗时的selective search操作。</li>
<li>大致过程如下图。<strong>特征提取,RPN提取ROI(二分类+回归),ROI Head(多分类+回归)</strong><br><img src="/2019/07/10/faster-rcnn-detection/main.PNG" alt="main-framework" title="main-framework"></li>
</ol>
</summary>
<category term="detection" scheme="http://yoursite.com/categories/detection/"/>
<category term="detection" scheme="http://yoursite.com/tags/detection/"/>
</entry>
<entry>
<title>Yolo-v3-CVPR2018-detection</title>
<link href="http://yoursite.com/2019/07/09/Yolo-v3-detection/"/>
<id>http://yoursite.com/2019/07/09/Yolo-v3-detection/</id>
<published>2019-07-09T08:54:47.000Z</published>
<updated>2019-07-09T10:53:07.513Z</updated>
<content type="html"><![CDATA[<h2 id="Yolo-v3-2018"><a href="#Yolo-v3-2018" class="headerlink" title="Yolo v3-2018"></a>Yolo v3-2018</h2><ul><li>YOLOv3: An Incremental Improvement</li><li>Paper:<a href="https://pjreddie.com/media/files/papers/YOLOv3.pdf" target="_blank" rel="noopener">https://pjreddie.com/media/files/papers/YOLOv3.pdf</a></li><li>Code:<a href="https://github.com/marvis/pytorch-yolo3" target="_blank" rel="noopener">https://github.com/marvis/pytorch-yolo3</a></li></ul><h2 id="why"><a href="#why" class="headerlink" title="why"></a>why</h2><ol><li>针对Yolo v1/2中对<strong>小物体不友好</strong>的问题。</li><li><strong>深层网络</strong>DarkNet-53替换。</li></ol><a id="more"></a><h2 id="what"><a href="#what" class="headerlink" title="what"></a>what</h2><ol><li>使用FPN解决小物体检测问题。</li><li>DarkNet-19 + 残差结构实现深层网络结构替换。</li><li>loss更换。</li></ol><h2 id="how"><a href="#how" class="headerlink" title="how"></a>how</h2><ol><li><strong>FPN</strong><br><img src="/2019/07/09/Yolo-v3-detection/FPN.jpg" alt="FPN" title="FPN"></li></ol><ul><li>Yolo v3在输入为416x416时,使用了3个尺度的特征图,52,26,13,feature map上每个点使用3个先验框,则先使用k-means获取9个box,再将这些box按照尺度大框小,尺度小框大的原则分别分配给3个特征图。</li></ul><ol start="2"><li><strong>Darknet-53</strong><br><img src="/2019/07/09/Yolo-v3-detection/darknet-53.jpg" alt="Darknet-53" title="Darknet-53"></li><li><strong>loss</strong></li></ol><ul><li>损失函数由v2的softmax loss替换为logistic loss</li><li>softmax的<strong>归一化操作</strong>则意味着每个候选框只对应着一个类别,当预测的目标类别很复杂(多个相似类别)的时候,采用logistic regression进行分类,但是可以输出多个分类,比如说,男人,人。</li></ul>]]></content>
<summary type="html">
<h2 id="Yolo-v3-2018"><a href="#Yolo-v3-2018" class="headerlink" title="Yolo v3-2018"></a>Yolo v3-2018</h2><ul>
<li>YOLOv3: An Incremental Improvement</li>
<li>Paper:<a href="https://pjreddie.com/media/files/papers/YOLOv3.pdf" target="_blank" rel="noopener">https://pjreddie.com/media/files/papers/YOLOv3.pdf</a></li>
<li>Code:<a href="https://github.com/marvis/pytorch-yolo3" target="_blank" rel="noopener">https://github.com/marvis/pytorch-yolo3</a></li>
</ul>
<h2 id="why"><a href="#why" class="headerlink" title="why"></a>why</h2><ol>
<li>针对Yolo v1/2中对<strong>小物体不友好</strong>的问题。</li>
<li><strong>深层网络</strong>DarkNet-53替换。</li>
</ol>
</summary>
<category term="detection" scheme="http://yoursite.com/categories/detection/"/>
<category term="detection" scheme="http://yoursite.com/tags/detection/"/>
</entry>
<entry>
<title>Yolo-v2-CVPR17-detection</title>
<link href="http://yoursite.com/2019/07/09/Yolo-v2-detection/"/>
<id>http://yoursite.com/2019/07/09/Yolo-v2-detection/</id>
<published>2019-07-09T01:59:23.000Z</published>
<updated>2019-07-10T08:43:21.233Z</updated>
<content type="html"><![CDATA[<h2 id="Yolo-v2-2017"><a href="#Yolo-v2-2017" class="headerlink" title="Yolo v2 2017"></a>Yolo v2 2017</h2><ul><li>Yolo-v2(YOLO9000): Better, Faster, Stronger</li><li>Paper:<a href="https://arxiv.org/abs/1612.08242" target="_blank" rel="noopener">https://arxiv.org/abs/1612.08242</a></li><li>Code: <a href="https://github.com/marvis/pytorch-yolo2" target="_blank" rel="noopener">https://github.com/marvis/pytorch-yolo2</a></li></ul><h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol><li>基于Yolo v1做了诸多改进。针对Yolo v1<strong>定位不精准,召回率低,对小物体不友好的问题,提出了位置限定预测,Anchor+卷积预测,pass-through操作</strong>等。</li><li>同时,引入了<strong>BN,高分辨率输入,边界框聚类分析,darnet-19,多尺度训练</strong>等,提高了检测性能。</li><li>最终在输入为544x544时,VOC07上mAP可达到78.6,相对应的fps为40(不同输入对应不同结果)</li></ol><a id="more"></a><h2 id="why"><a href="#why" class="headerlink" title="why"></a>why</h2><ol><li>Yolo v1虽然检测速度很快,但是<strong>定位精度不准,物体定位不准确,召回率低,对小物体不友好</strong>,精度效果不如RCNN好。</li></ol><h2 id="what"><a href="#what" class="headerlink" title="what"></a>what</h2><p><img src="/2019/07/09/Yolo-v2-detection/compare.jpg" alt="compare" title="compare"></p><ol><li><strong>Batch Normalization</strong></li></ol><ul><li>在Yolo v2中每一个卷积层之后,都添加BN层,抛弃Dropout。</li><li>BN可以提高模型的收敛速度,起到一定的正则化效果,防止模型过拟合。</li><li>使用BN后,mAP提高了2.4%</li></ul><ol start="2"><li><strong>高分辨率输入</strong></li></ol><ul><li>在Yolo v2中,使用448x448高分辨率输入,抛弃224x224低分辨率输入。</li><li>低分辨率不利于检测模型。因为在ImageNet上的预训练模型使用的为224x224的输入,在检测数据上使用448x448进行finetune效果不好;Yolo v2增加了在ImageNet上使用448x448输入来finetune的步骤,使模型可以适应检测数据上的高分辨率输入。</li><li>使用高分辨率后,mAP提高了4%</li></ul><ol start="3"><li><strong>卷积预测+Anchors</strong></li></ol><ul><li>更换FC层预测为Conv预测,同时使用anchor box。</li><li>Yolo v2采用416x416的输入,stride为32,是为了<strong>保证最后feature map的大小为奇数(13x13)</strong>,其包含一个中心点,对于一些大物体,中心点通常落到图片的中心位置,使用feature map中心点去预测这些物体会相对容易。</li><li>Yolo v2对于每一个anchor box都独立预测一套分类概率</li><li>使用anchor之后,召回率提高了7%</li></ul><ol start="4"><li><strong>边界框聚类分析</strong></li></ol><ul><li>Yolo v2使用K-means,对训练集中的边界框使用box与中心box的IOU值作为指标进行聚类分析,改善在Faster RCNN和SSD中人工设定先验框的主观性。Yolo v2最终选取5个聚类中心作为先验框。</li><li>对于不同的数据集可以分析出更合适的先验框尺度,可以更贴近数据集中gt的尺度。</li><li>使用聚类分析后,mAP提高了0.4%</li></ul><ol start="5"><li><strong>DarkNet-19</strong><br><img src="/2019/07/09/Yolo-v2-detection/darknet.jpg" alt="DarkNet-19" title="DarkNet-19"></li></ol><ul><li>使用特征提取网络,抛弃GoogLeNet结构。</li><li>DarkNet-19使用19个卷积层和5个max pool层,使用7个1x1卷积来减少参数/计算量。最后一层使用global avgpooling(滑窗大小=feature map大小)。</li><li>计算量减少33%</li></ul><ol start="6"><li><strong>位置预测限定</strong> </li></ol><ul><li>沿用Yolo v1的思想,预测边界框中心点相对于对应cell左上角的偏移量,相当于把中心点约束在当前的cell内。抛弃无约束的位置预测。</li><li>其中,bx,by,bw,bh分别为feature map上预测框的中心点坐标和宽高;cx,cy为cell左上角的坐标(每个cell的大小都为1x1);tx,ty,tw,th分别为预测的坐标偏移量;pw,ph为先验框的宽高;W,H为特征图的大小。img_w,img_h为原始图的宽高。</li><li>边界框的最终位置为:bx / W <em> img_w,by / H </em> img_h,bw / W <em> img_w,bh / H </em> img_h</li><li>使用该约束预测 + 聚类分析,mAP提升5%<br><img src="/2019/07/09/Yolo-v2-detection/loc_pred.jpg" alt="loc-pred" title="loc-pred"></li></ul><ol start="7"><li><strong>pass through层</strong></li></ol><ul><li>pass through层将DarkNet-19中最后一个max pooling层的输入(26x26x256)进行pass through变换操作得到(13x13x2048),与输出(13x13x1024)进行连接得到(13x13x3072),然后卷积在该特征图上进行预测。</li><li>该操作使mAP提高了1%<br><img src="/2019/07/09/Yolo-v2-detection/pass-through.jpg" alt="pass-through" title="pass-through"></li></ul><ol start="8"><li><strong>多尺度输入训练</strong></li></ol><ul><li>采用不同大小的图片作为输入,使其可以适应多种大小的图片输入。</li><li>每个10个迭代周期,随机选择一种输入大小(必须为32的倍数,如320,352…608),同时对最后检测层进行修改后训练。<br><img src="/2019/07/09/Yolo-v2-detection/multi-scale.jpg" alt="multi-scale" title="multi-scale"></li></ul><h2 id="how"><a href="#how" class="headerlink" title="how"></a>how</h2><ol><li><strong>训练过程</strong></li></ol><ul><li>阶段一,使用输入大小为224x224,在ImageNet分类数据集上对DarkNet-19进行预训练。</li><li>阶段二,调整输入大小为448x448,继续在ImageNet分类数据集上对DarkNet-19进行fine-tune。</li><li>阶段三,修改分类模型为检测模型,在检测数据集上进行fine-tune。网络修改包括(网路结构可视化):移除最后一个卷积层、global avgpooling层以及softmax层,并且新增了三个 3x3卷积层,同时增加了一个passthrough层,最后使用1x1卷积层输出预测结果。</li></ul><ol start="2"><li><strong>损失函数</strong><br><img src="/2019/07/09/Yolo-v2-detection/loss.jpg" alt="loss" title="loss"></li></ol><ul><li>第一部分为,背景(iou小于设定阈值)的置信度误差。</li><li>第二部分为,先验框与预测框的坐标误差,只在前12800次迭代中计算。</li><li>第三部分为,计算与gt匹配的预测框的各部分的loss,坐标误差,置信度误差,分类误差。一个gt只匹配一个预测框,其余的大于iou阈值的预测框的loss不计算。而且Yolo v1中使用平方根降低box大小对loss的影响,Yolo v2使用权重稀系数来控制loss,尺度小一些的box的权重高一些。</li></ul><ol start="3"><li>总结</li></ol><ul><li>加了很多其他文章的点,性能提升很多,但是对小物体不友好的情况仍然没有改善。</li></ul><h2 id="Yolo9000"><a href="#Yolo9000" class="headerlink" title="Yolo9000"></a>Yolo9000</h2><ol><li>提出了一种<strong>分类和检测联合训练策略</strong>。对于检测数据集,可以用来学习预测物体的边界框、置信度以及为物体分类,而对于分类数据集可以仅用来学习分类,但是其可以大大扩充模型所能检测的物体种类。</li><li>因为检测和分类两者类别并不完全互斥,所以作者提出了一种层级分类方法。即根据各个类别之间的从属关系立一种树结构WordTree。</li><li>WordTree中的根节点为”physical object”,每个节点的子节点都属于同一子类,可以对它们进行softmax处理。在给出某个类别的预测概率时,需要找到其所在的位置,遍历这个path,然后计算path上各个节点的概率之积。</li><li>在<strong>训练</strong>时,如果是检测样本,按照YOLOv2的loss计算误差,而对于分类样本,只计算分类误差。在<strong>预测</strong>时,YOLOv2给出的置信度,边界框位置,一个树状概率图。在这个概率图中找到概率最高的路径,当达到某一个阈值时停止,就用当前节点表示预测的类别。<br><img src="/2019/07/09/Yolo-v2-detection/wordtree.jpg" alt="wordtree" title="wordtree"></li></ol>]]></content>
<summary type="html">
<h2 id="Yolo-v2-2017"><a href="#Yolo-v2-2017" class="headerlink" title="Yolo v2 2017"></a>Yolo v2 2017</h2><ul>
<li>Yolo-v2(YOLO9000): Better, Faster, Stronger</li>
<li>Paper:<a href="https://arxiv.org/abs/1612.08242" target="_blank" rel="noopener">https://arxiv.org/abs/1612.08242</a></li>
<li>Code: <a href="https://github.com/marvis/pytorch-yolo2" target="_blank" rel="noopener">https://github.com/marvis/pytorch-yolo2</a></li>
</ul>
<h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol>
<li>基于Yolo v1做了诸多改进。针对Yolo v1<strong>定位不精准,召回率低,对小物体不友好的问题,提出了位置限定预测,Anchor+卷积预测,pass-through操作</strong>等。</li>
<li>同时,引入了<strong>BN,高分辨率输入,边界框聚类分析,darnet-19,多尺度训练</strong>等,提高了检测性能。</li>
<li>最终在输入为544x544时,VOC07上mAP可达到78.6,相对应的fps为40(不同输入对应不同结果)</li>
</ol>
</summary>
<category term="detection" scheme="http://yoursite.com/categories/detection/"/>
<category term="detection" scheme="http://yoursite.com/tags/detection/"/>
</entry>
<entry>
<title>SSD-CVPR15-detection</title>
<link href="http://yoursite.com/2019/07/08/SSD-detection/"/>
<id>http://yoursite.com/2019/07/08/SSD-detection/</id>
<published>2019-07-08T08:39:15.000Z</published>
<updated>2019-07-09T08:34:06.481Z</updated>
<content type="html"><![CDATA[<h1 id="SSD-2015"><a href="#SSD-2015" class="headerlink" title="SSD - 2015"></a>SSD - 2015</h1><ul><li>SSD: Single Shot MultiBox Detector</li><li>Paper:<a href="https://arxiv.org/pdf/1611.10012.pdf" target="_blank" rel="noopener">https://arxiv.org/pdf/1611.10012.pdf</a> </li><li>Code:<a href="https://github.com/amdegroot/ssd.pytorch" target="_blank" rel="noopener">https://github.com/amdegroot/ssd.pytorch</a></li></ul><h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol><li>SSD与Yolo v1的对比</li></ol><ul><li><strong>卷积检测</strong>。抛弃FC层采用卷积做检测。SSD每个检测框都对应输出一套独立的检测值。</li><li><strong>多尺度特征图</strong>。采用多尺度特征图,大尺度检测小物体,小尺度检测大物体。</li><li><strong>先验框</strong>。采用不同尺度/长宽比的先验框。</li></ul><ol start="2"><li>速度:58fps。mAP为72.1</li></ol><a id="more"></a><h2 id="why"><a href="#why" class="headerlink" title="why"></a>why</h2><ol><li>针对Yolo v1存在的定位不精准,对小物体不友好等缺点的改进。</li></ol><h2 id="what"><a href="#what" class="headerlink" title="what"></a>what</h2><ol><li>one-stage检测。均匀地在图像上的不同位置,使用不同的尺度/长宽比进行采样,然后使用CNN提取特征后直接进行分类和回归。</li><li>SSD结合了卷积预测,多尺度特征,先验框来改进Yolo v1中存在的缺点。</li></ol><h2 id="how"><a href="#how" class="headerlink" title="how"></a>how</h2><ol><li><strong>网络结构</strong></li></ol><ul><li><strong>输入</strong>:300x300/512x512</li><li><strong>网络结构</strong><br>①主干网络使用VGG16,分别将VGG16的全连接层fc6和fc7转换成conv6和conv7,移除dropout和fc8层,并增加了卷积层来获得更多的feature map。<br>②Conv6使用扩展卷积,来扩大卷积的感受野。Conv6采用3x3大小但dilation rate=6的扩展卷积。<br>③使用feature map大小分别为38,19,10,5,3,1。不同feature map上设定的先验框数目不同,分别为4,6,6,4,4。<br>④随着特征图大小降低,先验框尺度线性增加。长宽比一般选取{1,2,3,1/2,1/3}<br><img src="/2019/07/08/SSD-detection/network.jpg" alt="network" title="network"></li><li><strong>输出</strong><br>①检测值包含两个部分:类别置信度和边界框位置,各采用一次3x3卷积来进行完成。令nk为该特征图所采用的先验框数目,那么类别置信度需要的卷积核数量为nk x C ,而边界框位置需要的卷积核数量为nk x 4。<br>②各个feature map对应:w x h x nk x (C+4)</li><li><strong>GT</strong><br><img src="/2019/07/08/SSD-detection/gt.PNG" alt="GT" title="GT"></li></ul><ol start="2"><li><strong>损失函数</strong></li></ol><ul><li>位置损失 + 置信度损失。其中N为正样本数,<br><img src="/2019/07/08/SSD-detection/loss.PNG" alt="loss" title="loss"></li><li>位置损失<br><img src="/2019/07/08/SSD-detection/loss_loc.PNG" alt="loss_loc" title="loss_loc"></li><li>置信度损失 - softmax loss<br><img src="/2019/07/08/SSD-detection/loss_conf.jpg" alt="loss_conf" title="loss_conf"></li></ul><ol start="3"><li><strong>训练细节</strong></li></ol><ul><li>先验框匹配<br>①Yolo是gt所在单元格中与其IOU最大的那个作匹配。<br>②第一步,SSD是找到每个gt与其最大的IOU作匹配,保证每一个gt都一定有一个先验框与之匹配。将匹配的bbox作为正样本,其余为负样本。第二步,将剩余先验框中与gts的iou大于阈值的进行匹配。匹配成功的都是正样本。<br>③再采用hard negative mining,对负样本按照<strong>背景</strong>置信度误差进行抽样,选取误差最大的topk个,保证正负样本的比例为1:3。 </li><li>使用了数据增强。裁剪,旋转,扭曲,随机采样等等。</li></ul><h2 id="result"><a href="#result" class="headerlink" title="result"></a>result</h2><ol><li>数据增强,可以提高9个百分点(65.6 - 74.3)。</li><li>多尺度检测,可以提高12个百分点(62.4 - 74.6)。</li></ol>]]></content>
<summary type="html">
<h1 id="SSD-2015"><a href="#SSD-2015" class="headerlink" title="SSD - 2015"></a>SSD - 2015</h1><ul>
<li>SSD: Single Shot MultiBox Detector</li>
<li>Paper:<a href="https://arxiv.org/pdf/1611.10012.pdf" target="_blank" rel="noopener">https://arxiv.org/pdf/1611.10012.pdf</a> </li>
<li>Code:<a href="https://github.com/amdegroot/ssd.pytorch" target="_blank" rel="noopener">https://github.com/amdegroot/ssd.pytorch</a></li>
</ul>
<h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol>
<li>SSD与Yolo v1的对比</li>
</ol>
<ul>
<li><strong>卷积检测</strong>。抛弃FC层采用卷积做检测。SSD每个检测框都对应输出一套独立的检测值。</li>
<li><strong>多尺度特征图</strong>。采用多尺度特征图,大尺度检测小物体,小尺度检测大物体。</li>
<li><strong>先验框</strong>。采用不同尺度/长宽比的先验框。</li>
</ul>
<ol start="2">
<li>速度:58fps。mAP为72.1</li>
</ol>
</summary>
<category term="detection" scheme="http://yoursite.com/categories/detection/"/>
<category term="detection" scheme="http://yoursite.com/tags/detection/"/>
</entry>
<entry>
<title>Yolo-v1-CVPR2015-detection</title>
<link href="http://yoursite.com/2019/07/08/Yolo-v1-detection/"/>
<id>http://yoursite.com/2019/07/08/Yolo-v1-detection/</id>
<published>2019-07-08T07:26:29.000Z</published>
<updated>2019-07-10T12:42:02.799Z</updated>
<content type="html"><![CDATA[<h2 id="Yolo-v1-2015"><a href="#Yolo-v1-2015" class="headerlink" title="Yolo v1 - 2015"></a>Yolo v1 - 2015</h2><ul><li>Yolo-v1:You Only Look Once, Unified, Real-Time Object Detection.</li><li>Paper:<a href="https://arxiv.org/abs/1506.02640" target="_blank" rel="noopener">https://arxiv.org/abs/1506.02640</a></li><li>Code: <a href="https://github.com/gliese581gg/YOLO_tensorflow" target="_blank" rel="noopener">https://github.com/gliese581gg/YOLO_tensorflow</a></li></ul><h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol><li>经典的one-stage。直接对原图进行网格划分,将原图分为nxn的小块,然后通过卷积产生nxn的特征图,其一一对应,feature map上每个元素预测对应单元格内的分类/置信度/bbox偏移。</li><li>速度:155fps,mAP:63.4</li></ol><a id="more"></a><h2 id="why"><a href="#why" class="headerlink" title="why"></a>why</h2><ol><li>DPM采用不同大小和比例(宽高比)的窗口在整张图片上以一定的步长进行滑动,然后对这些窗口对应的区域做图像分类,来实现对整张图片的检测。DPM的缺点,目标大小未知,需要使用不同的大小/比例,步长,计算量很大。</li><li>RCNN使用selective search的方法仍然耗时。</li></ol><h2 id="what"><a href="#what" class="headerlink" title="what"></a>what</h2><ol><li>Yolo直接将image分成nxn的网格,然后根据卷积生成相同大小的feature map,feature map上每个元素预测对应单元格内的分类/置信度/bbox偏移。</li></ol><h2 id="how"><a href="#how" class="headerlink" title="how"></a>how</h2><ol><li><strong>网络结构</strong></li></ol><ul><li>输入:448x448的image<br> 划分为7x7的网格。</li><li>网络结构<br>backbone:使用了24个卷积层,2个fc层<br><img src="/2019/07/08/Yolo-v1-detection/network.jpg" alt="network" title="network"><br>训练过程中的网络结构。在googLenet之后添加了4个随机初始化权重的Conv层和2个fc层。<br><img src="/2019/07/08/Yolo-v1-detection/train.jpg" alt="train" title="train"></li><li>输出:7x7x30<br> 其中30为20个类别概率,2个置信度,2个bbox的(x,y,w,h),其中,预测的x,y是中心坐标相对于左上角坐标的偏移量,单位是相对于单元格大小的;w,h是相对于整个图片的宽和高的比例;所以xy在[0,1]范围内。<br> 预测tensor示意图。网络计算量:SxSx(Bx5+C)<br><img src="/2019/07/08/Yolo-v1-detection/predict.jpg" alt="predict" title="predict"></li></ul><ol start="2"><li><strong>损失函数</strong></li></ol><ul><li>采用MSE损失函数,对于定位损失,分类损失分别采用不同的权重。定位损失使用较大的权重(5),然后分类损失权重分别为(0.5无object,1有object)。</li><li>其中,要各个大小bbox要同等对待,但是较小的边界框的误差更敏感,所以将网络bbox的w,h的预测改为了对其平方根的预测。<br><img src="/2019/07/08/Yolo-v1-detection/loss.jpg" alt="loss" title="loss"></li></ul><h2 id="result"><a href="#result" class="headerlink" title="result"></a>result</h2><ol><li><strong>优点</strong></li></ol><ul><li>简洁,速度较快,可以达到155fps,mAP为63.4</li><li>对整个image做conv,不容易对背景误判</li></ul><ol start="2"><li><strong>缺点</strong></li></ol><ul><li>每个单元格仅预测两个bbox,且共享一个类别,所以对密集物体判别不好。</li><li>定位不精准。</li><li>对小物体不友好,且无法定位比例不同寻常的物体。</li></ul>]]></content>
<summary type="html">
<h2 id="Yolo-v1-2015"><a href="#Yolo-v1-2015" class="headerlink" title="Yolo v1 - 2015"></a>Yolo v1 - 2015</h2><ul>
<li>Yolo-v1:You Only Look Once, Unified, Real-Time Object Detection.</li>
<li>Paper:<a href="https://arxiv.org/abs/1506.02640" target="_blank" rel="noopener">https://arxiv.org/abs/1506.02640</a></li>
<li>Code: <a href="https://github.com/gliese581gg/YOLO_tensorflow" target="_blank" rel="noopener">https://github.com/gliese581gg/YOLO_tensorflow</a></li>
</ul>
<h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol>
<li>经典的one-stage。直接对原图进行网格划分,将原图分为nxn的小块,然后通过卷积产生nxn的特征图,其一一对应,feature map上每个元素预测对应单元格内的分类/置信度/bbox偏移。</li>
<li>速度:155fps,mAP:63.4</li>
</ol>
</summary>
<category term="detection" scheme="http://yoursite.com/categories/detection/"/>
<category term="detection" scheme="http://yoursite.com/tags/detection/"/>
</entry>
<entry>
<title>Offer Plan</title>
<link href="http://yoursite.com/2019/07/08/offer-plan/"/>
<id>http://yoursite.com/2019/07/08/offer-plan/</id>
<published>2019-07-08T02:41:18.000Z</published>
<updated>2019-08-01T14:52:42.007Z</updated>
<content type="html"><![CDATA[<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><div id="hbe-security"> <div class="hbe-input-container"> <input type="password" class="hbe-form-control" id="pass" placeholder="Please enter the password to read the blog." /> <label for="pass">Please enter the password to read the blog.</label> <div class="bottom-line"></div> </div></div><div id="decryptionError" style="display: none;">Incorrect Password!</div><div id="noContentError" style="display: none;">No content to display!</div><div id="encrypt-blog" style="display:none">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</div><script src="/lib/crypto-js.js"></script><script src="/lib/blog-encrypt.js"></script><link href="/css/blog-encrypt.css" rel="stylesheet" type="text/css">]]></content>
<summary type="html">
The article has been encrypted, please enter your password to view.<br>
</summary>
<category term="plan" scheme="http://yoursite.com/categories/plan/"/>
<category term="plan" scheme="http://yoursite.com/tags/plan/"/>
</entry>
<entry>
<title>Python内存管理</title>
<link href="http://yoursite.com/2019/07/07/python%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/"/>
<id>http://yoursite.com/2019/07/07/python内存管理/</id>
<published>2019-07-07T07:36:25.000Z</published>
<updated>2019-08-01T14:52:34.271Z</updated>
<content type="html"><![CDATA[<h1 id="Python内存管理"><a href="#Python内存管理" class="headerlink" title="Python内存管理"></a>Python内存管理</h1><ul><li>今天在刷复杂链表复制的时候,碰到了这个点,总结一下</li><li>python内存管理机制:引用计数,垃圾回收,内存池机制</li></ul><a id="more"></a><h2 id="引用计数"><a href="#引用计数" class="headerlink" title="引用计数"></a>引用计数</h2><ol><li>python中,对象和引用分离,对于<strong>整数int和短小的字符str</strong>,python都会缓</li><li>存这些对象,用以重复使用,当创建多个相同的对象时,实际上只是让所有这些引用指向同一个对象。</li></ol><ul><li>int:-5~256</li><li>str:只包含数字和字母的元素有小数据池 + 单个字母*int(21)存在小数据池<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">a = <span class="number">1</span> </span><br><span class="line">b = <span class="number">1</span></span><br><span class="line">id(a) == id(b) <span class="comment"># True 即a,b为1对象的两个引用。</span></span><br><span class="line">a <span class="keyword">is</span> b <span class="comment"># True 用于判断两个引用指向的对象是否相同</span></span><br><span class="line">getrefcount(a) <span class="comment"># 判断对象的引用总数,getrefcount会创建一个临时引用,这样会比期望结果多1</span></span><br></pre></td></tr></table></figure></li></ul><ol start="2"><li>长字符串和其他对象可以有多个相同的对象,可以使用赋值语句创造出新的对象.</li><li>对象引用对象。例如list,dict等可以包含多个对象,实际上,其中包含的是各个元素对象的引用。</li><li>引用减少。可以使用del关键字来删除某个引用,或者引用重定向时,原对象的引用数会减少。</li><li>可能会出现引用环问题。python通过对每个对象i引用计数,并会遍历所有对象i,对于每个对象i引用的对象j,将j相应的引用计数减1。然后python会将引用计数为0的回收。</li></ol><h2 id="垃圾回收"><a href="#垃圾回收" class="headerlink" title="垃圾回收"></a>垃圾回收</h2><ol><li>在python中,当某一对象的引用计数为0时,将会被回收。但是python不会频繁地进行垃圾回收,因为会大大影响python的工作效率,python只会在特定的条件下,自动启动垃圾回收(python运行时,会自动记录其中分配对象和取消分配对象的次数,当两者的差值大于某阈值时,垃圾回收便会启动)。<ul><li>gc.getthreshold(),可以查看垃圾回收启动的阈值。</li></ul></li><li>分代回收</li></ol><ul><li>理解:存活时间越久的对象,越不可能成为垃圾,python会减少这些对象的使用频率。</li><li>分代:0,1,2</li><li>0代为新建的对象,0代对象每次都会扫描。在0代对象扫描一定次数后,开始扫描1代对象。在1代对象扫描一定次数后,开始扫描2代对象。</li></ul><h2 id="内存池机制"><a href="#内存池机制" class="headerlink" title="内存池机制"></a>内存池机制</h2><ol><li>python中有大内存和小内存。大内存使用malloc分配,小内存使用内存池分配。</li><li>python内存池机制<ul><li>最上层(3),用户对python对象直接操作</li><li>中间层(1,2),内存池,分配256k及以下的内存。malloc分配内存,free不会释放内存,以方便下次使用。</li><li>在下层(0),分配大于256k的内存,malloc分配内存,free释放内存</li><li>最小层(-1,-2),有操作系统调用</li></ul></li></ol>]]></content>
<summary type="html">
<h1 id="Python内存管理"><a href="#Python内存管理" class="headerlink" title="Python内存管理"></a>Python内存管理</h1><ul>
<li>今天在刷复杂链表复制的时候,碰到了这个点,总结一下</li>
<li>python内存管理机制:引用计数,垃圾回收,内存池机制</li>
</ul>
</summary>
<category term="python" scheme="http://yoursite.com/categories/python/"/>
<category term="python" scheme="http://yoursite.com/tags/python/"/>
</entry>
<entry>
<title>SPM-CVPR19-Tracking</title>
<link href="http://yoursite.com/2019/06/28/SPM-CVPR2019/"/>
<id>http://yoursite.com/2019/06/28/SPM-CVPR2019/</id>
<published>2019-06-28T10:36:36.000Z</published>
<updated>2019-08-13T02:52:01.590Z</updated>
<content type="html"><![CDATA[<h1 id="SPM"><a href="#SPM" class="headerlink" title="SPM"></a>SPM</h1><ul><li>SPM-Tracker: Series-Parallel Matching for Real-Time Visual Object Tracking</li><li>Paper:</li><li>Code:</li></ul><h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol><li>将Tracking中的两个需求(Robustness,deiscrimination)分别放在两个阶段(two-stage:CM->FM)实现。</li><li>感觉效果惊人!OTB-100上的AUC为0.687,VOT-16上的EAO竟然达到了0.434,GPU上的fps为120,牛!</li><li>抓住了siamese网络的缺点(相似物体容易drift),解决方式就是在一阶段CM提取目标物体和其相似物体作为正样本,在二阶段FM在仔细区分object和其相似物体,也算是在image中尽可能多的提炼信息。</li></ol><a id="more"></a><h2 id="why"><a href="#why" class="headerlink" title="why"></a>why</h2><ol><li>在tracking的过程中,既要求tracker有足够的判别力(针对相似物体或者相似背景等),又需要足够的鲁棒性(对于物体的形变,光照等)。但是用一阶段的方法学习两种能力,其间会相互影响。</li><li>现存的tracker速度太慢。</li></ol><h2 id="what"><a href="#what" class="headerlink" title="what"></a>what</h2><ol><li>将Tracking分为两阶段来做,分别是CM,FM。CM负责鲁棒性,FM负责判别力。两阶段的融合省去了做多尺度测试。</li><li>在CM阶段同一类物体都被作为同一物体,来提高CM的鲁棒性。在FM阶段通过距离学习子网络替代了cross corrrelation来提高网络的判别力。CM的输出作为FM的输入,最终的输出是两阶段的融合。</li><li>SPM的优势<ul><li>two-stage,容易train</li><li>CM的输出作为FM的输入,正负样本的比例和难样本得到了平衡</li><li>两个阶段输出的融合可以有更高的精度</li><li>FM阶段有较少的proposals,省去了cross-correlation操作,改为使用trainable distance measure</li></ul></li></ol><h2 id="how"><a href="#how" class="headerlink" title="how"></a>how</h2><p><img src="/2019/06/28/SPM-CVPR2019/framework.PNG" alt="网络结构" title="网络结构"></p><ol><li>网络结构<ul><li>特征提取:Siamese Alexnet(在ImageNet上预训练)</li><li>CM Stage使用SiamRPN的网络结构,最小化类内特性,专注于robust</li><li>ROI Align用来为每个proposal生成固定长度的区域特征</li><li>FM Stage为距离学习网络,最大化不同物体间的特性,专注于discrimination</li><li>最终输出为两阶段decision的融合(score + bbox deltas)</li></ul></li><li>CM阶段<br><img src="/2019/06/28/SPM-CVPR2019/CM.PNG" alt="CM_stage" title="CM"><ul><li>将image中同类物体的<strong>中心区域(红,绿)</strong>都作为正样本,蓝色区域为忽略区域</li></ul></li><li>FM阶段<ul><li>该阶段的重点在于将CM阶段过滤后的object与背景/相似物体区分开 </li><li>经CM过滤后剩余较少的proposal,所以丢弃了cross correlation操作,使用了新的关系网络来进行距离计算。</li><li><ul><li>对于每一个proposal,直接从feature map上crop然后使用ROI pooling生成固定大小的feature,同时将高低层的信息concatenation。</li></ul></li><li>关系网络的输入是图像对concatenate的feature信息,后接1x1卷积,再接2个全连接层(256个neurons),用来cls和box regression</li></ul></li><li>融合<ul><li>最终CM,FM阶段的scores和bbox deltas进行加权融合</li></ul></li></ol><h2 id="other-points"><a href="#other-points" class="headerlink" title="other points"></a>other points</h2><ol><li>CF-based执行必不可少的是在线更新策略,但是结合deep learning是特别慢的,所以researcher使用static discriminative trackers,像siamFC等。</li><li>SiamRPN使用RPN在提高bbox regression方面做了改进,DaSiamRPN使用样本策略(相似的同类物体作为正样本提高robust,语义信息接近的不同类物体作为负样本提高distrimination)在discrimination方面做了提升。</li><li>网络细节<ul><li>在使用的AlexNet中保留了padding,因为ROI align需要feature和source image的像素对齐。</li><li>CM阶段使用no padding的中心feature(应该是从padding后的feature上crop下来)</li><li>每个ROI pooling后的feature大小为6x6x640</li></ul></li><li>train细节<ul><li>IOU 大于0.6,小于0.3的样本被保留。</li><li>loss :两个阶段,四个loss的加权和, cls : cross entropy , reg : smooth l1 loss</li></ul></li></ol>]]></content>
<summary type="html">
<h1 id="SPM"><a href="#SPM" class="headerlink" title="SPM"></a>SPM</h1><ul>
<li>SPM-Tracker: Series-Parallel Matching for Real-Time Visual Object Tracking</li>
<li>Paper:</li>
<li>Code:</li>
</ul>
<h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol>
<li>将Tracking中的两个需求(Robustness,deiscrimination)分别放在两个阶段(two-stage:CM-&gt;FM)实现。</li>
<li>感觉效果惊人!OTB-100上的AUC为0.687,VOT-16上的EAO竟然达到了0.434,GPU上的fps为120,牛!</li>
<li>抓住了siamese网络的缺点(相似物体容易drift),解决方式就是在一阶段CM提取目标物体和其相似物体作为正样本,在二阶段FM在仔细区分object和其相似物体,也算是在image中尽可能多的提炼信息。</li>
</ol>
</summary>
<category term="papers" scheme="http://yoursite.com/categories/papers/"/>
<category term="Tracking" scheme="http://yoursite.com/tags/Tracking/"/>
</entry>
<entry>
<title>Deepsort-CVPR2017-Tracking</title>
<link href="http://yoursite.com/2019/06/25/DeepSort-CVPR2017/"/>
<id>http://yoursite.com/2019/06/25/DeepSort-CVPR2017/</id>
<published>2019-06-25T02:36:46.000Z</published>
<updated>2019-07-22T06:27:51.995Z</updated>
<content type="html"><![CDATA[<h1 id="Deep-Sort-待完善"><a href="#Deep-Sort-待完善" class="headerlink" title="Deep Sort(待完善)"></a>Deep Sort(待完善)</h1><h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol><li>在Sort的基础上整合了appearance信息,引入了深度信息</li><li>将计算复杂度较高放在了离线预训练阶段,在大规模reid的数据集上学习一个关联矩阵,在online阶段,在visual appearance阶段建立了一个mearsure to track的最近邻查询。</li><li>减少了ID switch</li></ol><a id="more"></a><h2 id="Sort-with-Deep-Association-Metric"><a href="#Sort-with-Deep-Association-Metric" class="headerlink" title="Sort with Deep Association Metric"></a>Sort with Deep Association Metric</h2><h3 id="跟踪处理-状态估计"><a href="#跟踪处理-状态估计" class="headerlink" title="跟踪处理 + 状态估计"></a>跟踪处理 + 状态估计</h3><ol><li>使用八个维度值(cx,cy,r,h,vcx,vcy,vr,vh)来估计tracking的状态,同时假设kalman filter是恒定速度和线性观测模型。</li><li>对于每一个track,都要计算上次匹配成功后的帧数a。当再次关联的时候置为0,目的是通过计数找出目标消失的情况。当a > 设定Aage时,我们认为该track在image中消失。对于未关联的detection,我们认为其为新出现的目标。这些目标在前3帧中被认为暂定状态,当这些新出现的track在他们出现的前三帧中未成功关联就被删除。</li></ol><h3 id="匹配问题"><a href="#匹配问题" class="headerlink" title="匹配问题"></a>匹配问题</h3><ol><li>在kalman filter预测和detection状态之间的分配问题一般使用Hungarian算法。<strong>文章中在这里整合了运动信息,外观特征信息</strong>。</li><li>运动信息,通过计算kalman states和detection之间的马氏距离。<strong>这里有公式d(1)(i,j) = (dj −yi)T^Si−1(dj −yi)</strong>。马氏距离通过测量检测远离平均轨道位置的标准偏差的多少来考虑状态估计不确定性。之后通过x2分布来过滤一些不可能存在的关联,<strong>这里有公式b(1) i,j = 1[d(1)(i,j) ≤ t(1)]</strong>。其中的Mahalanobis的阈值t(1)设定为9.4877。</li></ol><ul><li>[注]以上的马氏距离可以无相机运动的时有较好的预测效果。但是在相机快速运动,遮挡的情况下,Mahalanobis距离相当不准确。</li></ul><ol start="3"><li>外观特征,对于每一个detection dj提取外观特征,表示为rj,且||rj|| = 1,我们为每一个track维护它的最近Lk = 100个特征。第二个度量是计算track_i和detection_j在外观特征上的cosine distance。之后再通过x2分布进行过滤。</li></ol><ul><li>[注]同一物体在不同image中生成的feature向量的余弦距离是很小的。</li></ul><ol start="4"><li>lamda*运动信息 + (1-lamda)外观特征。运动信息适合短期预测,外观特征适合长期预测。在paper中,将lamda设为0,但是mahalanobis gate仍然被用来判断不可行的预测结果。</li></ol><h3 id="级联匹配"><a href="#级联匹配" class="headerlink" title="级联匹配"></a>级联匹配</h3><ol><li>原因:在物体长时间遮挡的情况下,kalman预测会增加物体位置预测的不确定性。概率会在状态空间发散,可能无法观察。且当两个track被关联为同一个detection,mahalanobis distance偏向于不确定性更大的track,因为它有效地减少了任何检测的标准偏差与投影轨道平均值之间的距离。<br>因此,采用级联的方式设定优先级。</li><li>级联匹配,优先考虑最小age的track。</li><li>在最终的match阶段,统计未确认,和age为1的未匹配的track。这个操作有助于对突然的外观变化等增加一定的鲁棒性。</li></ol><h3 id="深度外观描述子"><a href="#深度外观描述子" class="headerlink" title="深度外观描述子"></a>深度外观描述子</h3><ol><li>使用最近邻查询,所以要提取较好的具有判别力的特征。文章中使用CNN在大规模的reid数据集上进行训练。</li><li>CNN网络结构使用resnet,两个conv layer加六个res blocks。最后在dense layer计算出来128维的特征映射。</li></ol>]]></content>
<summary type="html">
<h1 id="Deep-Sort-待完善"><a href="#Deep-Sort-待完善" class="headerlink" title="Deep Sort(待完善)"></a>Deep Sort(待完善)</h1><h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol>
<li>在Sort的基础上整合了appearance信息,引入了深度信息</li>
<li>将计算复杂度较高放在了离线预训练阶段,在大规模reid的数据集上学习一个关联矩阵,在online阶段,在visual appearance阶段建立了一个mearsure to track的最近邻查询。</li>
<li>减少了ID switch</li>
</ol>
</summary>
<category term="papers" scheme="http://yoursite.com/categories/papers/"/>
<category term="Tracking" scheme="http://yoursite.com/tags/Tracking/"/>
</entry>
<entry>
<title>C-RPN-CVPR19-tracking</title>
<link href="http://yoursite.com/2019/06/23/C-RPN-CVPR2019/"/>
<id>http://yoursite.com/2019/06/23/C-RPN-CVPR2019/</id>
<published>2019-06-23T02:36:46.000Z</published>
<updated>2019-07-02T00:36:25.575Z</updated>
<content type="html"><![CDATA[<h1 id="C-RPN"><a href="#C-RPN" class="headerlink" title="C-RPN"></a>C-RPN</h1><ul><li>Siamese Cascaded Region Proposal Networks for Real-Time Visual Tracking</li><li>Paper:</li><li>Code:</li></ul><h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol><li>通过级联RPN(多stages)筛选,解决了样本不平衡问题。(多阶段筛选)</li><li>构建FTB block用于高/低特征融合,结果更加精确。(多层融合)</li><li>其实跟SPM Tracker的出发点相同,都是针对Siamese网络中相似物体的drift问题,解决思想也相同,都是使用多stages过滤以获得更好的效果,但是整体来说效果离SPM差很多,首先多RPN肯定很耗时,FPS在36左右,同时精度提升也不是特别明显,VOT16上EAO为0.363。</li></ol><a id="more"></a><h2 id="why"><a href="#why" class="headerlink" title="why"></a>why</h2><ol><li>针对Siamese自身存在的问题 – 相似物体的drift<ul><li>样本不平衡问题</li><li>大多数样本为简单负样本</li></ul></li><li>在现有的siamese网络中,低层的feature信息没有合理利用<ul><li>高层的信息可能包含更多的语义信息,造成相似物体的drift</li></ul></li></ol><h2 id="what"><a href="#what" class="headerlink" title="what"></a>what</h2><ol><li>提出级联RPN的网络结构,分为3个stages,每个stage都做分类和回归对上一阶筛选的proposals在进行refine,每个阶段都会逐渐过滤简单负样本,保留为下一个阶段保留难例负样本。</li><li>用FTB做高低特征融合。</li></ol><h2 id="how"><a href="#how" class="headerlink" title="how"></a>how</h2><ol><li>网络结构如图。仍然使用AlexNet结构提取特征。<br><img src="/2019/06/23/C-RPN-CVPR2019/Network.PNG" alt="网络结构" title="Network"> </li><li>FTB结构如图。高层feature经过反卷积恢复尺度,然后与底层feature通过element-wise结合,最后对融合后的feature进行插值操作,为了确保最终所有的RPN都能对应相同的GT。<br><img src="/2019/06/23/C-RPN-CVPR2019/FTB.PNG" alt="FTB" title="FTB"> </li><li>GT和各阶段RPN的计算。<br><img src="/2019/06/23/C-RPN-CVPR2019/GT.PNG" alt="GT" title="GT"><br><img src="/2019/06/23/C-RPN-CVPR2019/calculate.PNG" alt="calculate" title="calculate"> </li></ol>]]></content>
<summary type="html">
<h1 id="C-RPN"><a href="#C-RPN" class="headerlink" title="C-RPN"></a>C-RPN</h1><ul>
<li>Siamese Cascaded Region Proposal Networks for Real-Time Visual Tracking</li>
<li>Paper:</li>
<li>Code:</li>
</ul>
<h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol>
<li>通过级联RPN(多stages)筛选,解决了样本不平衡问题。(多阶段筛选)</li>
<li>构建FTB block用于高/低特征融合,结果更加精确。(多层融合)</li>
<li>其实跟SPM Tracker的出发点相同,都是针对Siamese网络中相似物体的drift问题,解决思想也相同,都是使用多stages过滤以获得更好的效果,但是整体来说效果离SPM差很多,首先多RPN肯定很耗时,FPS在36左右,同时精度提升也不是特别明显,VOT16上EAO为0.363。</li>
</ol>
</summary>
<category term="papers" scheme="http://yoursite.com/categories/papers/"/>
<category term="Tracking" scheme="http://yoursite.com/tags/Tracking/"/>
</entry>
<entry>
<title>CIR-CVPR19-tracking</title>
<link href="http://yoursite.com/2019/06/23/CIR-CVPR2019/"/>
<id>http://yoursite.com/2019/06/23/CIR-CVPR2019/</id>
<published>2019-06-23T02:20:46.000Z</published>
<updated>2019-07-02T01:57:19.176Z</updated>
<content type="html"><![CDATA[<h1 id="CIR"><a href="#CIR" class="headerlink" title="CIR"></a>CIR</h1><ul><li>Deeper and Wider Siamese Networks for Real-Time Visual Tracking</li><li>Code:<a href="https://gitlab.com/MSRA_NLPR/" target="_blank" rel="noopener">https://gitlab.com/MSRA_NLPR/</a> deeper_wider_siamese_trackers</li></ul><h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol><li>针对深度网络(如Resnet)无法在siamese网络取得很好的效果。SiamRPN++也是从这个点出发去做,两者的都找出了其影响最大的原因–padding,不过解决方式不同。</li><li>paper效果<ul><li>siamFC/siamRPN在VOT16上的EAO提升了23.3%和8.8%</li></ul></li></ol><a id="more"></a><h2 id="why"><a href="#why" class="headerlink" title="why"></a>why</h2><ol><li>深度网络无法在siamese网络中取得很好的效果,对网络的各部分进行了分析,大体原因如下几点: <ul><li>神经元感受野的增大会减小特征分辨和定位的精度</li><li>网络的padding会导致网络学习的位置偏见(<strong>主要因素</strong>)</li><li>网络stride</li></ul></li></ol><h2 id="what"><a href="#what" class="headerlink" title="what"></a>what</h2><ol><li>基于残差bottleneck block进行了改进–cropping-inside residual ,用来crop(消除)padding的影响,同时可以控制感受野大小,网络的stride</li><li>几点说法<ul><li>感受野:大的感受野能够把握target的结构信息,感受野太小不利于特征提取</li><li>Stride:影响定位精度,控制着输出feature的大小;输出feature的大小影响分辨和检测精度。</li><li>Padding:当物体移动到padding边缘,会产生一定的位置偏见</li></ul></li><li>几点分析<ul><li>网络越深,感受野就越大,理论上最后一层得感受野最大</li><li>Stride为4-8-16对应得变化为0.59-0.60-0.55(Alexnet),说明siamese更适合中等strdie<strong>(4,8)</strong>,随着网络深度的增加,stride不应该增加。</li><li>最优的感受野大概为image z的<strong>60%-80%</strong></li><li>输出的feature大小较小的话,会降低track精度,因为小的feature没有组后的空间结构信息。</li><li>siamese训练的数据中object都在image的中心,所以当test数据中的object出现在image边缘时效果不好,且会受到边缘padding的影响。</li></ul></li></ol><h2 id="how"><a href="#how" class="headerlink" title="how"></a>how</h2><ol><li>基于resnet bottleneck改进–CIR Unit<ul><li>在resnet block之后添加了crop operation,将block之后padding的<strong>最外层元素</strong>给crop掉。这样feature map岂不是会越来越小?</li></ul></li><li>下采样CIR-D<ul><li>将stride由2设为1,并在block之后也加入了crop operation操作,之后又加了max pooling用于降采样</li></ul></li><li>CIR多分枝结构 - CIR-Inception/CIR-NeXt<ul><li>CIR-Inception : 在short-connection部分加入了1x1卷积,并且通过concatenation来将两个分支的feature融合</li><li>CIR-ResNeXt : 将bottleneck分为了32个分支,最终通过addition融合</li><li>这两种结构后也接crop操作,去除padding影响。这两种复杂结构可以学习更加复杂的feature</li></ul></li><li>最终,提到了crop之后feature map变小的解决方案–增大input image的大小,减小网络stride,surprise!?感觉应该有其他的方式来做padding比如说feature的均值填充之类的,没有试过不知道会不会有效果。</li></ol><h2 id="result"><a href="#result" class="headerlink" title="result"></a>result</h2><ol><li>最好结果相对SiamRPN而言,提升了4个百分点,为0.301,如图。<br><a href=""result"">result</a></li></ol><h2 id="other-points"><a href="#other-points" class="headerlink" title="other points"></a>other points</h2><ol><li>siamese网络的输入就是图像对,之前DaSiam就是在图像对这里使用的数据增强</li><li>如果我将z的信息提取hog或者就是feature特征,然后作为网络的input,在之后帧中判断其与之前的cosine distance,这种方案感觉也可行</li></ol>]]></content>
<summary type="html">
<h1 id="CIR"><a href="#CIR" class="headerlink" title="CIR"></a>CIR</h1><ul>
<li>Deeper and Wider Siamese Networks for Real-Time Visual Tracking</li>
<li>Code:<a href="https://gitlab.com/MSRA_NLPR/" target="_blank" rel="noopener">https://gitlab.com/MSRA_NLPR/</a> deeper_wider_siamese_trackers</li>
</ul>
<h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol>
<li>针对深度网络(如Resnet)无法在siamese网络取得很好的效果。SiamRPN++也是从这个点出发去做,两者的都找出了其影响最大的原因–padding,不过解决方式不同。</li>
<li>paper效果<ul>
<li>siamFC/siamRPN在VOT16上的EAO提升了23.3%和8.8%</li>
</ul>
</li>
</ol>
</summary>
<category term="papers" scheme="http://yoursite.com/categories/papers/"/>
<category term="Tracking" scheme="http://yoursite.com/tags/Tracking/"/>
</entry>
<entry>
<title>ATOM-CVPR19-tracking</title>
<link href="http://yoursite.com/2019/06/20/ATOM-CVPR2019/"/>
<id>http://yoursite.com/2019/06/20/ATOM-CVPR2019/</id>
<published>2019-06-20T02:36:44.000Z</published>
<updated>2019-07-01T14:45:34.924Z</updated>
<content type="html"><![CDATA[<h1 id="ATOM"><a href="#ATOM" class="headerlink" title="ATOM"></a>ATOM</h1><ul><li>Accurate Tracking by Overlap Maximization</li><li>Paper : </li><li>Code : <a href="https://github.com/visionml/pytracking" target="_blank" rel="noopener">https://github.com/visionml/pytracking</a></li></ul><h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol><li>大佬决定在跟踪精度上做改进,抛弃anchor,使用GT添加高斯噪声的方式。</li><li>受到IOUNet的启发,将class-special的IOU-Net改为target-special的IOU-Net使其适用于tracking的情境。</li><li>SGD算法收敛太慢,所以提出了新的收敛算法(共轭梯度+牛顿高斯)。</li></ol><a id="more"></a><h2 id="why"><a href="#why" class="headerlink" title="why"></a>why</h2><ol><li>近年来,大家的目光都聚焦在tracking的鲁棒性上,而忽略了tracking的准确性。</li><li>在IOUNet的启发下作的一些改进。</li></ol><h2 id="what"><a href="#what" class="headerlink" title="what"></a>what</h2><h3 id="网络结构"><a href="#网络结构" class="headerlink" title="网络结构"></a>网络结构</h3><ol><li>target分类(online)<ul><li>区分前/背景提供一个粗略的定位,online提高分类的鲁棒性</li><li>使用2层全连接层</li><li>抛弃SGD,使用共轭梯度+牛顿高斯方法优化</li></ul></li><li>target估计(offline)<ul><li>用于寻找overlap最大化的bbox,offline学习一个更通用的IoU预测表示</li><li>使用IOU-predictor网络来进行target估计</li><li>input是image object的feature和bbox_delta,然后使用PrROI pooling得到一个预定义大小的feature。</li></ul></li></ol><h2 id="how"><a href="#how" class="headerlink" title="how"></a>how</h2><ol><li>网络结构<br><img src="/2019/06/20/ATOM-CVPR2019/Network.PNG" alt="network" title="network"><ul><li>backbone :Resnet-18(在ImageNet上预训练)</li></ul></li><li>IOU Modulation<br><img src="/2019/06/20/ATOM-CVPR2019/iou-modulation.PNG" alt="iou-modulation" title="iou-modulation"><ul><li>对reference帧和search帧进行了特征提取,之后通过channel-wise multiplication做特征融合。</li></ul></li><li>IOU predictor<ul><li>由3层FC层组成</li><li>IOU predictor input : 当前帧的feature,当前帧的bbox估计,reference帧的feature,reference帧中的target bbox</li><li>IOU predictor output : 当前帧中预测的每一个bbox的iou值</li></ul></li><li>Classifier<ul><li>2个全卷积网络</li><li>第一层由1x1卷积构成,将通道减小至64,减少计算量。</li><li>第二层使用4x4的单输出通道kernel</li><li>使用PELU作为输出的激活函数,可以忽略掉简单的负样本</li><li>第一帧,使用了数据增强(旋转,模糊,dropout等)</li><li>在分类过程中使用了自定义的优化策略(共轭梯度+牛顿高斯)<br><img src="/2019/06/20/ATOM-CVPR2019/algothm1.PNG" alt="algorithm1" title="algorithm1"></li></ul></li><li>实现细节<ul><li>使用了LaSOT和TrackingNet数据集,同时使用了COCO数据集来进行数据增强操作</li><li>图像对采样间隔为50</li><li>每个图像对,对应生成16个候选的bbox(GT+高斯噪声,同时确保最小iou为0.1)</li><li>权重初始化 - Delving deep into rectifiers: Surpassing human-level performance on imagenet classification. In ICCV, 2015. 5</li><li>loss使用MSE loss,训练40个epoch,每个epoch使用64个图像对</li><li>学习率初始为10e-3,weight decay factor为0.2(15epoch)</li><li>在训练过程中,backbone的weight被freezed</li><li>硬负样本挖掘,当distractor在分类score中取到峰值,会将该样本使用2倍的lr在优化训练一轮。同时,在score低于0.25时判断为丢失。</li><li>最后的输出使用IOU最高的3个bbox的平均值。</li></ul></li></ol><h2 id="results"><a href="#results" class="headerlink" title="results"></a>results</h2><ol><li>Nvidia GT-1080 GPU上运行30FPS<br><img src="/2019/06/20/ATOM-CVPR2019/result.PNG" alt="result" title="result"></li></ol><h2 id="other-points"><a href="#other-points" class="headerlink" title="other points"></a>other points</h2><ul><li>低层包含更多的表面信息,那为什么不用底层feature做reg,用高层语义信息去做分类。</li></ul>]]></content>
<summary type="html">
<h1 id="ATOM"><a href="#ATOM" class="headerlink" title="ATOM"></a>ATOM</h1><ul>
<li>Accurate Tracking by Overlap Maximization</li>
<li>Paper : </li>
<li>Code : <a href="https://github.com/visionml/pytracking" target="_blank" rel="noopener">https://github.com/visionml/pytracking</a></li>
</ul>
<h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol>
<li>大佬决定在跟踪精度上做改进,抛弃anchor,使用GT添加高斯噪声的方式。</li>
<li>受到IOUNet的启发,将class-special的IOU-Net改为target-special的IOU-Net使其适用于tracking的情境。</li>
<li>SGD算法收敛太慢,所以提出了新的收敛算法(共轭梯度+牛顿高斯)。</li>
</ol>
</summary>
<category term="papers" scheme="http://yoursite.com/categories/papers/"/>
<category term="Tracking" scheme="http://yoursite.com/tags/Tracking/"/>
</entry>
<entry>
<title>IOU-Net-ECCV18-detection</title>
<link href="http://yoursite.com/2019/06/18/IOU-Net-ECCV2018/"/>
<id>http://yoursite.com/2019/06/18/IOU-Net-ECCV2018/</id>
<published>2019-06-18T06:36:44.000Z</published>
<updated>2019-07-01T14:47:29.403Z</updated>
<content type="html"><![CDATA[<h1 id="IOU-Net"><a href="#IOU-Net" class="headerlink" title="IOU-Net"></a>IOU-Net</h1><ul><li>Acquisition of Localization Confidence for Accurate Object Detection</li><li>Paper : </li><li>Code : </li></ul><h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol><li>目前大多数的tracker都是通过cls score来确定物体的位置,但是分类得分高并不意味着定位的准确度高,所以用cls score去做NMS并不是特别合理,因为会把定位精准但分类得分低的卡掉。所以作者提出了使用iou score作为排序指标。</li><li>Paper提出了IOU-guided NMS,PrROI(使用积分的方式计算ROI特征)。</li><li>很有分量的文章,受益匪浅。</li></ol><a id="more"></a><h2 id="why"><a href="#why" class="headerlink" title="why"></a>why</h2><ol><li>使用预测box的cls score去做NMS并不合理,如图所示。<ul><li>根据皮尔逊相关系数,分类score和iou并不成正相关,而定位score和iou是成正相关。<br><img src="/2019/06/18/IOU-Net-ECCV2018/CLSvsIOU.png" alt=""CLSvsIOU"" title="CLSvsIOU"></li><li>并且,分类得分高的并不一定定位得分高,使用cls score做NMS会把这些定位得分高的box卡掉。<br><img src="/2019/06/18/IOU-Net-ECCV2018/CompareImg.png" alt=""对比"" title="对比"></li><li>通过下图也可以看出,NMS很容易把IOU较高的bbox过滤掉(当然其中肯定存在大量的冗余bbox)。<br><img src="/2019/06/18/IOU-Net-ECCV2018/IOUandBBOX.png#pic_center" alt=""IOUandBBOX"" title="IOUandBBOX"></li></ul></li><li>传统的基于regression的bbox refine的问题。<ul><li>regression-based和optimization-based的直观效果差距。<br><img src="/2019/06/18/IOU-Net-ECCV2018/IOUvsREG.png" alt="IOUvsREG" title="IOUvsREG"></li><li>regression-based是通过回归[cx,cy,w,h]使其与gt尽可能接近。理论上不断refine会得到很精确的结果,但是cascad RCNN相关实验表示在随着refine次数的增加效果会下降,(<strong>为什么会这样还需要做点工作</strong>)。但是使用IOU的方式在不断refine后不会出现该情况。<br><img src="/2019/06/18/IOU-Net-ECCV2018/APvsIteration.png" alt="APvsIteration" title="APvsIteration"></li></ul></li></ol><h2 id="what"><a href="#what" class="headerlink" title="what"></a>what</h2><ol><li>提出了IOU-Net来预测bbox和gt的IOU值。</li><li>将ROI pooling/Align更换为prROI。</li></ol><h2 id="how"><a href="#how" class="headerlink" title="how"></a>how</h2><h3 id="IOU-Net-1"><a href="#IOU-Net-1" class="headerlink" title="IOU-Net"></a>IOU-Net</h3><p><img src="/2019/06/18/IOU-Net-ECCV2018/Network.png#pic_center" alt="Network" title="Network"></p><ol><li>IOU predictor的input是image通过FPN后的feature。output是每个bbox的iou score。<strong>这里使用的proposal并不是来自RPN,而是通过对GT进行随机变换(添加随机噪声等)得到的一系列proposals</strong>,然后对bbox进行过滤。对于每一个bbox会使用prROI-pooling在FPN上提取的feature,这些feature被送入2层fc层做IOU预测。</li></ol><h3 id="IOU-guided-NMS"><a href="#IOU-guided-NMS" class="headerlink" title="IOU-guided NMS"></a>IOU-guided NMS</h3><p><img src="/2019/06/18/IOU-Net-ECCV2018/IOU-guided-NMS.png" alt="IOU-guided-NMS" title="IOU-guided-NMS"></p><ol><li>将NMS算法中的排序指标改为IOU score。</li><li>通过对iou进行聚类的方式对cls score进行更新(<strong>重点在第5,8行</strong>)。在根据iou过滤的过程中,将过滤掉的bboxes中的最高的cls score分配给当前的bbox,所以保留下的是其iou簇中最高的分类得分。感觉这样做的好处是消除iou一致情况下cls score的差别。</li></ol><h3 id="Optimization-based-bbox-refinement。"><a href="#Optimization-based-bbox-refinement。" class="headerlink" title="Optimization-based bbox refinement。"></a>Optimization-based bbox refinement。</h3><h4 id="IOU支路的梯度计算和参数更新"><a href="#IOU支路的梯度计算和参数更新" class="headerlink" title="IOU支路的梯度计算和参数更新"></a>IOU支路的梯度计算和参数更新</h4><p><img src="/2019/06/18/IOU-Net-ECCV2018/bbox-refinement.png" alt="bbox-refinement" title="optimization-based bbox-refinement"></p><h4 id="prROI-pooling"><a href="#prROI-pooling" class="headerlink" title="prROI pooling"></a>prROI pooling</h4><p><img src="/2019/06/18/IOU-Net-ECCV2018/ROI-pooling-align-prroi.png" alt="ROI-pooling-align-prroi" title="ROI-pooling-align-prroi"></p><ol><li>上图是ROI pooling,ROI align,prROI pooling的对比,这是三种都是基于ROI坐标根据feature map提取feature的方法。</li><li>ROI pooling。<ul><li>先将预测得到的ROI除以stride,并量化取整得到整数值的ROI</li><li>将ROI分为k*K个grid,每个grid的坐标为(x1,y1,x2,y2),其坐标值不一定为整数,所以要量化取整,左上角向下取整,右下角向上取整,得到整数的坐标值。然后可以采用均值/最大值操作得到该grid的特征值。</li><li>优点:解决了不同大小ROI的尺寸不统一的问题</li><li>缺点:量化操作会引入一定的误差</li></ul></li><li>ROI Align<ul><li>对ROI pooling进行改进,直接使用浮点坐标值将ROI划分,消除了量化操作引入的误差。</li><li>对ROI的每个grid的坐标也不再进行量化,而是在grid中均匀取4个点,通过公式2(插值)计算得到该点的特征值(该公式根据距离对周围的4个点进行加权计算,距离越近权重越大),然后对其求平均<br><img src="/2019/06/18/IOU-Net-ECCV2018/equal-2.png" alt="equal-2" title="equal-2"></li><li>优点:消除了量化操作带来的误差</li><li>缺点:没有考虑grid的大小差异 </li></ul></li><li>PrROI pooling<ul><li>使用积分的方式计算每个grid的特征值</li><li>ROI Align仅考虑该grid中4个插值点的均值,PrROI pooling是将grid中的值看做是连续的,通过对该grid中所有点求积分得到该grid所包围点的总和,最后除以面积。<br><img src="/2019/06/18/IOU-Net-ECCV2018/equal-3.png" alt="equal-3" title="equal-3"></li><li>优点:结果会更加精准</li></ul></li></ol><h2 id="result"><a href="#result" class="headerlink" title="result"></a>result</h2><ol><li>IOU-guided NMS<br><img src="/2019/06/18/IOU-Net-ECCV2018/result-iou-nms.png" alt="result-iou-nms" title="result-iou-nms"> <ul><li>当IOU threshold设定较高时,iou nms的效果会更加明显,因为threshold较高的时候需要bbox的坐标更加准确才会能更好的AP值。</li></ul></li><li>optimization-based bbox refinement<br><img src="/2019/06/18/IOU-Net-ECCV2018/result-refinement.png" alt="result-refinement" title="result-refinement"> <ul><li>refinement在各个模块上都有不错的提升。</li></ul></li></ol><h2 id="other-points"><a href="#other-points" class="headerlink" title="other points"></a>other points</h2><h3 id="NMS"><a href="#NMS" class="headerlink" title="NMS"></a>NMS</h3><ol><li>将所有的bbox按cls score降排序生成一个list</li><li>从top 1 bbox开始,计算该bbox与其他bbox的iou,若iou大于设定阈值则剔除。</li><li>再从top 2 bbox开始,计算该bbox与其他bbox的iou…</li><li>重复操作,直到list中所有元素都筛选完毕</li></ol><h3 id="soft-NMS"><a href="#soft-NMS" class="headerlink" title="soft NMS"></a>soft NMS</h3><ul><li>并不是真正的抑制,而是对要过滤掉的bbox乘以一个衰减系数。</li></ul><ol><li>将所有的bbox按cls score降排序生成一个list</li><li>从top 1 bbox开始,计算该bbox与其他bbox的iou,若iou大于设定阈值则<strong>将其乘以一个系数,使其缩小,之后在重新比较</strong>。</li><li>再从top 2 bbox开始,计算该bbox与其他bbox的iou…</li><li>重复操作,直到list中所有元素都筛选完毕。</li><li>对于遮挡,目标密集的情况效果很好,但是对于稀疏的场景,召回率可能会低于NMS。</li></ol><h3 id="想法"><a href="#想法" class="headerlink" title="想法"></a>想法</h3><ol><li>对GT做随机调整这种方法,感觉可以用</li></ol>]]></content>
<summary type="html">
<h1 id="IOU-Net"><a href="#IOU-Net" class="headerlink" title="IOU-Net"></a>IOU-Net</h1><ul>
<li>Acquisition of Localization Confidence for Accurate Object Detection</li>
<li>Paper : </li>
<li>Code : </li>
</ul>
<h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ol>
<li>目前大多数的tracker都是通过cls score来确定物体的位置,但是分类得分高并不意味着定位的准确度高,所以用cls score去做NMS并不是特别合理,因为会把定位精准但分类得分低的卡掉。所以作者提出了使用iou score作为排序指标。</li>
<li>Paper提出了IOU-guided NMS,PrROI(使用积分的方式计算ROI特征)。</li>
<li>很有分量的文章,受益匪浅。</li>
</ol>
</summary>
<category term="papers" scheme="http://yoursite.com/categories/papers/"/>
<category term="detection" scheme="http://yoursite.com/tags/detection/"/>
</entry>
<entry>
<title>Canny边缘检测</title>
<link href="http://yoursite.com/2019/05/22/canny%E8%BE%B9%E7%BC%98%E6%A3%80%E6%B5%8B/"/>
<id>http://yoursite.com/2019/05/22/canny边缘检测/</id>
<published>2019-05-22T02:31:46.000Z</published>
<updated>2019-08-25T07:30:47.255Z</updated>
<content type="html"><![CDATA[<h1 id="Canny边缘检测"><a href="#Canny边缘检测" class="headerlink" title="Canny边缘检测"></a>Canny边缘检测</h1><h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ul><li><strong>去噪声,算梯度,NMS,定边缘</strong></li></ul><ol><li>使用滤波器平滑图像,过滤噪声。</li><li>计算图像中每个像素点的梯度强度和方向。</li><li>使NMS消除边缘检测带来的杂乱影响。</li><li>使用双阈值法来确定边缘。</li></ol><a id="more"></a><h2 id="原理"><a href="#原理" class="headerlink" title="原理"></a>原理</h2><h3 id="滤波"><a href="#滤波" class="headerlink" title="滤波"></a>滤波</h3><ol><li>边缘检测的算法主要是基于图像强度的一阶和二阶导数,但<strong>导数通常对噪声很敏感</strong>,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能。</li><li>常见的滤波算法有:高斯滤波(采用离散化的高斯函数产生一组归一化的高斯核),然后基于高斯核函数 对图像灰度矩阵的每一点进行加权求和。<br>高斯核函数:$k(x, x’) = e^{-\frac{||x - x’||^2}{2\sigma^2}}$<br>sigma决定了高斯函数的宽度。高斯函数的性质:①旋转对称性;②每一个邻域像素值权值是随着该点到中心点的距离单调递减的。</li></ol><h3 id="增强"><a href="#增强" class="headerlink" title="增强"></a>增强</h3><ol><li>确定图像各点邻域强度的变化值,增强算法可以将图像灰度点邻域强度值有显著变化的点凸显出来。</li><li>编程中,可以通过<strong>梯度幅值</strong>来确定。</li></ol><h3 id="检测"><a href="#检测" class="headerlink" title="检测"></a>检测</h3><ol><li>经过增强的图像,往往邻域中有很多点的梯度值比较大,而在特定的应用中,这些点并不是我们要找的边缘点,所以应该采用某种方法来对这些点进行取舍。</li><li>实际工程中,常用的方法是通过<strong>阈值化</strong>方法来检测。</li></ol><h2 id="步骤"><a href="#步骤" class="headerlink" title="步骤"></a>步骤</h2><h3 id="对原始图像灰度化"><a href="#对原始图像灰度化" class="headerlink" title="对原始图像灰度化"></a>对原始图像灰度化</h3><ol><li>灰度化就是对图像各个通道的采样值进行加权平均。</li><li>Gray = (R+G+B)/3 或者 Gray = 0.299R+0.587G+0.114B</li></ol><h3 id="对图像进行高斯滤波"><a href="#对图像进行高斯滤波" class="headerlink" title="对图像进行高斯滤波"></a>对图像进行高斯滤波</h3><ol><li>两个一维高斯核进行两次加权实现,或者一个二维高斯核进行一次卷积实现。</li><li>$k(x, x’) = 1/{sqrt(2<em>pi)</em>sigma^2}*e^{-\frac{x^2+y^2}{2\sigma^2}}$</li><li>图像的高斯滤波,根据待滤波的像素点及其邻域点的灰度值按照一定的参数规则进行加权平均。这样可以有效滤去理想图像中叠加的高频噪声。</li></ol><h3 id="用一阶偏导的有限差分来计算梯度的幅值和方向"><a href="#用一阶偏导的有限差分来计算梯度的幅值和方向" class="headerlink" title="用一阶偏导的有限差分来计算梯度的幅值和方向"></a>用一阶偏导的有限差分来计算梯度的幅值和方向</h3><ol><li>Roberts算子,Sobel算子,Prewitt算子</li><li>canny用到的算子是sx = [-1,1,-1,1],sy = [1,-1,1,-1]</li></ol><h3 id="对梯度幅值进行非极大值抑制"><a href="#对梯度幅值进行非极大值抑制" class="headerlink" title="对梯度幅值进行非极大值抑制"></a>对梯度幅值进行非极大值抑制</h3><ol><li>图像梯度幅值矩阵的元素值越大,说明该点的梯度值越大,但不能说明该店就是边缘。</li><li>寻找像素点局部最大值,将非极大值所对应的灰度值置为0。已知该点周围领点的梯度,使用线性插值的方式计算该店梯度方向上的两个端点,判断其是否为极大值,若是,则将其灰度值置为128,否则,将其灰度值置为0.</li><li>这样一个检测结果还是包含了很多由噪声及其他原因造成的假边缘。因此还需要进一步的处理。</li></ol><h3 id="用双阈值算法检测和连接边缘"><a href="#用双阈值算法检测和连接边缘" class="headerlink" title="用双阈值算法检测和连接边缘"></a>用双阈值算法检测和连接边缘</h3><ol><li>设定阈值maxval和minval,<strong>梯度</strong>大于maxval的判定为边界,小于minval则舍弃,介于两者之间有边界相连则保留,否则舍弃。</li></ol><ul><li>注:minval/maxval越小,检测出来的边缘信息越多</li></ul>]]></content>
<summary type="html">
<h1 id="Canny边缘检测"><a href="#Canny边缘检测" class="headerlink" title="Canny边缘检测"></a>Canny边缘检测</h1><h2 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h2><ul>
<li><strong>去噪声,算梯度,NMS,定边缘</strong></li>
</ul>
<ol>
<li>使用滤波器平滑图像,过滤噪声。</li>
<li>计算图像中每个像素点的梯度强度和方向。</li>
<li>使NMS消除边缘检测带来的杂乱影响。</li>
<li>使用双阈值法来确定边缘。</li>
</ol>
</summary>
<category term="image-processing" scheme="http://yoursite.com/categories/image-processing/"/>
<category term="Canny" scheme="http://yoursite.com/tags/Canny/"/>
</entry>
<entry>
<title>Tracking-Summary</title>
<link href="http://yoursite.com/2019/05/19/Tracking-Summary/"/>
<id>http://yoursite.com/2019/05/19/Tracking-Summary/</id>
<published>2019-05-19T13:56:21.000Z</published>
<updated>2019-07-01T15:03:13.705Z</updated>
<content type="html"><![CDATA[<h1 id="Tracking-Summary"><a href="#Tracking-Summary" class="headerlink" title="Tracking-Summary"></a>Tracking-Summary</h1><ul><li>总结一下近年来比较经典的tracker,未完待续</li></ul><a id="more"></a><h2 id="综述"><a href="#综述" class="headerlink" title="综述"></a>综述</h2><h3 id="难点"><a href="#难点" class="headerlink" title="难点"></a>难点</h3><ul><li>外观的形变,光照变换,快速运动,运动模糊,背景相似干扰,遮挡,旋转,尺度变换,出视野<h3 id="数据集"><a href="#数据集" class="headerlink" title="数据集"></a>数据集</h3></li><li>OTB<br>OTB包含0.25的灰度序列</li><li>VOT<br>vot是彩色序列,且分辨率较高,精细标注,评价指标更好</li><li>差别 <ul><li>OTB有随机帧开始,或者矩形框随机干扰初始化去跑</li><li>VOT是用第一帧初始化,每次跟踪失败,5帧之后重新初始化<h3 id="类别"><a href="#类别" class="headerlink" title="类别"></a>类别</h3><h4 id="生成式模型"><a href="#生成式模型" class="headerlink" title="生成式模型"></a>生成式模型</h4></li></ul></li><li>对第一帧的目标区域建模,下一帧寻找与模型最相似的区域作为预测区域。</li><li><strong>方法</strong>:卡尔曼滤波,粒子滤波,mean-shift</li><li><strong>代表</strong>:ASMS,DAT(ASMS仅使用颜色特征,切且速度较快,125fps,在mean-shift框架下加入了尺度估计,加入了尺度不剧变,可能偏最大的两个先验的正则项,再加反向尺度一致性检查)。<h4 id="判别式模型"><a href="#判别式模型" class="headerlink" title="判别式模型"></a>判别式模型</h4></li><li>将当前帧的目标区域作为正样本,背景区域作为负样本来训练分类器。(相比较生成式模型使用了背景信息,效果会更好一些)</li><li><strong>方法</strong>:<br>传统的机器学习算法,相关滤波,深度学习</li><li><strong>代表</strong>:<br>传统--Struck,TLD(struck使用了haar+structured output SVM,跟踪中进行多尺度便利搜索来完成尺度自适应)<br>相关滤波--KCF,CSK,DAT<br>深度学习--MDNet,TCNN,SiamFC</li></ul><h3 id="传统机器学习方法"><a href="#传统机器学习方法" class="headerlink" title="传统机器学习方法"></a>传统机器学习方法</h3><h4 id="Struck-2012-20fps"><a href="#Struck-2012-20fps" class="headerlink" title="Struck - 2012 - 20fps"></a>Struck - 2012 - 20fps</h4><h3 id="相关滤波-CF"><a href="#相关滤波-CF" class="headerlink" title="相关滤波-CF"></a>相关滤波-CF</h3><p><strong>推荐</strong>:<a href="https://github.com/HEscop/TBCF" title="大佬维护的CF资源" target="_blank" rel="noopener">大佬维护的CF资源</a></p><h4 id="MOSSE-615fps"><a href="#MOSSE-615fps" class="headerlink" title="MOSSE - - 615fps"></a>MOSSE - - 615fps</h4><ul><li>单通道灰度特征的相关滤波</li></ul><h4 id="CSK-362fps"><a href="#CSK-362fps" class="headerlink" title="CSK - - 362fps"></a>CSK - - 362fps</h4><ul><li>岭回归,循环移位的近似密集采样,多通道HOG特征</li><li>CSK在MOSSE的基础上扩展了密集采样和kernel-trick</li></ul><h4 id="KCF-2014-172fps-hog"><a href="#KCF-2014-172fps-hog" class="headerlink" title="KCF - 2014 - 172fps(hog)"></a>KCF - 2014 - 172fps(hog)</h4><ul><li>在CSK基础上扩展了多通道梯度的HOG特征(梯度特征)</li></ul><h4 id="DCF-2014-292fps-hog"><a href="#DCF-2014-292fps-hog" class="headerlink" title="DCF - 2014 - 292fps(hog)"></a>DCF - 2014 - 292fps(hog)</h4><h4 id="CN-2014-152fps"><a href="#CN-2014-152fps" class="headerlink" title="CN - 2014 - 152fps"></a>CN - 2014 - 152fps</h4><ul><li>在CSK基础上扩展了多通道CN特征(颜色特征)<h4 id="相关知识点"><a href="#相关知识点" class="headerlink" title="相关知识点"></a>相关知识点</h4></li></ul><ol><li><a href="https://blog.csdn.net/zouxy09/article/details/7929348" title="参考" target="_blank" rel="noopener">HOG特征</a> </li></ol><ul><li>主要思想:梯度的统计信息,梯度主要存在于边缘的地方。</li><li>实现过程 <ul><li>灰度化(将图像看做一个x,y,z(灰度)的三维图像);</li><li>采用Gamma校正法对输入图像进行颜色空间的标准化(归一化);目的是调节图像的对比度,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰;</li><li>计算图像每个像素的梯度(包括大小和方向);主要是为了捕获轮廓信息,同时进一步弱化光照的干扰。计算图像梯度。计算图像横/纵坐标方向的梯度(就是该像素在横纵方向上的相邻像素去做差,常用的方法是用[-1,0,1]梯度算子对原图像做卷积运算得到x方向的梯度分量,同理,使用[-1,0,1]运算得到y方向上的梯度分量),并计算每个像素位置的梯度方向值。</li><li>将图像划分成小cells(例如6*6像素/cell);</li><li>统计每个cell的梯度直方图(不同梯度的个数),即可形成每个cell的descriptor;</li><li>将每几个cell组成一个block(例如3*3个cell/block),一个block内所有cell的特征descriptor串联起来便得到该block的HOG特征descriptor。</li><li>将图像image内的所有block的HOG特征descriptor串联起来就可以得到该image(你要检测的目标)的HOG特征descriptor了。这个就是最终的可供分类使用的特征向量了。</li></ul></li></ul><h3 id="深度学习-DL"><a href="#深度学习-DL" class="headerlink" title="深度学习-DL"></a>深度学习-DL</h3>]]></content>
<summary type="html">
<h1 id="Tracking-Summary"><a href="#Tracking-Summary" class="headerlink" title="Tracking-Summary"></a>Tracking-Summary</h1><ul>
<li>总结一下近年来比较经典的tracker,未完待续</li>
</ul>
</summary>
<category term="summary" scheme="http://yoursite.com/categories/summary/"/>
<category term="Tracking" scheme="http://yoursite.com/tags/Tracking/"/>
</entry>
<entry>
<title>GIOU-CVPR19-detection</title>
<link href="http://yoursite.com/2019/05/09/GIOU-CVPR19-detection/"/>
<id>http://yoursite.com/2019/05/09/GIOU-CVPR19-detection/</id>
<published>2019-05-09T13:56:21.000Z</published>
<updated>2019-05-10T16:15:30.486Z</updated>
<content type="html"><![CDATA[<h1 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h1><h2 id="主要思想"><a href="#主要思想" class="headerlink" title="主要思想"></a>主要思想</h2><ul><li>提出新的loss指标GIOU,使用评价标准作为loss,同时避免了IOU作为loss的缺点,有较好的提升。 <h2 id="效果"><a href="#效果" class="headerlink" title="效果"></a>效果</h2></li><li>在anchor较少的detection中有较为明显的提升(3-6个点) <h2 id="paper"><a href="#paper" class="headerlink" title="paper"></a>paper</h2><ul><li><a href="https://arxiv.org/pdf/1902.09630.pdf" target="_blank" rel="noopener">https://arxiv.org/pdf/1902.09630.pdf</a></li></ul></li></ul><a id="more"></a><h1 id="Motivation"><a href="#Motivation" class="headerlink" title="Motivation"></a>Motivation</h1><ol><li>大家都在模型,trick上下功夫,忽略了在L1/L2上的改进(L_n范数对物体的scale比较敏感)。</li><li>直接使用iou作为loss存在的问题。<ul><li>两个框没有相交,IOU=0,loss = 0,无法进行梯度的反向传播,无法学习训练。</li><li>IOU无法精确衡量重叠程度,且IOU的变化无法反馈定位框的重合度和方向。如下图。 <img src="/2019/05/09/GIOU-CVPR19-detection/IOU_vs_GIOU.PNG" alt="IOU vs GIOU" title="IOU vs GIOU"></li></ul></li></ol><h1 id="Method"><a href="#Method" class="headerlink" title="Method"></a>Method</h1><ol><li>设定gt为A,pred为B,先求包含A,B的最小闭包C。</li><li>计算C中去除A∪B后剩下的面积D,即D = C\(A∪B)。</li><li>计算IoU</li><li>GIoU = IoU - D/C </li><li>IOU ∈ [0,1],GIOU ∈ [-1,1]<br><img src="/2019/05/09/GIOU-CVPR19-detection/InkedGIoU_LI.jpg" alt="GIoU" title="GIoU"></li></ol><h1 id="Others"><a href="#Others" class="headerlink" title="Others"></a>Others</h1><h2 id="obtains"><a href="#obtains" class="headerlink" title="obtains"></a>obtains</h2><ul><li>起初自己也想过使用iou作为loss,但是看到网上说iou作为loss可能存在梯度无法回传问题时,没有多思考去寻找解决办法。所以,遇到问题深究原因,考虑有没有可替代的近似方案。</li><li>IOU既然对于尺度不敏感,L_n对尺度敏感,那两者就可以做loss的结合。</li></ul>]]></content>
<summary type="html">
<h1 id="Overview"><a href="#Overview" class="headerlink" title="Overview"></a>Overview</h1><h2 id="主要思想"><a href="#主要思想" class="headerlink" title="主要思想"></a>主要思想</h2><ul>
<li>提出新的loss指标GIOU,使用评价标准作为loss,同时避免了IOU作为loss的缺点,有较好的提升。 <h2 id="效果"><a href="#效果" class="headerlink" title="效果"></a>效果</h2></li>
<li>在anchor较少的detection中有较为明显的提升(3-6个点) <h2 id="paper"><a href="#paper" class="headerlink" title="paper"></a>paper</h2><ul>
<li><a href="https://arxiv.org/pdf/1902.09630.pdf" target="_blank" rel="noopener">https://arxiv.org/pdf/1902.09630.pdf</a></li>
</ul>
</li>
</ul>
</summary>
<category term="papers" scheme="http://yoursite.com/categories/papers/"/>
<category term="detection" scheme="http://yoursite.com/tags/detection/"/>
</entry>
</feed>