@@ -138,19 +138,29 @@ <h1 class="title">esvmTestCPP</h1>
138
138
</ p >
139
139
140
140
< div id ="outline-container-1 " class ="outline-2 ">
141
- < h2 id ="sec-1 "> < span class ="section-number-2 "> 1</ span > Introduction </ h2 >
141
+ < h2 id ="sec-1 "> < span class ="section-number-2 "> 1</ span > Tech Report </ h2 >
142
142
< div class ="outline-text-2 " id ="text-1 ">
143
143
144
-
145
- < p >
146
- < code > esvmTestCPP </ code > is an implementation of the MATLAB Exemplar
147
- SVM < sup > < a class =" footref " name =" fnr.1 " href =" #fn.1 " > 1 </ a > </ sup > testing pipeline
148
- written in < code > C++ </ code > . Computationally intensive parts were written using
149
- ISPC < sup > < a class =" footref " name =" fnr.2 " href =" #fn.2 " > 2 </ a > </ sup > for SIMD performance.
144
+ < p > The details and aim of this project can be found in our tech
145
+ report. Please cite it if you use this code for any purpose. The
146
+ code can be downloaded freely from our < a href =" https://github.com/imisra/esvmTestCPP " > github project page </ a > .
147
+ </ p >
148
+ < p >
149
+ Ishan Misra, Abhinav Shrivastava, Martial Hebert - " < i > HOG and Spatial Convolution on SIMD Architecture </ i > " CMU Tech Report XXXX (2013)
150
150
</ p >
151
+ </ div >
152
+
153
+ </ div >
154
+
155
+ < div id ="outline-container-2 " class ="outline-2 ">
156
+ < h2 id ="sec-2 "> < span class ="section-number-2 "> 2</ span > Introduction</ h2 >
157
+ < div class ="outline-text-2 " id ="text-2 ">
158
+
159
+
151
160
< p >
152
- If you use this code, please cite our tech-report < sup > < a class ="footref " name ="fnr.3 " href ="#fn.3 "> 3</ a > </ sup > . The code
153
- can be downloaded freely from github < sup > < a class ="footref " name ="fnr.4 " href ="#fn.4 "> 4</ a > </ sup > .
161
+ < code > esvmTestCPP</ code > is an implementation of the MATLAB < a href ="https://github.com/abhi2610/exemplarsvm "> Exemplar-SVM</ a >
162
+ testing pipeline written in < code > C++</ code > . Computationally intensive parts
163
+ were written using < a href ="http://ispc.github.com/ "> ISPC</ a > for SIMD performance.
154
164
</ p >
155
165
< p >
156
166
One may also use this code just for computing HOG features or
@@ -172,9 +182,9 @@ <h2 id="sec-1"><span class="section-number-2">1</span> Introduction</h2>
172
182
173
183
</ div >
174
184
175
- < div id ="outline-container-2 " class ="outline-2 ">
176
- < h2 id ="sec-2 "> < span class ="section-number-2 "> 2 </ span > Requirements</ h2 >
177
- < div class ="outline-text-2 " id ="text-2 ">
185
+ < div id ="outline-container-3 " class ="outline-2 ">
186
+ < h2 id ="sec-3 "> < span class ="section-number-2 "> 3 </ span > Requirements</ h2 >
187
+ < div class ="outline-text-2 " id ="text-3 ">
178
188
179
189
180
190
< p >
@@ -201,9 +211,9 @@ <h2 id="sec-2"><span class="section-number-2">2</span> Requirements</h2>
201
211
202
212
</ div >
203
213
204
- < div id ="outline-container-3 " class ="outline-2 ">
205
- < h2 id ="sec-3 "> < span class ="section-number-2 "> 3 </ span > Setup</ h2 >
206
- < div class ="outline-text-2 " id ="text-3 ">
214
+ < div id ="outline-container-4 " class ="outline-2 ">
215
+ < h2 id ="sec-4 "> < span class ="section-number-2 "> 4 </ span > Setup</ h2 >
216
+ < div class ="outline-text-2 " id ="text-4 ">
207
217
208
218
209
219
< ol >
@@ -234,9 +244,9 @@ <h2 id="sec-3"><span class="section-number-2">3</span> Setup</h2>
234
244
235
245
</ div >
236
246
237
- < div id ="outline-container-4 " class ="outline-2 ">
238
- < h2 id ="sec-4 "> < span class ="section-number-2 "> 4 </ span > Directory structure</ h2 >
239
- < div class ="outline-text-2 " id ="text-4 ">
247
+ < div id ="outline-container-5 " class ="outline-2 ">
248
+ < h2 id ="sec-5 "> < span class ="section-number-2 "> 5 </ span > Directory structure</ h2 >
249
+ < div class ="outline-text-2 " id ="text-5 ">
240
250
241
251
242
252
@@ -260,16 +270,16 @@ <h2 id="sec-4"><span class="section-number-2">4</span> Directory structure</h2>
260
270
261
271
</ div >
262
272
263
- < div id ="outline-container-5 " class ="outline-2 ">
264
- < h2 id ="sec-5 "> < span class ="section-number-2 "> 5 </ span > Getting Started</ h2 >
265
- < div class ="outline-text-2 " id ="text-5 ">
273
+ < div id ="outline-container-6 " class ="outline-2 ">
274
+ < h2 id ="sec-6 "> < span class ="section-number-2 "> 6 </ span > Getting Started</ h2 >
275
+ < div class ="outline-text-2 " id ="text-6 ">
266
276
267
277
268
278
</ div >
269
279
270
- < div id ="outline-container-5 -1 " class ="outline-3 ">
271
- < h3 id ="sec-5 -1 "> < span class ="section-number-3 "> 5 .1</ span > Input format for Exemplars</ h3 >
272
- < div class ="outline-text-3 " id ="text-5 -1 ">
280
+ < div id ="outline-container-6 -1 " class ="outline-3 ">
281
+ < h3 id ="sec-6 -1 "> < span class ="section-number-3 "> 6 .1</ span > Input format for Exemplars</ h3 >
282
+ < div class ="outline-text-3 " id ="text-6 -1 ">
273
283
274
284
< p > Suppose you have \(C\) classes, and for each class you have \(N_{i}\)
275
285
(\(i=1\ldots C\)) exemplars. The input format as of this version is
@@ -289,9 +299,9 @@ <h3 id="sec-5-1"><span class="section-number-3">5.1</span> Input format for Exem
289
299
290
300
</ div >
291
301
292
- < div id ="outline-container-5 -1-1 " class ="outline-4 ">
293
- < h4 id ="sec-5 -1-1 "> < span class ="section-number-4 "> 5 .1.1</ span > Generating the exemplar data files</ h4 >
294
- < div class ="outline-text-4 " id ="text-5 -1-1 ">
302
+ < div id ="outline-container-6 -1-1 " class ="outline-4 ">
303
+ < h4 id ="sec-6 -1-1 "> < span class ="section-number-4 "> 6 .1.1</ span > Generating the exemplar data files</ h4 >
304
+ < div class ="outline-text-4 " id ="text-6 -1-1 ">
295
305
296
306
< p > The exemplar data is written in ASCII files. These files can be
297
307
generated by using the < code > writeHogTxt</ code > function in C++. It is also
@@ -310,9 +320,9 @@ <h4 id="sec-5-1-1"><span class="section-number-4">5.1.1</span> Generating the ex
310
320
311
321
</ div >
312
322
313
- < div id ="outline-container-5 -2 " class ="outline-3 ">
314
- < h3 id ="sec-5 -2 "> < span class ="section-number-3 "> 5 .2</ span > Parameters</ h3 >
315
- < div class ="outline-text-3 " id ="text-5 -2 ">
323
+ < div id ="outline-container-6 -2 " class ="outline-3 ">
324
+ < h3 id ="sec-6 -2 "> < span class ="section-number-3 "> 6 .2</ span > Parameters</ h3 >
325
+ < div class ="outline-text-3 " id ="text-6 -2 ">
316
326
317
327
< p > The parameters for exemplar testing can be put together in the
318
328
< code > struct esvmParameters</ code > . A user can get default parameters by
@@ -367,9 +377,9 @@ <h3 id="sec-5-2"><span class="section-number-3">5.2</span> Parameters</h3>
367
377
368
378
</ div >
369
379
370
- < div id ="outline-container-5 -3 " class ="outline-3 ">
371
- < h3 id ="sec-5 -3 "> < span class ="section-number-3 "> 5 .3</ span > Bounding box information</ h3 >
372
- < div class ="outline-text-3 " id ="text-5 -3 ">
380
+ < div id ="outline-container-6 -3 " class ="outline-3 ">
381
+ < h3 id ="sec-6 -3 "> < span class ="section-number-3 "> 6 .3</ span > Bounding box information</ h3 >
382
+ < div class ="outline-text-3 " id ="text-6 -3 ">
373
383
374
384
< p > The bounding boxes are stored in < code > struct esvmBoxes</ code > . It internally
375
385
stores them in a < code > float</ code > array. It is recommended to use
@@ -381,9 +391,9 @@ <h3 id="sec-5-3"><span class="section-number-3">5.3</span> Bounding box informat
381
391
382
392
</ div >
383
393
384
- < div id ="outline-container-5 -4 " class ="outline-3 ">
385
- < h3 id ="sec-5 -4 "> < span class ="section-number-3 "> 5 .4</ span > Precision issues</ h3 >
386
- < div class ="outline-text-3 " id ="text-5 -4 ">
394
+ < div id ="outline-container-6 -4 " class ="outline-3 ">
395
+ < h3 id ="sec-6 -4 "> < span class ="section-number-3 "> 6 .4</ span > Precision issues</ h3 >
396
+ < div class ="outline-text-3 " id ="text-6 -4 ">
387
397
388
398
< p > Detection precision depends on which image resize function is
389
399
used. As far as we can tell, it is best to use the same resize function
@@ -401,9 +411,9 @@ <h3 id="sec-5-4"><span class="section-number-3">5.4</span> Precision issues</h3>
401
411
402
412
</ div >
403
413
404
- < div id ="outline-container-5 -5 " class ="outline-3 ">
405
- < h3 id ="sec-5 -5 "> < span class ="section-number-3 "> 5 .5</ span > Performance characteristics</ h3 >
406
- < div class ="outline-text-3 " id ="text-5 -5 ">
414
+ < div id ="outline-container-6 -5 " class ="outline-3 ">
415
+ < h3 id ="sec-6 -5 "> < span class ="section-number-3 "> 6 .5</ span > Performance characteristics</ h3 >
416
+ < div class ="outline-text-3 " id ="text-6 -5 ">
407
417
408
418
< p > Read the Tech-Report for more details on how the performance
409
419
compares to the MATLAB testing pipeline.
@@ -412,16 +422,16 @@ <h3 id="sec-5-5"><span class="section-number-3">5.5</span> Performance character
412
422
413
423
</ div >
414
424
415
- < div id ="outline-container-6 " class ="outline-2 ">
416
- < h2 id ="sec-6 "> < span class ="section-number-2 "> 6 </ span > FAQs</ h2 >
417
- < div class ="outline-text-2 " id ="text-6 ">
425
+ < div id ="outline-container-7 " class ="outline-2 ">
426
+ < h2 id ="sec-7 "> < span class ="section-number-2 "> 7 </ span > FAQs</ h2 >
427
+ < div class ="outline-text-2 " id ="text-7 ">
418
428
419
429
420
430
</ div >
421
431
422
- < div id ="outline-container-6 -1 " class ="outline-3 ">
423
- < h3 id ="sec-6 -1 "> < span class ="section-number-3 "> 6 .1</ span > You keep mentioning < code > C++</ code > , but all of your programming is < code > C</ code > style!</ h3 >
424
- < div class ="outline-text-3 " id ="text-6 -1 ">
432
+ < div id ="outline-container-7 -1 " class ="outline-3 ">
433
+ < h3 id ="sec-7 -1 "> < span class ="section-number-3 "> 7 .1</ span > You keep mentioning < code > C++</ code > , but all of your programming is < code > C</ code > style!</ h3 >
434
+ < div class ="outline-text-3 " id ="text-7 -1 ">
425
435
426
436
< p > Correct. I mention < code > C++</ code > because I did use a few < code > STL</ code >
427
437
libraries. There were a few headaches using < code > C++</ code >
@@ -431,29 +441,29 @@ <h3 id="sec-6-1"><span class="section-number-3">6.1</span> You keep mentioning <
431
441
432
442
</ div >
433
443
434
- < div id ="outline-container-6 -2 " class ="outline-3 ">
435
- < h3 id ="sec-6 -2 "> < span class ="section-number-3 "> 6 .2</ span > Can I use this for HOG computation only ?</ h3 >
436
- < div class ="outline-text-3 " id ="text-6 -2 ">
444
+ < div id ="outline-container-7 -2 " class ="outline-3 ">
445
+ < h3 id ="sec-7 -2 "> < span class ="section-number-3 "> 7 .2</ span > Can I use this for HOG computation only ?</ h3 >
446
+ < div class ="outline-text-3 " id ="text-7 -2 ">
437
447
438
448
< p > Yes. Check out examples (< code > demo01</ code > , < code > demo02</ code > ) in the < code > demo</ code > directory.
439
449
</ p >
440
450
</ div >
441
451
442
452
</ div >
443
453
444
- < div id ="outline-container-6 -3 " class ="outline-3 ">
445
- < h3 id ="sec-6 -3 "> < span class ="section-number-3 "> 6 .3</ span > Can I use this for Convolution computation only ?</ h3 >
446
- < div class ="outline-text-3 " id ="text-6 -3 ">
454
+ < div id ="outline-container-7 -3 " class ="outline-3 ">
455
+ < h3 id ="sec-7 -3 "> < span class ="section-number-3 "> 7 .3</ span > Can I use this for Convolution computation only ?</ h3 >
456
+ < div class ="outline-text-3 " id ="text-7 -3 ">
447
457
448
458
< p > Yes. Check out examples (< code > demo00</ code > ) in the < code > demos</ code > directory.
449
459
</ p >
450
460
</ div >
451
461
452
462
</ div >
453
463
454
- < div id ="outline-container-6 -4 " class ="outline-3 ">
455
- < h3 id ="sec-6 -4 "> < span class ="section-number-3 "> 6 .4</ span > What HOG feature do you compute ?</ h3 >
456
- < div class ="outline-text-3 " id ="text-6 -4 ">
464
+ < div id ="outline-container-7 -4 " class ="outline-3 ">
465
+ < h3 id ="sec-7 -4 "> < span class ="section-number-3 "> 7 .4</ span > What HOG feature do you compute ?</ h3 >
466
+ < div class ="outline-text-3 " id ="text-7 -4 ">
457
467
458
468
< p > It is based on the paper
459
469
</ p > < ul >
@@ -479,9 +489,9 @@ <h3 id="sec-6-4"><span class="section-number-3">6.4</span> What HOG feature do y
479
489
480
490
</ div >
481
491
482
- < div id ="outline-container-6 -5 " class ="outline-3 ">
483
- < h3 id ="sec-6 -5 "> < span class ="section-number-3 "> 6 .5</ span > Is this library thread-safe ?</ h3 >
484
- < div class ="outline-text-3 " id ="text-6 -5 ">
492
+ < div id ="outline-container-7 -5 " class ="outline-3 ">
493
+ < h3 id ="sec-7 -5 "> < span class ="section-number-3 "> 7 .5</ span > Is this library thread-safe ?</ h3 >
494
+ < div class ="outline-text-3 " id ="text-7 -5 ">
485
495
486
496
< p > Unfortunately, no. The reason has to do with the ISPC task
487
497
implementation. A request for changing this has been filed (
@@ -492,16 +502,16 @@ <h3 id="sec-6-5"><span class="section-number-3">6.5</span> Is this library threa
492
502
493
503
</ div >
494
504
495
- < div id ="outline-container-7 " class ="outline-2 ">
496
- < h2 id ="sec-7 "> < span class ="section-number-2 "> 7 </ span > Code TODOs</ h2 >
497
- < div class ="outline-text-2 " id ="text-7 ">
505
+ < div id ="outline-container-8 " class ="outline-2 ">
506
+ < h2 id ="sec-8 "> < span class ="section-number-2 "> 8 </ span > Code TODOs</ h2 >
507
+ < div class ="outline-text-2 " id ="text-8 ">
498
508
499
509
500
510
</ div >
501
511
502
- < div id ="outline-container-7 -1 " class ="outline-3 ">
503
- < h3 id ="sec-7 -1 "> < span class ="section-number-3 "> 7 .1</ span > High priority</ h3 >
504
- < div class ="outline-text-3 " id ="text-7 -1 ">
512
+ < div id ="outline-container-8 -1 " class ="outline-3 ">
513
+ < h3 id ="sec-8 -1 "> < span class ="section-number-3 "> 8 .1</ span > High priority</ h3 >
514
+ < div class ="outline-text-3 " id ="text-8 -1 ">
505
515
506
516
< ul >
507
517
< li > Better I/O format for Exemplars. This will involve changing the
@@ -514,39 +524,20 @@ <h3 id="sec-7-1"><span class="section-number-3">7.1</span> High priority</h3>
514
524
515
525
</ div >
516
526
517
- < div id ="outline-container-7 -2 " class ="outline-3 ">
518
- < h3 id ="sec-7 -2 "> < span class ="section-number-3 "> 7 .2</ span > Low priority</ h3 >
519
- < div class ="outline-text-3 " id ="text-7 -2 ">
527
+ < div id ="outline-container-8 -2 " class ="outline-3 ">
528
+ < h3 id ="sec-8 -2 "> < span class ="section-number-3 "> 8 .2</ span > Low priority</ h3 >
529
+ < div class ="outline-text-3 " id ="text-8 -2 ">
520
530
521
531
< ul >
522
532
< li > Fix dependency issues on GCC and Linux.
523
533
</ li >
524
534
< li > 32 bit binary for ISPC ?
525
535
</ li >
526
- < li > < code > paramters ->flipImage</ code > to be implemented.
536
+ < li > < code > parameters ->flipImage</ code > to be implemented.
527
537
</ li >
528
538
</ ul >
529
539
530
-
531
- < div id ="footnotes ">
532
- < h2 class ="footnotes "> Footnotes: </ h2 >
533
- < div id ="text-footnotes ">
534
- < p class ="footnote "> < sup > < a class ="footnum " name ="fn.1 " href ="#fnr.1 "> 1</ a > </ sup > < a href ="https://github.com/abhi2610/exemplarsvm "> https://github.com/abhi2610/exemplarsvm</ a >
535
- </ p >
536
-
537
- < p class ="footnote "> < sup > < a class ="footnum " name ="fn.2 " href ="#fnr.2 "> 2</ a > </ sup > < a href ="http://ispc.github.com/ "> http://ispc.github.com/</ a >
538
- </ p >
539
-
540
- < p class ="footnote "> < sup > < a class ="footnum " name ="fn.3 " href ="#fnr.3 "> 3</ a > </ sup > HOG and
541
- Spatial Convolution on SIMD Architecture - Ishan Misra, Abhinav
542
- Shrivastava, Martial Hebert. CMU Tech Report XXXX (2013)
543
- </ p >
544
-
545
- < p class ="footnote "> < sup > < a class ="footnum " name ="fn.4 " href ="#fnr.4 "> 4</ a > </ sup > < a href ="https://github.com/imisra/esvmTestCPP "> https://github.com/imisra/esvmTestCPP</ a >
546
- </ p > </ div >
547
540
</ div >
548
- </ div >
549
-
550
541
</ div >
551
542
</ div >
552
543
</ div >
0 commit comments