Upload 14 files
Browse files- .env +1 -0
- .gitignore +1 -0
- .gradio/certificate.pem +31 -0
- README.md +2 -12
- __pycache__/console.cpython-312.pyc +0 -0
- backend/__pycache__/app.cpython-313.pyc +0 -0
- backend/app.py +402 -0
- backend/models/model_metadata.pkl +3 -0
- backend/models/timesformer_best_submission.csv +281 -0
- backend/preprocessed_cache/81a5fb6b1b9354ad5073dd5fca4d07f8_0732.pkl +3 -0
- backend/preprocessed_cache/81a5fb6b1b9354ad5073dd5fca4d07f8_0753.pkl +3 -0
- my-app/README.md +44 -0
- my-app/requirements.txt +4 -0
- requirement.txt +4 -0
.env
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
API_KEY=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
|
.gitignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
.env
|
.gradio/certificate.pem
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
-----BEGIN CERTIFICATE-----
|
| 2 |
+
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
|
| 3 |
+
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
| 4 |
+
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
|
| 5 |
+
WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
|
| 6 |
+
ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
|
| 7 |
+
MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
|
| 8 |
+
h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
|
| 9 |
+
0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
|
| 10 |
+
A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
|
| 11 |
+
T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
|
| 12 |
+
B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
|
| 13 |
+
B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
|
| 14 |
+
KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
|
| 15 |
+
OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
|
| 16 |
+
jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
|
| 17 |
+
qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
|
| 18 |
+
rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
|
| 19 |
+
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
|
| 20 |
+
hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
|
| 21 |
+
ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
|
| 22 |
+
3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
|
| 23 |
+
NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
|
| 24 |
+
ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
|
| 25 |
+
TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
|
| 26 |
+
jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
|
| 27 |
+
oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
|
| 28 |
+
4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
|
| 29 |
+
mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
|
| 30 |
+
emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
|
| 31 |
+
-----END CERTIFICATE-----
|
README.md
CHANGED
|
@@ -1,12 +1,2 @@
|
|
| 1 |
-
--
|
| 2 |
-
|
| 3 |
-
emoji: 🌍
|
| 4 |
-
colorFrom: red
|
| 5 |
-
colorTo: blue
|
| 6 |
-
sdk: gradio
|
| 7 |
-
sdk_version: 5.34.2
|
| 8 |
-
app_file: app.py
|
| 9 |
-
pinned: false
|
| 10 |
-
---
|
| 11 |
-
|
| 12 |
-
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
| 1 |
+
# EXP-Unicorn-Hack7
|
| 2 |
+
เราจะไปตั้งหัวแถวใหม่กันครับ
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
__pycache__/console.cpython-312.pyc
ADDED
|
Binary file (3.75 kB). View file
|
|
|
backend/__pycache__/app.cpython-313.pyc
ADDED
|
Binary file (25.5 kB). View file
|
|
|
backend/app.py
ADDED
|
@@ -0,0 +1,402 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import pandas as pd
|
| 2 |
+
import cv2
|
| 3 |
+
import numpy as np
|
| 4 |
+
import torch
|
| 5 |
+
from torch.utils.data import Dataset
|
| 6 |
+
from transformers import AutoImageProcessor, TimesformerForVideoClassification
|
| 7 |
+
import os
|
| 8 |
+
import logging
|
| 9 |
+
from fastapi import FastAPI, File, UploadFile, HTTPException, BackgroundTasks
|
| 10 |
+
from pydantic import BaseModel
|
| 11 |
+
from typing import List, Dict
|
| 12 |
+
import joblib
|
| 13 |
+
import torch.nn as nn
|
| 14 |
+
import tempfile
|
| 15 |
+
from datetime import datetime
|
| 16 |
+
import torch.optim as optim
|
| 17 |
+
from torch.cuda.amp import autocast
|
| 18 |
+
import hashlib
|
| 19 |
+
|
| 20 |
+
# Set up logging
|
| 21 |
+
logging.basicConfig(level=logging.INFO)
|
| 22 |
+
logger = logging.getLogger(__name__)
|
| 23 |
+
|
| 24 |
+
# Configuration
|
| 25 |
+
CONFIG = {
|
| 26 |
+
'img_height': 224,
|
| 27 |
+
'img_width': 224,
|
| 28 |
+
'num_frames': 4, # Reduced from 8 to 4
|
| 29 |
+
'window_seconds': 3.0,
|
| 30 |
+
'cache_dir': './preprocessed_cache',
|
| 31 |
+
'feedback_dir': './feedback_videos',
|
| 32 |
+
'feedback_csv': 'feedback.csv',
|
| 33 |
+
}
|
| 34 |
+
|
| 35 |
+
# Action columns
|
| 36 |
+
ACTION_COLS = ['Advancing', 'Retreating', 'Enclosing', 'Spreading', 'Rising',
|
| 37 |
+
'Descending', 'Directing', 'Indirecting', 'Increasing Pressure',
|
| 38 |
+
'Decreasing Pressure', 'Acceleration', 'Decelerating']
|
| 39 |
+
|
| 40 |
+
# Action pairs for constraint enforcement
|
| 41 |
+
action_pairs = [
|
| 42 |
+
('Advancing', 'Retreating'),
|
| 43 |
+
('Enclosing', 'Spreading'),
|
| 44 |
+
('Rising', 'Descending'),
|
| 45 |
+
('Directing', 'Indirecting'),
|
| 46 |
+
('Increasing Pressure', 'Decreasing Pressure'),
|
| 47 |
+
('Acceleration', 'Decelerating')
|
| 48 |
+
]
|
| 49 |
+
|
| 50 |
+
# Model definition
|
| 51 |
+
class TwoStreamTimeSformer(nn.Module):
|
| 52 |
+
def __init__(self, num_labels):
|
| 53 |
+
super(TwoStreamTimeSformer, self).__init__()
|
| 54 |
+
self.rgb_model = TimesformerForVideoClassification.from_pretrained(
|
| 55 |
+
"facebook/timesformer-base-finetuned-k400", num_labels=num_labels, ignore_mismatched_sizes=True
|
| 56 |
+
)
|
| 57 |
+
self.flow_model = TimesformerForVideoClassification.from_pretrained(
|
| 58 |
+
"facebook/timesformer-base-finetuned-k400", num_labels=num_labels, ignore_mismatched_sizes=True
|
| 59 |
+
)
|
| 60 |
+
self.fusion = nn.Linear(num_labels * 2, num_labels)
|
| 61 |
+
|
| 62 |
+
def forward(self, rgb_inputs, flow_inputs):
|
| 63 |
+
rgb_logits = self.rgb_model(rgb_inputs).logits
|
| 64 |
+
flow_logits = self.flow_model(flow_inputs).logits
|
| 65 |
+
fused = torch.cat([rgb_logits, flow_logits], dim=-1)
|
| 66 |
+
return self.fusion(fused)
|
| 67 |
+
|
| 68 |
+
def parse_timestamp(time_str):
|
| 69 |
+
try:
|
| 70 |
+
time_str = time_str.strip()
|
| 71 |
+
if len(time_str) < 4:
|
| 72 |
+
time_str = '0' * (4 - len(time_str)) + time_str
|
| 73 |
+
minutes = int(time_str[:-2])
|
| 74 |
+
seconds = int(time_str[-2:])
|
| 75 |
+
return minutes * 60 + seconds
|
| 76 |
+
except ValueError as e:
|
| 77 |
+
logger.error(f"Invalid timestamp format: {time_str}")
|
| 78 |
+
raise ValueError(f"Invalid timestamp format: {time_str}")
|
| 79 |
+
|
| 80 |
+
def get_video_hash(video_bytes):
|
| 81 |
+
return hashlib.md5(video_bytes).hexdigest()
|
| 82 |
+
|
| 83 |
+
def preprocess_video(video_bytes, timestamp_seconds, image_processor, num_frames=CONFIG['num_frames'], window_seconds=CONFIG['window_seconds']):
|
| 84 |
+
# Save video bytes to a temporary file
|
| 85 |
+
with tempfile.NamedTemporaryFile(delete=False, suffix='.mp4') as tmp:
|
| 86 |
+
tmp.write(video_bytes)
|
| 87 |
+
video_path = tmp.name
|
| 88 |
+
|
| 89 |
+
try:
|
| 90 |
+
cap = cv2.VideoCapture(video_path)
|
| 91 |
+
if not cap.isOpened():
|
| 92 |
+
logger.error(f"Failed to open video at {video_path}")
|
| 93 |
+
raise ValueError("Cannot open video file")
|
| 94 |
+
|
| 95 |
+
fps = cap.get(cv2.CAP_PROP_FPS)
|
| 96 |
+
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
|
| 97 |
+
duration = frame_count / fps if fps > 0 else 0
|
| 98 |
+
if timestamp_seconds < 0 or timestamp_seconds > duration:
|
| 99 |
+
logger.warning(f"Timestamp {timestamp_seconds}s out of range for video duration {duration}s")
|
| 100 |
+
raise ValueError(f"Timestamp {timestamp_seconds}s out of range (duration: {duration}s)")
|
| 101 |
+
|
| 102 |
+
center_frame = int(timestamp_seconds * fps)
|
| 103 |
+
window_frames = int(window_seconds * fps)
|
| 104 |
+
start_frame = max(0, center_frame - window_frames // 2)
|
| 105 |
+
end_frame = min(frame_count - 1, center_frame + window_frames // 2)
|
| 106 |
+
frames_rgb = []
|
| 107 |
+
frames_flow = []
|
| 108 |
+
target_frames = np.linspace(start_frame, end_frame, num_frames, dtype=int).tolist()
|
| 109 |
+
|
| 110 |
+
prev_gray = None
|
| 111 |
+
all_flows = []
|
| 112 |
+
for idx in target_frames:
|
| 113 |
+
cap.set(cv2.CAP_PROP_POS_FRAMES, idx)
|
| 114 |
+
ret, frame = cap.read()
|
| 115 |
+
if ret:
|
| 116 |
+
frame = cv2.resize(frame, (CONFIG['img_width'], CONFIG['img_height']))
|
| 117 |
+
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
|
| 118 |
+
frames_rgb.append(frame_rgb)
|
| 119 |
+
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
|
| 120 |
+
if prev_gray is not None:
|
| 121 |
+
flow = cv2.calcOpticalFlowFarneback(prev_gray, gray, None, 0.5, 3, 15, 3, 5, 1.2, 0)
|
| 122 |
+
flow = cv2.normalize(flow, None, 0, 255, cv2.NORM_MINMAX).astype(np.float32) / 255.0
|
| 123 |
+
all_flows.append(flow)
|
| 124 |
+
prev_gray = gray
|
| 125 |
+
else:
|
| 126 |
+
logger.warning(f"Failed to read frame {idx}")
|
| 127 |
+
|
| 128 |
+
# Pad if necessary
|
| 129 |
+
if len(frames_rgb) < num_frames:
|
| 130 |
+
frames_rgb.extend([frames_rgb[-1].copy() if frames_rgb else np.zeros((CONFIG['img_height'], CONFIG['img_width'], 3), dtype=np.uint8)] * (num_frames - len(frames_rgb)))
|
| 131 |
+
all_flows.extend([np.zeros((CONFIG['img_height'], CONFIG['img_width'], 2), dtype=np.float32)] * (num_frames - len(all_flows)))
|
| 132 |
+
|
| 133 |
+
frames_rgb = frames_rgb[:num_frames]
|
| 134 |
+
frames_flow = np.stack(all_flows, axis=0) if all_flows else np.zeros((num_frames, CONFIG['img_height'], CONFIG['img_width'], 2), dtype=np.float32)
|
| 135 |
+
if len(frames_flow) < num_frames:
|
| 136 |
+
frames_flow = np.pad(frames_flow, ((0, num_frames - len(frames_flow)), (0, 0), (0, 0), (0, 0)), mode='edge')
|
| 137 |
+
frames_flow = frames_flow[:num_frames]
|
| 138 |
+
|
| 139 |
+
inputs_rgb = image_processor(frames_rgb, return_tensors="pt")['pixel_values'].squeeze(0)
|
| 140 |
+
|
| 141 |
+
flow_magnitude = np.linalg.norm(frames_flow, axis=3)
|
| 142 |
+
flow_angle = np.arctan2(frames_flow[:, :, :, 1], frames_flow[:, :, :, 0])
|
| 143 |
+
frames_flow = np.stack([flow_magnitude, flow_angle, np.zeros_like(flow_magnitude)], axis=1)
|
| 144 |
+
frames_flow = np.clip(frames_flow, 0, 1) * 255.0
|
| 145 |
+
frames_flow = frames_flow.astype(np.uint8)
|
| 146 |
+
|
| 147 |
+
flow_images = [frames_flow[i].transpose(1, 2, 0) for i in range(frames_flow.shape[0])]
|
| 148 |
+
inputs_flow = image_processor(flow_images, return_tensors="pt")['pixel_values'].squeeze(0)
|
| 149 |
+
|
| 150 |
+
return inputs_rgb, inputs_flow
|
| 151 |
+
|
| 152 |
+
finally:
|
| 153 |
+
cap.release()
|
| 154 |
+
os.unlink(video_path)
|
| 155 |
+
|
| 156 |
+
async def preprocess_video_async(video_bytes, timestamp_seconds, image_processor, cache_key):
|
| 157 |
+
cache_path = os.path.join(CONFIG['cache_dir'], f"{cache_key}.pkl")
|
| 158 |
+
os.makedirs(CONFIG['cache_dir'], exist_ok=True)
|
| 159 |
+
|
| 160 |
+
if os.path.exists(cache_path):
|
| 161 |
+
logger.info(f"Loading cached inputs from {cache_path}")
|
| 162 |
+
return joblib.load(cache_path)
|
| 163 |
+
|
| 164 |
+
inputs_rgb, inputs_flow = preprocess_video(video_bytes, timestamp_seconds, image_processor)
|
| 165 |
+
joblib.dump((inputs_rgb, inputs_flow), cache_path)
|
| 166 |
+
logger.info(f"Saved preprocessed inputs to {cache_path}")
|
| 167 |
+
return inputs_rgb, inputs_flow
|
| 168 |
+
|
| 169 |
+
def check_label_constraints(preds, action_pairs, action_cols):
|
| 170 |
+
violations = []
|
| 171 |
+
for action1, action2 in action_pairs:
|
| 172 |
+
idx1 = action_cols.index(action1)
|
| 173 |
+
idx2 = action_cols.index(action2)
|
| 174 |
+
val1 = preds[idx1]
|
| 175 |
+
val2 = preds[idx2]
|
| 176 |
+
if val1 == 1 and val2 == 1:
|
| 177 |
+
violations.append((action1, action2, val1, val2))
|
| 178 |
+
return violations
|
| 179 |
+
|
| 180 |
+
def enforce_constraints(preds, probs, action_pairs, action_cols):
|
| 181 |
+
adjusted_preds = preds.copy()
|
| 182 |
+
violations = check_label_constraints(preds, action_pairs, action_cols)
|
| 183 |
+
for action1, action2, _, _ in violations:
|
| 184 |
+
idx1 = action_cols.index(action1)
|
| 185 |
+
idx2 = action_cols.index(action2)
|
| 186 |
+
prob1 = probs[idx1]
|
| 187 |
+
prob2 = probs[idx2]
|
| 188 |
+
if prob1 >= prob2:
|
| 189 |
+
adjusted_preds[idx2] = 0
|
| 190 |
+
else:
|
| 191 |
+
adjusted_preds[idx1] = 0
|
| 192 |
+
return adjusted_preds
|
| 193 |
+
|
| 194 |
+
def validate_feedback_actions(actions: Dict[str, int], action_pairs, action_cols):
|
| 195 |
+
violations = []
|
| 196 |
+
for action1, action2 in action_pairs:
|
| 197 |
+
idx1 = action_cols.index(action1)
|
| 198 |
+
idx2 = action_cols.index(action2)
|
| 199 |
+
val1 = actions.get(action1, 0)
|
| 200 |
+
val2 = actions.get(action2, 0)
|
| 201 |
+
if val1 == 1 and val2 == 1:
|
| 202 |
+
violations.append(f"Invalid: Both {action1} and {action2} are 1")
|
| 203 |
+
return violations
|
| 204 |
+
|
| 205 |
+
def save_feedback(timestamp: str, actions: Dict[str, int], probabilities: List[float], video_bytes: bytes):
|
| 206 |
+
os.makedirs(CONFIG['feedback_dir'], exist_ok=True)
|
| 207 |
+
video_filename = f"feedback_{timestamp}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.mp4"
|
| 208 |
+
video_path = os.path.join(CONFIG['feedback_dir'], video_filename)
|
| 209 |
+
with open(video_path, 'wb') as f:
|
| 210 |
+
f.write(video_bytes)
|
| 211 |
+
|
| 212 |
+
feedback_data = {
|
| 213 |
+
'timestamp': timestamp,
|
| 214 |
+
'video_path': video_path,
|
| 215 |
+
**{f"action_{k}": v for k, v in actions.items()},
|
| 216 |
+
**{f"prob_{k}": p for k, p in zip(ACTION_COLS, probabilities)}
|
| 217 |
+
}
|
| 218 |
+
|
| 219 |
+
df = pd.DataFrame([feedback_data])
|
| 220 |
+
if os.path.exists(CONFIG['feedback_csv']):
|
| 221 |
+
df.to_csv(CONFIG['feedback_csv'], mode='a', header=False, index=False)
|
| 222 |
+
else:
|
| 223 |
+
df.to_csv(CONFIG['feedback_csv'], mode='w', header=True, index=False)
|
| 224 |
+
|
| 225 |
+
logger.info(f"Saved feedback for timestamp {timestamp} to {CONFIG['feedback_csv']} and video to {video_path}")
|
| 226 |
+
|
| 227 |
+
class FeedbackDataset(Dataset):
|
| 228 |
+
def __init__(self, feedback_csv, image_processor):
|
| 229 |
+
self.feedback_df = pd.read_csv(feedback_csv)
|
| 230 |
+
self.image_processor = image_processor
|
| 231 |
+
self.action_cols = [f"action_{col}" for col in ACTION_COLS]
|
| 232 |
+
|
| 233 |
+
def __len__(self):
|
| 234 |
+
return len(self.feedback_df)
|
| 235 |
+
|
| 236 |
+
def __getitem__(self, idx):
|
| 237 |
+
row = self.feedback_df.iloc[idx]
|
| 238 |
+
video_path = row['video_path']
|
| 239 |
+
timestamp = parse_timestamp(row['timestamp'])
|
| 240 |
+
labels = row[self.action_cols].values.astype(np.float32)
|
| 241 |
+
|
| 242 |
+
with open(video_path, 'rb') as f:
|
| 243 |
+
video_bytes = f.read()
|
| 244 |
+
|
| 245 |
+
rgb_inputs, flow_inputs = preprocess_video(video_bytes, timestamp, self.image_processor)
|
| 246 |
+
|
| 247 |
+
return {
|
| 248 |
+
'rgb_inputs': rgb_inputs,
|
| 249 |
+
'flow_inputs': flow_inputs,
|
| 250 |
+
'labels': torch.tensor(labels, dtype=torch.float32)
|
| 251 |
+
}
|
| 252 |
+
|
| 253 |
+
def retrain_model(model, feedback_csv, original_train_csv, device, num_epochs=1, batch_size=4):
|
| 254 |
+
image_processor = AutoImageProcessor.from_pretrained("facebook/timesformer-base-finetuned-k400")
|
| 255 |
+
feedback_dataset = FeedbackDataset(feedback_csv, image_processor)
|
| 256 |
+
feedback_loader = torch.utils.data.DataLoader(feedback_dataset, batch_size=batch_size, shuffle=True)
|
| 257 |
+
|
| 258 |
+
original_dataset = FeedbackDataset(original_train_csv, image_processor)
|
| 259 |
+
original_loader = torch.utils.data.DataLoader(original_dataset, batch_size=batch_size, shuffle=True)
|
| 260 |
+
|
| 261 |
+
optimizer = optim.Adam(model.parameters(), lr=1e-5)
|
| 262 |
+
criterion = nn.BCEWithLogitsLoss()
|
| 263 |
+
|
| 264 |
+
model.train()
|
| 265 |
+
for epoch in range(num_epochs):
|
| 266 |
+
total_loss = 0
|
| 267 |
+
for loader in [feedback_loader, original_loader]:
|
| 268 |
+
for batch in loader:
|
| 269 |
+
rgb_inputs = batch['rgb_inputs'].to(device)
|
| 270 |
+
flow_inputs = batch['flow_inputs'].to(device)
|
| 271 |
+
labels = batch['labels'].to(device)
|
| 272 |
+
|
| 273 |
+
optimizer.zero_grad()
|
| 274 |
+
with autocast():
|
| 275 |
+
outputs = model(rgb_inputs, flow_inputs)
|
| 276 |
+
loss = criterion(outputs, labels)
|
| 277 |
+
loss.backward()
|
| 278 |
+
optimizer.step()
|
| 279 |
+
|
| 280 |
+
total_loss += loss.item()
|
| 281 |
+
|
| 282 |
+
avg_loss = total_loss / (len(feedback_loader) + len(original_loader))
|
| 283 |
+
logger.info(f"Epoch {epoch+1}/{num_epochs}, Average Loss: {avg_loss:.4f}")
|
| 284 |
+
|
| 285 |
+
torch.save(model.state_dict(), "models/final_two_stream_timesformer_updated.pth")
|
| 286 |
+
logger.info("Saved updated model weights to final_two_stream_timesformer_updated.pth")
|
| 287 |
+
|
| 288 |
+
# Initialize FastAPI app
|
| 289 |
+
app = FastAPI(title="Action Recognition API")
|
| 290 |
+
|
| 291 |
+
# Load model and metadata
|
| 292 |
+
device = 'cuda' if torch.cuda.is_available() else 'cpu'
|
| 293 |
+
model = TwoStreamTimeSformer(num_labels=len(ACTION_COLS))
|
| 294 |
+
model.load_state_dict(torch.load("models/final_two_stream_timesformer.pth", map_location=device))
|
| 295 |
+
model.to(device)
|
| 296 |
+
model.eval()
|
| 297 |
+
|
| 298 |
+
metadata = joblib.load("models/model_metadata.pkl")
|
| 299 |
+
image_processor = AutoImageProcessor.from_pretrained("facebook/timesformer-base-finetuned-k400")
|
| 300 |
+
|
| 301 |
+
# Request and response models
|
| 302 |
+
class PredictionRequest(BaseModel):
|
| 303 |
+
timestamp: str
|
| 304 |
+
|
| 305 |
+
class PredictionResponse(BaseModel):
|
| 306 |
+
timestamp: str
|
| 307 |
+
actions: Dict[str, int]
|
| 308 |
+
probabilities: List[float]
|
| 309 |
+
|
| 310 |
+
class FeedbackRequest(BaseModel):
|
| 311 |
+
timestamp: str
|
| 312 |
+
actions: Dict[str, int]
|
| 313 |
+
probabilities: List[float]
|
| 314 |
+
|
| 315 |
+
class FeedbackResponse(BaseModel):
|
| 316 |
+
status: str
|
| 317 |
+
message: str
|
| 318 |
+
|
| 319 |
+
@app.post("/predict", response_model=PredictionResponse)
|
| 320 |
+
async def predict(background_tasks: BackgroundTasks, file: UploadFile = File(...), timestamp: str = "0000"):
|
| 321 |
+
if not file.filename.endswith(('.mp4', '.avi', '.mov')):
|
| 322 |
+
raise HTTPException(status_code=400, detail="Invalid file format. Only .mp4, .avi, .mov are supported.")
|
| 323 |
+
|
| 324 |
+
try:
|
| 325 |
+
video_bytes = await file.read()
|
| 326 |
+
timestamp_seconds = parse_timestamp(timestamp)
|
| 327 |
+
cache_key = f"{get_video_hash(video_bytes)}_{timestamp}"
|
| 328 |
+
|
| 329 |
+
rgb_inputs, flow_inputs = await preprocess_video_async(video_bytes, timestamp_seconds, image_processor, cache_key)
|
| 330 |
+
|
| 331 |
+
with torch.no_grad():
|
| 332 |
+
rgb_inputs = rgb_inputs.unsqueeze(0).to(device, non_blocking=True)
|
| 333 |
+
flow_inputs = flow_inputs.unsqueeze(0).to(device, non_blocking=True)
|
| 334 |
+
with autocast():
|
| 335 |
+
outputs = model(rgb_inputs, flow_inputs)
|
| 336 |
+
probs = torch.sigmoid(outputs).cpu().numpy()[0]
|
| 337 |
+
preds = (probs > 0.7).astype(np.int32)
|
| 338 |
+
logger.info(f"Initial predictions (threshold 0.7): {dict(zip(ACTION_COLS, preds))}")
|
| 339 |
+
logger.info(f"Probabilities: {dict(zip(ACTION_COLS, probs))}")
|
| 340 |
+
|
| 341 |
+
adjusted_preds = enforce_constraints(preds, probs, action_pairs, ACTION_COLS)
|
| 342 |
+
logger.info(f"Adjusted predictions (after constraints): {dict(zip(ACTION_COLS, adjusted_preds))}")
|
| 343 |
+
|
| 344 |
+
actions_dict = {action: int(adjusted_preds[i]) for i, action in enumerate(ACTION_COLS)}
|
| 345 |
+
probabilities = probs.tolist()
|
| 346 |
+
|
| 347 |
+
return PredictionResponse(
|
| 348 |
+
timestamp=timestamp,
|
| 349 |
+
actions=actions_dict,
|
| 350 |
+
probabilities=probabilities
|
| 351 |
+
)
|
| 352 |
+
|
| 353 |
+
except ValueError as e:
|
| 354 |
+
raise HTTPException(status_code=400, detail=str(e))
|
| 355 |
+
except Exception as e:
|
| 356 |
+
logger.error(f"Unexpected error: {str(e)}")
|
| 357 |
+
raise HTTPException(status_code=500, detail="Internal server error")
|
| 358 |
+
|
| 359 |
+
@app.post("/feedback", response_model=FeedbackResponse)
|
| 360 |
+
async def feedback(feedback: FeedbackRequest, file: UploadFile = File(...)):
|
| 361 |
+
if not file.filename.endswith(('.mp4', '.avi', '.mov')):
|
| 362 |
+
raise HTTPException(status_code=400, detail="Invalid file format. Only .mp4, .avi, .mov are supported.")
|
| 363 |
+
|
| 364 |
+
try:
|
| 365 |
+
violations = validate_feedback_actions(feedback.actions, action_pairs, ACTION_COLS)
|
| 366 |
+
if violations:
|
| 367 |
+
raise ValueError(f"Invalid feedback actions: {'; '.join(violations)}")
|
| 368 |
+
|
| 369 |
+
video_bytes = await file.read()
|
| 370 |
+
save_feedback(feedback.timestamp, feedback.actions, feedback.probabilities, video_bytes)
|
| 371 |
+
|
| 372 |
+
return FeedbackResponse(
|
| 373 |
+
status="success",
|
| 374 |
+
message="Feedback submitted successfully"
|
| 375 |
+
)
|
| 376 |
+
|
| 377 |
+
except ValueError as ve:
|
| 378 |
+
raise HTTPException(status_code=400, detail=str(ve))
|
| 379 |
+
except Exception as e:
|
| 380 |
+
logger.error(f"Unexpected error in feedback: {str(e)}")
|
| 381 |
+
raise HTTPException(status_code=500, detail="Internal server error")
|
| 382 |
+
|
| 383 |
+
@app.get("/health")
|
| 384 |
+
async def health_check():
|
| 385 |
+
return {"status": "healthy"}
|
| 386 |
+
|
| 387 |
+
@app.post("/retrain")
|
| 388 |
+
async def retrain():
|
| 389 |
+
try:
|
| 390 |
+
if not os.path.exists(CONFIG['feedback_csv']):
|
| 391 |
+
raise HTTPException(status_code=404, detail="No feedback data available for retraining")
|
| 392 |
+
|
| 393 |
+
retrain_model(model, CONFIG['feedback_csv'], "train.csv", device, num_epochs=1)
|
| 394 |
+
return {"status": "success", "message": "Model retraining completed"}
|
| 395 |
+
|
| 396 |
+
except HTTPException as he:
|
| 397 |
+
raise he
|
| 398 |
+
except ValueError as ve:
|
| 399 |
+
raise HTTPException(status_code=400, detail=str(ve))
|
| 400 |
+
except Exception as e:
|
| 401 |
+
logger.error(f"Unexpected error in retraining: {str(e)}")
|
| 402 |
+
raise HTTPException(status_code=500, detail="Internal server error")
|
backend/models/model_metadata.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:124fb9d4226d36d5abbd666615bc08000d4518bdf523b8e70c5c87b4972bd381
|
| 3 |
+
size 874
|
backend/models/timesformer_best_submission.csv
ADDED
|
@@ -0,0 +1,281 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
id,Filename,Time,Advancing,Retreating,Enclosing,Spreading,Rising,Descending,Directing,Indirecting,Increasing Pressure,Decreasing Pressure,Acceleration,Decelerating
|
| 2 |
+
cdd7e8f4-825f-4e6a-a0ba-a12a4ecf8676,s06_smiley,t0440,0,1,1,0,0,0,1,1,1,0,1,1
|
| 3 |
+
aebb87da-7d6e-487d-be99-e93c8502f72a,s06_smiley,t0442,0,0,0,0,0,0,0,0,0,0,0,0
|
| 4 |
+
42aea8ef-38d9-4bfe-9dc3-2a890d43ab16,s06_smiley,t0459,0,0,0,0,0,0,0,0,0,0,0,0
|
| 5 |
+
68abb24e-54e3-40a9-ab6d-ca4d5ddff1f5,s06_smiley,t0528,0,0,0,0,0,0,0,0,0,0,0,0
|
| 6 |
+
d2ee103d-4fd8-4440-91ca-41b08ff1be51,s06_smiley,t0530,0,1,1,0,0,0,0,1,1,0,0,1
|
| 7 |
+
de4c7e33-d34e-4ef5-9176-f19aacf5294d,s06_smiley,t0553,0,0,0,0,0,0,0,0,0,0,0,0
|
| 8 |
+
c44413ff-0442-4bb2-8a96-1114195fa93e,s06_smiley,t0559,0,0,0,0,0,0,0,0,0,0,0,0
|
| 9 |
+
c555c8e3-56b6-47ef-aee3-36629dc35c95,s06_smiley,t0601,0,0,0,0,0,0,0,0,0,0,0,0
|
| 10 |
+
f3ab8fcf-2e64-4c56-bb26-93bbbc126e37,s06_smiley,t0605,0,1,1,0,0,0,0,0,1,0,1,1
|
| 11 |
+
885e31fd-e0d8-49db-a15e-74d85da911ce,s06_smiley,t0610,0,0,0,0,0,0,0,0,0,0,0,0
|
| 12 |
+
a8df1c71-5256-4afa-8ef2-5e56b0546622,s06_smiley,t0624,0,0,0,0,0,0,0,0,0,0,0,0
|
| 13 |
+
fd5664b7-50c0-4c35-bd25-8c7f6b58e40b,s06_smiley,t0636,0,0,0,0,0,0,0,0,0,0,0,0
|
| 14 |
+
df799287-c324-495d-a13d-0ea7abd25495,s06_smiley,t0659,0,1,1,1,0,0,0,0,1,1,0,1
|
| 15 |
+
501cc79f-68a3-44cd-b3a2-986fcab63e3b,s06_smiley,t0700,0,0,0,0,0,0,0,0,0,0,0,0
|
| 16 |
+
afed361f-6cd6-4dfd-8914-6a795d4e5d28,s06_smiley,t0702,0,0,0,0,0,0,0,0,0,0,0,0
|
| 17 |
+
b84bbfe5-1022-455c-80f7-4424b12abb43,s06_smiley,t0708,0,0,0,0,0,0,0,0,0,0,0,0
|
| 18 |
+
44528175-0e15-4239-8bc7-b50c10abec7c,s06_smiley,t0710,0,0,1,0,0,1,1,1,1,0,1,0
|
| 19 |
+
b5aa12be-4391-4888-a57d-2ac53d25496b,s06_smiley,t0714,0,0,0,0,0,0,0,0,0,0,0,0
|
| 20 |
+
ce1c0070-6063-4edd-b921-4e821749b06c,s06_smiley,t0724,0,0,0,0,0,0,0,0,0,0,0,0
|
| 21 |
+
734c0b71-e30c-487b-b983-b4a83738e104,s06_smiley,t0727,0,0,0,0,0,0,0,0,0,0,0,0
|
| 22 |
+
f5a9165f-88c8-4dbd-b59d-4e748792c3b5,s06_smiley,t0749,0,1,1,0,1,0,0,0,1,1,0,1
|
| 23 |
+
05699cf9-1f00-4343-b5de-021ff4a65b87,s06_smiley,t0804,0,0,0,0,0,0,0,0,0,0,0,0
|
| 24 |
+
3a53246c-fce3-4723-9e81-977602b8ec47,s06_smiley,t0810,0,0,0,0,0,0,0,0,0,0,0,0
|
| 25 |
+
7d04ff5b-9712-4b15-bda9-a084b1149f03,s06_smiley,t0812,0,0,0,0,0,0,0,0,0,0,0,0
|
| 26 |
+
8b79e88d-4653-46d2-b607-c5b9637a4128,s06_smiley,t0819,0,1,1,0,0,0,0,1,1,1,0,1
|
| 27 |
+
05497423-074a-4482-9533-138eddbf8f8b,s06_smiley,t0821,0,0,0,0,0,0,0,0,0,0,0,0
|
| 28 |
+
cfa511d2-d6ff-44fa-bc97-32151d5dd1d9,s06_smiley,t0829,0,0,0,0,0,0,0,0,0,0,0,0
|
| 29 |
+
2c505cc8-4146-454d-ac37-0c8fe6cbd243,s06_smiley,t0849,0,0,0,0,0,0,0,0,0,0,0,0
|
| 30 |
+
81994918-0067-4504-a65c-56e0834fe85c,s06_smiley,t0852,0,0,1,0,0,0,1,0,1,0,1,0
|
| 31 |
+
340a1f45-9e42-4f0a-bc6f-c317228737d2,s06_smiley,t0855,0,0,0,0,0,0,0,0,0,0,0,0
|
| 32 |
+
7186afa5-6e26-47f0-b730-9f291b7997b8,s06_smiley,t0859,0,0,0,0,0,0,0,0,0,0,0,0
|
| 33 |
+
83053350-b2c8-498c-92f3-df988f763ac9,s06_smiley,t0915,0,0,0,0,0,0,0,0,0,0,0,0
|
| 34 |
+
09fdaf02-7f6b-481a-8c63-ec92317ffe26,s06_smiley,t0935,0,0,1,0,0,0,1,0,1,0,1,0
|
| 35 |
+
3f2db3d8-650c-4e17-98d4-a4f1b14835d0,s06_smiley,t1001,0,0,0,0,0,0,0,0,0,0,0,0
|
| 36 |
+
52ebefbc-7689-4b2f-830f-d4b4aeb25e9e,s06_smiley,t1003,0,0,0,0,0,0,0,0,0,0,0,0
|
| 37 |
+
8312d458-0fa4-4e5a-a500-0a97a3b14f85,s06_smiley,t1021,0,0,0,0,0,0,0,0,0,0,0,0
|
| 38 |
+
f99ce7eb-44c9-493e-9a51-54aa04b3f07e,s06_smiley,t1050,0,1,1,0,0,0,1,0,1,0,1,0
|
| 39 |
+
264a63e4-f6db-42a2-8b73-a283f10ff7aa,s06_smiley,t1054,0,0,0,0,0,0,0,0,0,0,0,0
|
| 40 |
+
7d2e89d5-dd5c-4b82-a5e8-e849bbbbaf86,s06_smiley,t1115,0,0,0,0,0,0,0,0,0,0,0,0
|
| 41 |
+
3c2e31b7-3a3a-49b2-8bbb-088ecc997868,s06_smiley,t1128,0,0,0,0,0,0,0,0,0,0,0,0
|
| 42 |
+
0bb638f3-1896-401c-8c58-80de78c26565,s06_smiley,t1149,0,1,1,0,0,1,1,1,1,0,1,1
|
| 43 |
+
e1754f43-1bfc-4434-9ddb-e1d2146bb958,s06_smiley,t1155,0,0,0,0,0,0,0,0,0,0,0,0
|
| 44 |
+
8e92341d-92da-4e56-98e6-4e90f481a1a4,s06_smiley,t1216,0,0,0,0,0,0,0,0,0,0,0,0
|
| 45 |
+
c3e7239e-f779-427e-b220-7f4496b98fbf,s06_smiley,t1231,0,0,0,0,0,0,0,0,0,0,0,0
|
| 46 |
+
daee596a-1225-4b03-a0fa-70c41f75546c,s06_smiley,t1243,0,1,1,0,0,0,1,1,1,0,1,0
|
| 47 |
+
8c55beae-1783-4f8f-acd4-a4610a8f897a,s06_smiley,t1253,0,0,0,0,0,0,0,0,0,0,0,0
|
| 48 |
+
dbf57355-09df-48a2-b7b1-486b357c2b89,s06_smiley,t1256,0,0,0,0,0,0,0,0,0,0,0,0
|
| 49 |
+
13f24aef-08db-4f27-bbd9-9f5702cd5a70,s06_smiley,t1323,0,0,0,0,0,0,0,0,0,0,0,0
|
| 50 |
+
ec0e43ee-2c04-4459-b01f-f7454ccc1baf,s06_smiley,t1344,0,0,1,1,0,0,1,0,1,0,1,0
|
| 51 |
+
55f9f847-8e65-42a7-837b-9d8b96c8705e,s06_smiley,t1345,0,0,0,0,0,0,0,0,0,0,0,0
|
| 52 |
+
10eabd75-e225-4e79-af1b-f6087930bf12,s06_smiley,t1347,0,0,0,0,0,0,0,0,0,0,0,0
|
| 53 |
+
b1d96305-a8db-4c9b-8465-e6a88f9c082f,s06_smiley,t1350,0,0,0,0,0,0,0,0,0,0,0,0
|
| 54 |
+
886cc349-caba-4f03-87e2-3d2c5cf1cf72,s06_smiley,t1417,0,0,1,0,0,0,1,0,1,1,1,0
|
| 55 |
+
27b90750-68f2-42ef-9b94-4be7f98ffe8e,s06_smiley,t1420,0,0,0,0,0,0,0,0,0,0,0,0
|
| 56 |
+
9462b9c4-cc07-4a0e-bb7d-7f1c685943f2,s06_smiley,t1425,0,0,0,0,0,0,0,0,0,0,0,0
|
| 57 |
+
f6353bb6-5a0d-429e-946d-c5f16ed67986,s06_smiley,t1448,0,0,0,0,0,0,0,0,0,0,0,0
|
| 58 |
+
81acd6c4-53aa-4d30-b252-79d51aa68287,s06_smiley,t1450,1,0,1,1,0,0,1,0,1,1,1,0
|
| 59 |
+
e91db751-20c6-45cc-85ac-9c09c3b694a1,s06_smiley,t1452,0,0,0,0,0,0,0,0,0,0,0,0
|
| 60 |
+
ca3cc898-1c98-4e5e-9e4d-513401a51082,s06_smiley,t1458,0,0,0,0,0,0,0,0,0,0,0,0
|
| 61 |
+
c886c4c2-e769-4cf1-98b7-a2c3d02d064b,s06_smiley,t1502,0,0,0,0,0,0,0,0,0,0,0,0
|
| 62 |
+
f206955a-ad13-4a19-bd74-325a7641f52a,s06_smiley,t1503,0,0,1,0,0,0,1,0,1,0,1,0
|
| 63 |
+
5b34a0e7-1568-4fa2-861d-bc485fe34365,s06_smiley,t1530,0,0,0,0,0,0,0,0,0,0,0,0
|
| 64 |
+
a006b3fc-2741-4eba-bcb8-030881beff69,s06_smiley,t1536,0,0,0,0,0,0,0,0,0,0,0,0
|
| 65 |
+
6a25466e-4da4-4533-a095-47903bf6c164,s06_smiley,t1537,0,0,0,0,0,0,0,0,0,0,0,0
|
| 66 |
+
87269f83-e054-463c-bc48-6f711dea8ee5,s06_smiley,t1540,0,0,1,1,0,0,1,0,1,0,1,0
|
| 67 |
+
3f6a2083-5c53-46be-a553-7e69e1392592,s06_smiley,t1543,0,0,0,0,0,0,0,0,0,0,0,0
|
| 68 |
+
45763844-ae67-4c7c-9d07-a0d71e7d1aa1,s06_smiley,t1548,0,0,0,0,0,0,0,0,0,0,0,0
|
| 69 |
+
71101afa-19b2-4685-9bde-4338fbb6922b,s06_smiley,t1549,0,0,0,0,0,0,0,0,0,0,0,0
|
| 70 |
+
e105374f-b660-413f-8b45-57db3b11323e,s06_smiley,t1552,0,0,1,1,0,0,1,0,1,0,1,0
|
| 71 |
+
67ef7758-3bd5-4372-a3db-ccbd9a8fd055,s06_smiley,t1553,0,0,0,0,0,0,0,0,0,0,0,0
|
| 72 |
+
e01755f8-43f5-4973-ac38-a8304b74fe64,s06_smiley,t1558,0,0,0,0,0,0,0,0,0,0,0,0
|
| 73 |
+
46f5a432-29c5-43af-b269-8acf849be553,s06_smiley,t1607,0,0,0,0,0,0,0,0,0,0,0,0
|
| 74 |
+
9c1aef92-e6ee-4d0f-b077-4d63ba97244f,s06_smiley,t1611,0,1,1,0,0,0,1,1,1,0,1,0
|
| 75 |
+
ca068fb9-4b46-4a4f-ad53-4a005880ee78,s06_smiley,t1622,0,0,0,0,0,0,0,0,0,0,0,0
|
| 76 |
+
c3dc5cdc-73fe-4468-997a-2fdffd28ffca,s06_smiley,t1625,0,0,0,0,0,0,0,0,0,0,0,0
|
| 77 |
+
e345839e-4319-4074-8ba0-006a6cdb7611,s06_smiley,t1629,0,0,0,0,0,0,0,0,0,0,0,0
|
| 78 |
+
d5758058-439f-4fe6-a5ce-ef0f1293fef4,s06_smiley,t1639,0,0,1,0,0,0,1,0,1,0,1,0
|
| 79 |
+
142820cf-9593-4243-83b2-d0f2b40d4111,s06_smiley,t1654,0,0,0,0,0,0,0,0,0,0,0,0
|
| 80 |
+
8ea86e9b-acc5-46c2-af47-118d329cdaf8,s06_smiley,t1659,0,0,0,0,0,0,0,0,0,0,0,0
|
| 81 |
+
d8ef3835-48c5-498f-b57f-17785bfdd66f,s06_smiley,t1709,0,0,0,0,0,0,0,0,0,0,0,0
|
| 82 |
+
3aae222a-0af5-4fc4-b79a-53a9a260f384,s06_smiley,t1713,0,0,1,0,0,0,1,0,1,1,1,1
|
| 83 |
+
dcbcff19-6382-4780-8d9d-6291187ed89b,s06_smiley,t1720,0,0,0,0,0,0,0,0,0,0,0,0
|
| 84 |
+
edb440db-5e7b-446c-806b-50f20906ef60,s06_smiley,t1725,0,0,0,0,0,0,0,0,0,0,0,0
|
| 85 |
+
22ebbd3e-ddc0-458c-b381-e12ef4c44a8b,s06_smiley,t1727,0,0,0,0,0,0,0,0,0,0,0,0
|
| 86 |
+
a82d7eb6-2a4f-42f7-9897-a35a0e9667a2,s06_smiley,t1728,0,0,1,0,0,0,1,1,1,0,1,0
|
| 87 |
+
f81ccaa6-f71e-43a9-b1f5-a963ba01c720,s06_smiley,t1734,0,0,0,0,0,0,0,0,0,0,0,0
|
| 88 |
+
5f18b188-acf6-4c51-91bf-46e2a093faf5,s06_smiley,t1737,0,0,0,0,0,0,0,0,0,0,0,0
|
| 89 |
+
91d3c488-13ab-43eb-8aaf-94ff346a7054,s06_smiley,t1738,0,0,0,0,0,0,0,0,0,0,0,0
|
| 90 |
+
c66dec23-ba4e-46e5-98ea-90e407a5f640,s06_smiley,t1740,0,0,1,1,0,0,1,0,1,0,1,0
|
| 91 |
+
3b006345-6bdd-4b83-9527-8f7133ec78d4,s06_smiley,t1743,0,0,0,0,0,0,0,0,0,0,0,0
|
| 92 |
+
056c8c42-15f2-4127-b034-1add46e1153c,s06_smiley,t1810,0,0,0,0,0,0,0,0,0,0,0,0
|
| 93 |
+
0c9b41d5-6fff-4b05-8236-993334d450cf,s06_smiley,t1816,0,0,0,0,0,0,0,0,0,0,0,0
|
| 94 |
+
c6c82a05-00a1-4c16-9423-bc3a8f67380e,s06_smiley,t1818,1,1,1,0,0,0,1,1,1,1,1,1
|
| 95 |
+
62bc7775-55d3-45ef-823b-fc6ecfb2cfb2,s06_smiley,t1826,0,0,0,0,0,0,0,0,0,0,0,0
|
| 96 |
+
88867cb0-340a-40e3-a386-e4442c2c6737,s06_smiley,t1832,0,0,0,0,0,0,0,0,0,0,0,0
|
| 97 |
+
e64958da-ddde-4786-ac28-416990e89412,s06_smiley,t1843,0,0,0,0,0,0,0,0,0,0,0,0
|
| 98 |
+
8bda57d4-d954-4dee-ad7d-593585edb1ea,s06_smiley,t1844,0,0,1,1,0,0,1,0,1,1,1,0
|
| 99 |
+
06f635aa-ac8f-49eb-a019-f65822189812,s06_smiley,t1858,0,0,0,0,0,0,0,0,0,0,0,0
|
| 100 |
+
ea64bfba-563b-45f0-8db2-aa46babac615,s06_smiley,t1907,0,0,0,0,0,0,0,0,0,0,0,0
|
| 101 |
+
43efbc76-9e21-4e19-8b7a-12117c97d53d,s06_smiley,t1915,0,0,0,0,0,0,0,0,0,0,0,0
|
| 102 |
+
1ccaa2ec-d7cf-4ea9-b429-dda916d46020,s06_smiley,t1920,0,0,1,1,0,0,1,0,1,1,1,0
|
| 103 |
+
aa6e1bcd-27ea-433d-8efd-d7a9bc0d78b3,s06_smiley,t1937,0,0,0,0,0,0,0,0,0,0,0,0
|
| 104 |
+
9f07df5b-db25-41ea-a135-2b74454ed84d,s06_smiley,t1944,0,0,0,0,0,0,0,0,0,0,0,0
|
| 105 |
+
2a5e9435-c23e-4321-98c6-940c23d9aaf3,s06_smiley,t2016,0,0,0,0,0,0,0,0,0,0,0,0
|
| 106 |
+
694dac4b-4d79-4e67-ae0a-605574f263a1,s06_smiley,t2018,0,0,1,0,0,1,1,1,1,0,1,0
|
| 107 |
+
7fd86008-9de5-44dc-a34e-f4eecae18a5c,s06_smiley,t2022,0,0,0,0,0,0,0,0,0,0,0,0
|
| 108 |
+
87717547-8e29-43eb-ad45-f7ad7223e7b5,s06_smiley,t2037,0,0,0,0,0,0,0,0,0,0,0,0
|
| 109 |
+
80e26e90-4daa-4a12-b62d-161f6acbf170,s06_smiley,t2120,0,0,0,0,0,0,0,0,0,0,0,0
|
| 110 |
+
6742334a-8ff9-4201-8cde-b5dbc7d7ef24,s06_smiley,t2123,0,0,1,0,0,0,1,0,1,0,1,0
|
| 111 |
+
b40a6a39-af84-4dd3-a5fe-f3f1dc2e9a38,s06_smiley,t2126,0,0,0,0,0,0,0,0,0,0,0,0
|
| 112 |
+
78d6b4a6-f356-47fd-ab71-5599a6c9f7fd,s06_smiley,t2142,0,0,0,0,0,0,0,0,0,0,0,0
|
| 113 |
+
120f577c-0e3f-468c-8cc7-46015b08a6af,s06_smiley,t2200,0,0,0,0,0,0,0,0,0,0,0,0
|
| 114 |
+
0d5fdbe5-436f-449d-871f-de1a8116e093,s06_smiley,t2217,1,1,1,1,1,0,1,0,1,1,1,1
|
| 115 |
+
0fcc483c-97c6-4fdb-be76-81f35dd54696,s06_smiley,t2220,0,0,0,0,0,0,0,0,0,0,0,0
|
| 116 |
+
7f37b601-9575-4413-b5da-0f807bebaf26,s06_smiley,t2230,0,0,0,0,0,0,0,0,0,0,0,0
|
| 117 |
+
9bd1dc4d-e292-4400-b45e-5b1118adf8e4,s06_smiley,t2237,0,0,0,0,0,0,0,0,0,0,0,0
|
| 118 |
+
c2b1bb91-826f-4f88-a364-0eda52036e2c,s06_smiley,t2239,1,1,1,0,0,1,1,1,1,1,1,1
|
| 119 |
+
2d71aae7-ff54-4fa0-8cc0-316cb8855a85,s06_smiley,t2240,0,0,0,0,0,0,0,0,0,0,0,0
|
| 120 |
+
01d53813-8815-4df7-b4ec-50905c0a1578,s06_smiley,t2241,0,0,0,0,0,0,0,0,0,0,0,0
|
| 121 |
+
74a1c0ea-e2fd-47e9-93a5-d4b2338dcf3f,s06_smiley,t2242,0,0,0,0,0,0,0,0,0,0,0,0
|
| 122 |
+
a4b6828d-4570-4710-9a0f-26e904b11ddc,s06_smiley,t2243,0,0,1,0,0,0,1,1,1,0,1,1
|
| 123 |
+
7f63ffc1-e89a-4829-8f0a-df66ba72e66f,s06_smiley,t2244,0,0,0,0,0,0,0,0,0,0,0,0
|
| 124 |
+
70847aa4-ed4e-45b6-94b9-af6ae952dbe3,s06_smiley,t2245,0,0,0,0,0,0,0,0,0,0,0,0
|
| 125 |
+
d2f048d7-6c46-47b6-901a-0f8ffb7ffe2d,s06_smiley,t2247,0,0,0,0,0,0,0,0,0,0,0,0
|
| 126 |
+
b9b2de40-6dfa-45b2-bc0c-c33f52dcafc1,s06_smiley,t2250,0,1,1,0,0,1,1,1,1,0,1,1
|
| 127 |
+
f6252063-8a7c-4f33-83f6-6bbf08798645,s06_smiley,t2304,0,0,0,0,0,0,0,0,0,0,0,0
|
| 128 |
+
e74dc403-b455-425e-b49e-96c60a9d3219,s06_smiley,t2305,0,0,0,0,0,0,0,0,0,0,0,0
|
| 129 |
+
416e76d1-7937-42d9-806c-198e13845a30,s06_smiley,t2324,0,0,0,0,0,0,0,0,0,0,0,0
|
| 130 |
+
070ab96e-e789-467a-a48e-57ee1c0902a1,s06_smiley,t2346,0,1,1,0,0,0,1,1,1,0,1,1
|
| 131 |
+
2f3c1d32-dd8d-4f17-b581-50e36aa0fa75,s06_smiley,t2348,0,0,0,0,0,0,0,0,0,0,0,0
|
| 132 |
+
1a3c3eda-4de0-4cda-811a-79ae8e605c80,s06_smiley,t2353,0,0,0,0,0,0,0,0,0,0,0,0
|
| 133 |
+
8e0dec2f-cae4-43bc-8ee5-b7b7ebf36cc4,s06_smiley,t2357,0,0,0,0,0,0,0,0,0,0,0,0
|
| 134 |
+
55990d27-8595-48d2-92d9-7f18afe981d2,s06_smiley,t2406,1,1,1,0,0,0,0,0,1,1,1,1
|
| 135 |
+
93443ce9-2931-4f5a-b3ad-e132155c31d6,s06_smiley,t2425,0,0,0,0,0,0,0,0,0,0,0,0
|
| 136 |
+
c05fc96d-2650-49a7-a62c-7348b983645c,s06_smiley,t2432,0,0,0,0,0,0,0,0,0,0,0,0
|
| 137 |
+
983ca0bc-373f-4430-b6f0-abb58a54e2f1,s06_smiley,t2435,0,0,0,0,0,0,0,0,0,0,0,0
|
| 138 |
+
f8bac049-0581-4f11-acc7-a4fc4d421924,s06_smiley,t2457,0,0,1,0,0,0,1,0,1,1,1,0
|
| 139 |
+
9dd7afdd-c3f1-4b13-9639-b1201b4f0dc8,s06_smiley,t2458,0,0,0,0,0,0,0,0,0,0,0,0
|
| 140 |
+
e4731855-c6be-439b-a706-c353619c98a2,s06_smiley,t2518,0,0,0,0,0,0,0,0,0,0,0,0
|
| 141 |
+
3b666255-4f33-4ce9-abde-34febce230eb,s06_smiley,t2532,0,0,0,0,0,0,0,0,0,0,0,0
|
| 142 |
+
60876a77-1b6e-4dd9-ba6d-3713b65ac5e1,s06_smiley,t2558,0,0,1,0,0,0,1,0,1,0,1,0
|
| 143 |
+
005be279-2cb0-442c-a9cc-ee76dbe3ef21,s06_smiley,t2618,0,0,0,0,0,0,0,0,0,0,0,0
|
| 144 |
+
7a53064b-762e-4822-aa60-fa1d76045fb4,s06_smiley,t2619,0,0,0,0,0,0,0,0,0,0,0,0
|
| 145 |
+
e478d355-1780-4032-a067-2da1f305b277,s06_smiley,t2624,0,0,0,0,0,0,0,0,0,0,0,0
|
| 146 |
+
6774e56f-275a-43a6-9ddd-78c4e6c21ee5,s06_smiley,t2633,1,1,1,0,0,0,0,1,1,1,0,1
|
| 147 |
+
a39f8a77-0186-4e0e-a1df-ae646d4e893f,s06_smiley,t2641,0,0,0,0,0,0,0,0,0,0,0,0
|
| 148 |
+
c5e7f2bf-a93c-4caa-9c91-4da4696956e0,s06_smiley,t2659,0,0,0,0,0,0,0,0,0,0,0,0
|
| 149 |
+
d63355ce-351f-4b08-b427-de5c7eb21096,s06_smiley,t2706,0,0,0,0,0,0,0,0,0,0,0,0
|
| 150 |
+
8f20eb87-f4ff-47cd-a593-90ed0ed3a0d9,s06_smiley,t2711,1,1,1,0,0,0,0,0,1,1,1,1
|
| 151 |
+
7357752e-1fe9-42f3-b0f1-d0f16a15bb94,s06_smiley,t2718,0,0,0,0,0,0,0,0,0,0,0,0
|
| 152 |
+
3b4db9c4-54fd-444f-95a9-1b21a2307022,s06_smiley,t2725,0,0,0,0,0,0,0,0,0,0,0,0
|
| 153 |
+
8bff2195-eb29-43e9-9031-7e2baca39282,s06_smiley,t2727,0,0,0,0,0,0,0,0,0,0,0,0
|
| 154 |
+
db9a214d-e92a-4c9c-8ac1-696026372bbd,s06_smiley,t2731,1,0,1,1,0,0,1,0,1,1,1,0
|
| 155 |
+
d88c0e9a-7941-4208-a2c8-07bc7cbf361c,s06_smiley,t2735,0,0,0,0,0,0,0,0,0,0,0,0
|
| 156 |
+
b87678b2-e91f-436e-b1ba-76cd9b7463e0,s06_smiley,t2742,0,0,0,0,0,0,0,0,0,0,0,0
|
| 157 |
+
9e791905-1904-4347-bc6b-a2bc75f03e13,s06_smiley,t2751,0,0,0,0,0,0,0,0,0,0,0,0
|
| 158 |
+
9cec366e-d4dc-41ab-904b-ebd38acac232,s06_smiley,t2756,0,1,1,0,0,0,1,0,1,0,1,1
|
| 159 |
+
cb61b990-604c-4b12-bbd7-9e11115faa51,s06_smiley,t2807,0,0,0,0,0,0,0,0,0,0,0,0
|
| 160 |
+
1b805d00-e2c7-4d71-bf37-0f437571e325,s06_smiley,t2815,0,0,0,0,0,0,0,0,0,0,0,0
|
| 161 |
+
d81aee33-09e8-42e3-b8eb-06bf8ff962ed,s06_smiley,t2836,0,0,0,0,0,0,0,0,0,0,0,0
|
| 162 |
+
ef934ede-a198-430b-ab89-c440996fc74a,s06_smiley,t2840,0,1,1,0,0,0,0,0,1,1,0,1
|
| 163 |
+
bcf909e8-80ab-44b0-b1e5-2b73c0df5659,s06_smiley,t2845,0,0,0,0,0,0,0,0,0,0,0,0
|
| 164 |
+
7950fa47-5070-40d6-8e41-fd3cf248c521,s06_smiley,t2906,0,0,0,0,0,0,0,0,0,0,0,0
|
| 165 |
+
73782c5d-fd37-4e4b-badc-6505563ffee2,s06_smiley,t2909,0,0,0,0,0,0,0,0,0,0,0,0
|
| 166 |
+
5c498007-da0c-4c46-af57-da9f00cddf49,s06_smiley,t2945,0,0,1,1,0,0,1,0,1,1,1,1
|
| 167 |
+
82c9f4f0-5013-4957-b247-14eb06047d98,s06_smiley,t2948,0,0,0,0,0,0,0,0,0,0,0,0
|
| 168 |
+
5392494d-6781-4362-8f41-1a635b236d83,s06_smiley,t2958,0,0,0,0,0,0,0,0,0,0,0,0
|
| 169 |
+
f00a9fd8-174f-4777-ad7b-e17998240151,s06_smiley,t3000,0,0,0,0,0,0,0,0,0,0,0,0
|
| 170 |
+
b266a8fc-4a1d-457a-80cc-58ec565c15ba,s06_smiley,t3014,0,1,1,1,0,0,0,1,1,1,0,1
|
| 171 |
+
4ec01160-df2d-4fbd-af44-12f3db4a0948,s06_smiley,t3019,0,0,0,0,0,0,0,0,0,0,0,0
|
| 172 |
+
b5a3fe57-b7fe-4c2d-96b1-e1f0c51cebb4,s06_smiley,t3034,0,0,0,0,0,0,0,0,0,0,0,0
|
| 173 |
+
6c02ec9c-8dd7-4fc5-975a-63e2cfa5427b,s06_smiley,t3056,0,0,0,0,0,0,0,0,0,0,0,0
|
| 174 |
+
b6fc0dc8-e807-4c15-b9ac-74e335c27785,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1621,0,0,1,0,0,0,1,0,1,0,1,0
|
| 175 |
+
4ff9813a-77ef-4885-aba9-9d36ff3a502a,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1647,0,0,0,0,0,0,0,0,0,0,0,0
|
| 176 |
+
096aaef7-703f-4ca0-90eb-14c1b3a4114b,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1650,0,0,0,0,0,0,0,0,0,0,0,0
|
| 177 |
+
22252282-e185-4590-b150-2e74dc81dfc6,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1706,0,0,0,0,0,0,0,0,0,0,0,0
|
| 178 |
+
4e2d9d78-6eca-4f1f-98aa-139166f70c6e,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1709,0,1,1,0,0,0,1,0,1,1,1,0
|
| 179 |
+
74154d8a-3fdd-453f-912a-a5f6d4f38e39,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1722,0,0,0,0,0,0,0,0,0,0,0,0
|
| 180 |
+
957cbe45-c6fd-489c-bf19-2c7ce97b7c26,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1738,0,0,0,0,0,0,0,0,0,0,0,0
|
| 181 |
+
bd295b7b-3e2d-4626-93ab-19886f2b920c,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1741,0,0,0,0,0,0,0,0,0,0,0,0
|
| 182 |
+
1fb1622e-cfb5-4fcf-9485-cf7b313859a2,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1742,1,0,1,1,0,1,1,0,1,0,1,1
|
| 183 |
+
043cb9e5-3074-4496-94b8-538ff5e32cf7,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1801,0,0,0,0,0,0,0,0,0,0,0,0
|
| 184 |
+
830a3898-fc56-4a56-a6f7-3905c01c4cc2,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1806,0,0,0,0,0,0,0,0,0,0,0,0
|
| 185 |
+
9899f298-1433-4d0e-a1e1-b2944ac8ba5d,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1807,0,0,0,0,0,0,0,0,0,0,0,0
|
| 186 |
+
12aaa6ad-e229-4aa8-aafe-72a5c2b3042c,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1827,0,0,1,0,0,0,1,0,1,0,1,0
|
| 187 |
+
de34d779-ae7c-4351-a7bd-71ea20925171,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1856,0,0,0,0,0,0,0,0,0,0,0,0
|
| 188 |
+
4ac65dec-ab1a-45e9-9a55-f5c62f4b16d3,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1916,0,0,0,0,0,0,0,0,0,0,0,0
|
| 189 |
+
94880195-945a-4332-9312-1a433deeb941,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1918,0,0,0,0,0,0,0,0,0,0,0,0
|
| 190 |
+
b45aa698-e429-46e9-982b-a43469bf81fb,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1924,0,0,1,1,0,0,1,0,1,0,1,1
|
| 191 |
+
556c1284-1a53-4b07-8c89-d4bf4ea3282f,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1933,0,0,0,0,0,0,0,0,0,0,0,0
|
| 192 |
+
d3e5838c-c335-408d-8d67-93db62c071f1,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1935,0,0,0,0,0,0,0,0,0,0,0,0
|
| 193 |
+
139c6557-6525-4003-975b-4face9edcaef,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t1942,0,0,0,0,0,0,0,0,0,0,0,0
|
| 194 |
+
f5e912be-0dcb-4273-be91-13ef75fa497a,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2000,0,0,1,0,0,0,1,0,1,1,1,0
|
| 195 |
+
d56ca73e-b0f5-485c-bcd5-efc9bf75dc66,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2015,0,0,0,0,0,0,0,0,0,0,0,0
|
| 196 |
+
5910a423-4804-42d7-af19-b9da7ce20da8,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2030,0,0,0,0,0,0,0,0,0,0,0,0
|
| 197 |
+
8f939051-e6cc-491d-b8f3-412d4a65cef7,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2031,0,0,0,0,0,0,0,0,0,0,0,0
|
| 198 |
+
69384a49-14da-4e94-a63e-9ec6de60ee0c,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2036,0,0,1,1,0,0,1,0,1,0,1,0
|
| 199 |
+
f123fe5b-5c9a-4c1d-a431-3abeb0f21769,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2045,0,0,0,0,0,0,0,0,0,0,0,0
|
| 200 |
+
25479c24-6704-41ae-b1a3-a8ba853eb933,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2051,0,0,0,0,0,0,0,0,0,0,0,0
|
| 201 |
+
f7862b8a-b580-48d3-a4bc-23f86ae24977,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2056,0,0,0,0,0,0,0,0,0,0,0,0
|
| 202 |
+
4022a7b4-6c7c-4ef9-9ea6-eb2869602902,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2105,0,0,1,1,0,0,1,0,1,0,1,0
|
| 203 |
+
83408998-27c7-44f4-875c-d8e5e8b130ef,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2110,0,0,0,0,0,0,0,0,0,0,0,0
|
| 204 |
+
c9d69301-7c7b-4aea-a594-4c31957e86a3,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2124,0,0,0,0,0,0,0,0,0,0,0,0
|
| 205 |
+
2c100e55-11b1-4eac-a213-3adabe78264c,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2149,0,0,0,0,0,0,0,0,0,0,0,0
|
| 206 |
+
dbc4e2e2-25b3-4cb1-8962-6b99c50c7973,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2150,1,0,1,0,0,1,1,0,1,1,1,1
|
| 207 |
+
9dc62d4b-5d4d-4290-a79d-55eb9867330d,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2156,0,0,0,0,0,0,0,0,0,0,0,0
|
| 208 |
+
725398cf-9f8b-46ff-bc9c-4dd136833da7,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2206,0,0,0,0,0,0,0,0,0,0,0,0
|
| 209 |
+
309c1a38-a760-4aec-b19d-96b0b1c89c3c,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2228,0,0,0,0,0,0,0,0,0,0,0,0
|
| 210 |
+
13e4c795-9e09-4403-accf-a1f662207d7c,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2240,0,0,1,1,1,0,1,0,1,0,1,1
|
| 211 |
+
21dfdf8d-9630-4956-80ec-7dc630847738,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2243,0,0,0,0,0,0,0,0,0,0,0,0
|
| 212 |
+
f7f87bb9-045b-4bd0-9479-07545f3e0812,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2244,0,0,0,0,0,0,0,0,0,0,0,0
|
| 213 |
+
85196e21-62d1-4a4d-8677-fd5f2819ead7,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2303,0,0,0,0,0,0,0,0,0,0,0,0
|
| 214 |
+
b7eaafed-ff6e-4ce0-a5b9-146fbbedaf79,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2324,1,0,1,0,0,0,1,0,1,1,1,1
|
| 215 |
+
c7214d91-0e85-465d-8901-9f3c1c50e26b,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2339,0,0,0,0,0,0,0,0,0,0,0,0
|
| 216 |
+
ec9fc30f-d26c-4463-82bd-be6b7edde6c8,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2342,0,0,0,0,0,0,0,0,0,0,0,0
|
| 217 |
+
f25001a6-c7f7-41df-a922-e7c03567ce42,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2346,0,0,0,0,0,0,0,0,0,0,0,0
|
| 218 |
+
a24d2327-4b86-4be8-be62-fdaac32d4d1e,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2349,0,0,1,0,0,0,1,0,1,1,1,0
|
| 219 |
+
7a32f4e5-9bc8-47f3-908f-1d7cf0e4d371,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2354,0,0,0,0,0,0,0,0,0,0,0,0
|
| 220 |
+
311c37d5-06ed-4d74-83ae-64e1a8c65a78,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2400,0,0,0,0,0,0,0,0,0,0,0,0
|
| 221 |
+
391516dc-283f-43a6-81b0-316509d4c925,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2403,0,0,0,0,0,0,0,0,0,0,0,0
|
| 222 |
+
fa8d1fae-d26a-4e85-9bbf-1ad9b4e2a9aa,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2405,0,0,1,0,0,0,1,0,1,0,1,0
|
| 223 |
+
865dc32c-3cf4-4122-837a-9c56bbbdd115,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2406,0,0,0,0,0,0,0,0,0,0,0,0
|
| 224 |
+
8957f124-d603-4ab8-9d2b-13ed754ca1d3,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2410,0,0,0,0,0,0,0,0,0,0,0,0
|
| 225 |
+
2786888d-f6c2-4467-b897-64f7f6f6f5cc,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2411,0,0,0,0,0,0,0,0,0,0,0,0
|
| 226 |
+
c1e760d3-d805-473b-9bec-323915cdaa1c,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2414,0,0,1,0,0,0,1,0,1,0,1,0
|
| 227 |
+
767358de-3574-4624-a216-ba02f9c84174,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2419,0,0,0,0,0,0,0,0,0,0,0,0
|
| 228 |
+
0b76cee3-1165-44b4-8607-8a7a8606b9ea,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2420,0,0,0,0,0,0,0,0,0,0,0,0
|
| 229 |
+
85a9c26e-bcd6-4097-8677-edb1265c58d9,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2425,0,0,0,0,0,0,0,0,0,0,0,0
|
| 230 |
+
106205fe-379e-4dad-9cc8-cf682e2f9543,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2427,0,0,1,1,0,0,1,0,1,0,1,0
|
| 231 |
+
add802cc-c6ff-4d17-a54c-4528d60b1533,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2429,0,0,0,0,0,0,0,0,0,0,0,0
|
| 232 |
+
31ff63b5-e41f-41d6-a67b-a44df69dcce8,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2433,0,0,0,0,0,0,0,0,0,0,0,0
|
| 233 |
+
929f9c09-cd9f-4c55-9811-f8826645d3e1,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2438,0,0,0,0,0,0,0,0,0,0,0,0
|
| 234 |
+
aba77f4f-cdd0-47d4-9f01-0058ea89eff3,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2439,0,0,1,1,0,0,1,0,1,0,1,0
|
| 235 |
+
c73b9893-1e9a-4cb3-9e93-4cd67ee9c48c,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2441,0,0,0,0,0,0,0,0,0,0,0,0
|
| 236 |
+
a6bf8d7e-da7e-4e84-949b-bdc6233d897b,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2446,0,0,0,0,0,0,0,0,0,0,0,0
|
| 237 |
+
acba25a1-fb84-4a10-86ca-8cd89cd57504,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2452,0,0,0,0,0,0,0,0,0,0,0,0
|
| 238 |
+
4aa0b020-7673-4c4a-8eb6-1a607248634b,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2453,0,0,1,0,0,0,1,0,1,1,1,1
|
| 239 |
+
42dc5ce8-e80f-450f-a87f-cb07f9a16f36,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2455,0,0,0,0,0,0,0,0,0,0,0,0
|
| 240 |
+
050d07bb-c782-4725-ad5a-996cff3f8c2b,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2458,0,0,0,0,0,0,0,0,0,0,0,0
|
| 241 |
+
d5d63b38-ce63-43a1-99aa-a63f41285f43,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2500,0,0,0,0,0,0,0,0,0,0,0,0
|
| 242 |
+
7a9d89d7-c87f-43d9-987c-026250e3c678,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2516,0,0,1,0,0,0,1,0,1,0,1,1
|
| 243 |
+
f13ca0c4-e23c-47dc-94bc-31e490302339,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2533,0,0,0,0,0,0,0,0,0,0,0,0
|
| 244 |
+
ee1dca32-d91d-4039-a1e4-47c1e63f3b14,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2552,0,0,0,0,0,0,0,0,0,0,0,0
|
| 245 |
+
366026d0-7c0d-4647-9010-446c475eec0e,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2554,0,0,0,0,0,0,0,0,0,0,0,0
|
| 246 |
+
4ed0ef3f-503f-4ad6-ab5a-e37c14a17310,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2555,0,0,0,0,0,1,1,0,1,0,1,0
|
| 247 |
+
189166fa-5932-48a6-9fe0-38698d794277,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2616,0,0,0,0,0,0,0,0,0,0,0,0
|
| 248 |
+
74bf3203-1590-4370-b33d-a0fdcac8cbf0,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2634,0,0,0,0,0,0,0,0,0,0,0,0
|
| 249 |
+
34945154-46b9-4e20-907e-5504356393aa,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2649,0,0,0,0,0,0,0,0,0,0,0,0
|
| 250 |
+
5a516f73-af4f-4941-9c7c-72e8b6f6af0d,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2703,0,0,1,1,0,0,1,0,1,0,1,0
|
| 251 |
+
aaeafc12-1601-4f35-ac69-e02c08106967,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2719,0,0,0,0,0,0,0,0,0,0,0,0
|
| 252 |
+
68b58d7d-9a05-49d9-8a12-73a9a182adb9,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2722,0,0,0,0,0,0,0,0,0,0,0,0
|
| 253 |
+
b73fec87-8986-4afe-af14-25b0556dfc2a,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2724,0,0,0,0,0,0,0,0,0,0,0,0
|
| 254 |
+
c9fc5f87-2393-4266-839d-b29a1d5a1025,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2740,0,0,1,0,0,0,1,0,1,0,1,0
|
| 255 |
+
f66b4913-e9dd-4fa4-a8c7-41746fc5fa65,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2750,0,0,0,0,0,0,0,0,0,0,0,0
|
| 256 |
+
a430f38f-4990-4775-b8fa-fd43d13238bc,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2804,0,0,0,0,0,0,0,0,0,0,0,0
|
| 257 |
+
2debc54e-e686-429c-ab57-4c59eea3ae8e,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2805,0,0,0,0,0,0,0,0,0,0,0,0
|
| 258 |
+
91a388b9-b774-4032-abc4-a9dd750c03e4,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2810,0,0,1,1,0,0,1,0,1,0,1,1
|
| 259 |
+
5dd262e3-60d1-4fc6-ab60-327573d51101,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2825,0,0,0,0,0,0,0,0,0,0,0,0
|
| 260 |
+
b3a5199a-378c-4759-88aa-e6a5bad3dcd5,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2843,0,0,0,0,0,0,0,0,0,0,0,0
|
| 261 |
+
1e2edb82-c228-4339-adbf-da203ca57e7a,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2859,0,0,0,0,0,0,0,0,0,0,0,0
|
| 262 |
+
f67190d7-95f2-4eab-9a8b-d4ca46db5639,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2900,0,0,1,0,0,0,1,0,1,0,1,0
|
| 263 |
+
a7bca7b6-0936-4100-898b-bf427cec2b3b,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2903,0,0,0,0,0,0,0,0,0,0,0,0
|
| 264 |
+
69205809-e661-49a9-96e0-721887eccfd0,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2905,0,0,0,0,0,0,0,0,0,0,0,0
|
| 265 |
+
add8c286-dab3-439f-862b-1eaaf9dc517a,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2906,0,0,0,0,0,0,0,0,0,0,0,0
|
| 266 |
+
ebc7c911-d0a9-46ce-b902-d8e7cdda887d,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2909,0,0,1,1,0,0,1,0,1,0,1,0
|
| 267 |
+
a33766ab-d75c-40e0-a8a5-97b28697d9d2,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2912,0,0,0,0,0,0,0,0,0,0,0,0
|
| 268 |
+
f46adcfa-bf8e-45f7-8159-89e218bea421,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2914,0,0,0,0,0,0,0,0,0,0,0,0
|
| 269 |
+
59bbf562-e148-4cfd-b242-24c12b8a9668,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2918,0,0,0,0,0,0,0,0,0,0,0,0
|
| 270 |
+
23e3b348-e604-4038-9c34-96f627e9400d,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2919,0,0,1,0,0,0,1,0,1,0,1,0
|
| 271 |
+
c7d17ae7-0613-4f40-9b25-21a1db24c573,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2921,0,0,0,0,0,0,0,0,0,0,0,0
|
| 272 |
+
450652d8-9a81-4831-87e2-422f4dfbec47,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2922,0,0,0,0,0,0,0,0,0,0,0,0
|
| 273 |
+
d84686b1-c10d-4cf0-86a5-5c6629097010,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t2939,0,0,0,0,0,0,0,0,0,0,0,0
|
| 274 |
+
5eb0f098-ac0c-4693-8763-58fc2db89322,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t3000,0,0,1,1,0,0,1,0,1,0,1,0
|
| 275 |
+
517f03dd-0cdb-44bf-bcf6-0c6d60830c10,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t3005,0,0,0,0,0,0,0,0,0,0,0,0
|
| 276 |
+
2cbb9fa4-4d18-48f5-9019-c003ecc03683,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t3006,0,0,0,0,0,0,0,0,0,0,0,0
|
| 277 |
+
a1340763-f06c-4e70-8051-3d88fa8b0100,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t3007,0,0,0,0,0,0,0,0,0,0,0,0
|
| 278 |
+
5d45adfb-7ec1-4da7-9a72-fadf120d73f4,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t3008,0,0,1,0,0,0,1,0,1,0,1,0
|
| 279 |
+
90ab423d-ff44-4ca6-9a2c-77a4fc01e1ee,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t3009,0,0,0,0,0,0,0,0,0,0,0,0
|
| 280 |
+
f22cec6b-70ea-4d9d-bf62-fd596243bcd0,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t3016,0,0,0,0,0,0,0,0,0,0,0,0
|
| 281 |
+
40ca727c-0f33-4d65-886e-4eb13bdfa30c,Tom_Cruise_on_Mission_Impossible_and_a_lifetime_of_learning_from_movies_BFI_in_Conversation,t3031,0,0,0,0,0,0,0,0,0,0,0,0
|
backend/preprocessed_cache/81a5fb6b1b9354ad5073dd5fca4d07f8_0732.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:cac5665a082f88da259b9ac7bd6c31c5ebe7efd7e10dd9394320d502be1a4528
|
| 3 |
+
size 4817621
|
backend/preprocessed_cache/81a5fb6b1b9354ad5073dd5fca4d07f8_0753.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2352d475581773c1d8e820c4dde7e369ae31830f5e6c3d3d2ceadc7f04a48237
|
| 3 |
+
size 4817621
|
my-app/README.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# My App
|
| 2 |
+
|
| 3 |
+
This project integrates Gradio for webcam video recording and Streamlit for action tracking. It allows users to record video clips from their webcam and manage actions with timestamps.
|
| 4 |
+
|
| 5 |
+
## Project Structure
|
| 6 |
+
|
| 7 |
+
```
|
| 8 |
+
my-app
|
| 9 |
+
├── app.py
|
| 10 |
+
├── requirements.txt
|
| 11 |
+
└── README.md
|
| 12 |
+
```
|
| 13 |
+
|
| 14 |
+
## Installation
|
| 15 |
+
|
| 16 |
+
To set up the project, you need to install the required packages. Run the following command in your terminal:
|
| 17 |
+
|
| 18 |
+
```
|
| 19 |
+
pip install -r requirements.txt
|
| 20 |
+
```
|
| 21 |
+
|
| 22 |
+
## Running the Application
|
| 23 |
+
|
| 24 |
+
To run the application, execute the following command:
|
| 25 |
+
|
| 26 |
+
```
|
| 27 |
+
python app.py
|
| 28 |
+
```
|
| 29 |
+
|
| 30 |
+
## Features
|
| 31 |
+
|
| 32 |
+
- Live webcam feed with 5-second rolling clip uploads.
|
| 33 |
+
- Action tracking with timestamps.
|
| 34 |
+
- User-friendly interface for managing actions.
|
| 35 |
+
|
| 36 |
+
## Dependencies
|
| 37 |
+
|
| 38 |
+
This project requires the following Python packages:
|
| 39 |
+
|
| 40 |
+
- Gradio
|
| 41 |
+
- OpenCV
|
| 42 |
+
- Streamlit
|
| 43 |
+
|
| 44 |
+
Make sure to have these installed before running the application.
|
my-app/requirements.txt
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
gradio
|
| 2 |
+
opencv-python
|
| 3 |
+
streamlit
|
| 4 |
+
pandas
|
requirement.txt
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
streamlit
|
| 2 |
+
opencv-python
|
| 3 |
+
requests
|
| 4 |
+
numpy
|