Week 6 (Jul 7 - Jul 14)

Meeting with Mentors

We started by discussing the progress so far, and I demonstrated the UI prototype with Dataset Viewer tab that I developed.

  • Santiago suggested that requiring users to compress the dataset file each time is tedious. Instead, we should allow users to provide the root directory path, check the folder structure, and proceed from there. I need to add a check to ensure the input path exists.
  • David mentioned that showing thumbnails of sample images is a good idea, but users should eventually be able to access all samples, not just a subset. He also noted that dataset object initialization should be done through the detection metrics pipeline, and the system should throw exceptions for incorrect dataset paths or missing folders.
  • Sergio recommended using different colors for bounding boxes based on categories and suggested the supervision tool to help with this.
  • David also pointed out that the metrics were coming out as 0 or NaN, indicating a possible error in the evaluation function. This needs to be fixed. He also mentioned that, in the future, we should display metrics for different ranges of thresholds.

To Do for This Week

  • Fix the issue with evaluation metric values
  • Refine the UI for the dataset tabs

Progress

  • I started by fixing issues with the detection metrics factory. While the logic in this class was correct, the sample notebook was returning all zeros and null values because the iou_threshold value was not properly initialized in the torch_detection class. I corrected this. During this process, I also noticed some loose ends in DetectionMetricsFactory, such as lack of prevention for division by zero and null values being passed. I addressed these issues in the code.

  • Next, I focused on developing the GUI using Streamlit. I created a project structure with different Python files for each tab. Incorporating feedback from last week, I experimented with different ways to get the dataset input. The UI now allows users to either type in the folder path for the dataset or browse and select the folder. I also added a checker to handle incorrect file paths, displaying an error message in the UI.

  • After selecting the dataset, the user can choose the split (train or val). Based on the selection, I initialize the dataset object (assuming COCO conventional naming and folder structure for now). I will seek further input from mentors to improve this.

  • For displaying thumbnails, following David’s suggestion, I added < and > buttons so users can view more samples. Since Streamlit doesn’t natively support clickable images, I used the streamlit_image_select library to enable this feature. The selected image’s annotation is then shown, with bounding boxes color-coded by category using the supervision library.


What’s Next?

Next week, I will focus on the UI. My plan is to make the suggested changes to the Dataset Viewer tab, finish the Inference tab, and start working on the Evaluator tab.




Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • Final Report
  • Week 5 (Jul 4 - Jul 7)
  • Week 7 (Jul 15 - Jul 21)
  • Week 9 (Jul 29 - Aug 4)
  • Week 10 (Aug 4 - Aug 11)