We should add the ultralytics YOLOv8 model -- it has a simple interface, is easy to train, and has several tasks that it supports. In particular it supports detection (bounding boxes), segmentation (polygons over regions), and multi-object tracking (assigning an entity an ID over a series of images. We should treat the one package as a wrapper around this model.
We should add a basic unit test to ensure that we can run a basic task. We should also implement a node that subscribes to an image topic and writes to another with a list of objects. We should consider further features:
Pulling models from an arbitrary s3/gcs bucket, https endpoint, or local filesystem -- configurable via launchfile
Adding frame-limiter to ensure we can use the GPU for other applications
We should also write a launchfile that benchmarks the system in both CPU and GPU execution modes. We should create a GPU variant of the dockerfile, and add an app-gpu docker-compose service that optionally mounts the GPU.
As noted in #1 , ROS does not have the ability to install arbitrary python packages via setup.py. We should instead provide a requirements.txt for users, and bake that into our container images.
https://docs.ultralytics.com/
We should add the ultralytics YOLOv8 model -- it has a simple interface, is easy to train, and has several tasks that it supports. In particular it supports detection (bounding boxes), segmentation (polygons over regions), and multi-object tracking (assigning an entity an ID over a series of images. We should treat the one package as a wrapper around this model.
We should add a basic unit test to ensure that we can run a basic task. We should also implement a node that subscribes to an image topic and writes to another with a list of objects. We should consider further features:
We should also write a launchfile that benchmarks the system in both CPU and GPU execution modes. We should create a GPU variant of the dockerfile, and add an app-gpu docker-compose service that optionally mounts the GPU.