Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from beluga import load_model, process_emotions, generate_prompt | |
| from emodeepface import check_image_rotation, process_photo | |
| # add streamlit cache to prevent multiple reloads of beluga model | |
| def load_cached_model(): | |
| return load_model() | |
| # If the model and tokenizer aren't already in session state, load them | |
| if 'model' not in st.session_state: | |
| loading_message = st.empty() | |
| loading_message.text("Loading model... Please wait.") | |
| # begin loading beluga model and tokenizer | |
| st.session_state.model, st.session_state.tokenizer = load_cached_model() | |
| # clear loading message | |
| loading_message.empty() | |
| # title webpage | |
| st.title("Affective Journaling Assistant") | |
| # provide user instructions | |
| st.write(""" | |
| Welcome to the Affective Journaling Assistant! | |
| For a tailored journaling experience, we analyze your facial expressions to gauge your emotions. | |
| To proceed: | |
| 1. Ensure the image is well-lit and of high quality. | |
| 2. Your face should be fully visible without obstructions (e.g., no sunglasses or hats). | |
| 3. By uploading, you acknowledge and consent to our data processing. | |
| Let's get started! | |
| """) | |
| # request user image upload | |
| file_name = st.file_uploader("Please upload your photo.") | |
| # once an image has been uploaded | |
| if file_name is not None: | |
| # capture image with intended rotation | |
| image = check_image_rotation(file_name) | |
| # display the image directly with adjusted width | |
| st.image(image, width=300) # Adjust width as needed | |
| processing_message = st.empty() | |
| processing_message.text("Analyzing your image... Please wait.") | |
| # process uploaded image | |
| emotion_predictions = process_photo(file_name) | |
| # process emotion predictions | |
| result = process_emotions(st.session_state.model, st.session_state.tokenizer, emotion_predictions) | |
| processing_message.empty() | |
| # generate affective journaling prompt based on emotion predictions | |
| prompt = generate_prompt(result) | |
| # display journal prompt | |
| st.write(prompt) | |