| from .intern_action import intern_action_b16 |
| from huggingface_hub import hf_hub_download |
| |
| import torch |
| import torch.nn as nn |
| import torchvision.transforms as T |
| import torch.nn.functional as F |
| import numpy as np |
|
|
| from .processing import ( |
| GroupNormalize, GroupScale, GroupCenterCrop, |
| Stack, ToTorchFormatTensor |
| ) |
|
|
| class Intern_Action(nn.Module): |
| def __init__(self, model): |
| super().__init__() |
| self.backbone = model |
| |
| def forward(self, x): |
| return self.backbone(x) |
|
|
| def get_index(num_frames, num_segments=8): |
| seg_size = float(num_frames - 1) / num_segments |
| start = int(seg_size / 2) |
| offsets = np.array([ |
| start + int(np.round(seg_size * idx)) for idx in range(num_segments) |
| ]) |
| return offsets |
|
|
| def transform_action(): |
| |
| crop_size = 224 |
| scale_size = 256 |
| input_mean = [0.485, 0.456, 0.406] |
| input_std = [0.229, 0.224, 0.225] |
|
|
| return T.Compose([ |
| |
| GroupScale(int(scale_size)), |
| GroupCenterCrop(crop_size), |
| Stack(), |
| ToTorchFormatTensor(), |
| GroupNormalize(input_mean, input_std) |
| ]) |
|
|
| def load_intern_action(device): |
| |
| kinetics_id_to_classname = {} |
| for k, v in kinetics_classnames.items(): |
| kinetics_id_to_classname[k] = v |
|
|
| model_path = hf_hub_download(repo_id="Andy1621/uniformerv2", filename="k400+k710_uniformerv2_b16_8x224.pyth") |
| |
| model = Intern_Action(intern_action_b16(pretrained=False, t_size=8, no_lmhra=True, temporal_downsample=False)) |
| state_dict = torch.load(model_path, map_location=device) |
| model.load_state_dict(state_dict) |
| |
| model = model.to(device) |
| model = model.eval() |
| return model |
|
|
| def cut_frame_to_8(data): |
| index = np.linspace(0, len(data)-1, 8).astype(int) |
| return data[index] |
|
|
| kinetics_classnames = { |
| "0": "riding a bike", |
| "1": "marching", |
| "2": "dodgeball", |
| "3": "playing cymbals", |
| "4": "checking tires", |
| "5": "roller skating", |
| "6": "tasting beer", |
| "7": "clapping", |
| "8": "drawing", |
| "9": "juggling fire", |
| "10": "bobsledding", |
| "11": "petting animal (not cat)", |
| "12": "spray painting", |
| "13": "training dog", |
| "14": "eating watermelon", |
| "15": "building cabinet", |
| "16": "applauding", |
| "17": "playing harp", |
| "18": "balloon blowing", |
| "19": "sled dog racing", |
| "20": "wrestling", |
| "21": "pole vault", |
| "22": "hurling (sport)", |
| "23": "riding scooter", |
| "24": "shearing sheep", |
| "25": "sweeping floor", |
| "26": "eating carrots", |
| "27": "skateboarding", |
| "28": "dunking basketball", |
| "29": "disc golfing", |
| "30": "eating spaghetti", |
| "31": "playing flute", |
| "32": "riding mechanical bull", |
| "33": "making sushi", |
| "34": "trapezing", |
| "35": "picking fruit", |
| "36": "stretching leg", |
| "37": "playing ukulele", |
| "38": "tying tie", |
| "39": "skydiving", |
| "40": "playing cello", |
| "41": "jumping into pool", |
| "42": "shooting goal (soccer)", |
| "43": "trimming trees", |
| "44": "bookbinding", |
| "45": "ski jumping", |
| "46": "walking the dog", |
| "47": "riding unicycle", |
| "48": "shaving head", |
| "49": "hopscotch", |
| "50": "playing piano", |
| "51": "parasailing", |
| "52": "bartending", |
| "53": "kicking field goal", |
| "54": "finger snapping", |
| "55": "dining", |
| "56": "yawning", |
| "57": "peeling potatoes", |
| "58": "canoeing or kayaking", |
| "59": "front raises", |
| "60": "laughing", |
| "61": "dancing macarena", |
| "62": "digging", |
| "63": "reading newspaper", |
| "64": "hitting baseball", |
| "65": "clay pottery making", |
| "66": "exercising with an exercise ball", |
| "67": "playing saxophone", |
| "68": "shooting basketball", |
| "69": "washing hair", |
| "70": "lunge", |
| "71": "brushing hair", |
| "72": "curling hair", |
| "73": "kitesurfing", |
| "74": "tapping guitar", |
| "75": "bending back", |
| "76": "skipping rope", |
| "77": "situp", |
| "78": "folding paper", |
| "79": "cracking neck", |
| "80": "assembling computer", |
| "81": "cleaning gutters", |
| "82": "blowing out candles", |
| "83": "shaking hands", |
| "84": "dancing gangnam style", |
| "85": "windsurfing", |
| "86": "tap dancing", |
| "87": "skiing (not slalom or crosscountry)", |
| "88": "bandaging", |
| "89": "push up", |
| "90": "doing nails", |
| "91": "punching person (boxing)", |
| "92": "bouncing on trampoline", |
| "93": "scrambling eggs", |
| "94": "singing", |
| "95": "cleaning floor", |
| "96": "krumping", |
| "97": "drumming fingers", |
| "98": "snowmobiling", |
| "99": "gymnastics tumbling", |
| "100": "headbanging", |
| "101": "catching or throwing frisbee", |
| "102": "riding elephant", |
| "103": "bee keeping", |
| "104": "feeding birds", |
| "105": "snatch weight lifting", |
| "106": "mowing lawn", |
| "107": "fixing hair", |
| "108": "playing trumpet", |
| "109": "flying kite", |
| "110": "crossing river", |
| "111": "swinging legs", |
| "112": "sanding floor", |
| "113": "belly dancing", |
| "114": "sneezing", |
| "115": "clean and jerk", |
| "116": "side kick", |
| "117": "filling eyebrows", |
| "118": "shuffling cards", |
| "119": "recording music", |
| "120": "cartwheeling", |
| "121": "feeding fish", |
| "122": "folding clothes", |
| "123": "water skiing", |
| "124": "tobogganing", |
| "125": "blowing leaves", |
| "126": "smoking", |
| "127": "unboxing", |
| "128": "tai chi", |
| "129": "waxing legs", |
| "130": "riding camel", |
| "131": "slapping", |
| "132": "tossing salad", |
| "133": "capoeira", |
| "134": "playing cards", |
| "135": "playing organ", |
| "136": "playing violin", |
| "137": "playing drums", |
| "138": "tapping pen", |
| "139": "vault", |
| "140": "shoveling snow", |
| "141": "playing tennis", |
| "142": "getting a tattoo", |
| "143": "making a sandwich", |
| "144": "making tea", |
| "145": "grinding meat", |
| "146": "squat", |
| "147": "eating doughnuts", |
| "148": "ice fishing", |
| "149": "snowkiting", |
| "150": "kicking soccer ball", |
| "151": "playing controller", |
| "152": "giving or receiving award", |
| "153": "welding", |
| "154": "throwing discus", |
| "155": "throwing axe", |
| "156": "ripping paper", |
| "157": "swimming butterfly stroke", |
| "158": "air drumming", |
| "159": "blowing nose", |
| "160": "hockey stop", |
| "161": "taking a shower", |
| "162": "bench pressing", |
| "163": "planting trees", |
| "164": "pumping fist", |
| "165": "climbing tree", |
| "166": "tickling", |
| "167": "high kick", |
| "168": "waiting in line", |
| "169": "slacklining", |
| "170": "tango dancing", |
| "171": "hurdling", |
| "172": "carrying baby", |
| "173": "celebrating", |
| "174": "sharpening knives", |
| "175": "passing American football (in game)", |
| "176": "headbutting", |
| "177": "playing recorder", |
| "178": "brush painting", |
| "179": "garbage collecting", |
| "180": "robot dancing", |
| "181": "shredding paper", |
| "182": "pumping gas", |
| "183": "rock climbing", |
| "184": "hula hooping", |
| "185": "braiding hair", |
| "186": "opening present", |
| "187": "texting", |
| "188": "decorating the christmas tree", |
| "189": "answering questions", |
| "190": "playing keyboard", |
| "191": "writing", |
| "192": "bungee jumping", |
| "193": "sniffing", |
| "194": "eating burger", |
| "195": "playing accordion", |
| "196": "making pizza", |
| "197": "playing volleyball", |
| "198": "tasting food", |
| "199": "pushing cart", |
| "200": "spinning poi", |
| "201": "cleaning windows", |
| "202": "arm wrestling", |
| "203": "changing oil", |
| "204": "swimming breast stroke", |
| "205": "tossing coin", |
| "206": "deadlifting", |
| "207": "hoverboarding", |
| "208": "cutting watermelon", |
| "209": "cheerleading", |
| "210": "snorkeling", |
| "211": "washing hands", |
| "212": "eating cake", |
| "213": "pull ups", |
| "214": "surfing water", |
| "215": "eating hotdog", |
| "216": "holding snake", |
| "217": "playing harmonica", |
| "218": "ironing", |
| "219": "cutting nails", |
| "220": "golf chipping", |
| "221": "shot put", |
| "222": "hugging", |
| "223": "playing clarinet", |
| "224": "faceplanting", |
| "225": "trimming or shaving beard", |
| "226": "drinking shots", |
| "227": "riding mountain bike", |
| "228": "tying bow tie", |
| "229": "swinging on something", |
| "230": "skiing crosscountry", |
| "231": "unloading truck", |
| "232": "cleaning pool", |
| "233": "jogging", |
| "234": "ice climbing", |
| "235": "mopping floor", |
| "236": "making bed", |
| "237": "diving cliff", |
| "238": "washing dishes", |
| "239": "grooming dog", |
| "240": "weaving basket", |
| "241": "frying vegetables", |
| "242": "stomping grapes", |
| "243": "moving furniture", |
| "244": "cooking sausages", |
| "245": "doing laundry", |
| "246": "dying hair", |
| "247": "knitting", |
| "248": "reading book", |
| "249": "baby waking up", |
| "250": "punching bag", |
| "251": "surfing crowd", |
| "252": "cooking chicken", |
| "253": "pushing car", |
| "254": "springboard diving", |
| "255": "swing dancing", |
| "256": "massaging legs", |
| "257": "beatboxing", |
| "258": "breading or breadcrumbing", |
| "259": "somersaulting", |
| "260": "brushing teeth", |
| "261": "stretching arm", |
| "262": "juggling balls", |
| "263": "massaging person's head", |
| "264": "eating ice cream", |
| "265": "extinguishing fire", |
| "266": "hammer throw", |
| "267": "whistling", |
| "268": "crawling baby", |
| "269": "using remote controller (not gaming)", |
| "270": "playing cricket", |
| "271": "opening bottle", |
| "272": "playing xylophone", |
| "273": "motorcycling", |
| "274": "driving car", |
| "275": "exercising arm", |
| "276": "passing American football (not in game)", |
| "277": "playing kickball", |
| "278": "sticking tongue out", |
| "279": "flipping pancake", |
| "280": "catching fish", |
| "281": "eating chips", |
| "282": "shaking head", |
| "283": "sword fighting", |
| "284": "playing poker", |
| "285": "cooking on campfire", |
| "286": "doing aerobics", |
| "287": "paragliding", |
| "288": "using segway", |
| "289": "folding napkins", |
| "290": "playing bagpipes", |
| "291": "gargling", |
| "292": "skiing slalom", |
| "293": "strumming guitar", |
| "294": "javelin throw", |
| "295": "waxing back", |
| "296": "riding or walking with horse", |
| "297": "plastering", |
| "298": "long jump", |
| "299": "parkour", |
| "300": "wrapping present", |
| "301": "egg hunting", |
| "302": "archery", |
| "303": "cleaning toilet", |
| "304": "swimming backstroke", |
| "305": "snowboarding", |
| "306": "catching or throwing baseball", |
| "307": "massaging back", |
| "308": "blowing glass", |
| "309": "playing guitar", |
| "310": "playing chess", |
| "311": "golf driving", |
| "312": "presenting weather forecast", |
| "313": "rock scissors paper", |
| "314": "high jump", |
| "315": "baking cookies", |
| "316": "using computer", |
| "317": "washing feet", |
| "318": "arranging flowers", |
| "319": "playing bass guitar", |
| "320": "spraying", |
| "321": "cutting pineapple", |
| "322": "waxing chest", |
| "323": "auctioning", |
| "324": "jetskiing", |
| "325": "drinking", |
| "326": "busking", |
| "327": "playing monopoly", |
| "328": "salsa dancing", |
| "329": "waxing eyebrows", |
| "330": "watering plants", |
| "331": "zumba", |
| "332": "chopping wood", |
| "333": "pushing wheelchair", |
| "334": "carving pumpkin", |
| "335": "building shed", |
| "336": "making jewelry", |
| "337": "catching or throwing softball", |
| "338": "bending metal", |
| "339": "ice skating", |
| "340": "dancing charleston", |
| "341": "abseiling", |
| "342": "climbing a rope", |
| "343": "crying", |
| "344": "cleaning shoes", |
| "345": "dancing ballet", |
| "346": "driving tractor", |
| "347": "triple jump", |
| "348": "throwing ball", |
| "349": "getting a haircut", |
| "350": "running on treadmill", |
| "351": "climbing ladder", |
| "352": "blasting sand", |
| "353": "playing trombone", |
| "354": "drop kicking", |
| "355": "country line dancing", |
| "356": "changing wheel", |
| "357": "feeding goats", |
| "358": "tying knot (not on a tie)", |
| "359": "setting table", |
| "360": "shaving legs", |
| "361": "kissing", |
| "362": "riding mule", |
| "363": "counting money", |
| "364": "laying bricks", |
| "365": "barbequing", |
| "366": "news anchoring", |
| "367": "smoking hookah", |
| "368": "cooking egg", |
| "369": "peeling apples", |
| "370": "yoga", |
| "371": "sharpening pencil", |
| "372": "dribbling basketball", |
| "373": "petting cat", |
| "374": "playing ice hockey", |
| "375": "milking cow", |
| "376": "shining shoes", |
| "377": "juggling soccer ball", |
| "378": "scuba diving", |
| "379": "playing squash or racquetball", |
| "380": "drinking beer", |
| "381": "sign language interpreting", |
| "382": "playing basketball", |
| "383": "breakdancing", |
| "384": "testifying", |
| "385": "making snowman", |
| "386": "golf putting", |
| "387": "playing didgeridoo", |
| "388": "biking through snow", |
| "389": "sailing", |
| "390": "jumpstyle dancing", |
| "391": "water sliding", |
| "392": "grooming horse", |
| "393": "massaging feet", |
| "394": "playing paintball", |
| "395": "making a cake", |
| "396": "bowling", |
| "397": "contact juggling", |
| "398": "applying cream", |
| "399": "playing badminton" |
| } |
|
|
|
|