The ovmlpy
package provides image and video machine learning tools for volleyball analytics. It provides similar functionality to the ovml package, but ovmlpy
uses a Python-based implementation which should offer improved performance. ovmlpy
takes care of installing Python and required dependencies: you do not need an existing Python installation on your system.
Installation
## install.packages("remotes")
remotes::install_github("openvolley/ovmlpy")
On first use, you need to tell ovmlpy
to install Python and some required packages. It will install these into a virtual environment, so that they do not interfere with other Python installation(s) that you might already have on your system:
ovmlpy::ovml_yolo7_python_setup()
Some other setup/installation notes:
if you wish to use a GPU card for improved performance you will need to ensure that the drivers are installed on your system
the first time you use a new type of network, it will also download the associated network weights file (~70MB, depending on network version)
note that you probably can’t use
ovml
andovmlpy
in the same R session, because of conflicts in shared libraries.
ovmlpy
includes the YOLO v7 object detection algorithm and an experimental version of this network specifically for detecting volleyballs. This implementation draws heavily from WongKinYiu/yolov7.
Example
Create the network object once …
… then we can use the network to detect objects in an image:
img <- ovml_example_image()
dets <- ovml_yolo_detect(dn, img)
ovml_ggplot(img, dets)
Or detect human poses (experimental!):
dn2 <- ovml_yolo("7-w6-pose")
dets2 <- ovml_yolo_detect(dn2, img)
library(ggplot2)
library(ggsci)
ovml_ggplot(img) +
geom_segment(data = dets2, aes(x1, y1, xend = x2, yend = y2, col = segment), size = 1.5) +
scale_color_d3(palette = "category20", guide = "none")