File size: 141,464 Bytes
64b642e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "61092509",
   "metadata": {
    "tags": []
   },
   "source": [
    "# GSI Technology Video Search Demo - Evaluation Notebook\n",
    "\n",
    "This notebook will perform a deep analysis of the performance of a text-to-video search application. <br>\n",
    "It will perform an elaborate evaluation over two test sets and several trained models and search methods, reviewing trade-offs between accuracy and fast similarity search. <br>\n",
    "\n",
    "## Model Architecture\n",
    "\n",
    "To extract feature vectors from raw video data will use the **CLIP4Clip** model architecture - <br>\n",
    "A CLIP-based video retrieval method, based on [this paper](https://arxiv.org/pdf/2104.08860.pdf) and [code](https://github.com/ArrowLuo/CLIP4Clip) by Luo et al, 2021.\n",
    "\n",
    "A figure of the CLIP4Clip framework:\n",
    "    "
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "f269a897",
   "metadata": {},
   "source": [
    "<div>\n",
    "<img src=\"https://github.com/ArrowLuo/CLIP4Clip/blob/master/CLIP4Clip.png?raw=true\" width=\"1000\"/>\n",
    "</div>"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "3cd0118d-0832-40fa-8c72-220b21ab0e29",
   "metadata": {},
   "source": [
    "## Datasets"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "15c4da4c-e6f0-4def-a368-71a9194c9ad1",
   "metadata": {},
   "source": [
    "For the purpose of this analysis we will use:\n",
    "1) The [**MSR-VTT**](https://openaccess.thecvf.com/content_cvpr_2016/papers/Xu_MSR-VTT_A_Large_CVPR_2016_paper.pdf) dataset (Xu et al., 2016):<br>\n",
    "    *A dataset composed of 10,000 videos, each with a length that ranges from 10 to 32 seconds and 200,000 captions.* <br>\n",
    "    MSR-VTT is a popular video benchmark used in many papers. We will use it for an initial evaluation and sanity test, by comparing acheived accuracy to the original [CLIP4Clip paper](https://arxiv.org/pdf/2104.08860.pdf). <br><br>\n",
    "But the MSR-VTT test set includes only 1000 video samples. <br>\n",
    "For a real-world demo, exhibiting search on a large and versatile database, we need a much larger database. <br>\n",
    "To evaluate search in a large-scal database we will use: <br><br>\n",
    "2) The [**Webvid-2M**](https://m-bain.github.io/webvid-dataset/) dataset (Bain et al., 2021): <br>\n",
    "    *A large-scale dataset of short videos with textual descriptions sourced from stock footage sites. The videos are diverse and rich in their content.* <br>\n",
    "    The majority of this dataset is originally designed for training, but to demonstrate and evaluate a large-scale search - we will use a different data split than the one defined by the [webvid team](https://arxiv.org/pdf/2104.00650.pdf), and direct ~1.5M videos for test and train on no more than 150K video samples.\n",
    "    \n",
    "<br>\n",
    "Now let us begin:\n",
    "\n",
    "    "
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "2570bb12",
   "metadata": {
    "tags": []
   },
   "source": [
    "## Requirements\n",
    "\n",
    "### Environment & Dependencies\n",
    "\n",
    "For your conveneinence we have included a dockerfile consisting of all the requirements to build and run a GPU + pytorch Nvidia image container for this project. <br>\n",
    "If you haven't had experience with docker containers, there are many good tuturials available online (like [this](https://blog.roboflow.com/nvidia-docker-vscode-pytorch/) one). <br><br>\n",
    "\n",
    "Alternatively, you can install the requirements included using `pip install -r requirements.txt` <br>\n",
    "For the purposes of this demo we used **pytorch** *version 1.7.1* and a *GeForce RTX 2080* **GPU**.<br> \n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "365a222e",
   "metadata": {
    "tags": []
   },
   "source": [
    "## Imports"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "d502891b",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "import random, os\n",
    "import numpy as np"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "f3a2bf46-11d4-4e2d-ae0a-53d4321ba99d",
   "metadata": {
    "tags": []
   },
   "source": [
    "## MSR-VTT\n",
    "\n",
    "We will start with the MSR-VTT test-set. <br><br>\n",
    "\n",
    "In this evaluation notebook we will use pre-computed features for convenience.<br> \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "1c4bcac7-c18e-4b73-9825-3a6c4aaa1385",
   "metadata": {},
   "outputs": [],
   "source": [
    "DATA_PATH = './Notebooks/features'"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "1a90364c-82d1-4c2b-ba99-b1a92a0b0659",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Evaluation:\n",
    "Text-to-Video accuracy can be measured by evaluating the similarity rank of the paired video-embedding to each text-embedding within the **text-video pairs** database. <br>\n",
    "In other words, we embed all the videos and their matching texts in the test set seperately, compute the similarity between each text and the entire video database, and compute recall by evaluating the rank of the matching video within the search to its paired text. <br>\n",
    "e.g. recall R@10 evaluates the success rate of finding the video paired to the queried text within the 10 closest nearest neighbors from the entire database. <br> <br>\n",
    "We will define the below helper fucntion that computes and prints different metrics for evaluation based on the indexes ranked by similarity:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "fec43e16-37d4-4f91-a423-8cbace07171e",
   "metadata": {
    "scrolled": true,
    "tags": []
   },
   "outputs": [],
   "source": [
    "def compute_metrics(nn_idx):\n",
    "    y = np.eye(nn_idx.shape[0])    \n",
    "    ind = np.take_along_axis(y, nn_idx, axis=1)\n",
    "    ind = np.where(ind == 1)[1]\n",
    "    metrics = {}\n",
    "    metrics['R1'] = float(np.sum(ind == 0)) * 100 / len(ind)\n",
    "    metrics['R5'] = float(np.sum(ind < 5)) * 100 / len(ind)\n",
    "    metrics['R10'] = float(np.sum(ind < 10)) * 100 / len(ind)\n",
    "    metrics['MR'] = np.median(ind) + 1\n",
    "    metrics[\"MedianR\"] = metrics['MR']\n",
    "    metrics[\"MeanR\"] = np.mean(ind) + 1    \n",
    "    \n",
    "    print('shape-similarity-matrix: {}'.format(nn_idx.shape))\n",
    "    print(\"Text-to-Video: >>>  R@1: {:.1f} - R@5: {:.1f} - R@10: {:.1f} - Median R: {:.1f} - Mean R: {:.1f}\".\n",
    "        format(metrics['R1'], metrics['R5'], metrics['R10'], metrics['MR'], metrics['MeanR']))\n",
    "\n",
    "    return metrics"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "33dfee28-03e7-4a75-be46-501613e483e1",
   "metadata": {
    "tags": []
   },
   "source": [
    "For more information on computing accuracy refer to the authors [paper](https://arxiv.org/pdf/2104.08860.pdf) or [code](https://github.com/ArrowLuo/CLIP4Clip/blob/c19b819be0ef83284c05898d1596eb5acd213686/metrics.py). <br><br>\n",
    "So let's verify performance on the test set: <br>\n",
    "For convenience, we have precomputed and saved the embeddings for each model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "929c3792-f5f0-44a9-98cc-1ae66dbf03d5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "shape-similarity-matrix: (1000, 1000)\n",
      "Text-to-Video: >>>  R@1: 30.9 - R@5: 54.2 - R@10: 63.3 - Median R: 4.0 - Mean R: 38.8\n"
     ]
    }
   ],
   "source": [
    "visual_embeddings = np.load(os.path.join(DATA_PATH, 'MSRVTT_test_visual_vectors_Cl4Cl_zeroshot.npy'))\n",
    "sequence_embeddings = np.load(os.path.join(DATA_PATH, 'MSRVTT_test_textual_vectors_Cl4Cl_zeroshot.npy'))\n",
    "sim_matrix = np.matmul(sequence_embeddings, visual_embeddings.transpose())\n",
    "nn_idx = np.argsort(-sim_matrix, axis=1)\n",
    "\n",
    "metrics = compute_metrics(nn_idx)\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "ad9ae2bf",
   "metadata": {},
   "source": [
    "These results should be in sync with CLIP4Clip zero-shot, free parameter similarity Calculator, as reported by the paper for Text-to-Video search : <br>\n",
    "| R@1 | R@5 | R@10 | Median R |\n",
    "| --- | --- | --- | --- |\n",
    "| 31.2% | 53.7% | 64.2% | 4 | \n",
    "\n",
    "\n",
    "\\* Note that non-deterministic GPU behavior during embedding creation (as [reported by the authors](https://github.com/openai/CLIP/issues/114)) may lead to a variance of around ~1% from the reported accuracy.\n",
    "\n",
    "But, of course, to achieve higher accuracy, the model sould be fine tuned on video data, as seen in the table above. <br>\n",
    "For this we have trained the model on the msr-vtt training set, as done by the paper authors, using the mean-p architecture, to achieve:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "4b692162-1bb4-4fbc-ad40-68af41543697",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "shape-similarity-matrix: (1000, 1000)\n",
      "Text-to-Video: >>>  R@1: 43.4 - R@5: 70.0 - R@10: 80.9 - Median R: 2.0 - Mean R: 15.7\n"
     ]
    }
   ],
   "source": [
    "visual_embeddings = np.load(os.path.join(DATA_PATH, 'MSRVTT_test_visual_vectors_Cl4Cl_msrvtt9k.npy'))\n",
    "sequence_embeddings = np.load(os.path.join(DATA_PATH, 'MSRVTT_test_textual_vectors_Cl4Cl_msrvtt9k.npy'))\n",
    "sim_matrix = np.matmul(sequence_embeddings, visual_embeddings.transpose())\n",
    "nn_idx = np.argsort(-sim_matrix, axis=1)\n",
    "\n",
    "metrics = compute_metrics(nn_idx)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "3819b5c1-c50d-4d87-9b09-72ca40c761ba",
   "metadata": {},
   "source": [
    "And indeed, the results are similar to those reported in the paper:\n",
    "\n",
    "| R@1 | R@5 | R@10 | Median R | Mean R |\n",
    "| --- | --- | --- | --- | --- |\n",
    "| 43.1% | 70.4% | 80.8% | 2 | 16.2 |\n",
    "\n",
    "And as you can see, the trained model produces much higher results, with an increase of 12% - 17% in recall!\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "41ef01e8-72f2-4c23-aa95-bddbfa1bcc4a",
   "metadata": {
    "tags": []
   },
   "source": [
    "## WebVid\n",
    "\n",
    "So for the small and poplular msr-vtt dataset, this works perfectly. But, what happens in a real-world scenario of a much larger databases?\n",
    "Let us explore this case with a portion of the large webvid-2M training set."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "101c3e1b-279d-4afc-beeb-c83b1361dfa7",
   "metadata": {
    "tags": []
   },
   "source": [
    "For the purposes of the demo, we will as database the first ~1.5M video clips of the webvid training dataset. <br>\n",
    "To evaluate the best model for this demo, we will test all options on the last 10K video clips from our database. <br>\n",
    "\n",
    "So first, let's evaluate the zero shot model (each evaluation will take a few seconds here):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "b417a492-4082-4eb7-b1a3-e3f87415ef1e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "shape-similarity-matrix: (10000, 10000)\n",
      "Text-to-Video: >>>  R@1: 37.2 - R@5: 62.1 - R@10: 71.2 - Median R: 3.0 - Mean R: 42.2\n"
     ]
    }
   ],
   "source": [
    "visual_embeddings = np.load(os.path.join(DATA_PATH, 'WEBVID_test10K_visual_vectors_Cl4Cl_zeroshot.npy'))\n",
    "sequence_embeddings = np.load(os.path.join(DATA_PATH, 'WEBVID_test10K_textual_vectors_Cl4Cl_zeroshot.npy'))\n",
    "sim_matrix = np.matmul(sequence_embeddings, visual_embeddings.transpose())\n",
    "nn_idx = np.argsort(-sim_matrix, axis=1)\n",
    "\n",
    "zs_metrics = compute_metrics(nn_idx)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "fa6f1c74-acf4-485e-a86e-553355704ed9",
   "metadata": {
    "tags": []
   },
   "source": [
    "The recall is not that great. <br>\n",
    "What if we will use the model trained on the msr-vtt training set?:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "93a4c1e9-522b-4b8c-89e3-4e7fd2492580",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "shape-similarity-matrix: (10000, 10000)\n",
      "Text-to-Video: >>>  R@1: 38.4 - R@5: 62.9 - R@10: 72.0 - Median R: 3.0 - Mean R: 39.3\n"
     ]
    }
   ],
   "source": [
    "visual_embeddings = np.load(os.path.join(DATA_PATH, 'WEBVID_test10K_visual_vectors_Cl4Cl_msrvtt_train.npy'))\n",
    "sequence_embeddings = np.load(os.path.join(DATA_PATH, 'WEBVID_test10K_textual_vectors_Cl4Cl_msrvtt_train.npy'))\n",
    "sim_matrix = np.matmul(sequence_embeddings, visual_embeddings.transpose())\n",
    "nn_idx = np.argsort(-sim_matrix, axis=1)\n",
    "\n",
    "msrweights_metrics = compute_metrics(nn_idx)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "ba01c774-2c30-440b-9c6e-9d3d0ef0601b",
   "metadata": {},
   "source": [
    "There's a *slight* improvement... <br>\n",
    "But the msr-vtt trianing set is comprised of 9000 short videos cut into ~150K 12-second clips. Perhaps it is not versatile enough. <br>\n",
    "What if we take a portion of the webvid dataset (a highly versatile dataset of web-scraped short clips) and direct it to training? <br>\n",
    "In the next evaluation, we've trained the model on the first 150K text-video pairs from the webvid dataset, and tested on last 10K text-video pairs:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "088add30-6eea-4177-953c-203a9fe18b01",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "shape-similarity-matrix: (10000, 10000)\n",
      "Text-to-Video: >>>  R@1: 50.7 - R@5: 77.3 - R@10: 85.0 - Median R: 1.0 - Mean R: 15.0\n"
     ]
    }
   ],
   "source": [
    "visual_embeddings = np.load(os.path.join(DATA_PATH, 'WEBVID_test10K_visual_vectors_Cl4Cl_webvid150k_train.npy'))\n",
    "sequence_embeddings = np.load(os.path.join(DATA_PATH, 'WEBVID_test10K_textual_vectors_Cl4Cl_webvid150k_train.npy'))\n",
    "sim_matrix = np.matmul(sequence_embeddings, visual_embeddings.transpose())\n",
    "nn_idx = np.argsort(-sim_matrix, axis=1)\n",
    "\n",
    "webweights_metrics = compute_metrics(nn_idx)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "7f88f5c7-b795-4df6-9122-730ebb0cd511",
   "metadata": {},
   "source": [
    "Ok... MUCH BETTER!"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "9769df66-1ee4-4d4d-ab83-d807d08f421f",
   "metadata": {},
   "source": [
    "### Search Acceleration - Binarization\n",
    "So the accuracy may be great, but performing cosine similarity calculations against 1.5M vectors consisting of 512-float32 features, for each query text, is computationally expensive for a real time application. <br>\n",
    "In real world scenarios, where fast search on large databases is required, approximate search methods for fast retrieval are performed.<br>\n",
    "One of these methods is to [hash](https://en.wikipedia.org/wiki/Locality-sensitive_hashing) the features into compact binary codes, and perform a much less expensive [hamming](https://en.wikipedia.org/wiki/Hamming_distance) computation for similairty. <br><br>\n",
    "\n",
    "We evaluated several hashing methods, including Searchium@GSI's [neural hashing](https://www.gsitechnology.com/sites/default/files/Whitepapers/GSIT-Hamming-Space-Locality-Preserving-Neural-Hashing-for-Similarity-Search.pdf), and found that interestingly, in the case of CLIP4Clip embeddings - simple binarization (by thresholding each feature at zero) is comparable to more complex methods*.\n",
    "\n",
    "\\* When maintaining a 512 bitcode length. For longer bitcodes NH should be used."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "aa415436-4a5c-44f3-ba00-376288d62aa1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "shape-similarity-matrix: (10000, 10000)\n",
      "Text-to-Video: >>>  R@1: 29.7 - R@5: 56.0 - R@10: 67.3 - Median R: 4.0 - Mean R: 49.6\n"
     ]
    }
   ],
   "source": [
    "#binarize:\n",
    "bin_visual_embeddings = np.where(visual_embeddings > 0, 1, -1).astype(np.float32)\n",
    "bin_sequence_embeddings = np.where(sequence_embeddings > 0, 1, -1).astype(np.float32)\n",
    "\n",
    "b_sim_matrix = np.matmul(bin_sequence_embeddings, bin_visual_embeddings.transpose())\n",
    "b_idx = np.argsort(-b_sim_matrix, axis=1)\n",
    "b_metrics = compute_metrics(b_idx)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "1d08ef56-0dd7-4706-a5b2-734d95608ae9",
   "metadata": {},
   "source": [
    "Naturally, the recall deteriorates. <br> \n",
    "But we can compensate by retrieving more nearest neighbors, followed by fine tuning the ranking, using the original features and cosine similarity.\n",
    "So, for example, we can extract the 100 most similar items within the binary space, using fast hamming distance on 512bit codes, and then rerank by calculating the real cosine/euclidean distance on those 100 candidates. <br>\n",
    "    \n",
    "Let's evluate accuracy using this method:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "c51dbab7-d6b0-4dd6-a73c-67b6fe2c7dfc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "shape-similarity-matrix: (10000, 10000)\n",
      "Text-to-Video: >>>  R@1: 50.6 - R@5: 76.4 - R@10: 83.5 - Median R: 1.0 - Mean R: 43.3\n"
     ]
    }
   ],
   "source": [
    "rerank = 100\n",
    "cos_vals = np.take_along_axis(sim_matrix, b_idx, axis=1)\n",
    "fine_tuned_idxs = np.argsort(-cos_vals[:,:rerank], axis=1)\n",
    "b_idx[:,:rerank] = np.take_along_axis(b_idx, fine_tuned_idxs, axis=1)\n",
    "b_rerank100_metrics = compute_metrics(b_idx)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "53c646b2-65bc-4717-819e-031c122afca8",
   "metadata": {},
   "source": [
    "We acheive comparable accuracy as exact search, using 1.5M simple hamming comparisons + only 100 cosine comparisons!*<br>\n",
    "\n",
    "*The only value seriously compromised is the \"Mean R\". This is becuase far off outliers that were missed cannot be \"fixed\" by the fine tuning. <br>\n",
    "You can play with the number of candidates to rerank from to see how it affects the Mean R:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "1e9d93f5-ab9e-40d1-8750-7af4970f077c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "shape-similarity-matrix: (10000, 10000)\n",
      "Text-to-Video: >>>  R@1: 50.7 - R@5: 77.3 - R@10: 85.0 - Median R: 1.0 - Mean R: 17.2\n"
     ]
    }
   ],
   "source": [
    "rerank = 5000\n",
    "cos_vals = np.take_along_axis(sim_matrix, b_idx, axis=1)\n",
    "fine_tuned_idxs = np.argsort(-cos_vals[:,:rerank], axis=1)\n",
    "b_idx[:,:rerank] = np.take_along_axis(b_idx, fine_tuned_idxs, axis=1)\n",
    "b_rerank500_metrics = compute_metrics(b_idx)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "9c8e950d-9096-4968-ade8-725f76f64bbb",
   "metadata": {},
   "source": [
    "To even further improve accuracy of approximate search, we can actually train the model from end-to-end to specifically optimize binary embeddings. <br>\n",
    "We implemented this concept with techniques described in papers such as:\n",
    "1) [HashNet: Deep Learning to Hash by Continuation](https://arxiv.org/pdf/1702.00758.pdf)\n",
    "2) [TransHash: Transformer-based Hamming Hashing for Efficient Image Retrieval](https://arxiv.org/pdf/2105.01823.pdf)\n"
   ]
  },
  {
   "attachments": {
    "2944711e-453a-46cf-a680-b90631bbb0d7.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "id": "102dc84d-825f-48f3-b5de-d3372067e181",
   "metadata": {},
   "source": [
    "![image.png](attachment:2944711e-453a-46cf-a680-b90631bbb0d7.png)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "0e6ad033-b5aa-40b2-bb88-efed6e285915",
   "metadata": {},
   "source": [
    "It can be seen that the binary trained model brings another ~2% improvement to the binary embeddings:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "dd9ac769-8e5f-4fe3-b85c-a78e01e36e67",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "shape-similarity-matrix: (10000, 10000)\n",
      "Text-to-Video: >>>  R@1: 30.9 - R@5: 58.0 - R@10: 69.7 - Median R: 4.0 - Mean R: 37.7\n"
     ]
    }
   ],
   "source": [
    "visual_embeddings = np.load(os.path.join(DATA_PATH, 'WEBVID_test10K_visual_vectors_Cl4Cl_webvid150k_train_binary.npy'))\n",
    "sequence_embeddings = np.load(os.path.join(DATA_PATH, 'WEBVID_test10K_textual_vectors_Cl4Cl_webvid150k_train_binary.npy'))\n",
    "bin_visual_embeddings = np.where(visual_embeddings > 0, 1, -1).astype(np.float32)\n",
    "bin_sequence_embeddings = np.where(sequence_embeddings > 0, 1, -1).astype(np.float32)\n",
    "\n",
    "b_sim_matrix = np.matmul(bin_sequence_embeddings, bin_visual_embeddings.transpose())\n",
    "b_idx = np.argsort(-b_sim_matrix, axis=1)\n",
    "bt_metrics = compute_metrics(b_idx)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "5eb72867-6133-4e03-acde-62aec906aa28",
   "metadata": {},
   "source": [
    "And we will rerank again using original cosine values:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "a071321f-b372-4687-a73d-20ec46317769",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "shape-similarity-matrix: (10000, 10000)\n",
      "Text-to-Video: >>>  R@1: 50.8 - R@5: 76.9 - R@10: 84.3 - Median R: 1.0 - Mean R: 31.9\n"
     ]
    }
   ],
   "source": [
    "rerank = 100\n",
    "cos_vals = np.take_along_axis(sim_matrix, b_idx, axis=1)\n",
    "fine_tuned_idxs = np.argsort(-cos_vals[:,:rerank], axis=1)\n",
    "b_idx[:,:rerank] = np.take_along_axis(b_idx, fine_tuned_idxs, axis=1)\n",
    "bt_rerank100_metrics = compute_metrics(b_idx)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "a5df51e7-49c0-4a57-8282-c248cfadee74",
   "metadata": {},
   "source": [
    "Lets gather all results to a conclusion table:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "34f42e72-de97-4551-8bc4-bf50c790b957",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>R1</th>\n",
       "      <th>R5</th>\n",
       "      <th>R10</th>\n",
       "      <th>MR</th>\n",
       "      <th>MedianR</th>\n",
       "      <th>MeanR</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>zero-shot model</th>\n",
       "      <td>37.16</td>\n",
       "      <td>62.10</td>\n",
       "      <td>71.16</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>42.2128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>msr-vtt trained</th>\n",
       "      <td>38.38</td>\n",
       "      <td>62.89</td>\n",
       "      <td>72.01</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>39.3023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>webvid trained</th>\n",
       "      <td>50.74</td>\n",
       "      <td>77.30</td>\n",
       "      <td>85.05</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>14.9535</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>binary</th>\n",
       "      <td>29.68</td>\n",
       "      <td>55.95</td>\n",
       "      <td>67.32</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>49.6309</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>binary + rerank100</th>\n",
       "      <td>50.56</td>\n",
       "      <td>76.39</td>\n",
       "      <td>83.51</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>43.2964</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>binary + rerank500</th>\n",
       "      <td>50.74</td>\n",
       "      <td>77.30</td>\n",
       "      <td>85.05</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>17.1879</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>binary trained</th>\n",
       "      <td>30.88</td>\n",
       "      <td>57.98</td>\n",
       "      <td>69.71</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>37.7139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>binary trained + rerank100</th>\n",
       "      <td>50.75</td>\n",
       "      <td>76.88</td>\n",
       "      <td>84.31</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>31.9374</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                               R1     R5    R10   MR  MedianR    MeanR\n",
       "zero-shot model             37.16  62.10  71.16  3.0      3.0  42.2128\n",
       "msr-vtt trained             38.38  62.89  72.01  3.0      3.0  39.3023\n",
       "webvid trained              50.74  77.30  85.05  1.0      1.0  14.9535\n",
       "binary                      29.68  55.95  67.32  4.0      4.0  49.6309\n",
       "binary + rerank100          50.56  76.39  83.51  1.0      1.0  43.2964\n",
       "binary + rerank500          50.74  77.30  85.05  1.0      1.0  17.1879\n",
       "binary trained              30.88  57.98  69.71  4.0      4.0  37.7139\n",
       "binary trained + rerank100  50.75  76.88  84.31  1.0      1.0  31.9374"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "metrics = [zs_metrics,msrweights_metrics,webweights_metrics,b_metrics,b_rerank100_metrics,b_rerank500_metrics,bt_metrics,bt_rerank100_metrics]\n",
    "metric_table = pd.DataFrame(metrics, index=['zero-shot model', 'msr-vtt trained', 'webvid trained', 'binary', \n",
    "                                            'binary + rerank100', 'binary + rerank500', 'binary trained', 'binary trained + rerank100'])\n",
    "metric_table"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}