pr4nav101's picture
Rename main.py to app.py
69ed499 verified
# -*- coding: utf-8 -*-
"""
Created on Mon Dec 11 19:31:04 2023
@author: Pranav
"""
import streamlit as st
import os
import cv2
import numpy as np
import pandas as pd
import tensorflow as tf
from tensorflow import keras
from keras.models import load_model
from utils import eval_real,load_video
import tempfile
st.title('Action Recognition video spliter')
st.header('Please Upload a Video')
file = st.file_uploader('',type=['mp4'])
isresnet = st.button("Load Resnet Model")
iscnnlstm = st.button("Load CNN-LSTM Model")
label_data = pd.read_csv("classes.txt", sep = ' ', header = None)
label_data.columns = ['index','labels']
classes = label_data['labels']
if file is not None :
video_bytes = file.read()
st.video(video_bytes)
with tempfile.NamedTemporaryFile(dir='.') as f:
f.write(file.getbuffer())
model = load_model('activity_recognition.h5',compile = False)
if iscnnlstm == True :
model = load_model('activity_recognition2.h5',compile = False)
images = load_video(f.name)
edited_img = []
count = 0
for count in range(len(images[0]) - 15):
imgs = images[0][count:count+15]
edited_img.append(imgs)
count += 1
edited_imgs = np.array(edited_img)
images_arr = np.array(images)
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])
pred = []
with st.spinner('Wait for it...'):
for img in edited_imgs:
img = img.reshape(1,15,64,64,3)
prediction = eval_real(img,model)
pred.append(prediction)
st.success('Done!')
names = []
start = []
end = []
start.append(0)
names.append(classes[pred[0]])
for i in range(len(pred)-1):
if pred[i] != pred[i+1] :
names.append(classes[pred[i]])
if len(end) != 0:
end.pop()
end.append(i)
start.append(i+1)
end.append(i+1)
else :
if len(end) != 0:
end.pop()
end.append(i)
for j in range(len(end)):
if j < len(names) :
name = names[j]
else: name = names[j-1]
if start[j] - end[j] != 0:
st.write('Video ',j,' Start: ',start[j],' End: ',end[j],name)
else:
st.write('Video',j,'Insignificant Change')