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)

Вот и все!