Team Status Report for 2/24

Risk Identification and Mitigation Strategies

Primary Risk Concern: Our primary risk concern for this phase of the project is being able to identify the expiration date correctly given the input image taken by our camera. We have done optimization for our camera, therefore we are now moving on to the processing phase There are many concerns regarding the accuracy of the date, as even the slightest error could lead to a totally wrong information. Therefore, a lot of preprocessing and postprocessing is required to ensure optimal character recognition. For now, we will focus on preprocessing mechanisms, as we have not implemented the character recognition yet. 

 

Mitigation Measures:

We are planning on implementing these preprocessing measures: 

  1. Resizing image
  2. Contrast enhancement
  3. Color to grayscale adjustment
  4. Contour analysis to filter out non-text regions 

 

Other than the image itself, some things to consider for expiration dates in general:

For the input we should take into consideration what would be most common for expiration dates, which would either be started by “Best by”, or “Use by”. Then the date would be divided by “.”, “/”. It would also be in MM/DD/YYYY format. We would also have to be able to take in only MM/DD inputs as well. This would also imply that software would have to keep track of either or both dates, complicating the database.

Project Design Updates

As of the current reporting period, there have been no modifications to the initial design of the project. 

Schedule and Timeline

We are on track of our timeline. Even if the OCR implementation takes longer than expected, we have ample time for integration and testing during the week after Spring Break. 

Yuma’s Status Report for 2/24

Accomplishments This Week

Firstly, we presented our design review this week. During the Q&A, an interesting alternative for storing data on the central computer & edge servers was proposed — ZFS. I spent some time this week conducting a trade study for this technology versus a vanilla implementation of RAID.

On top of this, I was able to setup the repository for the project and draft the bare-bone code used to register items and communicate between nodes. This code is pushed to the repository. A problem I encountered was formatting the data being sent, but was able to resolve it by performing lossless compression on the class member using the pickle library and unpickle-ing it at the recipient. I would say it was a productive week.

Project Schedule and Progress

Although I was a bit behind schedule last week, I managed to bring it back on schedule this week. I hope to work ahead this week, though I am not sure how much can be done as the design review is also due this week.

Goals for the Next Week

I plan on starting to define an interface between Siyuan and Jason’s portions of the code so that we are on the same page about how barcodes and camera input are being put in as data. I also plan on dedicating a lot of time this week to write and clean up the design review document, as well as review comments that were given on our presentation.

Jason’s Status Report for 2/24

Accomplishments This Week

With the optimal camera module chosen and successfully connected to the rbpi, I have now moved on to developing the initial phase of the OCR model. Firstly, I have implemented the preprocessing stage of our model, which included the following list. This implementation used libraries such as Numpy and cv2 from OpenCV. As of now, the implementation is very basic, and therefore needs testing and optimization for better results.  The code will be updated in the github repository. This will be my primary goal for next week.

Preprocessing

  1. Resizing image
  2. Contrast enhancement
  3. Color to grayscale adjustment
  4. Contour analysis to filter out non-text regions

Project Schedule and Progress

My progress is on schedule, however I would want to research and test more on how to perform contour analysis on input image before next week.

Goals for the Next Week

Next week my goal will be to keep working on the image processing model. I will finish the preprocessing part of the model, and then work on the actual OCR part .

Siyuan’s Status Report for 2/24

Accomplishments This Week

During the third week of our project, we achieved significant milestones in software development, specifically in API integration and functionality testing. Key accomplishments include:

API Integration Completion: I successfully integrated the upcitemdb API with a Python script on the Raspberry Pi. This was a crucial step towards enabling our system to fetch product information based on barcode scans.

Functionality Testing of API Requests: Post-integration, I conducted thorough testing to ensure the API requests were functioning as intended. The system is now capable of fetching detailed product information, including product name and brand, using just the barcode. This functionality is pivotal for our inventory management system, as it allows for immediate identification and cataloging of items.

 

Project Schedule and Progress

I am pleased to report that the project is progressing on schedule.

 

Goals for the Next Week

Next week, I will start with the development of the barcode module software. This next phase includes:

Software Development for Barcode Module: I plan to commence development on the core software that will manage the barcode scanning process.

Initial Testing of Barcode Module: Alongside development, I will conduct initial tests on the barcode module software to ensure its compatibility with the hardware setup and its effectiveness in scanning and processing barcode data.

Team Status Report for 2/17

Risk Identification and Mitigation Strategies

Primary Risk Concern: One of the bigger challenges in this project is accurately detecting the expiration date of products using a camera. This primary concern is split into two sub-problems.

  1. Image Clarity for Text Recognition: A concern that has somewhat materialized from last week was Image clarity. Our first camera that we acquired was not able to focus on targets <10cm, which led to blurry numbers and text. We tried to plug this image into google lens to see if a state-of-the-art algorithm could detect the text on the image, but it was unable to. We were surprised as this camera was the same one a previous capstone group used (Where’s the Barcode).
  2. Capture Timing: The final main concern is when the camera acquires the image. The user will face the expiration date towards the camera, but there is no cue when the image is most clear / the expiration date is most in view, and when the camera is most in focus. 

Mitigation Measures

  1. To have lower likelihood of roadblock on the camera hardware, we preemptively ordered multiple cameras (one ArduCam from Inventory, one from Amazon) with low focal distance and auto-focus. 
  2. We have tentatively drafted an algorithm that allows for clear expiration date images. This is purely hypothetical and will not be able to be tested until the camera is integrated with the software, but we plan on syncing the image acquisition with the barcode acquisition. When the barcode is read, the images acquired from the camera +-1 second will be all scanned through an OCR algorithm and the image with the highest classification value will be used. This is based on the principle that if the barcode can be clearly read, hopefully the expiration date can be as well.

Project Design Updates

As of the current reporting period, there have been no modifications to the initial design of the project. 

Schedule and Timeline

The project was a little delayed this week due to problems setting up the RPI5. We were unable to use the lab keyboard/mouse to hook up to the RPI, and thus we were blocked from going through the setup process. This is very minor though, and we are roughly ⅓ of a week behind schedule, and we hope to get back on progress this week.

Appendix

(Original Camera Image, target = 15cm)

(Original Camera Image, target = 10cm)

(Original Camera Image, target = 5cm)

 

Additional Questions: 

A was written by Siyuan Li, B was written by Jaesup Kim and C was written by Yuma Matsuoka.

Part A

IntelliStorage is poised to significantly impact public health, safety, and welfare through its innovative approach to household storage management. By leveraging advanced technologies such as barcode scanners, microcontrollers, and a sophisticated camera and database system, IntelliStorage addresses crucial aspects of household management that directly affect the well-being of individuals.

 

From a public health perspective, the system’s ability to track expiration dates is paramount. Food safety is a major concern for households, as the consumption of expired goods can lead to health issues ranging from mild food poisoning to severe allergic reactions. IntelliStorage mitigates this risk by ensuring that consumers are aware of the expiration dates of items within their pantries and refrigerators. By providing daily summaries and consumption suggestions, the system not only promotes the efficient use of food but also significantly reduces the chances of health complications arising from the ingestion of spoiled products.

 

In terms of safety, the absence of physical harm is a critical consideration. Cluttered storage spaces can pose significant risks, including physical injury from falling objects or the growth of harmful bacteria and molds in poorly managed pantries. IntelliStorage’s item detection and management feature organizes and maintains an accurate inventory of stored items, reducing the likelihood of accidents and enhancing the overall safety of the home environment.

 

Furthermore, the welfare of individuals is intricately linked to their ability to access and efficiently manage basic needs, such as food and clothing. IntelliStorage’s comprehensive network across different storage spaces ensures that necessities are adequately stocked, accessible, and utilized before expiration. This level of organization and management not only saves time and resources but also contributes to a sense of security and well-being among users.

 

Part B

One of the social factors that we considered in designing this product solution is the environmental (green) issue of food waste. By using Intellistorage, users can avoid throwing away food that has passed its expiration date and instead consume it before it spoils or donate it to food banks or charities. This will help reduce food waste and its environmental consequences.

 

Another social factor that we considered in designing this product solution is the economic issue of rising food prices. Consumers are paying more for the same amount of food, which can affect their budget and purchasing power. By using our scanner, customers can save money by avoiding buying duplicate items that they already have at home. This will help users optimize their grocery spending and reduce unnecessary costs.

 

Part C

Intellistorage is able to alleviate a lot of unnecessary stress on the supply chain. For many, it is very common to go to the grocery store and buy something you already had at home. By using IntelliStorage, you will be able to keep track of what is already at home, so that there is no need to buy anything that has already been bought. If many adapt this technology in their household, this would lead to less spending and smarter purchases. This would alleviate the need for supermarkets to order excess items, and would decrease demand. 

 

In events of supply chain disruptions such as COVID-19, this decrease in demand would allow for more necessities to be distributed rather than excess that is bound for waste. This should have a very positive economic impact as the goods are being utilized more efficiently, as well as a positive social impact.

 

Yuma’s Status Report for 2/17

Accomplishments This Week

Firstly, our hardware arrived this week. I was able to set up the RPI 5 that we are going to use as our central computer. With the Design Review coming up for next week, I also worked with Jason and Siyuan to finalize the details of the design, and talked over some hypothetical questions we would get asked during the presentation. Outside of these main goals, I assisted Siyuan and Jason with their Camera/Barcode modules as completing the setup of the RPI5 was blocked by actually having a mouse and keyboard. We devised a method of acquiring images in focus for the expiration date, which involve taking a buffer of images +-1 second of acquiring the barcode number. OCR will then go through the buffer of the images to determine which one has the highest classification rate, and will use those values. Overall, a very productive week.

Project Schedule and Progress

My progress is a little behind schedule, as we struggled to set up the RPI due to not having a mouse/keyboard to set it up with. We were able to get this issue resolved and I am trying to get back on schedule.

Goals for the Next Week

I plan on starting to develop the MVP software for the center node this coming week. Edge node software development will also happen, but the task is blocked until there is more progress on Jason’s camera hardware progress and Siyuan’s barcode reader progress.

Jason’s Status Report for 2/17

Accomplishments This Week

Firstly, I worked on the Design Review Presentation that we have next week. Other than the presentation, I worked on configuring the webcam that will be used to detect expiration dates for the scanner module. I first tried configuring with a given camera that we got from storage, however noticed that webcams generally didn’t have an auto focus/zoom mode. This led to lower quality images at close range (<10cm). This realization allowed me to make sure that our camera had good compatibility with close range shots. Then with our newly arrived camera, I have successfully connected the camera to the Rbpi.

Project Schedule and Progress

My progress is on schedule, have done preliminary hardware/software planning and implementation in preparation for next week.

Goals for the Next Week

Next week my goal will be to test the camera with the other hardware components such as the barcode scanner. We would want to scan both barcode and exp. date at the same time, where the trigger of the barcode scanner will be the shared control signal. After configuring them to operate simultaneously, I will research the OCR algorithm for basic implementation, disregarding any confidence score/accuracy requirement.

Siyuan’s Status Report for 2/17

Accomplishments This Week

The second week of our project focused on the practical aspects of integrating a barcode scanner with the Raspberry Pi. The key accomplishments include:

Hardware Setup and Testing: Upon receiving the Raspberry Pi and the barcode scanner, I immediately set up the hardware to test its functionality. This involved connecting the barcode scanner via USB to the Raspberry Pi and conducting initial tests to ensure it was operational and capable of scanning barcodes accurately.

Data Output Understanding: I invested time in understanding how the barcode scanner outputs data through USB.

API Research for Product Information: To enrich the data obtained from scanning barcodes, I researched various APIs capable of providing detailed product information. After evaluating several options, I decided to utilize upcitemdb’s API, which offers extensive data, including an item’s name and brand, based on the barcode scanned.

 

Project Schedule and Progress

I am pleased to report that the project is progressing on schedule.

 

Goals for the Next Week

The objectives for the next week include:

API Integration: I plan to fully integrate upcitemdb’s API with a Python script running on the Raspberry Pi. This involves developing the code to send barcode data to the API and retrieve product information, ensuring a seamless and efficient process.

Feature Development: With the API integration underway, I will start developing additional features to enhance the usability of our system. This includes implementing user-friendly interfaces for displaying product information and possibly starting work on inventory management functionalities.

Yuma’s Status Report for 2/10

Accomplishments This Week

This week, much of the time was listening to presentations. We presented our project and we were able to gain more insight into our actual implementation through the questions asked during the Q&A. We also gained a lot of insight into other technical problems and proposed solutions for other teams, such as an important use-case requirement being battery life. I also conducted preliminary software planning to successfully be able to implement our design into reality the following weeks.

Regarding the preliminary software planning, I was able to draft up a diagram (like a FSM) detailing the MVP requirements of the product. In terms of the hardware planning, I was able to communicate with Jason and Siyuan to purchase a LED screen, Raspberry Pi-s, and camera making sure they were relatively easy to integrate with the RPI computing module.

 

Project Schedule and Progress

We are overall on track with the schedule. We had a week full of presentations but we were still able to do  preliminary planning for both hardware and software components, allowing us to actually start implementing them next week.

 

Goals for the Next Week

In the upcoming week, my primary focus will be the actual implementation of the edge node software as well as the central database. The specific deliverables I want to achieve are the following:

Edge Node Software

I plan to have a MVP of the scanner software done by the end of the week. I want to make sure it is able to start up correctly, receive data from both the barcode scanner and camera so that in future weeks we can augment features onto these percepts. I hope to also have the 8am push notification to be up and running on the LED screen.

Central Database

I plan to have a central database on the RPI 5 acting as the central computer this week. Although these scanners would not be communicating by the end of this week, I wish to set this up so that in future weeks, the main problem would be communication rather than data storage and instantiation.

 

Jason’s Status Report for 2/10

Accomplishments This Week

Firstly, as the presenter for the Proposal this week, I worked on practicing the presentation material as well as prepare for any possible questions that could come up after the presentation. Other than the proposal, I worked on researching and purchasing materials for the hardware component of our scanner module: a camera that would fit our design requirements.

The camera that we ended up purchasing was a NexiGo N60 1080P Webcam (https://www.amazon.com/Microphone-NexiGo-Computer-110-degree-Conferencing/dp/B088TSR6YJ) which had a balance of budget and high resolution within the dimensions of our scanner module. We would connect this webcam to the microcontroller via USB, and incorporate it for our OCR portion of the project.

Project Schedule and Progress

My progress is on schedule, have done preliminary hardware planning as well as purchasing materials.

Goals for the Next Week

Next week my goal will be to setup and test the camera integration with the Raspberry Pi. This would mean putting the camera on the scanner, and connecting to it and setting up the environment.  I have found a good tutorial on the web to follow (https://www-users.york.ac.uk/~mjf5/shed_cam/src/USB%20webcam.html)

Things to look out for is the compatibility, latency, and image quality that we get from the camera to the RbPI. I will validate any software and hardware issues that may rise during this testing phase.