add in serializing check in auto annotation model runner (#770)

main
Ben Hoff 6 years ago committed by Nikita Manovich
parent 695fc37924
commit e9e52f35cb

@ -7,10 +7,10 @@ A small command line program to test and run AutoAnnotation Scripts.
Change in to the root of the project directory and run Change in to the root of the project directory and run
```shell ```shell
$ python cvat/utils/auto_annotation/run_modely.py --py /path/to/python/interp.py \ $ python cvat/utils/auto_annotation/run_model.py --py /path/to/python/interp.py \
--xml /path/to/xml/file.xml \ --xml /path/to/xml/file.xml \
--bin /path/to/bin/file.bin \ --bin /path/to/bin/file.bin \
--json /path/to/json/mapping/mapping.json --json /path/to/json/mapping/mapping.json
``` ```
Some programs need to run unrestricted or as an administer. Use the `--unrestriced` flag to simulate. Some programs need to run unrestricted or as an administer. Use the `--unrestriced` flag to simulate.
@ -18,23 +18,23 @@ Some programs need to run unrestricted or as an administer. Use the `--unrestric
You can pass image files in to fully simulate your findings. Images are passed in as a list You can pass image files in to fully simulate your findings. Images are passed in as a list
```shell ```shell
$ python cvat/utils/auto_annotation/run_modely.py --py /path/to/python/interp.py \ $ python cvat/utils/auto_annotation/run_model.py --py /path/to/python/interp.py \
--xml /path/to/xml/file.xml \ --xml /path/to/xml/file.xml \
--bin /path/to/bin/file.bin \ --bin /path/to/bin/file.bin \
--json /path/to/json/mapping/mapping.json \ --json /path/to/json/mapping/mapping.json \
--image-files /path/to/img.jpg /path2/to/img2.png /path/to/img3.jpg --image-files /path/to/img.jpg /path2/to/img2.png /path/to/img3.jpg
``` ```
Additionally, it's sometimes useful to visualize your images. Additionally, it's sometimes useful to visualize your images.
Use the `--show-images` flag to have each image with the annotations pop up. Use the `--show-images` flag to have each image with the annotations pop up.
```shell ```shell
$ python cvat/utils/auto_annotation/run_modely.py --py /path/to/python/interp.py \ $ python cvat/utils/auto_annotation/run_model.py --py /path/to/python/interp.py \
--xml /path/to/xml/file.xml \ --xml /path/to/xml/file.xml \
--bin /path/to/bin/file.bin \ --bin /path/to/bin/file.bin \
--json /path/to/json/mapping/mapping.json \ --json /path/to/json/mapping/mapping.json \
--image-files /path/to/img.jpg /path2/to/img2.png /path/to/img3.jpg \ --image-files /path/to/img.jpg /path2/to/img2.png /path/to/img3.jpg \
--show-images --show-images
``` ```
There's a command that let's you scan quickly by setting the length of time (in milliseconds) to display each image. There's a command that let's you scan quickly by setting the length of time (in milliseconds) to display each image.
@ -42,11 +42,25 @@ Use the `--show-image-delay` flag and set the appropriate time.
```shell ```shell
# Display each image in a window for 2 seconds # Display each image in a window for 2 seconds
$ python cvat/utils/auto_annotation/run_modely.py --py /path/to/python/interp.py \ $ python cvat/utils/auto_annotation/run_model.py --py /path/to/python/interp.py \
--xml /path/to/xml/file.xml \ --xml /path/to/xml/file.xml \
--bin /path/to/bin/file.bin \ --bin /path/to/bin/file.bin \
--json /path/to/json/mapping/mapping.json \ --json /path/to/json/mapping/mapping.json \
--image-files /path/to/img.jpg /path2/to/img2.png /path/to/img3.jpg \ --image-files /path/to/img.jpg /path2/to/img2.png /path/to/img3.jpg \
--show-images --show-images \
--show-image-delay 2000 --show-image-delay 2000
```
Visualization isn't always enough.
The CVAT has a serialization step that can throw errors on model upload even after successful visualization.
You must install the necessary packages installed, but then you can add the `--serialize` command to ensure that your
results will serialize correctly.
```shell
$ python cvat/utils/auto_annotation/run_model.py --py /path/to/python/interp.py \
--xml /path/to/xml/file.xml \
--bin /path/to/bin/file.bin \
--json /path/to/json/mapping/mapping.json \
--image-files /path/to/img.jpg /path2/to/img2.png /path/to/img3.jpg \
--serialize
``` ```

@ -28,6 +28,7 @@ def _get_kwargs():
parser.add_argument('--show-images', action='store_true', help='Show the results of the annotation in a window') parser.add_argument('--show-images', action='store_true', help='Show the results of the annotation in a window')
parser.add_argument('--show-image-delay', default=0, type=int, help='Displays the images for a set duration in milliseconds, default is until a key is pressed') parser.add_argument('--show-image-delay', default=0, type=int, help='Displays the images for a set duration in milliseconds, default is until a key is pressed')
parser.add_argument('--serialize', default=False, action='store_true', help='Try to serialize the result')
return vars(parser.parse_args()) return vars(parser.parse_args())
@ -103,6 +104,19 @@ def main():
py_file, py_file,
restricted=restricted) restricted=restricted)
if kwargs['serialize']:
os.environ['DJANGO_SETTINGS_MODULE'] = 'cvat.settings.production'
import django
django.setup()
from cvat.apps.engine.serializers import LabeledDataSerializer
serializer = LabeledDataSerializer(data=results)
if not serializer.is_valid():
logging.critical('Data unable to be serialized correctly!')
serializer.is_valid(raise_exception=True)
logging.warning('Program didn\'t have any errors.') logging.warning('Program didn\'t have any errors.')
show_images = kwargs.get('show_images', False) show_images = kwargs.get('show_images', False)

Loading…
Cancel
Save