Image Characteristics with YOLOV8
Last year I started experimenting with older versions of YOLO models for fast object detection, classification and tracking. Recently I learned of the fairly recently released YOLOV8 and the Ultralytics Python package for building, training and deploying computer vision models with YOLO. This past week I begin diving into the Ultralytics packages and writing some customized code to try and achieve some specific objectives.
For some time now I've been interested wanted to build an image processing and computer vision model that quantifies photos and videos I take by quantifying the content, color schemes, lighting and other photography related metrics and mapping the data to the geographic location and time the image/video was taken. Conceptually I find this idea interesting as a means of visualizing content and stylistic changes in photography projects over time and how different geographic locations and convent influence decisions in photography. For example, are there distinct shifts in the compositional nature of how subjects in photographs are framed. The details of this idea are fairly rough, but I think it could be an interesting concept to explore.
The recent release of YOLOV8 plays into this concept because the tools built by Ultralytics make it incredibly easy to work with pretrained models, so I plan to use YOLOV8 as the primary object detection, classification and segmentation tool for this project. As a starting point, I wrote the following Python program for batch processing images to extract geolocation and datetime metadata and detect and any identifiable elements in the image with YOLOV8. The program cycles over images in a given directory, extracts meta data, detects elements and writes the results to a json manifest, which I plan to use as a data source for visualization tools I'm currently working on.