Group Name: Bears
Group Members: Logan Lucas, Eric Chavez, Ron Pham, Vidhi Patel
This project analyzes video footage to detect what kind of clothing is most common in a given space. We then use this data to:
- Estimate weather conditions outside (specifically temperature)
- Suggest recommendations for ideal clothing
- Help building managers keep indoor temperatures comfortable
Important
The machine running the backend and the machine running the frontend must be able to make requests to each other. For our implementation with an NVIDIA Jetson Thor and our local machines, we used Tailscale.
Note
The current Dockerfile setup is using an r39.1 PyTorch image for Jetson devices. If this does not match your version, either pull a prebuilt image for your version here or build a custom image for your version from the jetson-containers GitHub repository.
- Set up your environment variables using the following steps:
- Create a copy of
.env.samplenamed.envin thebackendfolder. - Replace the templated values in your newly created
.envfile with your actual values.
- Create a copy of
- From the root directory of this repository, run the command
docker compose up --buildin the terminal.
- Set up your environment variables using the following steps:
- Create a copy of
.env.samplenamed.env.developmentin thefrontendfolder. - Replace the templated values in your newly created
.envfile with your actual value
- Create a copy of
- Run the command
pnpm installin the terminal from thefrontenddirectory. - Run the command
pnpm run devin the terminal from thefrontenddirectory.
Bandwidth:
- Within a period of around 5 hours in the middle of a weekday, around 6.5 MB worth of detection and temperature data was sent to be stored in the Supabase cloud database according to our benchmark script. If we used the cloud only for this task, assuming a 720p video stream at 30 FPS, we would need a constant bandwidth in the range of 2-4 Mbps (1/4-1/2 MB/s) according to Vimeo. Over 5 hours, this would end up being around 4500-9000 MB of total bandwidth used.
- Total Savings: around 0.1% of bandwidth to the cloud compared to streaming live video to the cloud
We are using live camera footage from a single camera in the EVL space in UIC's CDRLC building. We also have sample data within backend/data for testing purposes.
According to Section 3.12 in the CS 494 syllabus, the use of AI tools is allowed, but must be disclosed. Here is how LLMs were used during this project:
- Proposing a design for streaming endpoint
- Took suggestion on using an MPEG stream for live video feed
- Debugging error messages during Docker setup
- Accepted minor changes including adding an extra index URL and setting --retries to 0 for
pip installsteps
- Accepted minor changes including adding an extra index URL and setting --retries to 0 for
- Suggested how to persist CLIP in the cache so a complete reinstall was not needed every time
docker compose up --buildwas ran - Comparing different tools for clothing classification with their tradeoffs
- Gave advice on tradeoffs between using OpenCV vs CLIP. These tradeoffs then influenced our final decision to choose CLIP
- Suggesting frontend libraries to use for graphs
- Accepted suggestion to use Recharts for visuals on dashboard page
- Used for debugging issues with the GPU as well as CUDA errors
- Advised on what versions of Docker, YOLO as well as versions of CUDA to use in order to make the models compatible
The tasks above were completed using Claude Sonnet 4.6.