sergey21000 commited on
Commit
78a88f6
·
verified ·
1 Parent(s): 95e3067

Delete pages

Browse files
pages/1_Video_Detection.py DELETED
@@ -1,110 +0,0 @@
1
- import tempfile
2
-
3
- import streamlit as st
4
-
5
-
6
- # ===================== Настройки страницы ======================
7
-
8
- st.set_page_config(
9
- layout='wide',
10
- initial_sidebar_state='auto',
11
- page_title='Face Emotion Recognition',
12
- page_icon='👻',
13
- )
14
-
15
- st.write("#### Детекция лиц, эмоций, пола, расы и возраста на видео")
16
-
17
- # загрузка и отображение видео с примером детекции
18
- @st.cache_data
19
- def load_main_video(video_path: str) -> bytes:
20
- with open(video_path, 'rb') as file:
21
- video_bytes = file.read()
22
- return video_bytes
23
-
24
- MAIN_VIDEO_PATH = 'media/result_video.mp4'
25
- example_video_bytes = load_main_video(MAIN_VIDEO_PATH)
26
-
27
- video_width = 60
28
- video_side = 100
29
-
30
- _, container, _ = st.columns([video_side, video_width, video_side])
31
- container.video(data=example_video_bytes)
32
-
33
- # ===================== Боковое меню настроек ======================
34
-
35
- st.sidebar.header('Настройки')
36
- st.sidebar.write('---')
37
-
38
- face_conf_threshold = st.sidebar.slider(
39
- label='Порог уверенности для детекции лиц',
40
- min_value=0.0,
41
- max_value=1.0,
42
- value=0.7,
43
- step=0.01,
44
- )
45
- st.sidebar.write('---')
46
-
47
- # какие действия нужно детектить (пока не реализовано переключение)
48
- actions = ['age', 'gender', 'race', 'emotion']
49
- # применять ли дополнительное выравнивание
50
- st.sidebar.write('Применять ли дополнительное выравнивание')
51
- align = st.sidebar.checkbox(label='Align', value=False)
52
-
53
-
54
- # загрузка и инициализация моделей
55
- with st.spinner('Инициализация/загрузка моделей...'):
56
- from detector import detector_model
57
-
58
- # ==================== Загрузка видео и детекция =================
59
-
60
- st_video = st.file_uploader(label='Выберите видео')
61
- st.session_state['video_ready_to_convert'] = False
62
- st.session_state['annotations_ready'] = False
63
-
64
- if st_video:
65
- if st.button('Детекция видео'):
66
- progress_text = 'Детекция видео...'
67
- progress_bar = st.progress(0, text=progress_text)
68
-
69
- temp_file = tempfile.NamedTemporaryFile(delete=False)
70
- temp_file.write(st_video.read())
71
- video_file = temp_file.name
72
-
73
- generator = detector_model.detect_video(
74
- video_file=video_file,
75
- actions=actions,
76
- align=align,
77
- face_conf_threshold=face_conf_threshold,
78
- )
79
- frame_count, total_frames = next(generator)
80
- for (frame_count, _) in generator:
81
- progress_text = f'Детекция видео, кадр {frame_count}/{total_frames}'
82
- progress_bar.progress(frame_count / total_frames, text=progress_text)
83
-
84
- progress_bar.empty()
85
- st.session_state['video_ready_to_convert'] = True
86
- detector_model.detections_to_df()
87
-
88
- # ======= Конвертация видео для отображения в браузере =================
89
-
90
- if st.session_state['video_ready_to_convert']:
91
- convert_video_path = 'result_video_convert.mp4'
92
- with st.spinner('Идет конвертация видео ...'):
93
- detector_model.convert_mp4(detector_model.save_video_path, convert_video_path)
94
- # st.video(convert_video_path, format='video/mp4')
95
-
96
- with open(str(convert_video_path), 'rb') as file:
97
- video_bytes = file.read()
98
-
99
- _, container, _ = st.columns([video_side, video_width, video_side])
100
- container.video(data=video_bytes)
101
-
102
- # ======================= Кнопка скачать видео ===================
103
-
104
- st.download_button(
105
- label='Скачать видео',
106
- data=video_bytes,
107
- file_name=detector_model.save_video_path,
108
- )
109
- st.session_state['video_ready_to_convert'] = False
110
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
pages/2_Video_Detection_Results.py DELETED
@@ -1,39 +0,0 @@
1
- from pathlib import Path
2
-
3
- import pandas as pd
4
- import streamlit as st
5
-
6
- from draw_utils import draw_plots
7
-
8
-
9
- st.set_page_config(
10
- layout='wide',
11
- initial_sidebar_state='auto',
12
- page_title='Face Emotion Recognition',
13
- page_icon='👻',
14
- )
15
-
16
-
17
- st.write("#### Отображение результатов детекции видео")
18
-
19
- csv_path = 'video_annotations.csv'
20
-
21
- @st.cache_data
22
- def load_df():
23
- df = pd.read_csv(csv_path)
24
- return df
25
-
26
- if Path('video_annotations.csv').exists():
27
- df = load_df()
28
- st.download_button(
29
- label='Скачать csv аннотации',
30
- data=df.to_csv().encode('utf-8'),
31
- file_name=csv_path,
32
- mime='text/csv',
33
- )
34
- draw_plots(df)
35
- else:
36
- st.write(
37
- '#### Для отображения результатов детекции выберите видео ' \
38
- 'на вкладке Video Detection и нажмите "Детекция видео"'
39
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
pages/3_Web_Camera_Photo.py DELETED
@@ -1,75 +0,0 @@
1
- import cv2
2
- import numpy as np
3
- from PIL import Image
4
- import streamlit as st
5
-
6
- from detector import detector_model
7
-
8
-
9
- # ===================== Настройки страницы ======================
10
-
11
- st.set_page_config(
12
- layout='wide',
13
- initial_sidebar_state='auto',
14
- page_title='Face Emotion Recognition',
15
- page_icon='👻',
16
- )
17
-
18
-
19
- st.write("#### Детекция лиц, эмоций, пола и возраста с веб-камеры")
20
-
21
- # ===================== Боковое меню настроек ======================
22
-
23
- st.sidebar.header('Настройки')
24
- st.sidebar.write('---')
25
-
26
- face_conf_threshold = st.sidebar.slider(
27
- label='Порог уверенности для детекции лиц',
28
- min_value=0.0,
29
- max_value=1.0,
30
- value=0.7,
31
- step=0.01,
32
- )
33
- st.sidebar.write('---')
34
-
35
- # какие действия нужно детектить (пока не реализовано переключение)
36
- actions = ['age', 'gender', 'race', 'emotion']
37
- # применять ли дополнительное выравнивание
38
- st.sidebar.write('Применять ли дополнительное выравнивание')
39
- align = st.sidebar.checkbox(label='Align', value=False)
40
-
41
- # ================= Чтение видеопотока с камеры ===============
42
-
43
- st_image = st.camera_input("Сделать фото")
44
- st.session_state['detect_image_ready'] = False
45
-
46
- # ====================== Детекция ===========================
47
-
48
- if st_image:
49
- pil_image = Image.open(st_image)
50
- np_image_rgb = np.array(pil_image)
51
-
52
- np_image_bgr = cv2.cvtColor(np_image_rgb, cv2.COLOR_RGB2BGR)
53
- with st.spinner('Распознавание фото'):
54
- detections = detector_model.detect_image(
55
- np_image_bgr,
56
- actions=actions,
57
- align=align,
58
- )
59
-
60
- with st.spinner('Отрисовка результата'):
61
- result_np_image = detector_model.draw_detections(
62
- np_image_rgb=np_image_rgb,
63
- detections=detections,
64
- face_conf_threshold=face_conf_threshold,
65
- )
66
- st.session_state['detect_image_ready'] = True
67
-
68
- # ============= Отрисовка результата ======================
69
-
70
- if st_image and st.session_state['detect_image_ready']:
71
- col1, col2 = st.columns(2)
72
- with col1:
73
- st.image(np_image_rgb, caption='Исходное фото', use_column_width=True)
74
- with col2:
75
- st.image(result_np_image, caption='Результат детекции', use_column_width=True)