Steven’s Status Report for February 9, 2025

For this week, I focused on data collection and annotations, as well as getting started on the prototype of our model.

I’ve set up our PyTorch environment and completed an initial YOLOv5 prototype. I’ve developed a basic pipeline, where images are pre-processed with OpenCV and then fed to the YOLOv5 model, and conducted some preliminary training and testing using small annotated datasets of grocery items. Furthermore, I have been sourcing and noting down relevant datasets on Kaggle/ Roboflow.

Currently, I am working on integrating the online datasets with the YOLOv5 model, and conducting some initial tests on accuracy as well as inference speed. I aim to test the inference speed locally on Raspberry Pi, as well as on cloud, to get a measure of latency of either set-up.   I will also experiment with image processing methods using images taken from our fridge, in order to try and improve detection accuracy.

Looking to the future, I will have to obtain the necessary hardware(Raspberry Pi) in order to test the effectiveness of our model when run locally. I will also have to work on integrating the model with our peripheral device as well as the mobile application.

Jun Wei’s Status Report for Feb 9 2025

1. Personal accomplishments for the week

1.1 Image stitching experimentation

I experimented with image stitching to explore the feasibility of a one-camera solution. The rationale for the use of image stitching over merely relying on a having a high field of view (FOV) camera was to

  • Mitigate obstruction/obscurity from other objects; and
  • Gather information from different POVs (through multiple images).

I made use of the OpenCV library’s Stitcher_create() function in Python. OpenCV’s Stitcher class provides a high-level API with a built-in stitching pipeline that performs feature detection and mapping, as well as homography based estimation for image warping. I captured images with my smartphone camera, with both the regular (FOV 85˚) and the ultra-wide (FOV 120˚) lens. However, I found that image stitching failed on images taken with the latter. As such, I only have outputs from the regular FOV lens:

Stitched image outputs:

 

These were my learning points and takeaways

  • Image stitching is best suited for cameras with low FOVs as higher FOVs tend to warp features on the extreme end;
  • Images need some overlap for feature mapping (ideally around 1/3);
  • Too much overlap can lead to unwanted warping during stitching/duplicated features; and
  • Drastic changes in POV (either due to sparse image intervals or objects being extremely close to the camera, such as the plastic bottle above) can cause object duplication due to diminished feature mapping effectiveness.

For comparison, I have the following single high-FOV shot taken from my smartphone:

In all, I believe image stitching does confer significant advantages over a single high FOV shot:

  • More information captured (apples and blue container) obscured by transparent bottle in high FOV shot)
  • Reduced object warp/deformation, which is crucial for accurate object classification

Following this, a natural extension would be to explore effective image stitching pipeline implementations on an embedded platform, or even a real-time implementation.

2. Progress status

While I did not fill out the equipment requisition form as early in the week as I had hoped, I was able to get a head start on the imaging stitching algorithm that in turn, better informs decisions on 1) camera placement, and 2) frequency of image capture, and 3) desired camera FOV. I will defer the camera testing and data transmission pipelines to the coming week, which is when I will (hopefully) have received the equipment.

3. Goals for upcoming week

For the upcoming week, I would like to

  • Acquire the equipment outlined in my previous update
  • Test the camera within the confines of the fridge
  • Develop data transmission pipeline from the camera to the RPi
  • Develop transmission pipeline from RPi to cloud server (ownCloud), if time permits

Team Status Report for February 02, 2025

1. Overview
Our project is on schedule across hardware, computer vision (CV), and mobile development efforts.

2. Key Achievements

  • Hardware and Embedded:
    • Selected the IMX219-160 camera for its wide FOV, low cost, and easy Raspberry Pi integration.
    • Planned a DIY motorized camera slider, ensuring custom control and reduced integration challenges.
  • Computer Vision:
    • Chose OpenCV for image preprocessing and YOLOv5 for object detection, balancing real-time performance and accuracy.
    • Preparing a dataset of fridge items for initial model training and testing.
  • Mobile App:
    • Evaluated multiple development options, decided on React Native due to robust community support and cross-platform benefits.
    • Outlined a prototype focusing on core inventory features and system integration.

3. Next Steps

  • Hardware and Embedded:
    • Purchase and test the camera, LED ring light, and slider components in a fridge setup.
    • Start assembly of the DIY slider and interface it with the Raspberry Pi.
  • Computer Vision:
    • Finalize dataset collection and begin training YOLOv5 on a sample set.
    • Explore and benchmark local vs. cloud inference options for efficiency and scalability.
  • Mobile App:
    • Implement a basic React Native prototype with essential UI elements and navigation.
    • Integrate data retrieval and display features, testing on both iOS and Android.

4. Outlook
The team is on schedule with our project. We will continue refining each component to ensure seamless integration and a functional system in the upcoming weeks.

William’s Status Report for February 02, 2025

For this week, I focused on researching the relevant mobile development frameworks and technlogies to determine how best to build our app. I explored native development like Swift and Kotlin and also cross-platform solutions like React Native and Flutter. After assessing their pros and cons in terms of performance, community support, and integration with our embedded systems, I decided to employ React Native for our mobile application due to its extensive documentation, large active developer community, and proven efficiency for cross-platform development. React Native also integrates well with various backend services and libraries, making it easier to incorporate our recommendation system features and functionalities.

For my next steps, I will create a basic prototype of our mobile interface using React Native on a small subset of core features. This will help us evaluate performance and speed, and discover potential challenges. For the next werek, I will focus on coding the foundation of the React Native app and setting up initial testing to confirm performance benchmarks.

Steven’s Status Report for February 02, 2025

For this week, I focused on researching the relevant CV libraries and frameworks that we can used to build our model. I explored multiple libraries(OpenCV, PyTorch) for handling image preprocessing and deep learning, and compared various object detection frameworks to determine which one best fits our requirements.

We decided to employ OpenCV in our computer vision pipeline, due to it being the industry-standard library with a large active user community and extensive documentation. OpenCV offers a wide variety of image transformations and integrates extremely well with deep learning frameworks such as PyTorch, allowing it to be easily implemented within our pipeline. The use of OpenCV for data processing will be essential in integrating our CV model with our overall system. We have also decided to use a YOLOv5 model for object detection, due to its extensive documentation and active community, and its suitability for real-time applications such as ours. Based on proven real-world performance, we are confident that the YOLOv5 model can achieve our accuracy goal of 90%.

The following is an initial outline of how the CV pipeline will operate:

  1. Image Capture and Basic Preprocessing (resizing, normalization with OpenCV)
  2. Inference using a YOLOv5 model
  3. Post-Processing to handle classifications/ quantity counts

In terms of my next steps, I will gather datasets of representative fridge ingredients, including variety in lighting, item arrangement and packaging. A diverse dataset of relevant images is necessary in order to achieve our accuracy goals. I will also set up a basic prototype using YOLOv5 on a small subset of test images, to evaluate initial detection accuracy, speed and resource usage. I aim to run initial benchmarks on local vs cloud inference, in order to confirm latency and throughput, as well as identify optimization techniques if needed to meet time constraints.

Overall, I am on track with researching the relevant CV libraries, laying out model architecture, and investigating how to integrate the detection pipeline within our system. For the next week, I will focus on data gathering and prototyping of the CV model.

Jun Wei’s Status Report for Feb 02 2025

1. Personal accomplishments for the week

1.1 Identification of equipment for procurement

Quantities of items below include spares

  • IMX219-160 (FOV 160°) camera
    Cost: $20 per unit
    Quantity: 3I did some research on cameras that would be suitable for our envisioned use case. Our use case imposes the following requirements for the camera system:

    • High color accuracy and dynamic range
    • High resolution — at least 5MP
    • High field of view (FOV)  — at least 120°
    • Small form factor — less than 2 inches in each dimension
    • Low power
    • Low noise
    • Low cost — less than $30 per camera

I decided that the IMX219-160 (FOV 160°) was a suitable choice of camera. In addition to exceeding cost saving expectations, it provides the added benefit of easy Raspberry Pi (RPi) integration. The possibility of adding flat ribbon connector extensions minimizes the profile of wires that are routed to the fridge exterior.

1.2 Camera Slider Design
I believed that a commercially built motorized slider might present integration issues with our RPi. This led to the decision to build the slider ourselves. I am referencing this DIY tutorial, we will only deviate from by using an RPi instead of an Arduino.

2. Progress status

I am currently on schedule and have completed the tasks set out for the week.

3. Goals for upcoming week

For the upcoming week, I would like to

  • Acquire the equipment outlined above
  • Test the camera within the confines of the fridge
  • Develop data transmission pipeline from the camera to the RPi
  • Develop transmission pipeline from RPi to cloud server (ownCloud), if time permits