Pascal VOC — это формат XML, используемый для определения прямоугольных областей интереса в изображениях. Созданный для Visual Object Challenge (VOC), он обычно используется в сообществах машинного обучения в качестве формата обмена для меток обнаружения на изображениях. Вот пример файла VOC:
Это легко и быстро разобрать с помощью Scala. Последние версии Scala не поставляются с библиотекой синтаксического анализа XML, поэтому обязательно включите ее в свой проект со следующими координатами sbt:
"org.scala-lang.modules" %% "scala-xml" % "1.3.0"
Обратите внимание, что в VOC-файл можно поместить и другие поля, но, как правило, наиболее полезными битами информации являются:
- filename — Местоположение изображения
- объекты — расположение ограничивающей рамки в координатах изображения в пикселях. Индекс использует отсчет от 1, а Scala отсчитывает от 0, поэтому мы будем вычитать 1 из позиции x и y при анализе bndbox.
Вот наша модель VOC в виде кейс-классов Scala:
Парсер из XML в объекты case приведен ниже:
Затем, чтобы связать все это вместе:
import java.io.File import import scala.xml.XML val xml = XML.loadFile(new File("my_voc_file.xml")) val voc = VocParser.parse(xml)
Вот и все!