From 09986e261255cfa7b4a1492f41962e0bc12b4c8e Mon Sep 17 00:00:00 2001 From: Jael Gu Date: Thu, 9 Jun 2022 16:50:45 +0800 Subject: [PATCH] Add files Signed-off-by: Jael Gu --- README.md | 104 +++++++++++++++++++++++++++++++++++++++++++++- __init__.py | 19 +++++++++ kinetics_400.json | 1 + result1.png | Bin 0 -> 14177 bytes result2.png | Bin 0 -> 95167 bytes timesformer.py | 99 +++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 222 insertions(+), 1 deletion(-) create mode 100644 __init__.py create mode 100644 kinetics_400.json create mode 100644 result1.png create mode 100644 result2.png create mode 100644 timesformer.py diff --git a/README.md b/README.md index e2f1704..5355eb9 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,104 @@ -# timesformer +# Action Classification with TimeSformer +*Author: [Jael Gu](https://github.com/jaelgu)* + +
+ +## Description + +An action classification operator generates labels of human activities (with corresponding scores) +and extracts features for the input video. +It transforms the video into frames and loads pre-trained models by model names. +This operator has implemented pre-trained models from [TimeSformer](https://arxiv.org/abs/2102.05095) +and maps vectors with labels. + +
+ +## Code Example + +Use the pretrained TimeSformer model ('timesformer_k400_8x224') +to classify and generate a vector for the given video path './archery.mp4' ([download](https://dl.fbaipublicfiles.com/pytorchvideo/projects/archery.mp4)). + + *Write the pipeline in simplified style*: + +```python +import towhee + +( + towhee.glob('./archery.mp4') + .video_decode.ffmpeg() + .action_classification.timesformer(model_name='timesformer_k400_8x224') + .show() +) +``` + + +
+ +*Write a same pipeline with explicit inputs/outputs name specifications:* + +```python +import towhee + +( + towhee.glob['path']('./archery.mp4') + .video_decode.ffmpeg['path', 'frames']() + .action_classification.timesformer['frames', ('labels', 'scores', 'features')]( + model_name='timesformer_k400_8x224') + .select['labels', 'scores', 'features']() + .show(formatter={'path':'video_path'}) +) +``` + + +
+ +## Factory Constructor + +Create the operator via the following factory method + +***action_classification.timesformer( +model_name='timesformer_k400_8x224', skip_preprocess=False, classmap=None, topk=5)*** + +**Parameters:** + +​ ***model_name***: *str* + +​ The name of pre-trained model. Supported model names: +- timesformer_k400_8x224 + +​ ***skip_preprocess***: *bool* + +​ Flag to control whether to skip UniformTemporalSubsample in video transforms, defaults to False. +If set to True, the step of UniformTemporalSubsample will be skipped. +In this case, the user should guarantee that all the input video frames are already reprocessed properly, +and thus can be fed to model directly. + +​ ***classmap***: *Dict[str: int]*: + +​ Dictionary that maps class names to one hot vectors. +If not given, the operator will load the default class map dictionary. + +​ ***topk***: *int* + +​ The topk labels & scores to present in result. The default value is 5. + +## Interface + +A video classification operator generates a list of class labels +and a corresponding vector in numpy.ndarray given a video input data. + +**Parameters:** + +​ ***video***: *List[towhee.types.VideoFrame]* + +​ Input video data should be a list of towhee.types.VideoFrame representing video frames in order. + + +**Returns**: + +​ ***labels, scores, features***: *Tuple(List[str], List[float], numpy.ndarray)* + +- labels: predicted class names. +- scores: possibility scores ranking from high to low corresponding to predicted labels. +- features: a video embedding in shape of (768,) representing features extracted by model. diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..8fb4e1f --- /dev/null +++ b/__init__.py @@ -0,0 +1,19 @@ +# Copyright 2021 Zilliz. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from .timesformer import Timesformer + + +def timesformer(**kwargs): + return Timesformer(**kwargs) diff --git a/kinetics_400.json b/kinetics_400.json new file mode 100644 index 0000000..1d41181 --- /dev/null +++ b/kinetics_400.json @@ -0,0 +1 @@ +{"\"sharpening knives\"": 290, "\"eating ice cream\"": 115, "\"cutting nails\"": 81, "\"changing wheel\"": 53, "\"bench pressing\"": 19, "deadlifting": 88, "\"eating carrots\"": 111, "marching": 192, "\"throwing discus\"": 358, "\"playing flute\"": 231, "\"cooking on campfire\"": 72, "\"breading or breadcrumbing\"": 33, "\"playing badminton\"": 218, "\"ripping paper\"": 276, "\"playing saxophone\"": 244, "\"milking cow\"": 197, "\"juggling balls\"": 169, "\"flying kite\"": 130, "capoeira": 43, "\"making jewelry\"": 187, "drinking": 100, "\"playing cymbals\"": 228, "\"cleaning gutters\"": 61, "\"hurling (sport)\"": 161, "\"playing organ\"": 239, "\"tossing coin\"": 361, "wrestling": 395, "\"driving car\"": 103, "headbutting": 150, "\"gymnastics tumbling\"": 147, "\"making bed\"": 186, "abseiling": 0, "\"holding snake\"": 155, "\"rock climbing\"": 278, "\"cooking egg\"": 71, "\"long jump\"": 182, "\"bee keeping\"": 17, "\"trimming or shaving beard\"": 365, "\"cleaning shoes\"": 63, "\"dancing gangnam style\"": 86, "\"catching or throwing softball\"": 50, "\"ice skating\"": 164, "jogging": 168, "\"eating spaghetti\"": 116, "bobsledding": 28, "\"assembling computer\"": 8, "\"playing cricket\"": 227, "\"playing monopoly\"": 238, "\"golf putting\"": 143, "\"making pizza\"": 188, "\"javelin throw\"": 166, "\"peeling potatoes\"": 211, "clapping": 57, "\"brushing hair\"": 36, "\"flipping pancake\"": 129, "\"drinking beer\"": 101, "\"dribbling basketball\"": 99, "\"playing bagpipes\"": 219, "somersaulting": 325, "\"canoeing or kayaking\"": 42, "\"riding unicycle\"": 275, "texting": 355, "\"tasting beer\"": 352, "\"hockey stop\"": 154, "\"playing clarinet\"": 225, "\"waxing legs\"": 389, "\"curling hair\"": 80, "\"running on treadmill\"": 281, "\"tai chi\"": 346, "\"driving tractor\"": 104, "\"shaving legs\"": 293, "\"sharpening pencil\"": 291, "\"making sushi\"": 190, "\"spray painting\"": 327, "situp": 305, "\"playing kickball\"": 237, "\"sticking tongue out\"": 331, "headbanging": 149, "\"folding napkins\"": 132, "\"playing piano\"": 241, "skydiving": 312, "\"dancing charleston\"": 85, "\"ice fishing\"": 163, "tickling": 359, "bandaging": 13, "\"high jump\"": 151, "\"making a sandwich\"": 185, "\"riding mountain bike\"": 271, "\"cutting pineapple\"": 82, "\"feeding goats\"": 125, "\"dancing macarena\"": 87, "\"playing basketball\"": 220, "krumping": 179, "\"high kick\"": 152, "\"balloon blowing\"": 12, "\"playing accordion\"": 217, "\"playing chess\"": 224, "\"hula hooping\"": 159, "\"pushing wheelchair\"": 263, "\"riding camel\"": 268, "\"blowing out candles\"": 27, "\"extinguishing fire\"": 121, "\"using computer\"": 373, "\"jumpstyle dancing\"": 173, "yawning": 397, "writing": 396, "\"jumping into pool\"": 172, "\"doing laundry\"": 96, "\"egg hunting\"": 118, "\"sanding floor\"": 284, "\"moving furniture\"": 200, "\"exercising arm\"": 119, "\"sword fighting\"": 345, "\"sign language interpreting\"": 303, "\"counting money\"": 74, "bartending": 15, "\"cleaning windows\"": 65, "\"blasting sand\"": 23, "\"petting cat\"": 213, "sniffing": 320, "bowling": 31, "\"playing poker\"": 242, "\"taking a shower\"": 347, "\"washing hands\"": 382, "\"water sliding\"": 384, "\"presenting weather forecast\"": 254, "tobogganing": 360, "celebrating": 51, "\"getting a haircut\"": 138, "snorkeling": 321, "\"weaving basket\"": 390, "\"playing squash or racquetball\"": 245, "parasailing": 206, "\"news anchoring\"": 202, "\"belly dancing\"": 18, "windsurfing": 393, "\"braiding hair\"": 32, "\"crossing river\"": 78, "\"laying bricks\"": 181, "\"roller skating\"": 280, "hopscotch": 156, "\"playing trumpet\"": 248, "\"dying hair\"": 108, "\"trimming trees\"": 366, "\"pumping fist\"": 256, "\"playing keyboard\"": 236, "snowboarding": 322, "\"garbage collecting\"": 136, "\"playing controller\"": 226, "dodgeball": 94, "\"recording music\"": 266, "\"country line dancing\"": 75, "\"dancing ballet\"": 84, "gargling": 137, "ironing": 165, "\"push up\"": 260, "\"frying vegetables\"": 135, "\"ski jumping\"": 307, "\"mowing lawn\"": 201, "\"getting a tattoo\"": 139, "\"rock scissors paper\"": 279, "cheerleading": 55, "\"using remote controller (not gaming)\"": 374, "\"shaking head\"": 289, "sailing": 282, "\"training dog\"": 363, "hurdling": 160, "\"fixing hair\"": 128, "\"climbing ladder\"": 67, "\"filling eyebrows\"": 126, "\"springboard diving\"": 329, "\"eating watermelon\"": 117, "\"drumming fingers\"": 106, "\"waxing back\"": 386, "\"playing didgeridoo\"": 229, "\"swimming backstroke\"": 339, "\"biking through snow\"": 22, "\"washing feet\"": 380, "\"mopping floor\"": 198, "\"throwing ball\"": 357, "\"eating doughnuts\"": 113, "\"drinking shots\"": 102, "\"tying bow tie\"": 368, "dining": 91, "\"surfing water\"": 337, "\"sweeping floor\"": 338, "\"grooming dog\"": 145, "\"catching fish\"": 47, "\"pumping gas\"": 257, "\"riding or walking with horse\"": 273, "\"massaging person's head\"": 196, "archery": 5, "\"ice climbing\"": 162, "\"playing recorder\"": 243, "\"decorating the christmas tree\"": 89, "\"peeling apples\"": 210, "snowmobiling": 324, "\"playing ukulele\"": 249, "\"eating burger\"": 109, "\"building cabinet\"": 38, "\"stomping grapes\"": 332, "\"drop kicking\"": 105, "\"passing American football (not in game)\"": 209, "applauding": 3, "hugging": 158, "\"eating hotdog\"": 114, "\"pole vault\"": 253, "\"reading newspaper\"": 265, "\"snatch weight lifting\"": 318, "zumba": 399, "\"playing ice hockey\"": 235, "breakdancing": 34, "\"feeding fish\"": 124, "\"shredding paper\"": 300, "\"catching or throwing frisbee\"": 49, "\"exercising with an exercise ball\"": 120, "\"pushing cart\"": 262, "\"swimming butterfly stroke\"": 341, "\"riding scooter\"": 274, "spraying": 328, "\"folding paper\"": 133, "\"golf driving\"": 142, "\"robot dancing\"": 277, "\"bending back\"": 20, "testifying": 354, "\"waxing chest\"": 387, "\"carving pumpkin\"": 46, "\"hitting baseball\"": 153, "\"riding elephant\"": 269, "\"brushing teeth\"": 37, "\"pull ups\"": 255, "\"riding a bike\"": 267, "skateboarding": 306, "\"cleaning pool\"": 62, "\"playing paintball\"": 240, "\"massaging back\"": 193, "\"shoveling snow\"": 299, "\"surfing crowd\"": 336, "unboxing": 371, "faceplanting": 122, "trapezing": 364, "\"swinging legs\"": 343, "hoverboarding": 157, "\"playing violin\"": 250, "\"wrapping present\"": 394, "\"blowing nose\"": 26, "\"kicking field goal\"": 174, "\"picking fruit\"": 214, "\"swinging on something\"": 344, "\"giving or receiving award\"": 140, "\"planting trees\"": 215, "\"water skiing\"": 383, "\"washing dishes\"": 379, "\"punching bag\"": 258, "\"massaging legs\"": 195, "\"throwing axe\"": 356, "\"salsa dancing\"": 283, "bookbinding": 29, "\"tying tie\"": 370, "\"skiing crosscountry\"": 309, "\"shining shoes\"": 295, "\"making snowman\"": 189, "\"front raises\"": 134, "\"doing nails\"": 97, "\"massaging feet\"": 194, "\"playing drums\"": 230, "smoking": 316, "\"punching person (boxing)\"": 259, "cartwheeling": 45, "\"passing American football (in game)\"": 208, "\"shaking hands\"": 288, "plastering": 216, "\"watering plants\"": 385, "kissing": 176, "slapping": 314, "\"playing harmonica\"": 233, "welding": 391, "\"smoking hookah\"": 317, "\"scrambling eggs\"": 285, "\"cooking chicken\"": 70, "\"pushing car\"": 261, "\"opening bottle\"": 203, "\"cooking sausages\"": 73, "\"catching or throwing baseball\"": 48, "\"swimming breast stroke\"": 340, "digging": 90, "\"playing xylophone\"": 252, "\"doing aerobics\"": 95, "\"playing trombone\"": 247, "knitting": 178, "\"waiting in line\"": 377, "\"tossing salad\"": 362, "squat": 330, "vault": 376, "\"using segway\"": 375, "\"crawling baby\"": 77, "\"reading book\"": 264, "motorcycling": 199, "barbequing": 14, "\"cleaning floor\"": 60, "\"playing cello\"": 223, "drawing": 98, "auctioning": 9, "\"carrying baby\"": 44, "\"diving cliff\"": 93, "busking": 41, "\"cutting watermelon\"": 83, "\"scuba diving\"": 286, "\"riding mechanical bull\"": 270, "\"making tea\"": 191, "\"playing tennis\"": 246, "crying": 79, "\"dunking basketball\"": 107, "\"cracking neck\"": 76, "\"arranging flowers\"": 7, "\"building shed\"": 39, "\"golf chipping\"": 141, "\"tasting food\"": 353, "\"shaving head\"": 292, "\"answering questions\"": 2, "\"climbing tree\"": 68, "\"skipping rope\"": 311, "kitesurfing": 177, "\"juggling fire\"": 170, "laughing": 180, "paragliding": 205, "\"contact juggling\"": 69, "slacklining": 313, "\"arm wrestling\"": 6, "\"making a cake\"": 184, "\"finger snapping\"": 127, "\"grooming horse\"": 146, "\"opening present\"": 204, "\"tapping pen\"": 351, "singing": 304, "\"shot put\"": 298, "\"cleaning toilet\"": 64, "\"spinning poi\"": 326, "\"setting table\"": 287, "\"tying knot (not on a tie)\"": 369, "\"blowing glass\"": 24, "\"eating chips\"": 112, "\"tap dancing\"": 349, "\"climbing a rope\"": 66, "\"brush painting\"": 35, "\"chopping wood\"": 56, "\"stretching leg\"": 334, "\"petting animal (not cat)\"": 212, "\"baking cookies\"": 11, "\"stretching arm\"": 333, "beatboxing": 16, "jetskiing": 167, "\"bending metal\"": 21, "sneezing": 319, "\"folding clothes\"": 131, "\"sled dog racing\"": 315, "\"tapping guitar\"": 350, "\"bouncing on trampoline\"": 30, "\"waxing eyebrows\"": 388, "\"air drumming\"": 1, "\"kicking soccer ball\"": 175, "\"washing hair\"": 381, "\"riding mule\"": 272, "\"blowing leaves\"": 25, "\"strumming guitar\"": 335, "\"playing cards\"": 222, "snowkiting": 323, "\"playing bass guitar\"": 221, "\"applying cream\"": 4, "\"shooting basketball\"": 296, "\"walking the dog\"": 378, "\"triple jump\"": 367, "\"shearing sheep\"": 294, "\"clay pottery making\"": 58, "\"bungee jumping\"": 40, "\"unloading truck\"": 372, "\"shuffling cards\"": 301, "\"shooting goal (soccer)\"": 297, "\"tango dancing\"": 348, "\"side kick\"": 302, "\"grinding meat\"": 144, "yoga": 398, "\"hammer throw\"": 148, "\"changing oil\"": 52, "\"checking tires\"": 54, "parkour": 207, "\"eating cake\"": 110, "\"skiing slalom\"": 310, "\"juggling soccer ball\"": 171, "whistling": 392, "\"feeding birds\"": 123, "\"playing volleyball\"": 251, "\"swing dancing\"": 342, "\"skiing (not slalom or crosscountry)\"": 308, "lunge": 183, "\"disc golfing\"": 92, "\"clean and jerk\"": 59, "\"playing guitar\"": 232, "\"baby waking up\"": 10, "\"playing harp\"": 234} \ No newline at end of file diff --git a/result1.png b/result1.png new file mode 100644 index 0000000000000000000000000000000000000000..66c4758236138f32806730ac748772a61137fc71 GIT binary patch literal 14177 zcmYkjcRbte`#x+din~Q^+Qz2#sNF$`y+`f6sl9hmTc|x-LG4*HR;|=-?7d>ujv16E zy?cMY&(9z41ed&A*SU`KIFBn@O+}8FkcJQg1A`bOFQb8hfe%B!H-CVBU{EJcgD@~e z*g!I`wR|x5r!a{zo?>9}-pm00!K(>z435tK&V?aEg7G{b6XQAlpLZYWFl6%1Trj$5 z8)2BQ5EvmaObjsg-{*fz{{MyCZW#ZFVmx)jKrci;O}UXn%h@47Pw(JG#*6bh0mmNU zE(}a89IQ7Fa9+!xzX&w!zOpq!;8I2NX*v#XTbPHo(F z(b{j;UM;Kku42Aq+5h?*l;Ocm97%0+X-r}Z0~e{W4QKV{)x1*-tHMkrMR0A&j$bk) zp}i!^l3J>5`;E#o-HSX1E!ZoEiTIrjBz-62zB-O|{A>nbp<~;eTiANX!Ksy+QNTlp zahIOwV$kG^mKVF_FB2Y{A$WbEkp(P~|H4WSs5r4{=rNFfnbRyjZ?v$ii24#oIOqAw zb+-57L-au13w#$@A@Zi*8aGGuzVYupY=oc7N~oZkmAx#-?z{q?cAP3roWxa5D%f*) zS|%Kci8$K4^!jK{SQBmWX~$k{u~eP=kSfsAZY=X>z|u|PV*F!P`JeOR?{>hyH#TEi zEQbm1v%u1X?+YKT`b&1JD2Ff)LwN?Q`h05hX$_c-!k;XO9H%hQv0t;0XO9ZdTz^CRb~vIzP|qsa<#GG&9C80o=<>;-q>1BiH$NcxqE+=EF3ud~(**A(v*tQcv9M zfNJmySBtc*g5j*jo!K`bii98xtGa+*iTG}d4^D7Tx>)8?3v0FhnMd^1rx?GuVI?TzlpuuLN;KqoEp6E~wbL6!RR8vxw{ol<8Fn39xk z*Kr#|SL_n5D+flg;m3b$3N&o>4D^clN--Vj#zyF_ZC%^SLT!60XkiYr1&idpIA=Z!k&aFXtoI8%;#u z-K4{{H-ZnE7#6qOggedal#9i4ZcK zSxAF<_uc^5;XCmyY7{o+JYN(H94kJGyq5#!g{va227nzd6DPqdu=|!#m1TTeL^8)8 z52BA6RHX4CF;<5O9KY5PvFUoY%bMXW7tYhe!EO-U1gM@CGn2%IytV}4{o0EHMM|J&o)gsGRYF4iWnwCt&E$Vl*j~+le7}_O~ zoU4I7;f!xdp0TQm+COyL;r`W3Z|zmO;ptPms_sxHri**SG_pRjfEnH~&=jPh0tILH zK4MjRdQma}32zylF->)1bG~s;^;x*S4i2GCZdG;8N^q~ejo!elB(UBj57(BmPAPiJ zds^%a6~FuE_ruuHvOsP+{?vCMr=oYbocL41j9v@W3AA5!u$0W@`t4Ah0Z#`^v(DI; z<{qRl5$DY5tL_xinweGmJ?Wu^=c{??w2bf;>g5o1xAx?BTe2HO&M+OQta>g4Y?z7F zvwn(`$U`49<5SXQSd`g~w20eKrwigfC%7AC;?XFSX=#ibSuna}RidaVZ_T{>2x=_U zt()vYxXdGV$mW;|nK6~eYXd3`^F`O?K%5hC(IF}_*;c~0w{D(rQ1c_zSBm3_3!)uo zIHix-F13MI%~J+;$y`bu#PjQFB&^$(MiauV_r%Acn>5*3dFEv=ZHqFU>vtS;mo=lb zPn;I5PHfgUQ-~^f$x~V_%;~;{9FN5Hnn5|2xiIB{3D%oM($p43Tsmp5%pfsg21dVNW%6yf|k z6T-UZ!sy_XwfGa9jI^j+)v^?(Vy7g?^?YL$X-PUL@MuKAC&hS|i^_K(nY>hvhr`ss zNKE}kzX>Awjq{rW=-0_S>Mhc)s(ifCJ8I*1yBJB#A zZ~eMh?$;^{my%9|w9Yp%mlic%6#ud(1&vKM=J*tcA-4sPyVs^F&y7|ZTfE{zf;;qf z!2u2WgD)y7+saL&=e_QCC^Vsi+u7^!5(WnTenS9um#u~NLZH;`MjUxG=;%ywY`UW? zgvTL&eC*rMZE^lcpxDA`@lndy@eGkhv|M9;nGyed;6Y6GkUcc!x}ET4L&5OrVBT*{ z4S%Nt`lYJM1C-Tkj(;G9UcyRMftLfHd&zM*Tk(1T7r(mXvwf2RD%20=)aA*hu|bkAOS|&9=X=2%?YreS+cREe zT{hoT<>8FqzI8LBln+vHePc_u&IGiXC>uoqV?q2po607xl47CGP@Og3&9R(lA*7qN z=$f5oXiD?KGHnugJ7?E>wsfpO4MtuTldwQ4N0|2th*yvHLsudi!nSBiO847`a+@hz z;O2}CeP~yP*lO%oJt+86`!0gg3URhjH`|jD& zR$?LL?KjgwAt!6@cgF5v7Ff0X%SmH%m2Hl1`4*~~mB6Yq)0MyBzdDhr29!4>)g#6( z2~H09&p$O~8xFTUWv|)W8LjR*LW_w0#3#=#6A8g|Q(7 zlGi}=8uii|pA-Emz+*#Cr!<)JU+bwejnavPbzTcqvG8$$evg};;$D87i=Nz|b>A@I zKm2g73FtIZdBq#aAkOkuVVmQaAkvn=ia~1G7leI|qqUsYQDBXK%yp}g;V>xJ0rtn) zq0u5cZh*-7c;X)0So7gZC98Ddfo!^lK<`urm#!wD`)iuuRFB$+`Mp|CI3ZJoUEI5h zK5sP0x^Y)>m{zm(0E`$jekjy9>@-o`)Lv!mm8mX@NtH5h$(iLh4rVs<`3SQq1A9b8 zue$@fv`_LR?Y}2=t?n*UOA^Mi&Um9_LMDLR!x>Kaf855jmcBX6nO1a!))kl+oQS3P zo#6}@bD2;4qgP3xN7|4ObJ&?boN(BSlBw&9MQUda|$9XJ9y#M(M^5 zap3JWdQ?uh(?z{i%|evl+a7VE^0Vh`1te};FNuAj?CkmGWn9+r85tW71c$aAcA}$2 zr9M;yFck80Z)N;w82^$V8`DSKVxj&4yj@QC-DXW|B8w-RKiMN_s;nT+^L^#l4Hq5U z;)(n%J3F4UHrl;6rJ23C^u)9YB%BCZ8%OIcbA%@=mAS>i`19Yc+}^5x+yjRZB%(@U z{~@-&ugX7wBXe(rFQWd@pqx`3b!_qX$1ZZ-%OBIVFDA87vkH}vVmRrEGiV-T$VAbvh}H!V)=P$&Z2U;g`j^TWKAb{lqx+dC|YZ!RX1lZt-CdCpQu zv7i_pc^@swxh&J5r=JG~G%gMcxVRfVa|d!fS9WNU=4V@rAKsnCOArefQ|aMNEhMu5l)-#Y}=isqcrKFc5dj&gH%OlIxY}M5w&(3+YPxZqFG}~O3W@SoSM;mSjWxc*n9oYQT9IIfwBh30VTeGNXIO<`yB4X z%m{`$tKmV#U&lT}T((|f3fqQRWm2H@c6GoElRfrAh|Vtl4*FBwM%+c3MX&)Y7)Kzu z+1FSFwNb}Qq1qr^8ERDOqm_urpQ2eTpmu^;NY-~e2jNKvQs^F66z9duT`MdvnEA}d zXi?$UO@?Wf7#A(3RO<6UkN3t;cgx53RaE6- zPx+u_N!A%TJcCU?h-XiIGItcWKJy}Pvm)IOjXjN#1p-vj9^<1+lLF^_ zDo-#KgxsaEK#0)NT>qXt1u2B87B7kjOOzm`t^mt0MzE@IAJ=x80qsT0Q9wn?G=8{5 zj_LW=Zn`uG*?R?-o);)BeSq|fe9!kXT^G}af^iOj#E#}Z?c;IwR!?Ca&#S? z9fp|Y8IOgeg8B#TmZ|c4)|BlQ;1m%I2@#b0drTu?UL^nzXKoMX7mOB&^5Z%&MK?@h z4aw6SD2wisUqrOIrgefTlWMjP=04(_npp^6EjxMz06N9Cbk080srGy^urJ5!m?7mY zRn9%{nxLr)nF^dUA?qUc&(YC*8Yutd4?sDgKZ9*QphMT9JcuDC;~T?aFo~QCi$I}y z@EB|*gv7fYC-CNt!9)6%vg=wwVDI`G2dGwnGWpAny zx8a5!4KKQlNqn@;BOys3r8SxVq8q7VU@_fY{%W;94vtLbDGePstC+<`&GMpUHN^w(Ez+pve7B}SSih6J zf9};^5@T{};unVmXD_BbkhebP9=07ZHX_*F>CV!uktSv;t^2o^oG_g$T5D`k;}Phw z{#bDake$Qo7eE4O-Oi4<>VwG-VZm$NNa#)1!G^N6!iSeP8oUPygoYV}rNR`nzFCM{ z3?JiNnXcCpb3JAV-6v$Lakno(qE|c1ok15b&=LJ8`5LPZiNdV1Ba7b0iHBNMfK^i= zyGq)aiK%b_rD?Gz>>x#{X401cZ%@flI^x9rn_+bJf62v5{m$m~5(`kD(gop9as1>Z zHf=x;_A#N2lyc@xv#>eu8erZcYmf^!z%nkNj>4&v_uYP*oole+t1Hu2Xt+q7^VD|7E9{!iWA4c$)g~59GAqB)>3cZRqQzQv`9C;zl=T6o$zXel-vJV|8if z0&7FS3a<1IUL3~6j*Q+(SFyXfk)u5F$($Lztb)F)%G{P3w(P4TY80LxtrUR^A90`K zJ#$VNc9rg)Ip9C_6|(7l6-NmB&EE6g-9SRUT=%VeYPDe9 zK46~3CtT!%Stl`nwm4`L-Bw`Br9w8^J3vUEKsrD*U~Xsj3(t3k$j7(3_4-xllI58! zn6H3)wjp=fy%ga%ZZ0JeDnf3B2nDn>#BRPMSWb2!^$K3I%)^ezbc#x+rQhC&zm>y< z%6zAu#rk?@dNXIn!;9P)7emwn;IM7=%8>1NaND!tSB2BB?Kcw#ZWyCQ+zdV*?A^sl zyjk%9xIn$R7tK)?#O|S5{V>rB;`lLp*gJsB2jGA%b(<*^yys4pG{$2Qf9qNH387l_ z63H$=VTEv7tvW8r;9~YM>jfsrG9`KJ?#U7qcm@E*dI(W;Jwc$#jfw`cR)qVFmJanS zNB-J{1Duc}CV{hLG```yWk<+y_&t?ZP^1B_;H&E0tLeei8A37gL!7;?g{1V)^g;Z8BUu4;85bbOcBDUR zPZKkDxBT9SS7>JSoMY|(f&T&x-bC2V&hFQKkWUcFu>1L8Szg$PDEB` z7`G;xa?`pN$RXzGpRkS``A2_OE~XAQ&H`bxCQ0VwvKfRsT--VLIhi0U%QSs)Pi1N3Y&!4#V1(Pb7?JE{jv2e<>f&8i&5AN2+nlbAg*cDGD?G5 zKqv0f&Ez+2pVBnvh!28?V3hLk^3U8+rcs~HXVVbL!n_+644M$IE}y>C47Ct)dr9}X z)brh{d2NQ2NC=lBShcZ;nbrlt!){6_gp0iwT7pb=BkwI;kDzCY0>s~1?WC$k@VR;O zxP&d0S!#^$4*LL_B4#@d$6$c7coC$h7xx>$k@zD+qo%EH7vN~Ei*10{2j}MEIu6RS z@rN^;6H{*X9^KJYsOlP3Da8RAl&kGC<`>peTpbC5NK7AAy8a&;#F`W}g#3>PRC0IH z1+Szk=vH9bqYu4Rw;SkaMRHPACGG6SBE!0}S7Ta*9icDs1r^bDxA=@zmdP2e4`A8a z`Jg?@+m5CaST6(f0%Cm8mKR9!6j>DdS$h)==WOL7gVnkKuWna?9t; znQX!YZ4eudnLGGpPl{<_|H}cQ@ECq%DVKUzY1+ci^x?N=h@&nw(>`=$fG&^yh3M*l zcWwS@?jqfq7IC+9&{y&6>dY>2Hi)(d%PGY@Bdf*Y;aUavfjc)M=0?1m{@a! zVyMI2&OR`%T7M5YLHB93$mMFV1Ahu~O~7qJZSkUWYuM?F7*V>@&l{vuMqFHMNH#!w5iXz!YLt46uEFPVFraA0{i%4q^f2B7oybG>~MrFO3KdwgyxG%LhMAxTheIobL^xS3%&az@~neTa9=lQGi*>4vf`!p@KKH@u_Xm2`Ox}&pSY!%*$Tg)YQ zK&ZUfZR?uBGLB+xOT8g1RuGZUz%MF4U5iJD!uPtM&EVr(!p^9-M!5WNOFe;#;rip^ za|3brm^6{mh7q6aSwFq;%Fi>avJ-0i7fsy|ugzd&2GfT5VHmYeNXzn{hVFoc@|2vb zt?<@5Q7icDpBEn@E1X9n5B?zfQbAoj6H$AfgXKtYnH;32mx^LBPR%+5^zoF0amci>_45V6`4Q5LYJEZ_NTZ?B=CoRHMP7$ z?i5al>rnrox&@u5xgq@Wh5?U)xB~1IJwS?~IIFpuFs#`}W{6eaSA{tSIw87v#*fol zhsFxMKN#A8zn^Ao`k@HUJXVw;VfuS|H0R4^ynvg)@%5Ji+wv1Y*8()DtYj@y3)pz5Zt~4x-Suw^FT7|_>MZ`J5U`;O!6p7o z3AjVbaMM$taY;qKz_?J+c*=-Lg|yJ4H2G2ElN+S>TKpAj#Ox>oAz&ttKcugns6d@z zg~QZDv<5)X>1VNB^a%^0~KKWMg4uuA5Bqm)}3$R)`qe* z${aT583uJKqoCCh37sJ#LX;re;f5n&N0i)VJtjj+12ZvilQMuS(&R`8IdYCcp-dQe zE4mB!2w@Kn*nG?oNsL5gDD1L2#2B61eVx0dPPK@G+WS+lO43WbCx(}J=Z1ZFSI{Q^ z&jDMwJ`Ih*$K7(HnvvA4Sqz?kGsg73jz{w&UiY;pHxjr>K0=&-7@XqgR(VK_qxR7E z(y4*Wn8%9;UvLjpU|qSlAmOCL51lEd#J}n^Zxa#AA?3Z zZ|fto7ng)}Bt`;5>wOtXIoTRnp6e8;i&(2qVr96*^ zE>rt{P1{OQliyM%J^tm7aQ_;!8Y$qDNSLWB86wKctSkVm8Y03-X52>1?%Ym~8bY8K zI8pJU(fh6~-sK?(IA&(#dXtItFa}gq7qLU-S&QT8ma#WN)uO)a=!PSyQhRX{DQ~1& z6k7M~5^{&n~y zwmx6IHL@0Xh>T!)N6+=`E#5??_}V=jmfG2TA28a~cj_De`N-Cx`uPu&*bwI%TwxlaJf-)wg|WPpBtVBTahm)0Db z*b=C}X(3`<7(;JM8+UYD*2Xudu)#c%=W-`tV?F!u=e^AJf?UG6J(i)ghp|r14U0cg zzJ%^1eYn#ZL7I{J=|@du{#mD$(HE|aTBjP-;8+KWO*Crr(HeOi|JLC7&n<>YsB_$H z@K6_)*!ilj59eSyb4M~{4Wu;P86)5(vVxx95)vN>4s6g|nM|#ti;-nKR3`fI{UU5n zC3jF*!}XU|A_LX-yUqw8S?lnpyL-=}W0>gD9Bk#{$H1J|3NYyEiqLlErKRNHw#`)=t6q(nr6~t(%rk(JI(}Sv#sJCy$M^2jY?&Q81N`7PH zj?ekD+F3HM{Y54k-v-e&1q>PSGlddsJ; zcwSS+-`<)@`Y`;8nNK1AI@3Am7ec%i(6+a`Ha@Q6E>RVFul|Av^UsH4z&X^v^oH{z zFKupRXO8ZIgJ-ZeIC=Q0-`-0tY_pu$8}IxKx9}N_D~z$IO%Diq>I_JO6u7-^1J3bV zWHRtFS9R*IsSEp;+!W5|Ad9jXI27Kb zv#EcP`2kb>^yf7?8Jr&X=S0z~*rwzu*7+`j{Co)_BnVsgrfq?Kq7P zK~J;RpCGVicHqywg`oN)3>wWN%M%`-_W)ey+B%w-+Q_xhxz_&C4Uxk=->*!43~0pg z&v7!GtM8;|RFhu;|IUqh-Wby{U7TGfqsVBqnA%=~PXTYghb_5|9@tC49mGV2_GhJA zz5VB-Ai*qw!z%Mh?EJ;lZPpzdm*J8clh9pwp1{fG0B6Uyb)E}0OSIH!i8Anoa=N?U z*S~vgW5kxP7_oo&R|%8cfIEOE>XwoT$RFm%IO=gcUdIiP8d1ESyvw;Bs>jsuXa0fK z*TnRq)g8SO)X&XPKvL76PNjuHyo-IRA)aUN*HnEGVvQb{{DBA*2fEczE3L=`QoE)jN^iid>$8 zl6of2$lW2SuuS`Mc;TwH`@{+V)IU^zS^)r4>1Rvth zT-ke4M8~MsTuY+c=1wU;_^E|5QQxVB0rAc_onNj_HCR#Z_>Gcc)^ZPO$6b)=T>)ffa-lty}Akr>3Wv*q@!@D zmvXS$ifmTHE1X9|-fC?5gqo~jTXCLvA*QnW_fkjOnzq3ET7tr^cei)C5^>ow{RwY3 znTaLvtL3vWrR|$ru>2gQ3_>JF1%n<~FHgpMhX>5@Ls{&+v8oMRXF0aIxAniVoH+k@ z#2I+kdlE8@Q}1?7u(kAab?CKd@S8dPP2rxnb@!VTpH9vu0{a*-(jDapU>9BwS$T8ex(h7|>xw;p z$%tghPwzi3G|gl(B90q4d9rK;YT++dR6v&Z!%bAI*80W%)0WVLiLvvh?h;a$nRQI! zn1JByJ|@o=K5PG+?fr$z>-?DB{}DF`Zkg=634LSY|M|yOJ?`v=(gyLkHcUi&9?zg? zb!I81N9!l?Irq&ULwa+uE&-IEWu`*pj{VMA8WiD_@5gg!8|pyG#^I-pg&_l_y+jq1 z#vY`KBzN??FRT;aPHR#unJNi*jTF{Q2?=Nkx}<6$n2B{Y3T-RaNoQeEi?_l(NB`SW zVz(Vii%;>H)gjp*^#BCTSk!V^ofr&*J&0%!nu#STFFS*=`Q0QyvcPMuIHk`D30{fu zgtI#7Dw9FemFkY>=V-lx%_0-O&Y{@s1E<07QOT1yZGTKCIx2j}4YT2xg4;jt2`z8d zVolfb(_E1%PvYrFEL*pE$&oLZ2z$iYz99}31~KpqZKL%P?^u_gRT4!DpPT7~PC$F#zAKDBO-6)j0v&eJbYMu+Q;Th71_#6`zr4mp%3mD< z4YSG#72xO{Utf7Z2Pk=ZTG*?dKXbB>QhOM5)$;?YPD=D|qC^?*c#CvIxHY_uJsW7r z3CIF1&i$-e+o>VE1tL|}`u%XSHcy4l;sU-qe|THS==ZzN7zcOqwF)MRV{6c+ATMNa z!Ht|%r|bC!i+ZgD6p-&;qn!0)5(?=XcR8KI8g^|w0gN;4K8L<&-^$tMsJINw#yFaV ztw(?5_&ev0%I8U~6>pc*^j<=Cj>p=2XMqvLFdfrow^i7695@@jUV0Pq%S2FQXQBapi za@w&iGg^H?;fhubJiQcaE{=-$H=GU8JAPO2Ize(=a~spsD0%u7mZ?T}N!#Onowfc} z3ho~^lnuF&^hjUgMov>U!C+1liXe8=B7bS) z>!dyi9`lclqH(0jxCBc?G-vE+rD-ji*K!e0Mhf_9kHQ>$92{_ymah{b-sk{6k>5C- zE^y*4&RiGL{T_?ok&Cwwv!#rB(;-e^O;KEmo(1RbO+2dhX#lSv<(3nY%P^ zE~ehLKi@UP{^n=Bxx2am-zXa7zpBg74?oCurse0ot0i}9Xh9z)x_4J2KHpkK;e zEVzPQxa`LR-b=)}VJB9PC7$II9fQ$RW@WgU?)$FAuEbNT z8=kfw(Bnzn#yEXn5Iutn1$9g1mpnq;01UTY`JRP9Q$vA1hYqDKk~v=@>KuIkFa=T& z{M3g!f~pVwZ=5sTp4V$D5%>T89d@w^w^2>hc)9zyYq5fX{|^q}M{eN+lq5}c<&Z1| zF+5S6f-DpnVh<-ZgnF<*YlHA5k)l{~XM$X+PfqE!`Ade#5@@%6`aCFCUGYlC2D|y3JqxSmWNQ@wZMY@P+}Jop>N$4L>s;?#m5BAeBy(|h=(fA%+$$}q!yXm z1`;~lZ8qIW(iYGsQ0s6Qb(YYPcg|qQfBGcp{(JZ)s$lp3#$AP1IPtfHN`#L`!b}=I zaG)G}Q%D?XHz9>HJkr(9!D8kV8@V?`sx1R*Us`TU7%=i2%lk%HWzbg2n7@3>QhJ-`WSS+6H~y1 zn7XsQB_Br6n&ZtK*@V`>jK(YL?$oiVxjM(pS3rVyd6WSy2O#bu8Lk80C` z4y2V1*U9z^TFe-R&a4^!<`j2HzRSS+u@dGOSNDnmvn_s|Oc05l(3LO`e;RA@p^5qo zQkv>{`v(>SJ4m3!zVT-G`=7@2XUmeju0V0Gqk1-UqDV!>M-{|B59QwG0jZojSt<+O zNF}bFa~3367Fxv42NS=vL3=>cv@UF$%5kEeiTqf?czH_zHv?V4bH~~88T0_e(j=Ss zCy9E4xij6pXKcQtn@q3hT!=*VK1kv@oF+ItQBiR^J16q~|!bYa4bJ zskPXKuXon=7E8*p%es-^@0gP!Rp~jxwkk?y?vDp2iS!#B48_kXx$2Td9>UJ4sm$ zOwJRea6Wq%oefPVgOvY4xGH3OE#ftWZDg3G(TkFpJn#ZXP}tk<1$Kk7)MYqb73aa+ zI8(mzd)X3^+o$;?vxXjr0!gWm*qVMX!9?|}+<`V##3fIA-(l@W?U^EBMlYR#~@(JEUCbcf14iw zqdcF5nyiwwhE#yoB3aN*76JC4751{JiZG{kax*8IMjsAV&rF}(Y}wdO@G)q*!8@0F z`4q(Zrt?#fw~0ze_9}ZsMlYENnxU7~XpFNoHhDe1{fc_xFQO5w!f{`Ek!$^}JDad& zL;bj1{}TmmOX<4sa55ymkf>kb$Z&npw#p&dO*4br$=jsRpT4?!XYt_hvy)^_Jw2Ly zx;d_!gI=^sd%A?r+=ZTzGz~-C%#O-)I3MpnI zHT+`vQGM{yKYai@nd z;)XUlACiBpDSSii#Q*Sn%5jVbrbegY%+{;I5gVeKfz1B=Fe~p*EBoMIGZReCV!4r! zrnU39R+`mZbAX7pEd$iu-PQo>D2?s}uBiIGhH(EwONqxe!7STSXx&Qv+xTOdla}8g z=!?K6>8PwP33P`;&U56^xxTqdJtM)-+k5s;n({7N8z}8Z6_nYb+<#r-1@8grt}S&= z!>Jd&lpD$qE#^k*Y`)_-xh6NK@Rlt_)Bf%jkF5|Ryq8(m-abkxLdYQ-;4Yjvaq{)< zuK=I7|2r$9xEd`nQtjl1hw_*ytq?_qBs>;Ua$3}Tp;b&G=JQXO1g3=n*Jhb?mE;ME zIZ0!j?+p^ryt2ODk{Ow5FDxYq+_0FdHO;e2+og!61Ge+Mbm8%uqh z!mNrL*iEGf;@>-T;4?|lk2sTw|EkQM)g#0M-goZ}v~8aH6Te!Ib#(pPku9H=;q#Ul z(ezWb)K%jsN_rbyQlSBjg)q96e8>mqe4YE|dgVN1a?ckPkd6m!ZM)3jJg9zv+$fC2jCe+$1FzJh%?g_NrA>MGHJbWXrQO8wx z(tK7@jAa^@p8|Pd7t-RCoEOdKMql<^%~6dM`!CNS;Z3@%1{==|Uy5PzcD<*FILjCP zq%J5~IZzkF5^Q$AX&A6h;J(q-VisYk(!#KQI)~2HC{Fx&Jc^N#-!}NH8hwArweu$G zj^_JfU~|yUZS&2P8#Fj4fy*YrhOyx+Z8ZF#=W;2|sJ^`Dyo%-31p=%>%~H@T;HG#4 zCTq{axL5V}RKooS0~bS$#;IWvyFysr3=?SEwbSXXyPnXI%l#Aw{5BvTfd7vuPEDKz zhubT}KU#SbG9(`*SZwR$d@<2i*8bc=L+bu_6AgV??f)*W{kgIR#{S>MHBzEKEB{;n i|J+^s`xjlRi;pM-Jx`j?@c-PM1Ien$RJ}0``~LvoU;IS? literal 0 HcmV?d00001 diff --git a/result2.png b/result2.png new file mode 100644 index 0000000000000000000000000000000000000000..829d819a6ce9f5bfdf05f9764fe824fe9d8ba67a GIT binary patch literal 95167 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 literal 0 HcmV?d00001 diff --git a/timesformer.py b/timesformer.py new file mode 100644 index 0000000..04914f6 --- /dev/null +++ b/timesformer.py @@ -0,0 +1,99 @@ +import logging +import os +import json +from pathlib import Path +from typing import List + +import torch +import numpy + +from towhee import register +from towhee.operator.base import NNOperator +from towhee.types.video_frame import VideoFrame +from towhee.models.utils.video_transforms import transform_video +from towhee.models import timesformer + +log = logging.getLogger() + + +@register(output_schema=['labels', 'scores', 'features']) +class Timesformer(NNOperator): + """ + Generate a list of class labels given a video input data. + Default labels are from [Kinetics400 Dataset](https://deepmind.com/research/open-source/kinetics). + + Args: + model_name (`str`): + Supported model names: + - timesformer_k400_8x224 + skip_preprocess (`str`): + Flag to skip video transforms. + classmap (`str=None`): + Path of the json file to match class names. + topk (`int=5`): + The number of classification labels to be returned (ordered by possibility from high to low). + """ + def __init__(self, + model_name: str = 'timesformer_k400_8x224', + framework: str = 'pytorch', + skip_preprocess: bool = False, + classmap: str = None, + topk: int = 5, + ): + super().__init__(framework=framework) + self.model_name = model_name + self.skip_preprocess = skip_preprocess + self.topk = topk + if classmap is None: + class_file = os.path.join(str(Path(__file__).parent), 'kinetics_400.json') + with open(class_file, 'r') as f: + kinetics_classes = json.load(f) + self.classmap = {} + for k, v in kinetics_classes.items(): + self.classmap[v] = str(k).replace('"', '') + else: + self.classmap = classmap + self.device = 'cuda' if torch.cuda.is_available() else 'cpu' + + self.model = timesformer.create_model(model_name=model_name, pretrained=True, device=self.device) + self.cfg = timesformer.get_configs(model_name=model_name) + self.cfg.update(side_size=self.cfg['img_size'], crop_size=self.cfg['img_size']) + + def __call__(self, video: List[VideoFrame]): + """ + Args: + video (`List[VideoFrame]`): + Video path in string. + + Returns: + (labels, scores) + A tuple of lists (labels, scores). + OR emb + Video embedding. + """ + # Convert list of towhee.types.Image to numpy.ndarray in float32 + video = numpy.stack([img.astype(numpy.float32)/255. for img in video], axis=0) + assert len(video.shape) == 4 + video = video.transpose(3, 0, 1, 2) # twhc -> ctwh + + # Transform video data given configs + if self.skip_preprocess: + self.cfg.update(num_frames=None) + + data = transform_video( + video=video, + **self.cfg + ) + inputs = data.to(self.device)[None, ...] + + feats = self.model.forward_features(inputs) + features = feats.to('cpu').squeeze(0).detach().numpy() + + outs = self.model.head(feats) + post_act = torch.nn.Softmax(dim=1) + preds = post_act(outs) + pred_scores, pred_classes = preds.topk(k=self.topk) + labels = [self.classmap[int(i)] for i in pred_classes[0]] + scores = [round(float(x), 5) for x in pred_scores[0]] + + return labels, scores, features