Add LFW format (#3770)
parent
4bdaf3c083
commit
cc801b21ed
@ -0,0 +1,32 @@
|
||||
# Copyright (C) 2021 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
from tempfile import TemporaryDirectory
|
||||
|
||||
from datumaro.components.dataset import Dataset
|
||||
from pyunpack import Archive
|
||||
|
||||
from cvat.apps.dataset_manager.bindings import (GetCVATDataExtractor,
|
||||
import_dm_annotations)
|
||||
from cvat.apps.dataset_manager.util import make_zip_archive
|
||||
|
||||
from .registry import dm_env, exporter, importer
|
||||
|
||||
|
||||
@importer(name='LFW', ext='ZIP', version='1.0')
|
||||
def _import(src_file, instance_data):
|
||||
with TemporaryDirectory() as tmp_dir:
|
||||
Archive(src_file.name).extractall(tmp_dir)
|
||||
|
||||
dataset = Dataset.import_from(tmp_dir, 'lfw')
|
||||
|
||||
import_dm_annotations(dataset, instance_data)
|
||||
|
||||
@exporter(name='LFW', ext='ZIP', version='1.0')
|
||||
def _exporter(dst_file, instance_data, save_images=False):
|
||||
dataset = Dataset.from_extractors(GetCVATDataExtractor(instance_data,
|
||||
include_images=save_images), env=dm_env)
|
||||
with TemporaryDirectory() as tmp_dir:
|
||||
dataset.export(tmp_dir, format='lfw', save_images=save_images)
|
||||
|
||||
make_zip_archive(tmp_dir, dst_file)
|
||||
@ -0,0 +1,77 @@
|
||||
---
|
||||
linkTitle: 'LFW'
|
||||
weight: 17
|
||||
---
|
||||
|
||||
# [LFW](http://vis-www.cs.umass.edu/lfw/)
|
||||
|
||||
- Format specification available [here](http://vis-www.cs.umass.edu/lfw/README.txt)
|
||||
|
||||
- Supported annotations: tags, points.
|
||||
|
||||
- Supported attributes:
|
||||
|
||||
- `negative_pairs` (should be defined for labels as `text`):
|
||||
list of image names with mismatched persons.
|
||||
- `positive_pairs` (should be defined for labels as `text`):
|
||||
list of image names with matched persons.
|
||||
|
||||
# Import LFW annotation
|
||||
|
||||
The uploaded annotations file should be a zip file with the following structure:
|
||||
|
||||
```bash
|
||||
<archive_name>.zip/
|
||||
└── annotations/
|
||||
├── landmarks.txt # list with landmark points for each image
|
||||
├── pairs.txt # list of matched and mismatched pairs of person
|
||||
└── people.txt # optional file with a list of persons name
|
||||
```
|
||||
|
||||
Full information about the content of annotation files is available
|
||||
[here](http://vis-www.cs.umass.edu/lfw/README.txt)
|
||||
|
||||
# Export LFW annotation
|
||||
|
||||
Downloaded file: a zip archive of the following structure:
|
||||
|
||||
```bash
|
||||
<archive_name>.zip/
|
||||
└── images/ # if the option save images was selected
|
||||
│ ├── name1/
|
||||
│ │ ├── name1_0001.jpg
|
||||
│ │ ├── name1_0002.jpg
|
||||
│ │ ├── ...
|
||||
│ ├── name2/
|
||||
│ │ ├── name2_0001.jpg
|
||||
│ │ ├── name2_0002.jpg
|
||||
│ │ ├── ...
|
||||
│ ├── ...
|
||||
├── landmarks.txt
|
||||
├── pairs.txt
|
||||
└── people.txt
|
||||
```
|
||||
|
||||
# Example: create task with images and upload LFW annotations into it
|
||||
|
||||
This is one of the possible ways to create a task and add LFW annotations for it.
|
||||
|
||||
- On the task creation page:
|
||||
- Add labels that correspond to the names of the persons.
|
||||
- For each label define `text` attributes with names `positive_pairs` and
|
||||
`negative_pairs`
|
||||
- Add images using zip archive from local repository:
|
||||
|
||||
```bash
|
||||
images.zip/
|
||||
├── name1_0001.jpg
|
||||
├── name1_0002.jpg
|
||||
├── ...
|
||||
├── name1_<N>.jpg
|
||||
├── name2_0001.jpg
|
||||
├── ...
|
||||
```
|
||||
|
||||
- On the annotation page:
|
||||
Upload annotation -> LFW 1.0 -> choose archive with structure
|
||||
that described in the [import section](#import-lfw-annotation).
|
||||
Loading…
Reference in New Issue