diff --git a/utils/auto_annotation/README.md b/utils/auto_annotation/README.md index 5dd3ea31af489b428aed3286a9d952d80e66d5a0..e4dbd6641546acac6a1d836682ef8b2da99f61f0 100644 --- a/utils/auto_annotation/README.md +++ b/utils/auto_annotation/README.md @@ -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 ```shell -$ python cvat/utils/auto_annotation/run_modely.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 +$ 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 ``` 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 ```shell -$ python cvat/utils/auto_annotation/run_modely.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 +$ 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 ``` Additionally, it's sometimes useful to visualize your images. Use the `--show-images` flag to have each image with the annotations pop up. ```shell -$ python cvat/utils/auto_annotation/run_modely.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 \ - --show-images +$ 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 \ + --show-images ``` 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 # Display each image in a window for 2 seconds -$ python cvat/utils/auto_annotation/run_modely.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 \ - --show-images - --show-image-delay 2000 +$ 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 \ + --show-images \ + --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 ``` diff --git a/utils/auto_annotation/run_model.py b/utils/auto_annotation/run_model.py index d45ce594af4cdea6ca3c10896c51bca0e90ccdff..b4ef27ecb2bc03adeb96ff521df1d6285c458b75 100644 --- a/utils/auto_annotation/run_model.py +++ b/utils/auto_annotation/run_model.py @@ -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-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()) @@ -103,6 +104,19 @@ def main(): py_file, 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.') show_images = kwargs.get('show_images', False)