├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ └── bug_report.md └── workflows │ └── stale.yml ├── .gitignore ├── README.md ├── Tensorflow_Object_Detection_API_Instance_Segmentation_in_Google_Colab.ipynb ├── create_coco_tf_record.py ├── doc ├── labelme_example.jpg ├── monitor_training.png ├── prediction_1.png ├── prediction_2.png ├── prediction_3.png ├── prediction_4.png ├── prediction_5.png ├── training_model.png └── tutorial_output.png ├── frozen_inference_graph.pb ├── images ├── labelme2coco.py ├── test.json ├── test │ ├── IMG_20181228_102636.jpg │ ├── IMG_20181228_102636.json │ ├── IMG_20181228_102641.jpg │ ├── IMG_20181228_102641.json │ ├── IMG_20181228_102658.jpg │ ├── IMG_20181228_102658.json │ ├── IMG_20181228_102706.jpg │ ├── IMG_20181228_102706.json │ ├── IMG_20181228_102745.jpg │ ├── IMG_20181228_102745.json │ ├── IMG_20181228_102749.jpg │ ├── IMG_20181228_102749.json │ ├── IMG_20181228_102757.jpg │ └── IMG_20181228_102757.json ├── train.json └── train │ ├── IMG_20181228_101826.jpg │ ├── IMG_20181228_101826.json │ ├── IMG_20181228_101855.jpg │ ├── IMG_20181228_101855.json │ ├── IMG_20181228_101903.jpg │ ├── IMG_20181228_101903.json │ ├── IMG_20181228_101915.jpg │ ├── IMG_20181228_101915.json │ ├── IMG_20181228_102013.jpg │ ├── IMG_20181228_102013.json │ ├── IMG_20181228_102020.jpg │ ├── IMG_20181228_102020.json │ ├── IMG_20181228_102033.jpg │ ├── IMG_20181228_102033.json │ ├── IMG_20181228_102041.jpg │ ├── IMG_20181228_102041.json │ ├── IMG_20181228_102048.jpg │ ├── IMG_20181228_102048.json │ ├── IMG_20181228_102155.jpg │ ├── IMG_20181228_102155.json │ ├── IMG_20181228_102201.jpg │ ├── IMG_20181228_102201.json │ ├── IMG_20181228_102206.jpg │ ├── IMG_20181228_102206.json │ ├── IMG_20181228_102210.jpg │ ├── IMG_20181228_102210.json │ ├── IMG_20181228_102308.jpg │ ├── IMG_20181228_102308.json │ ├── IMG_20181228_102313.jpg │ ├── IMG_20181228_102313.json │ ├── IMG_20181228_102317.jpg │ ├── IMG_20181228_102317.json │ ├── IMG_20181228_102319.jpg │ ├── IMG_20181228_102319.json │ ├── IMG_20181228_102420.jpg │ ├── IMG_20181228_102420.json │ ├── IMG_20181228_102425.jpg │ ├── IMG_20181228_102425.json │ ├── IMG_20181228_102434.jpg │ ├── IMG_20181228_102434.json │ ├── IMG_20181228_102506.jpg │ ├── IMG_20181228_102506.json │ ├── IMG_20181228_102511.jpg │ ├── IMG_20181228_102511.json │ ├── IMG_20181228_102516.jpg │ ├── IMG_20181228_102516.json │ ├── IMG_20181228_102520.jpg │ ├── IMG_20181228_102520.json │ ├── IMG_20181228_102544.jpg │ ├── IMG_20181228_102544.json │ ├── IMG_20181228_102547.jpg │ ├── IMG_20181228_102547.json │ ├── IMG_20181228_102552.jpg │ ├── IMG_20181228_102552.json │ ├── IMG_20181228_102557.jpg │ ├── IMG_20181228_102557.json │ ├── IMG_20181228_102801.jpg │ ├── IMG_20181228_102801.json │ ├── IMG_20181228_103007.jpg │ ├── IMG_20181228_103007.json │ ├── IMG_20181228_103009.jpg │ ├── IMG_20181228_103009.json │ ├── IMG_20181228_103012.jpg │ ├── IMG_20181228_103012.json │ ├── IMG_20181228_103014.jpg │ ├── IMG_20181228_103014.json │ ├── IMG_20181228_103110.jpg │ ├── IMG_20181228_103110.json │ ├── IMG_20181228_103113.jpg │ ├── IMG_20181228_103113.json │ ├── IMG_20181228_103117.jpg │ ├── IMG_20181228_103117.json │ ├── IMG_20181228_103121.jpg │ ├── IMG_20181228_103121.json │ ├── IMG_20181228_103227.jpg │ ├── IMG_20181228_103227.json │ ├── IMG_20181228_103229.jpg │ ├── IMG_20181228_103229.json │ ├── IMG_20181228_103231.jpg │ ├── IMG_20181228_103231.json │ ├── IMG_20181228_103234.jpg │ ├── IMG_20181228_103234.json │ ├── IMG_20181228_103324.jpg │ ├── IMG_20181228_103324.json │ ├── IMG_20181228_103326.jpg │ ├── IMG_20181228_103326.json │ ├── IMG_20181228_103329.jpg │ ├── IMG_20181228_103329.json │ ├── IMG_20181228_103331.jpg │ ├── IMG_20181228_103331.json │ ├── IMG_20181228_103424.jpg │ ├── IMG_20181228_103424.json │ ├── IMG_20181228_103427.jpg │ ├── IMG_20181228_103427.json │ ├── IMG_20181228_103429.jpg │ ├── IMG_20181228_103429.json │ ├── IMG_20181228_103434.jpg │ ├── IMG_20181228_103434.json │ ├── IMG_20181228_103611.jpg │ ├── IMG_20181228_103611.json │ ├── IMG_20181228_103622.jpg │ ├── IMG_20181228_103622.json │ ├── IMG_20181228_103629.jpg │ ├── IMG_20181228_103629.json │ ├── IMG_20181228_103634.jpg │ ├── IMG_20181228_103634.json │ ├── IMG_20181228_103805.jpg │ ├── IMG_20181228_103805.json │ ├── IMG_20181228_103813.jpg │ ├── IMG_20181228_103813.json │ ├── IMG_20181228_103828.jpg │ ├── IMG_20181228_103828.json │ ├── IMG_20181228_103835.jpg │ ├── IMG_20181228_103835.json │ ├── IMG_20181228_104001.jpg │ ├── IMG_20181228_104001.json │ ├── IMG_20181228_104004.jpg │ ├── IMG_20181228_104004.json │ ├── IMG_20181228_104024.jpg │ ├── IMG_20181228_104024.json │ ├── IMG_20181228_104027.jpg │ ├── IMG_20181228_104027.json │ ├── IMG_20181228_104139.jpg │ ├── IMG_20181228_104139.json │ ├── IMG_20181228_104144.jpg │ ├── IMG_20181228_104144.json │ ├── IMG_20181228_104153.jpg │ ├── IMG_20181228_104153.json │ ├── IMG_20181228_104213.jpg │ ├── IMG_20181228_104213.json │ ├── IMG_20181228_104228.jpg │ ├── IMG_20181228_104228.json │ ├── IMG_20181228_104234.jpg │ ├── IMG_20181228_104234.json │ ├── IMG_20181228_104241.jpg │ ├── IMG_20181228_104241.json │ ├── IMG_20181228_104248.jpg │ ├── IMG_20181228_104248.json │ ├── IMG_20181228_104256.jpg │ ├── IMG_20181228_104256.json │ ├── IMG_20181228_104303.jpg │ ├── IMG_20181228_104303.json │ ├── IMG_20181228_104309.jpg │ ├── IMG_20181228_104309.json │ ├── IMG_20181228_104317.jpg │ ├── IMG_20181228_104317.json │ ├── IMG_20181228_104332.jpg │ ├── IMG_20181228_104332.json │ ├── IMG_20181228_104336.jpg │ ├── IMG_20181228_104336.json │ ├── IMG_20181228_104344.jpg │ ├── IMG_20181228_104344.json │ ├── IMG_20181228_104356.jpg │ ├── IMG_20181228_104356.json │ ├── IMG_20181228_104413.jpg │ ├── IMG_20181228_104413.json │ ├── IMG_20190104_163804.jpg │ ├── IMG_20190104_163804.json │ ├── IMG_20190104_163809.jpg │ ├── IMG_20190104_163809.json │ ├── IMG_20190104_163812.jpg │ ├── IMG_20190104_163812.json │ ├── IMG_20190104_163815.jpg │ ├── IMG_20190104_163815.json │ ├── IMG_20190104_163823.jpg │ ├── IMG_20190104_163823.json │ ├── IMG_20190104_163834.jpg │ ├── IMG_20190104_163834.json │ ├── IMG_20190104_163842.jpg │ ├── IMG_20190104_163842.json │ ├── IMG_20190104_163849.jpg │ ├── IMG_20190104_163849.json │ ├── IMG_20190104_163855.jpg │ ├── IMG_20190104_163855.json │ ├── IMG_20190104_163902.jpg │ ├── IMG_20190104_163902.json │ ├── IMG_20190104_163909.jpg │ ├── IMG_20190104_163909.json │ ├── IMG_20190104_163915.jpg │ ├── IMG_20190104_163915.json │ ├── IMG_20190104_163943.jpg │ ├── IMG_20190104_163943.json │ ├── IMG_20190104_163949.jpg │ ├── IMG_20190104_163949.json │ ├── IMG_20190104_163951.jpg │ ├── IMG_20190104_163951.json │ ├── IMG_20190104_163956.jpg │ ├── IMG_20190104_163956.json │ ├── IMG_20190104_164010.jpg │ ├── IMG_20190104_164010.json │ ├── IMG_20190104_164013.jpg │ ├── IMG_20190104_164013.json │ ├── IMG_20190104_164017.jpg │ ├── IMG_20190104_164017.json │ ├── IMG_20190104_164023.jpg │ ├── IMG_20190104_164023.json │ ├── IMG_20190104_164121.jpg │ ├── IMG_20190104_164121.json │ ├── IMG_20190104_164125.jpg │ ├── IMG_20190104_164125.json │ ├── IMG_20190104_164130.jpg │ ├── IMG_20190104_164130.json │ ├── IMG_20190104_164134.jpg │ ├── IMG_20190104_164134.json │ ├── IMG_20190104_164153.jpg │ ├── IMG_20190104_164153.json │ ├── IMG_20190104_164157.jpg │ ├── IMG_20190104_164157.json │ ├── IMG_20190104_164200.jpg │ ├── IMG_20190104_164200.json │ ├── IMG_20190104_164205.jpg │ ├── IMG_20190104_164205.json │ ├── IMG_20190104_164220.jpg │ ├── IMG_20190104_164220.json │ ├── IMG_20190104_164227.jpg │ ├── IMG_20190104_164227.json │ ├── IMG_20190104_164233.jpg │ ├── IMG_20190104_164233.json │ ├── IMG_20190104_164240.jpg │ ├── IMG_20190104_164240.json │ ├── IMG_20190104_164248.jpg │ ├── IMG_20190104_164248.json │ ├── IMG_20190104_164252.jpg │ ├── IMG_20190104_164252.json │ ├── IMG_20190104_164259.jpg │ ├── IMG_20190104_164259.json │ ├── IMG_20190104_164312.jpg │ ├── IMG_20190104_164312.json │ ├── IMG_20190104_164400.jpg │ ├── IMG_20190104_164400.json │ ├── IMG_20190104_164405.jpg │ ├── IMG_20190104_164405.json │ ├── IMG_20190104_164409.jpg │ ├── IMG_20190104_164409.json │ ├── IMG_20190104_164415.jpg │ ├── IMG_20190104_164415.json │ ├── IMG_20190104_164422.jpg │ ├── IMG_20190104_164422.json │ ├── IMG_20190104_164430.jpg │ ├── IMG_20190104_164430.json │ ├── IMG_20190104_164434.jpg │ ├── IMG_20190104_164434.json │ ├── IMG_20190104_164440.jpg │ ├── IMG_20190104_164440.json │ ├── IMG_20190104_164523.jpg │ ├── IMG_20190104_164523.json │ ├── IMG_20190104_164528.jpg │ ├── IMG_20190104_164528.json │ ├── IMG_20190104_164532.jpg │ ├── IMG_20190104_164532.json │ ├── IMG_20190104_164540.jpg │ ├── IMG_20190104_164540.json │ ├── IMG_20190104_164548.jpg │ ├── IMG_20190104_164548.json │ ├── IMG_20190104_164559.jpg │ ├── IMG_20190104_164559.json │ ├── IMG_20190104_164604.jpg │ ├── IMG_20190104_164604.json │ ├── IMG_20190104_164611.jpg │ ├── IMG_20190104_164611.json │ ├── IMG_20190104_164615.jpg │ ├── IMG_20190104_164615.json │ ├── IMG_20190104_164622.jpg │ ├── IMG_20190104_164622.json │ ├── IMG_20190104_164630.jpg │ ├── IMG_20190104_164630.json │ ├── IMG_20190104_164635.jpg │ ├── IMG_20190104_164635.json │ ├── IMG_20190104_165104.jpg │ ├── IMG_20190104_165104.json │ ├── IMG_20190104_165108.jpg │ ├── IMG_20190104_165108.json │ ├── IMG_20190104_165119.jpg │ ├── IMG_20190104_165119.json │ ├── IMG_20190104_165129.jpg │ ├── IMG_20190104_165129.json │ ├── IMG_20190104_165139.jpg │ ├── IMG_20190104_165139.json │ ├── IMG_20190104_165146.jpg │ ├── IMG_20190104_165146.json │ ├── IMG_20190104_165200.jpg │ ├── IMG_20190104_165200.json │ ├── IMG_20190104_165204.jpg │ └── IMG_20190104_165204.json ├── resize_images.py ├── test.record ├── train.record └── training ├── labelmap.pbtxt ├── mask_rcnn_inception_resnet_v2_1024x1024_coco17_gpu-8.config └── saved_model.pb /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: TannerGilbert 4 | patreon: gilberttanner 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- 1 | name: Mark stale issues and pull requests 2 | 3 | on: 4 | schedule: 5 | - cron: "0 0 * * *" 6 | 7 | jobs: 8 | stale: 9 | 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - uses: actions/stale@v1 14 | with: 15 | repo-token: ${{ secrets.GITHUB_TOKEN }} 16 | stale-pr-message: 'Stale pull request message' 17 | stale-issue-label: 'no-issue-activity' 18 | stale-pr-label: 'no-pr-activity' 19 | stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days' 20 | days-before-stale: 30 21 | days-before-close: 5 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | .idea 3 | .ipynb_checkpoints -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Train a Mask R-CNN model with the Tensorflow Object Detection API 2 | 3 | [![TensorFlow 2.5](https://img.shields.io/badge/TensorFlow-2.5-FF6F00?logo=tensorflow)](https://github.com/tensorflow/tensorflow/releases/tag/v2.5.0) 4 | 5 | ![Mask R-CNN prediction](doc/prediction_3.png) 6 | 7 | ## 1. Installation 8 | 9 | You can install the TensorFlow Object Detection API either with Python Package Installer (pip) or Docker, an open-source platform for deploying and managing containerized applications. For running the Tensorflow Object Detection API locally, Docker is recommended. If you aren't familiar with Docker though, it might be easier to install it using pip. 10 | 11 | First clone the master branch of the Tensorflow Models repository: 12 | 13 | ```bash 14 | git clone https://github.com/tensorflow/models.git 15 | ``` 16 | 17 | ### Docker Installation 18 | 19 | ```bash 20 | # From the root of the git repository (inside the models directory) 21 | docker build -f research/object_detection/dockerfiles/tf2/Dockerfile -t od . 22 | docker run -it od 23 | ``` 24 | 25 | ### Python Package Installation 26 | 27 | ```bash 28 | cd models/research 29 | # Compile protos. 30 | protoc object_detection/protos/*.proto --python_out=. 31 | # Install TensorFlow Object Detection API. 32 | cp object_detection/packages/tf2/setup.py . 33 | python -m pip install . 34 | ``` 35 | 36 | > Note: The *.proto designating all files does not work protobuf version 3.5 and higher. If you are using version 3.5, you have to go through each file individually. To make this easier, I created a python script that loops through a directory and converts all proto files one at a time. 37 | 38 | ```python 39 | import os 40 | import sys 41 | args = sys.argv 42 | directory = args[1] 43 | protoc_path = args[2] 44 | for file in os.listdir(directory): 45 | if file.endswith(".proto"): 46 | os.system(protoc_path+" "+directory+"/"+file+" --python_out=.") 47 | ``` 48 | 49 | ``` 50 | python use_protobuf.py 51 | ``` 52 | 53 | To test the installation run: 54 | 55 | ```bash 56 | # Test the installation. 57 | python object_detection/builders/model_builder_tf2_test.py 58 | ``` 59 | 60 | If everything installed correctly you should see something like: 61 | 62 | ```bash 63 | ... 64 | [ OK ] ModelBuilderTF2Test.test_create_ssd_models_from_config 65 | [ RUN ] ModelBuilderTF2Test.test_invalid_faster_rcnn_batchnorm_update 66 | [ OK ] ModelBuilderTF2Test.test_invalid_faster_rcnn_batchnorm_update 67 | [ RUN ] ModelBuilderTF2Test.test_invalid_first_stage_nms_iou_threshold 68 | [ OK ] ModelBuilderTF2Test.test_invalid_first_stage_nms_iou_threshold 69 | [ RUN ] ModelBuilderTF2Test.test_invalid_model_config_proto 70 | [ OK ] ModelBuilderTF2Test.test_invalid_model_config_proto 71 | [ RUN ] ModelBuilderTF2Test.test_invalid_second_stage_batch_size 72 | [ OK ] ModelBuilderTF2Test.test_invalid_second_stage_batch_size 73 | [ RUN ] ModelBuilderTF2Test.test_session 74 | [ SKIPPED ] ModelBuilderTF2Test.test_session 75 | [ RUN ] ModelBuilderTF2Test.test_unknown_faster_rcnn_feature_extractor 76 | [ OK ] ModelBuilderTF2Test.test_unknown_faster_rcnn_feature_extractor 77 | [ RUN ] ModelBuilderTF2Test.test_unknown_meta_architecture 78 | [ OK ] ModelBuilderTF2Test.test_unknown_meta_architecture 79 | [ RUN ] ModelBuilderTF2Test.test_unknown_ssd_feature_extractor 80 | [ OK ] ModelBuilderTF2Test.test_unknown_ssd_feature_extractor 81 | ---------------------------------------------------------------------- 82 | Ran 20 tests in 91.767s 83 | 84 | OK (skipped=1) 85 | ``` 86 | 87 | ### 2. Gathering data 88 | 89 | Now that the Tensorflow Object Detection API is ready to go, we need to gather the images needed for training. 90 | 91 | To train a robust model, the pictures should be as diverse as possible. So they should have different backgrounds, varying lighting conditions, and unrelated random objects in them. 92 | 93 | You can either take pictures yourself, or you can download pictures from the internet. For my microcontroller detector, I took about 25 pictures of each individual microcontroller and 25 pictures containing multiple microcontrollers. 94 | 95 | ![](doc/image_gallery.png) 96 | 97 | You can use the [resize_images script](resize_images.py) to resize the image to the wanted resolutions. 98 | 99 | ```bash 100 | python resize_images.py -d images/ -s 800 600 101 | ``` 102 | 103 | After you have all the images, move about 80% to the object_detection/images/train directory and the other 20% to the object_detection/images/test directory. Make sure that the images in both directories have a good variety of classes. 104 | 105 | ## 3. Labeling data 106 | 107 | After you have gathered enough images, it's time to label them, so your model knows what to learn. In order to label the data, you will need to use some kind of labeling software. 108 | 109 | For object detection, we used [LabelImg](https://github.com/tzutalin/labelImg), an excellent image annotation tool supporting both PascalVOC and Yolo format. For Image Segmentation / Instance Segmentation there are multiple great annotations tools available. Including, [VGG Image Annotation Tool](http://www.robots.ox.ac.uk/~vgg/software/via/), [labelme](https://github.com/wkentaro/labelme), and [PixelAnnotationTool](https://github.com/abreheret/PixelAnnotationTool). I chose labelme, because of its simplicity to both install and use. 110 | 111 | ![](doc/labelme_example.jpg) 112 | 113 | ## 4. Generating Training data 114 | 115 | With the images labeled, we need to create TFRecords that can be served as input data for the training of the model. Before we create the TFRecord files, we'll convert the labelme labels into COCO format. This can be done with the [labelme2coco.py script](images/labelme2coco.py). 116 | 117 | ```bash 118 | python labelme2coco.py train train.json 119 | python labelme2coco.py test test.json 120 | ``` 121 | 122 | Now we can create the TFRecord files using the [create_coco_tf_record.py script](create_coco_tf_record.py). 123 | 124 | ```bash 125 | python create_coco_tf_record.py --logtostderr --train_image_dir=images/train --test_image_dir=images/test --train_annotations_file=images/train.json --test_annotations_file=images/test.json --output_dir=./ 126 | ``` 127 | 128 | After executing this command, you should have a train.record and test.record file inside your object detection folder. 129 | 130 | ## 5. Getting ready for training 131 | 132 | The last thing we need to do before training is to create a label map and a training configuration file. 133 | 134 | ### 5.1 Creating a label map 135 | 136 | The label map maps an id to a name. We will put it in a folder called training, which is located in the object_detection directory. The labelmap for my detector can be seen below. 137 | 138 | ```bash 139 | item { 140 | id: 1 141 | name: 'Arduino' 142 | } 143 | item { 144 | id: 2 145 | name: 'ESP8266' 146 | } 147 | item { 148 | id: 3 149 | name: 'Heltec' 150 | } 151 | item { 152 | id: 4 153 | name: 'Raspberry' 154 | } 155 | ``` 156 | 157 | The id number of each item should match the ids inside the train.json and test.json files. 158 | 159 | ```json 160 | "categories": [ 161 | { 162 | "supercategory": "Arduino", 163 | "id": 0, 164 | "name": "Arduino" 165 | }, 166 | { 167 | "supercategory": "ESP8266", 168 | "id": 1, 169 | "name": "ESP8266" 170 | }, 171 | { 172 | "supercategory": "Heltec", 173 | "id": 2, 174 | "name": "Heltec" 175 | }, 176 | { 177 | "supercategory": "Raspberry", 178 | "id": 3, 179 | "name": "Raspberry" 180 | } 181 | ], 182 | ``` 183 | 184 | ### 5.2 Creating the training configuration 185 | 186 | Lastly, we need to create a training configuration file. At the moment only one Mask-RCNN model is supported with Tensorflow 2. 187 | 188 | From the [Tensorflow Model Zoo](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2_detection_zoo.md): 189 | | Model name | Speed (ms) | COCO mAP | Outputs | 190 | | ------------ | :--------------: | :--------------: | :-------------: | 191 | | [Mask R-CNN Inception ResNet V2 1024x1024](http://download.tensorflow.org/models/object_detection/tf2/20200711/mask_rcnn_inception_resnet_v2_1024x1024_coco17_gpu-8.tar.gz) | 301 | 39.0/34.6 | Boxes/Masks | 192 | 193 | The [base config](https://github.com/tensorflow/models/blob/master/research/object_detection/configs/tf2/mask_rcnn_inception_resnet_v2_1024x1024_coco17_gpu-8.config) for the model can be found inside the [configs/tf2 folder](https://github.com/tensorflow/models/tree/master/research/object_detection/configs/tf2). 194 | 195 | Copy the config file to the training directory. Then open it inside a text editor and make the following changes: 196 | 197 | * Line 12: change the number of classes to number of objects you want to detect (4 in my case) 198 | 199 | * Line 125: change fine_tune_checkpoint to the path of the model.ckpt file: 200 | 201 | * ```fine_tune_checkpoint: "/mask_rcnn_inception_resnet_v2_1024x1024_coco17_gpu-8/checkpoint/ckpt-0"``` 202 | 203 | * Line 126: Change fine_tune_checkpoint_type to detection 204 | 205 | * Line 136: change input_path to the path of the train.record file: 206 | 207 | * ```input_path: "/train.record"``` 208 | 209 | * Line 156: change input_path to the path of the test.record file: 210 | 211 | * ```input_path: "/test.record"``` 212 | 213 | * Line 134 and 152: change label_map_path to the path of the label map: 214 | 215 | * ```label_map_path: "/labelmap.pbtxt"``` 216 | 217 | * Line 107 and 147: change batch_size to a number appropriate for your hardware, like 4, 8, or 16. 218 | 219 | ## 6. Training the model 220 | 221 | To train the model execute the following command in the command line: 222 | 223 | ```bash 224 | python model_main_tf2.py --pipeline_config_path=training/mask_rcnn_inception_resnet_v2_1024x1024_coco17_gpu-8.config --model_dir=training --alsologtostderr 225 | ``` 226 | 227 | If everything was setup correctly, the training should begin shortly, and you should see something like the following: 228 | 229 | ![training the model](doc/training_model.png) 230 | 231 | Every few minutes, the current loss gets logged to Tensorboard. Open Tensorboard by opening a second command line, navigating to the object_detection folder and typing: 232 | 233 | ```tensorboard --logdir=training/train``` 234 | 235 | This will open a webpage at localhost:6006. 236 | 237 | ![monitor training](doc/monitor_training.png) 238 | 239 | The training script saves checkpoints about every five minutes. Train the model until it reaches a satisfying loss, then you can terminate the training process by pressing Ctrl+C. 240 | 241 | ## 7. Exporting the inference graph 242 | 243 | Now that we have a trained model, we need to generate an inference graph that can be used to run the model. 244 | 245 | ```bash 246 | python /content/models/research/object_detection/exporter_main_v2.py \ 247 | --trained_checkpoint_dir training \ 248 | --output_directory inference_graph \ 249 | --pipeline_config_path training/mask_rcnn_inception_resnet_v2_1024x1024_coco17_gpu-8.config 250 | ``` 251 | 252 | ## Author 253 | **Gilbert Tanner** 254 | 255 | ## Support me 256 | 257 | Buy Me A Coffee 258 | -------------------------------------------------------------------------------- /create_coco_tf_record.py: -------------------------------------------------------------------------------- 1 | # Copyright 2017 The TensorFlow Authors. All Rights Reserved. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # ============================================================================== 15 | 16 | r"""Convert raw COCO dataset to TFRecord for object_detection. 17 | 18 | Please note that this tool creates sharded output files. 19 | 20 | Example usage: 21 | python create_coco_tf_record.py --logtostderr \ 22 | --train_image_dir="${TRAIN_IMAGE_DIR}" \ 23 | --test_image_dir="${TEST_IMAGE_DIR}" \ 24 | --train_annotations_file="${TRAIN_ANNOTATIONS_FILE}" \ 25 | --test_annotations_file="${TEST_ANNOTATIONS_FILE}" \ 26 | --output_dir="${OUTPUT_DIR}" 27 | """ 28 | from __future__ import absolute_import 29 | from __future__ import division 30 | from __future__ import print_function 31 | 32 | import hashlib 33 | import io 34 | import json 35 | import os 36 | import contextlib2 37 | import numpy as np 38 | import PIL.Image 39 | 40 | from pycocotools import mask 41 | 42 | from tensorflow.python.framework.versions import VERSION 43 | if VERSION >= "2.0.0a0": 44 | import tensorflow.compat.v1 as tf 45 | else: 46 | import tensorflow as tf 47 | 48 | from object_detection.dataset_tools import tf_record_creation_util 49 | from object_detection.utils import dataset_util 50 | from object_detection.utils import label_map_util 51 | 52 | 53 | flags = tf.app.flags 54 | tf.flags.DEFINE_boolean('include_masks', True, 55 | 'Whether to include instance segmentations masks ' 56 | '(PNG encoded) in the result. default: True.') 57 | tf.flags.DEFINE_string('train_image_dir', '', 58 | 'Training image directory.') 59 | tf.flags.DEFINE_string('test_image_dir', '', 60 | 'Test image directory.') 61 | tf.flags.DEFINE_string('train_annotations_file', '', 62 | 'Training annotations JSON file.') 63 | tf.flags.DEFINE_string('test_annotations_file', '', 64 | 'Test-dev annotations JSON file.') 65 | tf.flags.DEFINE_string('output_dir', '/tmp/', 'Output data directory.') 66 | 67 | FLAGS = flags.FLAGS 68 | 69 | tf.logging.set_verbosity(tf.logging.INFO) 70 | 71 | 72 | def create_tf_example(image, 73 | annotations_list, 74 | image_dir, 75 | category_index, 76 | include_masks=False): 77 | """Converts image and annotations to a tf.Example proto. 78 | 79 | Args: 80 | image: dict with keys: 81 | [u'license', u'file_name', u'coco_url', u'height', u'width', 82 | u'date_captured', u'flickr_url', u'id'] 83 | annotations_list: 84 | list of dicts with keys: 85 | [u'segmentation', u'area', u'iscrowd', u'image_id', 86 | u'bbox', u'category_id', u'id'] 87 | Notice that bounding box coordinates in the official COCO dataset are 88 | given as [x, y, width, height] tuples using absolute coordinates where 89 | x, y represent the top-left (0-indexed) corner. This function converts 90 | to the format expected by the Tensorflow Object Detection API (which is 91 | which is [ymin, xmin, ymax, xmax] with coordinates normalized relative 92 | to image size). 93 | image_dir: directory containing the image files. 94 | category_index: a dict containing COCO category information keyed 95 | by the 'id' field of each category. See the 96 | label_map_util.create_category_index function. 97 | include_masks: Whether to include instance segmentations masks 98 | (PNG encoded) in the result. default: False. 99 | Returns: 100 | example: The converted tf.Example 101 | num_annotations_skipped: Number of (invalid) annotations that were ignored. 102 | 103 | Raises: 104 | ValueError: if the image pointed to by data['filename'] is not a valid JPEG 105 | """ 106 | image_height = image['height'] 107 | image_width = image['width'] 108 | filename = image['file_name'] 109 | image_id = image['id'] 110 | 111 | full_path = os.path.join(image_dir, filename) 112 | with tf.gfile.GFile(full_path, 'rb') as fid: 113 | encoded_jpg = fid.read() 114 | encoded_jpg_io = io.BytesIO(encoded_jpg) 115 | image = PIL.Image.open(encoded_jpg_io) 116 | key = hashlib.sha256(encoded_jpg).hexdigest() 117 | 118 | xmin = [] 119 | xmax = [] 120 | ymin = [] 121 | ymax = [] 122 | is_crowd = [] 123 | category_names = [] 124 | category_ids = [] 125 | area = [] 126 | encoded_mask_png = [] 127 | num_annotations_skipped = 0 128 | for object_annotations in annotations_list: 129 | (x, y, width, height) = tuple(object_annotations['bbox']) 130 | if width <= 0 or height <= 0: 131 | num_annotations_skipped += 1 132 | continue 133 | if x + width > image_width or y + height > image_height: 134 | num_annotations_skipped += 1 135 | continue 136 | xmin.append(float(x) / image_width) 137 | xmax.append(float(x + width) / image_width) 138 | ymin.append(float(y) / image_height) 139 | ymax.append(float(y + height) / image_height) 140 | is_crowd.append(object_annotations['iscrowd']) 141 | category_id = int(object_annotations['category_id']) 142 | category_ids.append(category_id) 143 | category_names.append(category_index[category_id]['name'].encode('utf8')) 144 | area.append(object_annotations['area']) 145 | 146 | if include_masks: 147 | run_len_encoding = mask.frPyObjects(object_annotations['segmentation'], 148 | image_height, image_width) 149 | binary_mask = mask.decode(run_len_encoding) 150 | if not object_annotations['iscrowd']: 151 | binary_mask = np.amax(binary_mask, axis=2) 152 | pil_image = PIL.Image.fromarray(binary_mask) 153 | output_io = io.BytesIO() 154 | pil_image.save(output_io, format='PNG') 155 | encoded_mask_png.append(output_io.getvalue()) 156 | feature_dict = { 157 | 'image/height': 158 | dataset_util.int64_feature(image_height), 159 | 'image/width': 160 | dataset_util.int64_feature(image_width), 161 | 'image/filename': 162 | dataset_util.bytes_feature(filename.encode('utf8')), 163 | 'image/source_id': 164 | dataset_util.bytes_feature(str(image_id).encode('utf8')), 165 | 'image/key/sha256': 166 | dataset_util.bytes_feature(key.encode('utf8')), 167 | 'image/encoded': 168 | dataset_util.bytes_feature(encoded_jpg), 169 | 'image/format': 170 | dataset_util.bytes_feature('jpeg'.encode('utf8')), 171 | 'image/object/bbox/xmin': 172 | dataset_util.float_list_feature(xmin), 173 | 'image/object/bbox/xmax': 174 | dataset_util.float_list_feature(xmax), 175 | 'image/object/bbox/ymin': 176 | dataset_util.float_list_feature(ymin), 177 | 'image/object/bbox/ymax': 178 | dataset_util.float_list_feature(ymax), 179 | 'image/object/class/text': 180 | dataset_util.bytes_list_feature(category_names), 181 | 'image/object/is_crowd': 182 | dataset_util.int64_list_feature(is_crowd), 183 | 'image/object/area': 184 | dataset_util.float_list_feature(area), 185 | } 186 | if include_masks: 187 | feature_dict['image/object/mask'] = ( 188 | dataset_util.bytes_list_feature(encoded_mask_png)) 189 | example = tf.train.Example(features=tf.train.Features(feature=feature_dict)) 190 | return key, example, num_annotations_skipped 191 | 192 | 193 | def _create_tf_record_from_coco_annotations( 194 | annotations_file, image_dir, output_path, include_masks): 195 | """Loads COCO annotation json files and converts to tf.Record format. 196 | 197 | Args: 198 | annotations_file: JSON file containing bounding box annotations. 199 | image_dir: Directory containing the image files. 200 | output_path: Path to output tf.Record file. 201 | include_masks: Whether to include instance segmentations masks 202 | (PNG encoded) in the result. default: False. 203 | """ 204 | with tf.gfile.GFile(annotations_file, 'r') as fid: 205 | output_tfrecords = tf.python_io.TFRecordWriter(output_path) 206 | groundtruth_data = json.load(fid) 207 | images = groundtruth_data['images'] 208 | category_index = label_map_util.create_category_index( 209 | groundtruth_data['categories']) 210 | 211 | annotations_index = {} 212 | if 'annotations' in groundtruth_data: 213 | tf.logging.info( 214 | 'Found groundtruth annotations. Building annotations index.') 215 | for annotation in groundtruth_data['annotations']: 216 | image_id = annotation['image_id'] 217 | if image_id not in annotations_index: 218 | annotations_index[image_id] = [] 219 | annotations_index[image_id].append(annotation) 220 | missing_annotation_count = 0 221 | for image in images: 222 | image_id = image['id'] 223 | if image_id not in annotations_index: 224 | missing_annotation_count += 1 225 | annotations_index[image_id] = [] 226 | tf.logging.info('%d images are missing annotations.', 227 | missing_annotation_count) 228 | 229 | total_num_annotations_skipped = 0 230 | for idx, image in enumerate(images): 231 | if idx % 100 == 0: 232 | tf.logging.info('On image %d of %d', idx, len(images)) 233 | annotations_list = annotations_index[image['id']] 234 | _, tf_example, num_annotations_skipped = create_tf_example( 235 | image, annotations_list, image_dir, category_index, include_masks) 236 | total_num_annotations_skipped += num_annotations_skipped 237 | output_tfrecords.write(tf_example.SerializeToString()) 238 | tf.logging.info('Finished writing, skipped %d annotations.', 239 | total_num_annotations_skipped) 240 | 241 | 242 | def main(_): 243 | assert FLAGS.train_image_dir, '`train_image_dir` missing.' 244 | assert FLAGS.test_image_dir, '`test_image_dir` missing.' 245 | assert FLAGS.train_annotations_file, '`train_annotations_file` missing.' 246 | assert FLAGS.test_annotations_file, '`test_annotations_file` missing.' 247 | 248 | if not tf.gfile.IsDirectory(FLAGS.output_dir): 249 | tf.gfile.MakeDirs(FLAGS.output_dir) 250 | train_output_path = os.path.join(FLAGS.output_dir, 'train.record') 251 | testdev_output_path = os.path.join(FLAGS.output_dir, 'test.record') 252 | 253 | _create_tf_record_from_coco_annotations( 254 | FLAGS.train_annotations_file, 255 | FLAGS.train_image_dir, 256 | train_output_path, 257 | FLAGS.include_masks) 258 | _create_tf_record_from_coco_annotations( 259 | FLAGS.test_annotations_file, 260 | FLAGS.test_image_dir, 261 | testdev_output_path, 262 | FLAGS.include_masks) 263 | 264 | 265 | if __name__ == '__main__': 266 | tf.app.run() 267 | -------------------------------------------------------------------------------- /doc/labelme_example.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/doc/labelme_example.jpg -------------------------------------------------------------------------------- /doc/monitor_training.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/doc/monitor_training.png -------------------------------------------------------------------------------- /doc/prediction_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/doc/prediction_1.png -------------------------------------------------------------------------------- /doc/prediction_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/doc/prediction_2.png -------------------------------------------------------------------------------- /doc/prediction_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/doc/prediction_3.png -------------------------------------------------------------------------------- /doc/prediction_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/doc/prediction_4.png -------------------------------------------------------------------------------- /doc/prediction_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/doc/prediction_5.png -------------------------------------------------------------------------------- /doc/training_model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/doc/training_model.png -------------------------------------------------------------------------------- /doc/tutorial_output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/doc/tutorial_output.png -------------------------------------------------------------------------------- /frozen_inference_graph.pb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/frozen_inference_graph.pb -------------------------------------------------------------------------------- /images/labelme2coco.py: -------------------------------------------------------------------------------- 1 | import os 2 | import argparse 3 | import json 4 | 5 | from labelme import utils 6 | import numpy as np 7 | import glob 8 | import PIL.Image 9 | 10 | 11 | class labelme2coco(object): 12 | def __init__(self, labelme_json=[], save_json_path="./coco.json"): 13 | """ 14 | :param labelme_json: the list of all labelme json file paths 15 | :param save_json_path: the path to save new json 16 | """ 17 | self.labelme_json = labelme_json 18 | self.save_json_path = save_json_path 19 | self.images = [] 20 | self.categories = [] 21 | self.annotations = [] 22 | self.label = [] 23 | self.annID = 1 24 | self.height = 0 25 | self.width = 0 26 | 27 | self.save_json() 28 | 29 | def data_transfer(self): 30 | for num, json_file in enumerate(self.labelme_json): 31 | with open(json_file, "r") as fp: 32 | data = json.load(fp) 33 | self.images.append(self.image(data, num)) 34 | for shapes in data["shapes"]: 35 | label = shapes["label"].split("_") 36 | if label not in self.label: 37 | self.label.append(label) 38 | points = shapes["points"] 39 | self.annotations.append(self.annotation(points, label, num)) 40 | self.annID += 1 41 | 42 | # Sort all text labels so they are in the same order across data splits. 43 | self.label.sort() 44 | for label in self.label: 45 | self.categories.append(self.category(label)) 46 | for annotation in self.annotations: 47 | annotation["category_id"] = self.getcatid(annotation["category_id"]) 48 | 49 | def image(self, data, num): 50 | image = {} 51 | img = utils.img_b64_to_arr(data["imageData"]) 52 | height, width = img.shape[:2] 53 | img = None 54 | image["height"] = height 55 | image["width"] = width 56 | image["id"] = num 57 | image["file_name"] = data["imagePath"].split("/")[-1] 58 | 59 | self.height = height 60 | self.width = width 61 | 62 | return image 63 | 64 | def category(self, label): 65 | category = {} 66 | category["supercategory"] = label[0] 67 | category["id"] = len(self.categories) 68 | category["name"] = label[0] 69 | return category 70 | 71 | def annotation(self, points, label, num): 72 | annotation = {} 73 | contour = np.array(points) 74 | x = contour[:, 0] 75 | y = contour[:, 1] 76 | area = 0.5 * np.abs(np.dot(x, np.roll(y, 1)) - np.dot(y, np.roll(x, 1))) 77 | annotation["segmentation"] = [list(np.asarray(points).flatten())] 78 | annotation["iscrowd"] = 0 79 | annotation["area"] = area 80 | annotation["image_id"] = num 81 | 82 | annotation["bbox"] = list(map(float, self.getbbox(points))) 83 | 84 | annotation["category_id"] = label[0] # self.getcatid(label) 85 | annotation["id"] = self.annID 86 | return annotation 87 | 88 | def getcatid(self, label): 89 | for category in self.categories: 90 | if label == category["name"]: 91 | return category["id"] 92 | print("label: {} not in categories: {}.".format(label, self.categories)) 93 | exit() 94 | return -1 95 | 96 | def getbbox(self, points): 97 | polygons = points 98 | mask = self.polygons_to_mask([self.height, self.width], polygons) 99 | return self.mask2box(mask) 100 | 101 | def mask2box(self, mask): 102 | 103 | index = np.argwhere(mask == 1) 104 | rows = index[:, 0] 105 | clos = index[:, 1] 106 | 107 | left_top_r = np.min(rows) # y 108 | left_top_c = np.min(clos) # x 109 | 110 | right_bottom_r = np.max(rows) 111 | right_bottom_c = np.max(clos) 112 | 113 | return [ 114 | left_top_c, 115 | left_top_r, 116 | right_bottom_c - left_top_c, 117 | right_bottom_r - left_top_r, 118 | ] 119 | 120 | def polygons_to_mask(self, img_shape, polygons): 121 | mask = np.zeros(img_shape, dtype=np.uint8) 122 | mask = PIL.Image.fromarray(mask) 123 | xy = list(map(tuple, polygons)) 124 | PIL.ImageDraw.Draw(mask).polygon(xy=xy, outline=1, fill=1) 125 | mask = np.array(mask, dtype=bool) 126 | return mask 127 | 128 | def data2coco(self): 129 | data_coco = {} 130 | data_coco["images"] = self.images 131 | data_coco["categories"] = self.categories 132 | data_coco["annotations"] = self.annotations 133 | return data_coco 134 | 135 | def save_json(self): 136 | print("save coco json") 137 | self.data_transfer() 138 | self.data_coco = self.data2coco() 139 | 140 | print(self.save_json_path) 141 | os.makedirs( 142 | os.path.dirname(os.path.abspath(self.save_json_path)), exist_ok=True 143 | ) 144 | json.dump(self.data_coco, open(self.save_json_path, "w"), indent=4) 145 | 146 | 147 | if __name__ == "__main__": 148 | import argparse 149 | 150 | parser = argparse.ArgumentParser( 151 | description="labelme annotation to coco data json file." 152 | ) 153 | parser.add_argument( 154 | "labelme_images", 155 | help="Directory to labelme images and annotation json files.", 156 | type=str, 157 | ) 158 | parser.add_argument( 159 | "--output", help="Output json file path.", default="trainval.json" 160 | ) 161 | args = parser.parse_args() 162 | labelme_json = glob.glob(os.path.join(args.labelme_images, "*.json")) 163 | labelme2coco(labelme_json, args.output) 164 | -------------------------------------------------------------------------------- /images/test.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "height": 600, 5 | "width": 800, 6 | "id": 0, 7 | "file_name": "IMG_20181228_102636.jpg" 8 | }, 9 | { 10 | "height": 600, 11 | "width": 800, 12 | "id": 1, 13 | "file_name": "IMG_20181228_102641.jpg" 14 | }, 15 | { 16 | "height": 600, 17 | "width": 800, 18 | "id": 2, 19 | "file_name": "IMG_20181228_102658.jpg" 20 | }, 21 | { 22 | "height": 600, 23 | "width": 800, 24 | "id": 3, 25 | "file_name": "IMG_20181228_102706.jpg" 26 | }, 27 | { 28 | "height": 600, 29 | "width": 800, 30 | "id": 4, 31 | "file_name": "IMG_20181228_102745.jpg" 32 | }, 33 | { 34 | "height": 600, 35 | "width": 800, 36 | "id": 5, 37 | "file_name": "IMG_20181228_102749.jpg" 38 | }, 39 | { 40 | "height": 600, 41 | "width": 800, 42 | "id": 6, 43 | "file_name": "IMG_20181228_102757.jpg" 44 | } 45 | ], 46 | "categories": [ 47 | { 48 | "supercategory": "Arduino", 49 | "id": 0, 50 | "name": "Arduino" 51 | }, 52 | { 53 | "supercategory": "ESP8266", 54 | "id": 1, 55 | "name": "ESP8266" 56 | }, 57 | { 58 | "supercategory": "Heltec", 59 | "id": 2, 60 | "name": "Heltec" 61 | }, 62 | { 63 | "supercategory": "Raspberry", 64 | "id": 3, 65 | "name": "Raspberry" 66 | } 67 | ], 68 | "annotations": [ 69 | { 70 | "segmentation": [ 71 | [ 72 | 348.7022900763359, 73 | 309.7709923664122, 74 | 456.793893129771, 75 | 266.412213740458, 76 | 458.4732824427481, 77 | 260.4580152671756, 78 | 450.8396946564886, 79 | 242.90076335877862, 80 | 454.80916030534354, 81 | 239.23664122137404, 82 | 446.5648854961832, 83 | 220.91603053435117, 84 | 443.3587786259542, 85 | 221.5267175572519, 86 | 437.0992366412214, 87 | 208.24427480916032, 88 | 426.71755725190843, 89 | 207.17557251908397, 90 | 319.3893129770992, 91 | 247.0229007633588, 92 | 343.96946564885496, 93 | 309.618320610687 94 | ] 95 | ], 96 | "iscrowd": 0, 97 | "area": 8443.587203542935, 98 | "image_id": 0, 99 | "bbox": [ 100 | 319.0, 101 | 207.0, 102 | 139.0, 103 | 102.0 104 | ], 105 | "category_id": 1, 106 | "id": 1 107 | }, 108 | { 109 | "segmentation": [ 110 | [ 111 | 405.4263565891473, 112 | 296.8992248062015, 113 | 482.1705426356589, 114 | 403.48837209302326, 115 | 490.69767441860466, 116 | 397.28682170542635, 117 | 506.2015503875969, 118 | 401.1627906976744, 119 | 530.6201550387597, 120 | 383.3333333333333, 121 | 533.3333333333334, 122 | 369.3798449612403, 123 | 541.4728682170543, 124 | 361.2403100775194, 125 | 463.95348837209303, 126 | 255.81395348837208, 127 | 453.87596899224803, 128 | 253.48837209302326, 129 | 442.63565891472865, 130 | 262.7906976744186, 131 | 441.86046511627904, 132 | 266.6666666666667, 133 | 438.7596899224806, 134 | 265.891472868217, 135 | 424.031007751938, 136 | 277.51937984496124, 137 | 425.1937984496124, 138 | 281.39534883720927, 139 | 418.9922480620155, 140 | 278.6821705426357, 141 | 406.5891472868217, 142 | 286.8217054263566 143 | ] 144 | ], 145 | "iscrowd": 0, 146 | "area": 10376.254431824898, 147 | "image_id": 1, 148 | "bbox": [ 149 | 405.0, 150 | 253.0, 151 | 136.0, 152 | 150.0 153 | ], 154 | "category_id": 2, 155 | "id": 2 156 | }, 157 | { 158 | "segmentation": [ 159 | [ 160 | 199.9753086419753, 161 | 309.25925925925924, 162 | 225.28395061728395, 163 | 305.55555555555554, 164 | 244.41975308641975, 165 | 327.16049382716045, 166 | 554.2962962962963, 167 | 301.85185185185185, 168 | 556.1481481481482, 169 | 279.01234567901236, 170 | 594.4197530864197, 171 | 275.3086419753086, 172 | 587.6296296296296, 173 | 227.16049382716048, 174 | 613.5555555555555, 175 | 224.07407407407405, 176 | 617.8765432098764, 177 | 225.92592592592592, 178 | 603.0617283950617, 179 | 150.61728395061726, 180 | 572.8148148148148, 181 | 152.46913580246914, 182 | 569.1111111111111, 183 | 131.48148148148147, 184 | 193.18518518518516, 185 | 157.4074074074074 186 | ] 187 | ], 188 | "iscrowd": 0, 189 | "area": 66937.96677335782, 190 | "image_id": 2, 191 | "bbox": [ 192 | 193.0, 193 | 131.0, 194 | 424.0, 195 | 196.0 196 | ], 197 | "category_id": 0, 198 | "id": 3 199 | }, 200 | { 201 | "segmentation": [ 202 | [ 203 | 256.5128205128205, 204 | 349.2307692307692, 205 | 577.5384615384615, 206 | 458.974358974359, 207 | 586.2564102564103, 208 | 452.3076923076923, 209 | 604.2051282051282, 210 | 378.46153846153845, 211 | 611.3846153846154, 212 | 378.46153846153845, 213 | 622.6666666666666, 214 | 338.46153846153845, 215 | 613.948717948718, 216 | 335.3846153846154, 217 | 632.9230769230769, 218 | 259.4871794871795, 219 | 625.2307692307693, 220 | 253.33333333333334, 221 | 609.8461538461538, 222 | 249.23076923076923, 223 | 609.8461538461538, 224 | 240.51282051282053, 225 | 585.7435897435897, 226 | 232.30769230769232, 227 | 579.5897435897436, 228 | 238.97435897435898, 229 | 543.1794871794872, 230 | 229.74358974358975, 231 | 549.3333333333334, 232 | 212.30769230769232, 233 | 492.92307692307696, 234 | 193.84615384615384, 235 | 487.7948717948718, 236 | 209.74358974358975, 237 | 473.43589743589746, 238 | 206.66666666666666, 239 | 476.5128205128205, 240 | 196.4102564102564, 241 | 466.7692307692308, 242 | 193.84615384615384, 243 | 462.1538461538462, 244 | 203.5897435897436, 245 | 451.3846153846154, 246 | 200.0, 247 | 456.0, 248 | 183.0769230769231, 249 | 431.3846153846154, 250 | 174.87179487179486, 251 | 423.6923076923077, 252 | 188.71794871794873, 253 | 397.02564102564105, 254 | 181.53846153846155, 255 | 394.46153846153845, 256 | 163.5897435897436, 257 | 311.8974358974359, 258 | 136.92307692307693, 259 | 233.43589743589743, 260 | 317.94871794871796, 261 | 244.2051282051282, 262 | 336.9230769230769 263 | ] 264 | ], 265 | "iscrowd": 0, 266 | "area": 77810.78238001326, 267 | "image_id": 3, 268 | "bbox": [ 269 | 233.0, 270 | 136.0, 271 | 399.0, 272 | 322.0 273 | ], 274 | "category_id": 3, 275 | "id": 4 276 | }, 277 | { 278 | "segmentation": [ 279 | [ 280 | 243.18518518518516, 281 | 366.04938271604937, 282 | 582.6913580246913, 283 | 325.3086419753086, 284 | 580.2222222222222, 285 | 298.7654320987654, 286 | 593.8024691358024, 287 | 293.82716049382714, 288 | 595.037037037037, 289 | 280.2469135802469, 290 | 606.1481481481482, 291 | 266.66666666666663, 292 | 596.2716049382716, 293 | 187.6543209876543, 294 | 580.2222222222222, 295 | 173.45679012345678, 296 | 575.9012345679012, 297 | 145.679012345679, 298 | 564.7901234567901, 299 | 146.29629629629628, 300 | 561.7037037037037, 301 | 138.88888888888889, 302 | 223.4320987654321, 303 | 168.5185185185185, 304 | 204.2962962962963, 305 | 196.29629629629628, 306 | 211.08641975308637, 307 | 240.74074074074073, 308 | 205.53086419753083, 309 | 245.06172839506172, 310 | 211.08641975308637, 311 | 291.9753086419753, 312 | 224.04938271604937, 313 | 292.59259259259255, 314 | 224.66666666666663, 315 | 356.1728395061728 316 | ] 317 | ], 318 | "iscrowd": 0, 319 | "area": 72931.52720621869, 320 | "image_id": 4, 321 | "bbox": [ 322 | 204.0, 323 | 138.0, 324 | 402.0, 325 | 228.0 326 | ], 327 | "category_id": 2, 328 | "id": 5 329 | }, 330 | { 331 | "segmentation": [ 332 | [ 333 | 181.0077519379845, 334 | 364.72868217054264, 335 | 525.968992248062, 336 | 317.4418604651163, 337 | 519.3798449612403, 338 | 275.968992248062, 339 | 542.2480620155038, 340 | 270.1550387596899, 341 | 532.1705426356589, 342 | 209.68992248062014, 343 | 510.85271317829455, 344 | 210.85271317829458, 345 | 506.9767441860465, 346 | 181.3953488372093, 347 | 163.1782945736434, 348 | 224.41860465116278 349 | ] 350 | ], 351 | "iscrowd": 0, 352 | "area": 49783.06592151907, 353 | "image_id": 5, 354 | "bbox": [ 355 | 163.0, 356 | 181.0, 357 | 379.0, 358 | 183.0 359 | ], 360 | "category_id": 0, 361 | "id": 6 362 | }, 363 | { 364 | "segmentation": [ 365 | [ 366 | 282.69135802469134, 367 | 412.34567901234567, 368 | 624.6666666666666, 369 | 425.3086419753086, 370 | 637.0123456790122, 371 | 411.1111111111111, 372 | 635.1604938271604, 373 | 355.55555555555554, 374 | 653.0617283950617, 375 | 352.4691358024691, 376 | 648.7407407407406, 377 | 296.2962962962963, 378 | 635.7777777777777, 379 | 295.679012345679, 380 | 633.9259259259259, 381 | 241.358024691358, 382 | 620.9629629629629, 383 | 233.33333333333331, 384 | 291.3333333333333, 385 | 224.69135802469134, 386 | 280.2222222222222, 387 | 238.88888888888889, 388 | 273.4320987654321, 389 | 398.7654320987654 390 | ] 391 | ], 392 | "iscrowd": 0, 393 | "area": 68732.09114464244, 394 | "image_id": 6, 395 | "bbox": [ 396 | 273.0, 397 | 224.0, 398 | 380.0, 399 | 201.0 400 | ], 401 | "category_id": 1, 402 | "id": 7 403 | } 404 | ] 405 | } -------------------------------------------------------------------------------- /images/test/IMG_20181228_102636.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/test/IMG_20181228_102636.jpg -------------------------------------------------------------------------------- /images/test/IMG_20181228_102641.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/test/IMG_20181228_102641.jpg -------------------------------------------------------------------------------- /images/test/IMG_20181228_102658.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/test/IMG_20181228_102658.jpg -------------------------------------------------------------------------------- /images/test/IMG_20181228_102706.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/test/IMG_20181228_102706.jpg -------------------------------------------------------------------------------- /images/test/IMG_20181228_102745.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/test/IMG_20181228_102745.jpg -------------------------------------------------------------------------------- /images/test/IMG_20181228_102749.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/test/IMG_20181228_102749.jpg -------------------------------------------------------------------------------- /images/test/IMG_20181228_102757.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/test/IMG_20181228_102757.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_101826.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_101826.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_101855.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_101855.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_101903.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_101903.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_101915.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_101915.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102013.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102013.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102020.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102020.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102033.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102033.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102041.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102041.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102048.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102048.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102155.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102155.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102201.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102201.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102206.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102206.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102206.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "4.2.9", 3 | "flags": {}, 4 | "shapes": [ 5 | { 6 | "label": "Arduino_Nano", 7 | "points": [ 8 | [ 9 | 333.941605839416, 10 | 291.24087591240874 11 | ], 12 | [ 13 | 381.93430656934305, 14 | 373.5401459854014 15 | ], 16 | [ 17 | 400.54744525547443, 18 | 370.43795620437953 19 | ], 20 | [ 21 | 403.8321167883211, 22 | 373.7226277372263 23 | ], 24 | [ 25 | 427.91970802919707, 26 | 369.70802919708024 27 | ], 28 | [ 29 | 426.27737226277367, 30 | 364.5985401459854 31 | ], 32 | [ 33 | 440.87591240875906, 34 | 362.40875912408757 35 | ], 36 | [ 37 | 391.78832116788317, 38 | 280.6569343065693 39 | ] 40 | ], 41 | "group_id": null, 42 | "shape_type": "polygon", 43 | "flags": {} 44 | } 45 | ], 46 | "imagePath": "IMG_20181228_102206.jpg", 47 | "imageData": "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KKAExRilxRTEJSYpaMUANoxTsc0YoEJgUYpaKYCUUtFABRS4NGKAExRRRQAUUtFAB2ooxRQAlHenUnFABiiiigBKKWigAopaKAEoxRRQAYoxRRQAUYoooASilooASkp1JigBKTFONJQA3FLS0lIAFIw4pwoNMRRuE4zUVu+1xV2VMis9lKPTQE9wNkyyDoetXYmDIDVXAmgK55HSltJP4DQMuUn4U4UhoEMNNNP7UhoAbSikpetABSGloxSAbikxTqQ0AMIpDTzTTQAykIp5FIaQyM00ipCKYaAImFRMKnIqJhSAvihQRnJzQKUZqSxaXNNp1ADhThTRTgKQDhThSUtACijNFFABSikFO7UAJS0CjrSAKKMUtACUtFFMAopaKACiiigAopaKAExRilo7UwGmg0tGKAG0lOoxTEMoxTiKMUANop1JTAQ0lOxRigBtGKWjFAhKSnYoxTAbijFLS0CG0Y9qdRTAbiilooAKSlooATFFLRQAgpaKKADBoopaAEFLRijFACUUtJQAUEUtFMApKKXFIBMUYopTQAlFLRigBKKKMUAFJilo5oAMUnFLikoAKSlooAaaKXFFACUUUtADWFUrmPjNX+MVFKmQRTQijA+1sHpT3HlTB16NUMi+W9WEImiKHr2psEXEfcoNPqjaybWKN1q7SAKaadSGgBlJSkUUCCijNLQMQ0hpaKAGmkp30pKAGkU00+mkUgIzTTUhGaYwpDIzUbVIwxUZoAujpRnFKKXFQaCCnCkwKcKBCinj60wU8UhjgaUUgFOoAKMYoFLQAUvaiigApaMUUCCgCjFLQAmKWiigAopaKACiloxTASig00nFAC5opuc0ZpgPopuaXrQAYoopaAG4oINOpDQIbRil70UwEopaSgBMUYpcUUCExiilopgJikpaKAEopaKYCUYpaKBCUUtFACUUtFACAUYpaKAExRilxRQAUUYooASiloxQAlFLikoAMUUYpaAEopaKAEopcUUAJRR3ooASloooASilooASkp1JigQlIad7UUAMopxpKQwoIyKKM0xFS4i3DjrVSNjG9arrkVn3EODuFNCFkHSZfxq1DJ5iD1qnBLj5T0NSJmCXGflPQ0DL/UUlIpyoOcilpgNIpuKkx6000CG4xRRiigBaSlopDENJS0GgBtGKWikA3FNKin0lAELJmonQ4qyaaRxQMeOlLQM0VmWKBTqaBS0DHCnAU0VIKAFFLigUtIApetFLQAlLRiloASloooAKXtRilpiExRilooASlxRS0AJRS0GgBppjU8/SmGmA0jFGaDSUxDs0oNMoBoAkFLTM0uaAHUYpMe9L+NABijFLSUAJiil7UUwEopaKBDc0UuKMUAJ2oxS0UANpTRiimAlFLilxQA2loooABSYpeKWgBKKKKBBRxRS0AJRilooATFFLRQAgFFFLTASilpKQCdaKWjFMBKSnUUAJSYpaMUAIOtFLQaACkpaCKQCUUtGKBCYpKXFFACU3GadiigBuKKXGKTvQAtRyJuBqSjqKAMmaMxtntUkTiVNjfh7VbmiDAg1nOhikx+VUIuQSlSY3PIq50xWap81Rj74/WrdvNvG1utAycjNNI4p31ooER4oxTiKbSAQU6kNFAwoNLSUAJSGnUlIBDSUtGKAG0w08imkUDHA0uai30u+oLJRRUe+jfQBMKeKgD08OKVgJxSiohJS76LAS5pai8yjePWiwEtLmo93vRvoAloqPfRvoAloqPfSh6AHilxTN4oD+9AD8UtR76N9AElFM30hemArUwmkZ+aYW5piHGkphel30wFpaQHPWnUCDpRRS0hig0uabQKYh+aKQUoFAC0UUYoASiiimAUUUlABiiiikAUUUUxC0lFLQAlFLRigBMUGlooASloooAKMUUtACUlLRTAAKKKKAEopaKAEooFLQAmKKWkoAKSlxRQAlHelooASjFLRigQlFLRQAlFLSd6QCUc0uKKYCYpMUtFADaSnYopAJSUtFACHmq88IdenNWaQjNAGMQ0L/ANasI+4714YdRU88IdaoENDJ/KqEasUokX3qSs2Kb5ty9e4q/HIsqjH3qAHU0infWjFIYykpSDSUAKKWm+9GaAHUhooFIBKQ06koAbimmn00jNAyoCaUE00UtIocCaXJpopaBDwadmmCnAUgHg07cabS0DHAmlzTaWgB2aMmkxS4oAXJpcmkH0paAFzRk0lKBigBc0ZNFGKADJpQaTGaXFABmlJOKMUhoAYxNMJNOamGqEJmlzTaUUCJFPFSKahFSrQMkooBzS4pAFGKAKWgA5pwpKWgApaKM0AJSUtJimAneilxRigBMUvSlxRQISilooASjFLRQAlLiilpgJiilxRikAlFLRTASjFLRQAUlLRQAlFLRQAlFGKKADFIRTqSgBKKWigBMUlOooASilpKACkpaKAEopaKBCcUGg0UAGaSlooASilpCKAENFLRQA0ijFLRQAmKKWikAxlzVeaAOMEVbpCuRTAxJInhbI6etSQ3GG9K0ZIQwwaz5rMj5o/yp3EaEUqyr1waccg4NYyTPC2DkVowXizDaxFMCximkU8K2Mrgikzk/wCNICM0Yp5X2ppFIYmeKXORTaM0AO7UU3NGaAF70hozSE0AVKMUClqSgpRQKUUAKBTwKaKeKAHCnU0CnikMQUopaXpQAUUUtABiloxRigApaKWgBMUuKKWgBMUvWilpgJig0oppoEMaozUhphpiG0UGgUwHLUi1GM1KoxSGSL0p1IKWkAUtJS0AFFFLTAKKKKACiiloASilooASloooAKKKWgQgopaKAEopaKACiiimAGiiloATFFLRigBKKKKACkpaKAEopaKAE5opaTFABRRRQAlLRRQAlFLjikoAOKDRRQAmKXFGKKAEpMU6kxQIKSlooASilooASkpcUGgBKMUUtADcUUuKKAEpc0YpMYoAXANNaMEUtLmkBUltUcYYVRksXU5jNbXBphjBpoDJivJrc7XU/jV2O8hnGGIB/WpHgDDBAIqpJYI3K5U1VxF0o2MowYehppJU/OpWqIS6t/uNuA7VKmpMvyzRke9AFjg0hWkWS2m5Vwre3FSeTIB8rhvY0WAi2mjFObcn30Ye45FIGVu9KwxpppxjpUhFIV4pAUxS0UoqCgFOFIKUDnpTAcKeBTRTxQAopwpBThSGFLRS0AFLRilFMBKWilFABRRS0gEpaKKAClpKWmAUh6UtIaBEZphqRqjNMBpopTSd6YhwqVajFSLSGSgU6kXmlpAFFLRQAYopaKYCUUuKD9aAEpaKMUAGKOlLRQAlLRRQAUUYooEFFMRHDuTJuU/dXGNv+NSUAFFFFAC0lLRQAlFLRQAlFLijFMBKMUtFACUUUUAJiilooAKTFLiigBKMUuKKAEpKXFFACYoxS0lABRRRQAUUUUAJRS0lAgooooASilpKACkxS0UAJRRRQAmKKKWgBKKWkoATFLRSUAFKDSUUAOzmkKikozQA0x5FRtED1GRU+aXimIz3som5xt+lMENxD/qpjj0NaRQGmGOncCmL25i4lh3D1FPW8tJeJF2n/aFTFKjaFGHKg0XAesUMg/dTEfjmmtBMucFXH5VXazjzlcqfY0gW6i+5OSPRqNAGUuKQU7tWRYCl70UooAUGnimjrThQA8CnU0U6gYtLSCloAKWiigApaQUtAAKWiimAUUCloAKWkpfwoAQUjUtDdKAIjTCakNMNMQ2koPFLTEOWpVqNalWkMkFLSCnYpAFLSUpoAKKKKYBiijFLQAUUUUAFFFFABRRRg0CFooooAKKWigAFFFLTASiiigAoopaACk5paKAEooooASilooASjFLRQAlFLRQAlFHNFAAaKKKAEooPNLQAmKKWkoASilxRxQAlFLikpiCkpaMUAJSUtFACUUUUAFJS0maACiiikAUlLRQAlFGaKYBSUtFACUUUUAFFFFABRupKP1oAdnNIQDSUUAIUFMKU/dRmgDOApwpAKWsygpelFLQAucU5etNFKKAJAadmowadmgY8GlpoNKKAHUUmaWgApaKWmAUUUUALRRRQAtFFJQAtNbpTqaxoAjamGnmoyecUxCHmlHFJSimA8VKtRLUq0gJBTqRadikAUUUUAFFFFMApaQZpaACilzRQAlLR0ooAKKKKACiiigApaSloEFLSZpaYBRRRQAlLRRQAUdqKKADiiiigBKKWigApKWkoAKKWigBKKKKACkpaKAEooNFACUYoooAKSlxRQAlFLRQISilpKYCUUUUAFJS4oxQAlH4UUZoASilooAQ0UUUAJRRjNLQAlFFFACYoxS0UCExRRRQMSilpKACkpcUhoAKaadSGgRQFLSDpS1BYtKKQUtIAP0NKPWijtTAWlzSUUAPDUoNMpRQBIDTgaizSg0AS0opgNOBoGOo6UA0UALRiiikAUtJS0wCmtTqY1AhhphFPNMNUA3FKKKBQA9alXmolqRTQBMtOpi06kAtFFFABRRRQAtFFFAC0UlHegA70tJS0wEpaKSgBaKKKAFopMUUALS0lLmgQUUUUAFFFFABRSUtABRRRQAUhzS0UAJRRRQAtJS0UwE5ooNFABRRRQAlGKWigBKSlooASilpKBBSUtJigAooooAKSlooASig0UAJRS0lABRRRQAUhoooEFFGKKAEpaKOaAEooooAKTNFFAAaKT8aKACg0HpR2oASmkU6kNAFAU4U0UorMsdRSClpgFKKKKAFooooAWgUUUwFpaSigBwNOBplKDSAkBp2aizTgaAJM0tMBpwNADqWkooAKY1OJpjGg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ClpKWmIKKKKACiiloAKKKKACiiigApaSigBaKKKAFopKKYhaKSkPUUALRRmigAooooASiiigAoopKACiijNACUUUUCCkoo6UAFFFFMAzSZoozQAUUUlABRmiigAopKM0CCigGigApKKKADFFFFIAopKWgYhpKWjNAHM9aWkooAWloooAXNFJmigBaKQUuaAFoFJS0AFLSUtMAopKWgBaKSloAKKKKACij8aKAFpRTRThQA4U8U0U8UgFFOpKKBi0tJRQA6ikooAWlpKKAFopM0UAOopKKYDs0UgooAcDTgaZS0ATK1SK1VweakVqQFoNT81XVqmU0hj6KQUopALRRS0DCjFFFAgpaKKYBRRS4oASilooASilpKACloo60AFLRSUALikpaKBDTRTqTimAlFLRQAlFFFABRRSUALSUUUAFFFIaBBRRRQAlFFFABRRSUAFIaWigBAaKO9GaYBRRRQISiiloASiiigBKTpS0tACUUUhOMUgFpaSloGJRS0YoA5YUtIKWgBaKSigBaXPFJRQAtLSUZoAWikopgLS0lFAhaKSigBaWkooAWjNJRQAtLSUooAUU4U0U8UDHCnCkFKKQxRS0lFAhaWkooAWlpM0UALmikpaBi0UlFAC0tJRQA6ikzRmgB1FNpaYC5p4qOnA0ATKanVqrKanWkxlgHIpaYtPFSAtFFLQMKKBS0CDvS0UUAFFFGKACijFFABRRRTAKWkpaACij60tACUGijFABSUtFACUUUUxBSUd6WkA2jpS0lMAoooNAhKKKKAEzS0UlABRRSdqACiiigAooooAQ0UUUwCiikoAKWkooEFFFGKACkpe9JQAtFFFIApcUUooGJikNOxSEUAcqKWuSg8UXHAeJG9wcVeTxGNwD2z/VSDSuO2lzfzRWZHrdq/GHB9CtTLq9gz7PtUav/dZsGi5Jdpc1GssbgbZFP0NPzTAWikpaACiiimAtFFFABS0lFAC5ooooAKWkozQAtKKbThQA4U8UwVIKBjqUUlLSAWikpaAClpM0UALS0lAoGLRSUuaAClpKKAFpabS0CFpabSigBaKKKBiinCminKKAJFqdOlRIKnQUmMlWnUi9KUUhijFLSUooABSiiloAKXFGKUUAJ3paKBQIKMUuKMUAJikp2KMUANoxTiKTFABRS0uKAG0tGKMUAJSU6kpgNpe1LikoASil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", 48 | "imageHeight": 600, 49 | "imageWidth": 800 50 | } -------------------------------------------------------------------------------- /images/train/IMG_20181228_102210.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102210.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102308.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102308.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102313.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102313.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102317.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102317.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102319.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102319.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102420.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102420.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102425.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102425.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102434.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102434.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102506.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102506.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102511.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102511.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102516.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102516.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102520.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102520.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102544.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102544.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102547.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102547.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102552.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102552.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102557.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102557.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_102801.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_102801.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103007.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103007.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103009.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103009.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103012.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103012.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103014.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103014.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103110.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103110.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103113.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103113.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103117.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103117.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103121.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103121.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103227.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103227.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103229.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103229.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103231.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103231.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103234.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103234.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103324.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103324.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103326.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103326.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103329.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103329.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103331.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103331.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103424.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103424.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103427.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103427.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103429.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103429.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103434.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103434.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103611.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103611.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103622.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103622.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103629.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103629.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103634.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103634.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103805.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103805.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103813.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103813.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103828.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103828.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_103835.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_103835.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104001.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104004.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104004.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104024.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104024.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104027.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104027.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104027.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "4.2.9", 3 | "flags": {}, 4 | "shapes": [ 5 | { 6 | "label": "Heltec_ESP32_Lora", 7 | "points": [ 8 | [ 9 | 366.88102893890675, 10 | 390.6752411575563 11 | ], 12 | [ 13 | 553.0546623794212, 14 | 325.08038585209005 15 | ], 16 | [ 17 | 550.4823151125402, 18 | 312.54019292604505 19 | ], 20 | [ 21 | 554.3408360128618, 22 | 306.10932475884243 23 | ], 24 | [ 25 | 549.1961414790997, 26 | 291.9614147909968 27 | ], 28 | [ 29 | 541.4790996784566, 30 | 289.06752411575565 31 | ], 32 | [ 33 | 545.016077170418, 34 | 285.2090032154341 35 | ], 36 | [ 37 | 535.048231511254, 38 | 257.87781350482317 39 | ], 40 | [ 41 | 526.3665594855306, 42 | 255.30546623794214 43 | ], 44 | [ 45 | 526.6881028938907, 46 | 252.41157556270096 47 | ], 48 | [ 49 | 533.1189710610932, 50 | 250.16077170418006 51 | ], 52 | [ 53 | 526.3665594855306, 54 | 227.00964630225081 55 | ], 56 | [ 57 | 512.540192926045, 58 | 220.25723472668813 59 | ], 60 | [ 61 | 326.6881028938907, 62 | 289.3890675241158 63 | ], 64 | [ 65 | 329.90353697749197, 66 | 297.427652733119 67 | ], 68 | [ 69 | 321.86495176848877, 70 | 322.508038585209 71 | ], 72 | [ 73 | 338.5852090032154, 74 | 377.81350482315116 75 | ] 76 | ], 77 | "group_id": null, 78 | "shape_type": "polygon", 79 | "flags": {} 80 | } 81 | ], 82 | "imagePath": "IMG_20181228_104027.jpg", 83 | "imageData": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAJYAyADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDuqMZopawNBMUYzS0uKAG4oxTsUUANxRinUUANxRTjTMHrQAuKXFKOlFMBMUYpcUUAJijFLR+FACYoxS0daAExS4opegoAb3oxS4paAG4oxTsUUwG44oxTqSgBMUYp2KKAG4oxTqSgBKKXFLQA3FGKdRQAmKMUtGKAExRilNFAhMUUtA6UDDFGKWjFAhuKXFLiigBuOaXFLS0xjcUYp1FACUUuKMUAJilAxRS4oASlxR0paAExRiiigQnelxRS0AJijFLS0ANoxTsUlABSYp1FACYoxS0YpDExSEc00zIsqxE/O3apKAExRilopiExQBgUtFABik70tLQA3FGKdRigBuKMU6jFADcUYp1FADcUhUHqKfSUAJikxTsUUAJj2pMU6igBMUYpaKAG4oxTqKAG4pcZpcUUANCgGlxS4ooATFGPaloxQAmOaMUtFACYoxS0UhkAooFKKkAxRS96MUAJS0UUAAooooAKCKWigBuOKWjtRTAKKKKACjFLRigAxSYpaKACkpaKAEopaKYCUUtGKAEopaKAEoxS0UAFJS0UAJQBS96KADFGKKKADFGKWimA3FLQKWgBKKWigAooxRigQUUYooAKKKKAF60UUUDEpaKKBBS0lLQAUUUUAAopaO1ACUUUooATHIPpS0YoFAB2oozS0AJRRRQAYo7UtFAEENv5c0srEFnP5Cp6KBSSsMKKKKBBS0lLTAQ0YpaKAExS0nJzR2oAKXtRR0oAKSlopAJRS0UAJRRS0wEooooAMUUtJnmgAopetFADaKXvRSAMUlLRTASloA5opAFJS0UDEopaSgCDFOApBS1IBQaKXFACdaKXHFJ3oAWiilpgJRS0UAJiilooASilooASiloxQAUlLRTASloxRQAlFLRQAUUUUAFFFFABRRS0AJRR3oxTAKKWigBKKWigBKKWigBKKWjFAgooxRQAd6SlooAKKTvS0AFFFFABiilo75oASilpKACloopgFGKWikAmefalHNIVyeaUUwCiilxSAKKKKYBQaKKACiiigAooooAMUtJS0gCiiigAoooI4oAKMUUUARmRvPEYQlcZLdqkpqyIzsisCy9QO1PoASjFFLQAmKMUtJQAUUUvWgBKKKKACiiigAooooAKKKKACiiigBKKU0UgE7UUtHagBKMc0UtAwpKWigCDFHailqQDvRQKXvQAUlLRimAUUUfyoAKKWigBKKWjHFACUe1KaSgBaSl70UwCkpaKAAdaKKKAEpaBnJooAKKO1FABRRRQAUUUUwCiiigAopaTFABS0UUAJRS0lAgopaTvigApaKTvQAtFFIOKAFpKKWgAooooAKKByKWmAlFLRQMTFLSUtAgFHekJwpNLQAUtFFABRRRQAUUUdKACige9I27Hy9c0AKRxR0opaACiiigAoopaAEFFGKXtQAlLSAACloAKSlppcBwncjNIBkUEcRcouC5yx9aloqPzh9o8raxOMk44FAElJnmlooASilooAKSl70UAJRS0lAC0UUlABRS0UAJS0Uc0AJRS0UAFJS0UAJzS0lGKQBRRS0DEooooAhxzS0CipGGKWiimAUYpaKBCUtFFACUYpaKAEFLRiigBKKXFHvTASjFLRQAlFFLQAlB9qWigBO9LRRQAUUUUAFJS0UAFGKKBzQAUUUtMBMUUUUAFFFFABRRS0CEowM5ooFABRRRQAUUUtACUYopaACik70tMAopaSgAoo70UAFGKKKAEK5I9BTqKKACjFLRQAmKKWkxQAtFFFABRRRQAUUtJQAhOKdSYzRQAtFFFABRRRQAUUUUAHejvRRQAUd6KKACiiikAUUUUAFHWiloASilpKACiig+1ABRSdsml60AFFFFABQaKKACiiigBMUtFFIAxRR3ooGFFFFAENLRS1IxKWiigAopaKYBRRQeBQIKKQHIzS0AJ3opaKACiiimAUUUUAJS0Ud6ACijvRQAlFLRQAUUdqMUCCiiigYUmMGnUlABRRRTAKKKKACjFFFABRRRQAlLRRQIO1NO7jHrz9KU+lOoAbjvS0UUAJS0UCmAYo7UtFIAooopgJRS0UANYkDIGaWlooABRQOlGKAFooooAKKKKACige9KKACiijNAEVxN5FvJLtLbFLYHU4rltA8X/ANqahcw3SrbCJQVVjyea61gCMGuV1bwTbanq0N6knkhWDSKq/eIOaQHVDkUtJzS0wCiiloASilooATGKDRS9qAE7UUUUAFFLSUALSUtJQAUUtJmkAUtFHNABRRRQAmKKWigBKAMUtFACUdKKKADpQKXvRQAdqTtS0UAJR3paKQBRRRQMKSlooAhpaMcUUhi0UelFIAopcUYpiEpRSUtAAAAKKO1FACUdaWigBKKWjFMAooooASgdaWigQUUHpSHOKAFxRR2ooAKKKKACopXZXjCqSGODjtUtFAwoPSiigA6UUUUwCiiigQUUUnegBaKKKAEopaKAE70tFFABRRRQAlFLRQAUUUtACUUtJTAKO9FFAAenWjtmilxQAUYoooAKOlLSUAAIPSikwO1OoAMUUUtACUUtJjvQAUc0tJQAUClzRQAUUUgBDH0NAC0Ud6MUAFFAooAKSlowQKADvRRRQAUUUUAFJjNLRSAKKKO9ABRRRQAUDpRRQAGiiigAoooNABRRQKACjPzYpaSkAUUuKKAEooxRQMKKWkPWgCOik96WkMWiiigAoopD0oEOooAooAKKKBQAc0UUUAFJS0dKYCUUtFAhKBRR70ALRRRQAgooooAKKADj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C0UUUAJS4opaBiUUtAoAaBjPOadRRTAKKKWgQnfFAoooAKKKKACilozTASijHfFL2oATpRS0UAFFFFAB1ooooAKKKKAExS0dKKACiiigApKWigApKWigBKKXn0pKACiiloAbRS4pKADFJilxRQAmKKWkoASlo53dOKKAEopaSgBDmilpaAENGKKUUAJRS0UAJTJGCLmnk8ZrOvbj+Ed6AImJubjb/COtMf8A0q6Cr/q4v1NOObe24GZZOBVqythFGPXufU0DJ4Y9iipKWkoAKKMUUCDAznvRRRQAUUUnegBaMUUUhiUUUUAFGKKKAEoo9qKACiikoELRSUd6ACiiigBKKWk6UDCiiigBKKWg0AJRRRQAUlLSUCCkNLRQAmaWijFAB3ooo6UAH40lL1ooGWRS4opakBKWijFMAFFFLQAgpTRRQAgo70tJ3FAhaKKKYBijFHeigAooH8qDnPXigAoxS4ooASilpAMdTTAKWiigBO9LRRQAGk60tFACYpaMUtACYoIpaKAG0tGKKACiiigApOlLSUAAOaKBxS0AJRS0UAJRjvQDntRQAlFLSUAJRS4ooASjAooxQAUlLSYoATvTqOlFABRS4ooASiikdgikmgCC6lEaHnmsyFfPmMjfdWkupmnmEa96kdCFS0j+83LEdhQMfApurgzEfIvyoP61pABRimQxCKMKBgAVJ2oAKSiigQUUUUAFJS0lABQOaKKQwooooASilooASiigigBMDOe9FHajGaBBRRRQAUlLSUAHaiiigANJS0h6UAFFJk0UDDNLSUtACUUUUCE5paKKAEpDnjkU6kNABjBzRS0mKACiiigAoNFFAFqlpKWpGFFLRTAKKKMUAGKKKWgBPwoA74paKBBiiiigAooopgGKKKKACiiloASijHOc0tACUd6WjGaACilx70lACY5paKKACiiimAZ4opaTHNABRR2ooASilxSUAFFLSUABNFFFACU6koFAB0ooNGKAEpKWjFACd6KMUUAFJmlpKACiiigBaKKKACiiigA6VmahdbVIB5q1d3AijPPNYsKNeXO4/cU0DJ7ZBDE1xL17VdsoCFMsn+sfk+3tUccYubgAf6mI/m1aIGKAEAx60n8XtTqSgQGkpcUUgExxRS9KKAEooooAKKKKBiUUUUAFFFFACUUdqKACkpaKAEooooAMUlLSUCCiikIoAUHIpCcDIFLSUAFFIBS0AHeiikoADRS0fhQAlITziloxQAmOc0tFGaACkNFFACCloxzRQAUYoooAt0tJS1IwoopaYBSYpaKAEAOaXFApcUCEopaKACjFFFABRRilpgJijtS0YoASjFLR2oASlxRijrQAYoFGKKADFFHfiloAbS0UUAIBS0g60tABRjNFFMBKWjNFABSUtFACUUUUAJiilpMUAFFLRQAUlFFABRijtRQAhpKcaSgBKKWk70ABFFFLQAlFLRigApksgjQk05iFGSeKw9TvuSinmgZBdztcz+WnOTVxYjDElvF/rJOp9B61BYwCCI3EvXqM1p2kLKDNJ/rH7eg9KQE0MSwxLGnQfrT6WkoAKSlpKBBSUtFABSUoGKKAEooooAKKKOtAxKKWkz096ACjFFFABRRRQAlFB45pAQRkUALSUvakoAKKKKAEooooAKSlooASiiloASkAxS0UCCiikzQAtJRRQAGilpO1ABSZpTjjNFAxKDRRQADmkNL0ooEW6UUgFLUjDvS0UUwFxRRijvQAUuKKKAEpcUYpcUCEFLRxRQAhoFLRxQAlFLkDvRTASlpaKAEPWjvRRQAYopcUYoAOKMUYpaAG4pDwKdTfvGgAA4pcYpaBQAlFL2oxQAlFLRTASkpaKAEooJ9T+FKRQA2jrSmgYIzQAlBo70UAJRS0UAJSZ5paTFABRRS0AJSUtFABjiiiigAopap312IIzzzigCvqV8IkKg81lWNu11P5r/dHrUI339z325rZSLaFtYeCR85/uigZJCguJg3/ACxjPyj+81X6REWNAijAUYApTSAKQmlpDQIKSlooAQjIx0opaTFABRRRQAlFLRQMKTFFB457UABpM84paMUAJRRQc0AFJSgYpKADjpRjHGKDRQAlFLSHrjFABRRSUAGOc0tFIenFABRmjrRQAlFLRQAlFFHegQYooooASlopKAFpKWigBKKWkoGFFFFABSUvejFAFulo4pcVIBRSc7uKdTASl+tFLQAlAGB1pcUtAhKKWigBPpRS0uKAEP0opaKAG7QTk80uKWlpgNoxS80daBhSU6koAMUUtFACYopcUnSgQ1uuBSgYpVHOaXFACUY9KU0e9ACUYpaKAEpO1OpDTATFBpaKAG0uKDntSUAFJTutJxQAlFBooATtRS4pKACkozRQAlFGaWgBKMUUtABR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", 84 | "imageHeight": 600, 85 | "imageWidth": 800 86 | } -------------------------------------------------------------------------------- /images/train/IMG_20181228_104139.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104139.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104144.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104144.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104153.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104153.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104213.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104213.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104228.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104228.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104234.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104234.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104241.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104241.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104248.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104248.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104256.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104256.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104303.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104303.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104309.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104309.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104317.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104317.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104332.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104332.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104336.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104336.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104344.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104344.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104356.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104356.jpg -------------------------------------------------------------------------------- /images/train/IMG_20181228_104413.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20181228_104413.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_163804.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_163804.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_163809.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_163809.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_163812.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_163812.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_163815.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_163815.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_163823.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_163823.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_163834.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_163834.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_163842.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_163842.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_163849.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_163849.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_163855.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_163855.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_163902.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_163902.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_163909.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_163909.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_163915.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_163915.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_163943.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_163943.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_163949.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_163949.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_163951.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_163951.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_163956.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_163956.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164010.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164010.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164013.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164013.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164017.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164017.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164017.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "4.2.9", 3 | "flags": {}, 4 | "shapes": [ 5 | { 6 | "label": "Heltec_ESP32_Lora", 7 | "points": [ 8 | [ 9 | 268.0, 10 | 0.0 11 | ], 12 | [ 13 | 247.50617283950618, 14 | 317.28395061728395 15 | ], 16 | [ 17 | 265.4074074074074, 18 | 341.9753086419753 19 | ], 20 | [ 21 | 326.5185185185185, 22 | 346.91358024691357 23 | ], 24 | [ 25 | 333.9259259259259, 26 | 341.9753086419753 27 | ], 28 | [ 29 | 338.2469135802469, 30 | 345.679012345679 31 | ], 32 | [ 33 | 407.3827160493827, 34 | 350.61728395061726 35 | ], 36 | [ 37 | 488.2469135802469, 38 | 362.34567901234567 39 | ], 40 | [ 41 | 507.3827160493827, 42 | 341.358024691358 43 | ], 44 | [ 45 | 537.0, 46 | 0.0 47 | ] 48 | ], 49 | "group_id": null, 50 | "shape_type": "polygon", 51 | "flags": {} 52 | } 53 | ], 54 | "imagePath": "IMG_20190104_164017.jpg", 55 | "imageData": "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OFAh1KKSnCgAFOoAopALRRSjmgQuKB0oo7UAHSiikPSmMVTml7UxKk70CEpaTpS0hhiiiigQUlLSUAFFLSYoASk9qdSGgBKWmnORgUuKBhTT706m0COhopKUUyQoxS0UDEopaSmAUmKWigBAKKM0UAIxwM01WDjI6VFOjMhAzzT7eLyYQmckdTQBJS0UUAFJS0lABSUoooASjrS0lABSUtJQAUUUUAJRRRTASiikNABSUtJQA00004000AVrltsLN6Csm21SS3d2Ga1brmJl9a52aPYxA71Er30GY2rSy3t68znk1k3QxgVcurtftciA5CnFUrtvmGaqN76ksoSjGaypP9Ya1ZSCprJc/Oa3iZsbRRSVZItJRRQAlHeikoAWkoooAO9BGKKKQwpKWigQlFFFAwooooEOXpTh1pop68mpGExyw+lMpZvv03PFAMKWko7UCFzRSCl60AA607vSAEUtMCwvEB+tdDoS/uz61zgB8tR6mun0QfufapZUTatMbW+tXVqpaD90OO9XF5rF7m6JBUgqMVItAyRaetMFPFADhTxTAKeKQhwpRSClFACilpBSigBaWkpwFAgooo7ikAUp6UdaY5I4HegY5QMU6moPlp1MBKWjrQaACiiigQUUUUAGKKKKQCUUUUABpKWkxmgYlIfWnYpCKYjfxQBQvTmnUCEopaTFMAopaQ0ABpjNtGacaTaD1oAo6hPJGgWJSWYgVciBEShuuOaUxqSCR0p1ACYoxS0UAFJilooAQ0UtJQAneloooASiiigBKKKKYBSUtJQAhopaSgBMUUppKAENJS0hoAaaaaeaaaAKlwM4rEvFO8hR83at2c4xWJfNtcsO1AHGSW5+1Sueu85qC8U7h9K0fIkMjEk4LZNVbtP3mMdqcXdksyJVOw1lMfmNbk6Yjb6VhN941rEhhSUUVZIYoooxQAlFFFACUd6Wk70AFFFFIYlFLSUALSUUUAFFFJSAkFSRjmoxU0Y/OkBDN/rDTadKf3hptAhO9LRRmgBakjHFRip4cGgaAinxxg8mhgAwpu5t3HSobLSLi224ACug0tDHakHrWXYDcgJ61vQrttz6YqFJtl8qRftBiFatLVe3/wBUp9qsL1pFIlUU8UxakFAyRelPHSmCnjigBwpwpopwPOKQh1KKQU4UALS0UtAAKdSZoxmgQtGKKWgBAMUFc06j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kNADegpppxpppiG0hpaKYhKSlpKAEoopaAGmilopiEooooAQnAzQDmlo4AoAKSiloAKSlooAbSUpooASkxS0UANoxSmkzzigApvOfanHikoAY+e1KKGBNA5FAC4oAopwoGOUU4jIoWnUhkaxhTnJp9LRSGJRS4ooAbRilopAIaKDRQAUlLRQAlJS0UDExRS0lIBKKWigBKKWkoAKSlpDQAUlLRQAlFFFACUhpaKQCUlLSUAFJS0UAJSUtJQAlFFFACUUGigApO9L2pDQBu0UUUxBSUtFABRRRQAhooooAKKKKAEoHWlpKAF7UlFFABRRRmmAdqSlNJQMKKWigQlFFFACdqACKWigAooooAKQnFLRQAU00ppDTAaaYetPNNNAhKSlpKYCUGlpKBCUUGkoADRS0UAJSHilopgIRxTcH60+igQlFLRQAlBoooAQ00A5OelKxCrk9KM89KAEAwTS0h6il60AIaaOe1OooAQikpaZuy4xnjrQApFGKWigYlKCKAKcBikA9elL3oXpS0hhRS0UAJRRRSGIaaoIUBjk9zTjRQAlFFFACUYpaSgApDS0UDEooooASijHNFIApKWkoAKSl60UAJRS0lACUUGigBDRS0lIBKSlpDQAUhpaKBCUhpaSgAooooGJSUtFIBD0pKWg0wNyiijtTJCiiigAIzSUtFAxDRS0lMAooopAFFFJmgBaSjNLQAlFBpBTAWiiigAooooAKSlpKACiijvQAUUUGgAopM0tABTTS0hoAaaYakNMpiEpKWimAlJSkUlAhD1ooPWmsCenSgB1FA6UtMBKKKKQCDmiig8UwCiiigApKWkoAD0pO+KdSUAMZd3cilVdoxTqQ0AJRS0lACUmOSadRQA2ilpBQAopwpBThSGKKdSClpAJ0paay5I56U6gApKWikMSk70tJQAUUUUAJRS0lACUGlpKACkpaKAEpKWikAlFFFABSUtJQMSiiigBKKWkoAKSlNJSASilpKAEooooEIaKO1FACUnalooASilpKACkNLRSGbdLRiiqJCkpaKAENFFJ3oGFIQcU6imA0cUpFFLQAhpKWigBKWkPNLQAmKKWigBKKKKACigmkzxQAtFFFABRSUtABSdqWkPSgCJH3OR6VLUaIVYn2qSgApDS0hoAaabTiOKbTEIaSlopgJRRRQISilooAYTijcKcRmk2gdqAA0lKRmigBO9IaWjFMBoIJ4NLSbfmyKUDFAAehx1pMcU6ikAhpKGOBTA25sdqYD6KKKQCUUtJQAlFLSUwEoAopRSAdQKKUUDHCiilpAJRS0lAwoopKQBRRQaACkpaKAEooooASiiigBKKKKQCUUtFACUlLRigBtFLSUAFFGKKAEpKWg0DEpKWikAlJS0hoEFJS0lABSGlpKAEopaQ0AFJS0lAwoooNIDdpKdikxVEiUUtJQAlFB6UDpQMSgUtFMBCKBS0UAJRS0lABRRRQAUUUUAFJS0UAJSUtFABRRRQAUUUUAFFFFACUUUtACdqKKKAENMNPPSmnpTAaaMUopDwMmgQlFLijFMBKKXFGKAG0UpooAaaSnYpDQIaM96WlxSE4FACGkXkA0cv7ClAxQAUUopcUARtS4pSKKAEopaSgBKKWkoASilpKAE70oFLiloGJThSU4UgFooooAKO1FFIYUlLSUAFIaWigBKKKKAEooooASilooAbRQaKQBRRRQAlFFFACUlLRQAhpKWkNABSUtFACUUtJSASilpKAEpKWigBKSlNFACUlLRQAlFFFACUlOpKAOixTcVJikxVCIyKTFPYYFIORQAzFJinkYoIoAZijFO60mKAG0U402gYUlLSUAHeijFFABRRRQAUUUUAJRRRQAUnTmgnFJnJoAUHNLRRQAUUUUAFFFFABSUtFMBKaadSUAMAoYAgg96diigCNFKjBOQOlOpaSgQUGlpKYDaO1B4GaXtQA2kp1Ic0AJQRmjtS0CExSCnUlAwFLSU6gBKTFOpKAGUU7HNGKAG4pKdijFADSKMU7FFACYopaTFIApwpBS0ALSUtFACUUYopDCkpaSgAopaSgBKKKKACkpaSkAUlLSUwCg0lFIANFBpKAFpKWkoAKSlpKAEopaTNACUUUUAFIaWkoASiiikAlFFFACUUtJQAUlLSYoAQ0UGimAUlLRSA6XHNGKfikxVkDCKTGO1SYppFIZGRSEU8ikxQMiwFpacRTTQA00zvUhFNNADTQDmgjNAoAWiiigBKKDRQMKKKKAENFLSUAFFFFABRS0lABRRRQAgNLRRQAhOBSbqU8imlST7UwHA5GRRQBgYpaAEptOpKAEpMU6koASilooAQikp1IaBDaQ07HNBFMBlFOxSYoASjHNLigUAJilpcUUAJRS0CgBKSnGm0AFJQaWkAlFLSUAJRS4pcUAJiloooAKKDRQAUlLRSGJikxzS0UAFJS0lACUUUUAFJS0UAJSUtFACUUUUgCkoopgJRRRSAKSlpKAENFLSUAIaKWkoAKSlpDQAUlLSCgApKWikAlJS0lABQaKSgBDRS0lMAooooA6sikAzUmKTbzVkDCKaRUpFMIoAiIptSsOKZjikMYRTSKeRTSKAGEUw08000hjaKKKACkpaKAEoJpaQigYZoppXPSne1ABRSDNLQAlFLRQAUUUUAJRS0UAJRRRQAnNC570tFMAooooASg0tJQAlFLSUAJR2pcZooASk706kYZoASkpcUGgQlJQRxSKMUwFopaSgBelJRS0AIaBS4ooASg0tFIBmKMU6igBtGKdSUAJS0UUAJQKUUUAJRS0lAwpDS0UgEooooASg0UUAFFFFACUUd6KACkpaSgBKKKKACkpaSgApKWkoAKKKSkAGkpabjmgBaSiigApDS0UAJRRRQAlIaWjFIBKKMUUwEoNKaSkAlHag0dqAEpKdSUAdltoIqQDNLtrUzICKaVqcrTCKQyAimkVMVppWgCAimkVMRUZFIZAw5ppFTMKYVoAipMVJtoxSGMxSYp+KMUAMop2KCKAG0lOxSYpgN5zTqCDRQMSilxTcHNAC0UUUAJmjtRilpANBzS0tFABRSZyKKYB3ooNFABSUGgUAGKKWkoAKKKKAGk4petBGTS0CGmgilooAbSU6igBtGKdSUAJilpaSgAooooAKQ0tFACUlLRQAlFFFACUUtFACUUtJQAUlLRSASig0UDEooooAKSlpKACiiigBO9FFFABSUtJQAUlLSUAFJS0lABSUtFACUUUUAJSUtFACUUUUgENJS0UAJRRRQAlBpaTvQAUlFFACUlOpKAA0lLSUgCkNLSUAd4EoK1NtpCtbGRXZajZTVorUTJzSGQYppWpitNK0AQEVEynNWHFRlTikMrsMUhFTFfWm7aQEJWkxUu2jbQMi20bal20m2gCLbRtqXbSbaAISDmjaam20mKB3IsUmKl20baAIsUh4qUrSFaAI8UmKl20baAIsUmKl20m2gCPFIV4qXbSYoAhAIwKdin7aMUAMxRT9tJigBlFPxSYoAbRTsUlADaKdikxQAlJTsUmKAEopaTFACUUUd6ACiiigApKWigBKKWkoAKKKKAEopaKAEooooASilpKAE70pp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", 56 | "imageHeight": 600, 57 | "imageWidth": 800 58 | } -------------------------------------------------------------------------------- /images/train/IMG_20190104_164023.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164023.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164023.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "4.2.9", 3 | "flags": {}, 4 | "shapes": [ 5 | { 6 | "label": "Arduino_Nano", 7 | "points": [ 8 | [ 9 | 384.0, 10 | 0.0 11 | ], 12 | [ 13 | 378.9473684210526, 14 | 251.31578947368422 15 | ], 16 | [ 17 | 421.7105263157895, 18 | 251.9736842105263 19 | ], 20 | [ 21 | 423.6842105263158, 22 | 264.4736842105263 23 | ], 24 | [ 25 | 484.86842105263156, 26 | 264.4736842105263 27 | ], 28 | [ 29 | 484.86842105263156, 30 | 255.26315789473685 31 | ], 32 | [ 33 | 521.0526315789474, 34 | 254.60526315789474 35 | ], 36 | [ 37 | 525.0, 38 | 0.0 39 | ] 40 | ], 41 | "group_id": null, 42 | "shape_type": "polygon", 43 | "flags": {} 44 | } 45 | ], 46 | "imagePath": "IMG_20190104_164023.jpg", 47 | "imageData": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAJYAyADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDk0ulj+Q8ehqO4ud0ZweB0rKvZGiugJFyoPI9RVmGEiMOpJRhnJ7iuaVTlZ0KF1cqG5O/Pb0NbeleVcEYPPpXPSptuSucrmp7ad7OX7xB6qfUVrGVzKSsdfdzraw7QRmuF1nUXndoo2/3jVrVdZeVNq/fbr7VhKpJyeverbJGQpjtUuKdijFSMTFKBxS0uKQwApwFJinCgBwpwpoqVF3GgZdsThxmus09A6iuYtISCK6nSsqRSY0bMEHTir8UWBTYEBUHFWwuBSAQCjFOooAbikxmnUUANxSYp1BoAbimkDvT6a67hQAnWjGBUabwcEVNQAwijFLiimA0ikxTsUYpANxmkxT6SgBpFIRTqKAGYpCKfSGgBuKTHFOooAbijFONJTATbSYp1BpAMxS4opwFAxucGh5MI30p+2opkIjb6GkB5HrZV9bbPQsahvQUtFkj6Zw3saTxDkapIf9o1nyTSvDgg49a6baIxuR2sZlu1UHvmui1Pd/ZnmclsYOO1c9aytDcpIq7ipyR6jvWneXwa3lTjY44GOadhGLV3Sb+60rU7fULNgs9u4kQkZGR2I7g9CKpVZsiBKfpVS2Ehb+8nv72a6uMeZM5ZtowBnsB6VXid45VeM4ZeQas3oCkcdajs8C4GfSpT0GMnlklcvIck0kErwzJIn3lORVu9VFTgdenFVrQA3Cg1Nxkt9fTX1w00vDMAD+AwKhtp3triOaM4ZDkVau0jVCQMZ6cVBZKrXAVxkEGnfQRJqGoyX908zLt3ADaD6VTq5dRxoh2/hxVOhAzQ0qDzp26fKKv39sskUQGDjOCBjHtWRaXT2kpdO4II9avWurKLvNwm6Fz8w64GO1EkwRA8A+7jnFOg4iA7inXVxF558lt6dm9qbEcpms2nYtEwpRTQaUVJQ4VZtx82arCrdr96kBtWjdM1u2yggVh2y9MVtWbYwDQxo0FXApcUDtS1IxuMUmM07vRigBvajFOIoxzQMbik2084FJQA3HtTcU/tSEUCG4oxTqKAGYpCKf0pCKYDcUn4U6kPPFACYpMcU7HFHT6UgG4xSYp9JjmgBuKMZpaKAExikIpaWgBpFJgU49KSgBuKQgU+kI4oAxjbJesFfhh0Jq0mj3EEeM4UDjmr/h6O2muUiux8jnG70rb16yfQpDBOfMtZRugm/wDZSamdO441LHmd7E8EpBHTv61nz3e4AZ+7Wpq96skjgABRXPqu5ia0jGxEpXY4ZkYs3WpAABQFwKWqJDFFFLigBAKUClpaQwApaKcoyaAHKuTV+2gyQcVFbQ5NbVrbZxxQMmtLbOOK6CytihBxUNla9OK3baDaBxUjLFuu1RU9Iq4FLigApKWkoAKSlpKYgpDS0UANpKdikNACUHrS0lAxKSnYpKAEpKdSUAFIRS0hoASkpT0ooASkpaMUANo7UtIaAEoNIxxzSg5FAB1pMU6kpANpc0YoxQMXdRIw8ps+ho2GopwRE/0NFgPIdXTzdZlU+pqtcxpBEUYduKm1abyNbZ8ZAY5HtVa/uEkUBTnHQ+orotojEq6e228Q7cj+Ie1aV6sYtHBX5CfkfPRh2P1FZMMnlTK4q9NfxTWcisoDv1AHU9jTQjMq/ptuZhO+AVjALeoz3qhU9ndyWU/mxhTlWRlYZBBGDn/PaqewkSXxDYwRwam0qxlu/Pljj3pAgaTHVQTjP0zVJi8pJxmrmk39xpF+t1FGr/KyPG/3ZEYYZT9R/SoKG3pBi2gjK03TLSW6ncxxlxEu98dh61DIzuxJQgE9PSrGlX0+lahFdxIGKEhkbo6kYKn2IpIBb0ARFQc496h0+FprnaisSFJOOw9aLmbzpXYRlVbnb6Uun3kmnXsVyi52H5lPRl7g+xHFAD7wExf7pwao1ZurlJZZGjTYr/wddvPFVaqKEzR02KGZZVlGcDPHUD1qO40+SG48sfMp5Vh3FSaRcxW91iYfIwxn0ratRFc6mlusqKr5EZJzz6UpNoEc8YWiQ56ipoP9WKm1FSl26sNp5BB7HvUEPEYqJNtFInFKKaKcKgscKtW33qqVctfvUAbtm3Arbt1yBisK2HQ1u2bcDNJjReUYFO6igHiipGFFBFGKACk60pooASkFOpM+1IYGkIpaQ0wEAopfpSd6AENNOaeTSUCI2JxRinkUYoATtSYzTulJQA3FFLRQAmKSlpDQAgopcUe9ACUlLSUDENJTqQ0CJ7G2ESbj2p+u+Jkm8Oy6ZcLvMZDwueq46j6VW1K+WCIopHArg9Uv2upSin5R1PrW7MUVLiYzyH+7/OkVcChFwKdUFCUYpRS0ANxmlGaWigYClFHelApAAGTVqCHcRTIoixrXtbfpxQA61t8EcV0Flag44qGztMkcVvWlqVxxSKJ7W3wBxWii4FNiQKBU2MUCCiiigBKKWkoAKSlpKAEopaSgA7UlLSGgBKKWkoAKQiloxQMbRS4pKAEo7UtIRQAnaiiimAhpKU0UgG0dqUUlACMMgikQELg040mKACkpaSgBM4pwNNpQKAH7qjnwYJP900uKgusi3k/3TSA8d1eJptWmVexNUp4NkIJ6iul0tbK48X/Zr9ikU5KK47N2rP8AEFi+nX0trKR8jEZHf3/EYrdt6GRjWkQmZlxkjnGamvbMQRJIp4PDDPSn6dEmX35A6hh3x1FS6qSbaNcjKnDYH3h2NUmIye9FKilpAo6k4q9Hpczkg8cZFNuwJCWS5GSK01tFd4sAYc4NVYY/LQKRyOK1I8IbZj03VhJmiLR8OcAhf1qJvDxHY10LalEMDPaojqERHWs1JlWRyF7Ym0cKw4PQ1RAVtylelbuuzLK8e09DWDF/rXrRNklKVdrcdDTO1SShixAGeajrWLM2TQQPcFhGMsBnHtUs1vNZlHzjPKsvY1No0bSX6FH2svI9667+wl1fRNRuYpQbmw2yPa458rvID6A4ptgcQ80szmSZ2dmOSzHJJqeI/IKfKsYQx8Z7VHD9wVnJ6FImFOFMFOFQWPFWbY4YGqoq3a8tQBv2Zzitu2XgVg2oIxit6zYEAGkxovqOKdQOlFIYd6KKB1oASl/Gij6UgEpKWigBPrRRRQAlJ3p3WkxigBMUdqX60hoGJ0pDS0n1oAKSl6mkoEJjmgUtFACdqSl7UlACGjvSkcUzBXnPFADsZFJ7Um7PFOoGNpCOadSUAcZq+pmViiN161kqPWmod5yep61KK1bMUH0paBRSGFFLRQMMUYop1ACAVLHHuNNRctWna2/Q4pAPtbfpxW7Z2uccVFZ2ucZFdDZ2vAOKQySztcdq14ogAOKSCIKOlWQKAEAAFLRRQAYpDS9qKAEooxRQAlBpaQ0AFJS0lABikNLSUAJ70UdKMUAFIaWigBtFKaSgBKKWkoAQ0lKaKYCUlLQaQDaKU0hpgJR9aWigBKQilpDSASnA02lxQMeCKjulDWsv+6aXFV7xmFpLj+6aAPHdUOdRkIJDBjyPr1qndy3Unz3Ds5J5Ldavyqsmpz7j3qG/GyPy+o7Gt2ZDNJw7SxPnY4wT3U9jUN5azQRKzMzLuK89jTdOLJeqQwHYg9xV/Wd0SBB80b4wSemO1C3EY8UrRSpKh2upBB9DW3c63G0geBSoYBio/hPcfTP6Vg0tU0mCdjVhnM7szcAnNXrm5Bto0xh424wOorBScxDK96f9tc9aycSuY0Teye9Ib2Q1mm7b0pfth9KOUOYuvcM/UVBGDucnjNQ/bD6UG8JzxRyhzCeYI5ckZGc1FIVLkr0zSO27nvTauKJbJIpXidZI2Kup4Iq7HrF7DK7pIyNIhjk2kjeh6qfUH0p+iRxT3DxSLkkZXj0q3facJFKquJIz1/vCm2gRkTSiaUuoIHp6VNF9wVHJbmLvT4T8grOVraFIlFPFMFPFQWOFWrY4cVUHWrdqMtQBv2nIFbdsvTFYNplcV0Fm2QKBovJnFOoAoqRhRgUUvagBKKKMUAJSd6WloAbQaWikA2ilpKACkpcUdaAEpKWigYh4pKU0lMBMUEUpHFJQITrSAU7tRSASkpcUUANwM0Glo60ANGfag0dOlHSmM84AApaTtS1ZkFOAJoVSTV22t9x5FAyqImPani2c9q3oNPDjpV6PST120rhY5cWbntS/YnHOK7GPRz/dqwuig/w0XHY4+C1O4ZFbNpa9OK2P7DwcgVat9OKHlaQCWdpwOK27eAADim29vtAq4q7T7UAOVQKWloxQAlGKKKAEoxS0UAIaSlooASiiigBDRRRQAmKSnUlACd6KWkoASilNJQAhpKdSGgBKKO1FMBtFLRQAhppp1J3oAQUlLRQAlFLSUAIaSnGkNACYpRTeaUUgHg1XvlH2KY/7JqXJFV71v9DlHbaaBnjF7I0WpyuvI3HI9RVW4uTMACSQKv3EJlvZl7hqq3tqkUYdOncV06GJSDlWDAkEd6fLcyzACRyQKmsbZLourbtwGRin6hYG0WORclHHOexp3QihR0pyoWPFPlhMahu3eldBYipKWimAlGKWimAlGKKKQC0lFHagC7pl4LO7V2GUPDD+tdBZ31ldXdxBM4jMiEwuTgK4559jXO6fbR3dyInfaT9339qde2Rt5dqksOnPUVDGhs8pMrEnIPenQ/cFV9hX7w4qzH9wVEloUiQU4U0U4VBY4VbtT8wqoKtWw+YUAdBagECtq1G3FYlmcYzW/agFRQNF5DkU6kVcCl6VIwoHWigUABpPWlooATFJTqSgBKKWkpAJjmilooAb2opaSgBKO1LiigYnakpaKAGnrQaWk6UCEoPApaSgBDRQaPwoAKSlNJigBKKWkPWgDzilAzT1iLdqtRWjHGRWhAy3gLEVt2ltkjio7W15AxXQWNn04pMaJrC0zg4rft7Ndo4FR2lttxxxWrGgApDIFtEHapBbqOwqxijFAiDyR6UeQvpU1JigBgQClxTsUGgBKKKKAEopaTFACUUtFMBKKKKAEpKXFFACYoooxSASkpaQmgAxSUtFACUlOxSUAJSUtJTAKSlooAbSU6koASkzg4paQjNACGjtS4pOtABSUveigBKQ07tSGgBtOUUlKKQx2zNUtURlsJiP7pq6HxVbUpR/Z04P92gDx6OdP7QnV+CTkZ7+1U7/AP1jruyp5Wo7z5ruXHXd1qtIZcDeTjtmuhoxuXdJVTKzAruXnB7jvV/WIllhiMGNrHJArLs7eWRhJEwBU4PNbhtStu+WPmr+8T0de4+o6+/NJ6DRjLEIV+biq882flFPu7re/wAtVMEnNSlcbEp7ROqKxUhW6Gr2l6ct9efZXcxyuv7oEcM3p9fStOKM29nLZ3cYdYzlHz27j/PvV81ibHN0oGavahDABHLbt8rDlfSo4FjaPK/6xT0PcUcwWKpBHBpKsyx78t0I7VWINO9xWCkpaMUAaGjtALwCY4z91j2NatzFG08rcMwGd2PvCufWCVk3rGxHqBSpcyp/G3pgmpauNMs3PJPpTYvuCqxkZzyasxfcFQ1ZFpko606milFQUPFW7T79VBVu1HzCgDftRkCtuzJXArEsz0zW9ajIFA0aCnIpaaowKdUjEopaWgBKSlpKAExRS9KKAE70tJSmkA09aKXNICDQAmKKXGKSgBKTBp1JQAlFLSd6AEpKWkoAKSnYpKAEpMmlxRigBMcUUvak96AEpD9KdSUDRiR6DLE+x4zkVpw6GcD5a7h7WOQ5KjPrSrbIO1UQcnFozJg7a1bWz2Y4rZ8lfSgRBaBkccWBUwGKUDFLQISiiigQlJSnA/GkxQAUhpcUY4oGJSUuKDTATpRS0UCEIpKWigBKSlopDEpKWigBKSlopgJSGlopAJSDmlpKYCUUtJigBKKCKMUAFJS0hFACUlOpKAExSUpooASkpaKAEoxRRQAhpDTjTMnODQAoFOAptKDikAuys/WEI02f/drRD1R1mVf7LnB7r1oW4HkEMKTXEu7GQxqpqJCFoSOR0pJZngu5WU8E1BdXBuXDsPmxgn1roaMrlzRlYysONrcHI6H1q3e6g0Lm2mGSODgdB2IrHtriS3YsgJUjBHrTrq7e7C+YPmXgHvt9KLAV2G5zjJ5q7Yaa9+JljdRKg3eWepHqKda2Fy9sL+Da4jfBHXaRzyPf9ea2XNr51ve2rG2lIwy+jY5HuP6Gk3bYZHJLDNZxPcoYrqI4eRRjdg8MMd/X3HvVO+vpYbghmEiOuPr71HeXrZmglXIz8pHasoktjJqAEZiTSgng9CKSigC2ricM3RwMkf3qZJH5nzLxioASDkHBq0r+f93hwPmHrRsBT70ZqxLGJDmP05qv0rRO4rHQWckgso5BGMDhwT19CKqvZrdXcjoAqnkjtnvim2OpmC2aCRdydjjke1auk6xpo0290+/jCuf3lrdKnzq/dG9VI/I/Wpd+g0YU8KoCo6iiL7gqOaTLsQc5qWP7gqXew0SCnimCnioLHCrlp94VSFXLXhhQBv2ozit2zOMZrCsznGa3rZc4xSGjRHIopFBAFPpDENFHeigApKUUHmgBtHelooATFBoJ9qTOaACjFLxRSATFJS0lACUUtJxQAGm4NLiigBKSlPNABxQAmKDS0lACUfjS9qQ0AJSEU6k6mgYhoPSlpCKAO4xRS02qICkp2KSgBMUUtFAhvtRTqSmAxkDDmhQQPm60+k7UAIaKWkpDCkp1JTAbig0tJQIKSloNADetBpcc0UAJSUtJQAUhpaKBiUhpaSgBKKWgcUANopTRigBtJSmigBKKWkoASkp2KaeKACkpe1JQAlJinYpKBBRRRQMQ0lOphODxQAuKULmmq+etSBsUgGlD2rK14EaTPn0raDisrxEyjR5iPShbgzx37IZi0h6bqr31qkIV4z8p6j0NbWj3NrMtzYXLeW7ZML9t3oaxL8MszoT0OMV0O9zIuaXKjWxjclSp44zmrk1qtle2+oPZ+davxLH6jocHs3p71hWdwbabcV3o3Doe4rW/toQZjQ+ZBIMsG6gjpSdwNEww2F5O2m3Ie3mTGCOHXqDg9CP05rCvb0Tw7GTbIrdqff3aSGOWElGxyBWazFmLE5JqBiMzMcsST70lFFMA60UUUhBQCysCDg0Up5oAtI/mKPLHz4+YevvUUsQIBTk1CrMjBlOCKsrMgTzP4ujCmhi2Fus7uHYgAc4/nUlxpc0OCCHB7g8EdjT9I8uTUPnYAtwATwfUVqFTbymGMblXnaORim3YEjnHheP7wwPWrMf3BTrubczpjjPT0psX3BUt3Q0iQU8UwU4VBY8VctOWFUhV20PzigDetRjFb1k3AFYdnzitu2XgUAjTHIopqZxzT6kYhopaMUAFJxS0UDEooxRigBKQDFLRigBOKSlxRSAQk0UGimAEUhpaQ9aAEoNLSe9IBuOKXtS980n4UAJRSmigBtFLSUAJRiiigBD0pDTjSGgDuKMU7FIRVEjc4opxGaTGKBCUUuKKAG0GlopgNopaTNIApKWigYlJS0UAJSUtJTEJRS4ooASkIpaKAG0UtFACUlLRQMSkpaSgApKWk70AIaKWm5BJAPI7UABpDTqSgBKSnUlAhKQjIp1JQBGARTqU0UAJSUtAoATFGM0ppKAENNIp9JQBABiTHapwOOKZty2e4qUEUDGEGsfxEcaRMD6VvAKawvFahdGkYGhbiZ4wyNLclV+8WwKjmWRJCsud2ec1rQwAqzj72SR71Qv5/tEmSuGUYJ9a6GzMgW3mkXckbMp7gVLaWhluFEoZYgcOwHSrumRuYePqOeorq4b/AE/U9ETTZ47ey1G3kCJNswsisfm80j06hueMipbA5O/08W8nlp8y4yGHcdjWWylTg12F3bHTPNsboFlJ2kkAmOQdx7fzBrD1LTmtJNjkHI3KynIIPce1SMyaKVlKsQRzSUCCiiigAozSGgcsBnrSAM1LNbmOJJAQyN3FTQx+RN5UyAiQYBp8SIBLbSkgdVz2pjKIJGCOCKnF5cB1bzGyvQ1e0uyE4k8yJGQdHNTXOnwZDxgDswFU5JbisZEszSyM7AAsc8DirEf3BSXEMaqTGcMOopY/uCok01oUiQU4U0U8VBYoq7aDLCqQq7afeFAG9aEriuhszkCsC0GcVu2mVxQCNIcUvFIpyKXFIYYopaKQCUdqDQaBid+lJSkcUUAJSUtFABikpaDQA2gijFBoATvQaMUuKBiUhooPNAhKKKX60gG0YpaTvQAlFKaTFACUlLiigBCKQ9KcelJ0pgd1SUtFMgQ0lLRQAlJS1XuLgQDJFFxk+KTHFMhmWZARTzmgQUmKdSUwEooooATvSUtFADAecGloxzRQAlFLRQAlJTsUhoASkp1JQAlJS0UAJSUtJQAlFLSUAIajaL5w68Hv71IeetAzQAlFLSGmAlFFFACEUlONJSASkpHJA4GaUEMM0AFJTqSmAlGKWkzQAlJ3xTutIRSATFLg0oFOAFAyM5rB8VOf7IcGujC5GK53xhFjR3amtxPY8h+0vCXQcqTkexqu8m9iT1Nalvp4lBkfoT0qjqFqLaX5DlT0rZtXMy1YagLeEowDbeRkdqgnvs3Yni9MHtmrunRxXEKl44yF+8NvOKzL2FILp0RiU6jPpTSQjrbDUob+02XB3z7AkMjDLcDAiI/ukdD2OOcdK8sRtiYL5SE5VN33oG9DXNWl01rMHADL0ZT0I/z3rqLa5ttTi/0mT5tu2GRiAuRniQepHAOfT61DVhpmFfWEkH+tXbkbl+h7j2rNYFTg9a6jZuK296HjhUnymYYKE+oP8NY95aMjNlNoHQ/4e1SMzqKUqQcHrQqM5wgJPtTECI0rhFGSasRRIVkglTEo5BpqojW3mRkrNGealmZikV0p5HBFAxvMtqSW/eRevpUU85nKtjDgc4pskgaQunGe1R9TVJCuX9M1SXT5GwNyPwyn+dWotTt5HdZFZVfof7p/wpkWkpJFGWkdWcZBx8tUJbSWGdomHIPUd6HYEOd0Ltg5BPWpVHAxVMoyH5hirafdFRLYpDxTxTRThUFjhV20HNUhV+z+8KAN60OMVv2oBArCtVzity0yMA0AaCinUg5FL2pDDrRRRQAUlLSUgCkNLRQMTFFLSUAJR1paTvQAmKCKWkoGGKSl/GjHFIBtFLikoATFFLSUCENFLSUAIaQUp6UUAIaSlopgJ2pCKcKSgDuutGKMUtUQNoxS4oPSkBE8ixjLED61jXt7HJMEBBGav39k1zGdjlW9qyINElEuZSTznNS77FqxtWkYWIMO9WaZDGY4wp7VJVIljaDSmkpiCkpaSgBMUlOpMUAJSYpaMUAJikpcUUAIaTNLRQAxjjtS5pSOKMYFACUlLRQA00lOpDQAlFLikxTAQ0UtFADaKM80tADaKXFIaAEpMU4cikxQA3FCgdulO5HSoDuEhZOAeopAS0UDkc0tMBtBFKaKAGgYFBpTgUGgBO9GaUD1pwXNICPca53xhMV0hlPQ10pjz0rlfGyldJOacdwex5zFfIlttzlTxk9VP+FZt3cedjdyRwT601YJZWxGhY9cCoyhDhW4Oe9buKuZXN/Sr22WMEsVk7gnjgfyNY2oMjXsjIcqTnr09qsf2S7ZCSozYyBg81nsu0kEYI4INCQDc81NbztA+RyhPK+tQ0U7Adel4uswxR3Dn5QUWU8l/RT6Y9agZhOFsp32xRthJTzs9VPtXO29w8BIB+U9R610WqeI7S+0O2h+zKt/D+782NFVXixxuA/jB4z3B55HMOI7mJeWvlXxt9wBBwOf60Sw/Y2WWJjxwytVNmZ2LMxJ9Sasx3IdTHNyCMBv5UcoXHu32efzCMxyDnFU2cgsFPyk9KHdioQnIHSmUJAL/KjHekBpf5VYjqtOjR9G3ROsm05Ks3IPeu2m8Nabrnw/XWNKlie6t1C3cCx4eKX/AOJI6e/TuK87sII5bJSJzDKOOmM/41WluNQ0yWaFbmRVlGH2MQsgBzyO/NQ1cZDOWCsjAEZ49qVPuioPMMh+bvVhegqJKxSHCnCminVBY4Vesx8wqiK0LIcigDfsj0roLZc4rn7VemK37NuKARfAwKU0DpS0hiYooooAOtJ7U6kpAIRSUuKKAEopcUYxQMT9KTHNLSYoGFNY4FOoIzQA3rzR1pcUAUAIaSlxRSENpOfWnGkpgJRjilx3pD+tACHpSd6dSGgBKTFOpKQCEcUh60vOcUGmB3eKKWkxVECUlOpCKAEpKWkoAKSlooAQ0lKaSgANIaWigBKSlpDQAlJTqTNACUmKXrRQAlNp2KDQAlJ2pcUUwG0tFFADSKKWjFACGkIzSnFJjAoASilooAaRSAEU6igBKQ4FOpCBQA3FJTulJQAlJgU6koASiloNACUUUYoAQgGilpDQAUoNIKXFIBd+K5TxvJu0vBHFdSVrkfG522IBHWnFag9jjDbmziguoDgsuUb1HfFYWoSrc3LOkezPUCp01KaC1Nq37yDduUH+A98fWqYm/fB8Z5zitnFmZqWUhijAeRypGFOMVkXBL3MhPBLHvmuhSS3li+VvMikGNjDBWsxtLYM3zfIDgHFCdtwsZhFJV9dPkEoBwRmp7jSxEwbOVYU+dBysyqbV6SzAXK5J9KZ9mUjOG+lLnQcrKlL3qx9mGP4qU24/2qOdBysqmjFXIreJm2uWXPQ+lKbEA439KOaIcrKY27SDwfWgVYa1Ow7eWU8+9QNG6jJUii6Cx0Ol26XWnLHInzD7mGwSKtat4dvoLCK+ubWaO33GMSOpHNZ+j3sixeV+74OVyORXdap8RIZ/A03h3ULIJdqqRwSxjKtH6knuCB9c9sVLA8xnjSNhsP4VKvQVAWVjgetWF6CplexSHinCminCoLFA5rRsuCKzxWjZDkUwOgs+cVu26cDFYVnxiugtCCtIC4gwKXFLij2pDG5HrS4poiUNuHen0AJiijFBoASiiikMSg0tFACUlLRQMQUlKaOvJoAQ0UUHrQIQ0lLSUAJiilxxSGgBO9HelpMUAJmkIpaKAEpKWjvQAnA600njI5pWTd3x9Kbgr1bNAHf4pKdijFUQMNFOxSEUANNJTsUmKAEopaaRg0ABptOpKAEFIxAGTTgKQgEYNAxFYOMg0U1Y9hODxTjQAhpMUopTQA3FFLSGgBKTvS0UxDaWm9DTqAExSUc5paAG0UpooATFJTqSgBDSUvtRQAlJS0UAJSGloxQAlJSmkoASiig0AJQaKMUANwc9aUUtLQA2kpxptACilzSAUu2gBwYVyHj4qdNUjrXVkGuL8eMRaKPanHcT2OETTfNh3ucZFZksZtpwQcgHitVdTU2nlMP8ayiwlkVWfbk8Me1au9yDprN47hEaTOwgBjswUNdd4bvLLRrwprFhFcafdp5cpK549VPcdMj8eDiuHhW6hg4njmIGQuT8w9K09O8XKLH+zLi2SaFiFCOBlcnkA9QfQjkH24qWmMuavZ6XBqM402UzWRYtGDnKj0yev1/rWJqICoADkdqRdSktrqSykQvFk+WWABxn29v1o1HonXHYmoZSMeSbYdpOM9KRZ25yPmHapWQHgiq9z8qqR1FJDNSewng0u01ArmC5BwcfdIJGD+Rwf8KzPPy+3p+FdZLr+n3/AMNE0kx+TqFjKm3JyJ0LMSR6EZGR+NcfAoaYZ6E0xXHGfD7So4q7NF5RBVw8bjKOOM/4H2qN4lDdBS9Vxnp0pDKu4qXINQySsVPpT3bbu4qHepQjv6U0SyS0wW2neOchl7GrF9HcPIquQ2BlWH8QqvaSpGfmAIPBz2966K/sH/sS31G3ZJYCdjFDny29D6ZqhHNINj4YYq2vQVBK5kIJGDU69BSkyojxSikFOFSUOFaFlwRWeOtaNkORQB0NmM4rdteAKwbM4IrobTlRSBFwc0YpRQaBiYopaSkAmMc0vWijpQMTFFLSd6ACkpaKAENJSmikMTFJindqQ0ANopaQ0CCkOaWkoASijFGKAEoooNACZoooxQAlJS0CgBCKQjvTqTPPWgDvaKWjFUQNxSU+kIoAYaSn9qaaAEpKWkoASm0+m0AIKU0tJQAlJinUmKAE7UlGMGjg0xhikpaDQIaaTkU40mKAENMAweDxT2XIpAPXrQAUlO70lACYoNLSUAJRRRQAmKKWkoASkxS0UAJRS4pMUAJjmkpTRQA0ikxTqKYDaKWigBKKMUUAFNpxpKAAU8EUzFFICTiuI+ISr9lj5rsiTXC+P2zFGCaqO4nsecyQsVyqk471WPB5rpI3it7YOuCQPmU9xWDdsktwWiGAe1bcxmdJFYWzQxO8bCJl/wBYkh/xrFS38jWo4g28CQEN6itCwvXtx9na1BYqW2gfeHqKz4GEmsRshbaZBjd1FOPUC/qSj+2Ysf3BVjU/uR/SquoE/wBtR/7gq1qTApHWUy4mWailVCvz9Kmqpd524rMoeBFt606ONWY+WCSBk49KjvdLu9MnWO42EModHjcOjqehVhwRTbSZ7a/jkhkaNuxX/PSmTctnnmm9KmmZWmdgioCc7V6D6VCw4pFFKXo31qqetWpTkH61Vb7xqkSyVYd3Cn5sZwafFdXFqskaSMqOMOueD6ZFLbRJI4DO49wOlaVxp5spTFdRskowSHXBIIyOD7UxGSjFn5q6vSq8sapONo4NWQOKUiojhThSCnCpKFA5rRseorOFaVkOlAHQWgzit60yBWHY9q37YAgUgRbHIpeaAKKBiYop1JQAlFL0pPWkAmKSnUlAxKWiigBKTpS9KKQCUnenUlACUlLSUAJRS0h96AEooooASkpTRQAnejFFBoAQ9aTjFKQOtGKAEPFJinYzTfpQB3+KKdikxVECUmKXFFADcc0hpxpKAGmm9aeaTFADaTFOpDQA3HejFOpKAGnrQaCOcilpgNxSEU6g0ANpKdikxQA2ilpDQAlFFFACUUuKTFACUh4FONJjigBufUUoOaNvGKAPWgBDRS0mKAEIpKcaSmAlFLSUANYZpoBHWpKSgBKSlpKACkpaQ0AFFBpKACiikoAcKcAKjozikBJ5YNef/EVdiJ9K73cRXn/xFk3IgPaqh8SJlsedtM3l7M5H8qhU4OfTmlamjg11cqM7mxaauAqxSwB8ZKMB8yH29j6VB52NT+0iJtobcQBS6JbG4vwNjMqqSxUZ2j1r0ZfAL3mmPPY3kMtymW8gjaSnrk9ff0+nIzk+V6DSucDcTLPqsciZKFB2qXUp3t7i2kTbuRwRvAK9R1B4IrUh0SRklJGy4hJ3xt1+lZGtA+dAvcsMVk5XLtYZqM8X9oRzWkIhLAM0WMorc5C5/hPUA9M47VTvWXzFZF2cg7euD/hUk6t9oQEdAKjuQWYcZ6VIzTuJTeQQBzgJuO0cKCepA7ZwMisuaARXce3kE9KnDMFGOPaofMxexM671B+7nGaQyWWUQ3UbFA6g8qejD8KZcyJHcAwksnB2v6Ht+FOu1Vr1AmWUkY7HpVe5G25AHtTERTbRuIzjPGaqnrWjlNrb1BBqtN5RX5FwaaE0LBNHG4chgw7g10er+Kz4h0i0tL+JWu7I7IboDDNFjGxvXBGR+NcmKcM1aVyblvajHgnI9asAVQjJ8wc1oCpmrFRFxSikpwrMsUda07IdKzR1rTse1MRv2g6YrftD8oFYdkOlbtsnAxSGXBRQKWgBKDRRQMOgpKWkpAFBGKKKBiUYzRRQA0/rS0UdqQDcUUtJQAhpKcR60hoATFBxQaQ0AFFFHagBKSlo6CgYlIaXrRQITFJinUmKQCdKQ0ppDQB6CaSnYpMVoQJ1pCKdQRQAykxTsUmKAG0lOooAaaaRxTsUlACYpuKfSGgBppKdSUANxRilIpKAExRS0lACYpCKdULTAOFHWgB9JS9eaMUAJRRRQAlFLSUAJR0pcUmOOaAEooC4+lFMBDRRRigBKQjmnUmecUAJiilNJQA2ilooAbigilNJQAlJ0pxzj3pByKAEoxTsUYoAZijGBTqQ0CGGvO/iE3zKK9FNZeqaJaaqB56HcO471UXZ3E1dHhpptetv4H04+tQN4DsD0Zq29qiOU4PwzrE+hazHe28hRlBU4/iU9QfUH0r0rXNf0PUNKTUNFuzp9/GwElmz4Lg/xRsP5GsxvAVn2c0xvAlv2mNZykmykrFK2vY7y1LNdBpQu0gjBT0HuPft0rm9f/10e44+bnjpXVT+DFtU86OXLKehrm/EEBM4ToRnIIrMohmh3zQbZFcMPkkTo4/H+R5qFo83QVuDkcVXgjkibBOV6jHY1NNullEm75x+tAEdwxSXaDkYqBHzcx59e9TS5dwT1ximCI71ZTyD0oAkuwRcRsCF+Yc56Ul+n+lITjcQMkHIPuD3ovI3kOQPqKrrHMCu7lVGAM9KAFk4U1Xc5BBFXAgkBJJFIbdTxuP5U0JmdVu0txMTu5x2FPFin981LHa+W2UlYGrTRNiGSAQzgKcg+tWh0pDalmDGUkjsRUohYnpUzdyojRTgp9KmjgOelXYbcHqKgozljY9q07NSCKtJZKegqzHZkdqAL1l2roLYfKKwrWMoRmt215UUhlmilxRQAneig0nSgYUlOpKQCUUtJQAmKKWigYlJS0UhCUlLSUDENJTqQ8mgBKSlpKAEpKWigAxSUtJQMSjFFFAgOKKSigA+tIetLikNAHoeKMU4ikxVkDSKTFOIpKAGYoIpxptADaQ08jIpmMUAJSEU6koATpUbuqDk4qWq1zbCdcEkH1FJ36DVhi3cbPtzU/XpVKLTVjbcTk+9XQuFxSjfqN26BikNOpDVEjaTFOpMUAJTGjV+op9GKAG4wMZoNLSUAJRS4ooAbRS0lAAaSlpKAEopaSgBKTHoaXrRTAYyk4I60uMjpTqSgBKSlooAbRS8UUANopaDQAlFFFAgpCaM0maAA0hozSUDEpDSnNJQIYRTTTzTWpgMppAp55puKAK15G0lsyqMnsPWvNvEZBvFPlyRtgho2GSvPTPcV6lVea1hn/1sSt9RSA8ZJ9z+VNz/ALX6V7CdKsj1t4/yqJtHsD1tY/yoA8jCbs4YH2xRtYdW/SvWP7D08HItk/KkOiacRzax/lQB5Wqu2AGBqydPuVYKyZz6c16SNB04dLZB+FWI7C3iAVYwAOgoA89tNGlVG8xODyDQ2mBT0r0GazjZCAoH0rLl04bulAHI/wBnD0o/s4eldV/Z3tSf2d7UDOYFhjtUq2eO1dH/AGf/ALNIbDGOKQGEtp7VKlsQa21sfaniyx2oCxmwR4PStOCFWxxTltMdqsRRFSKBjktAeQKtRRbO1OjHFSUgDFJS0UAJRS0lACUUtJ2pDENJS4ooASilpKAEope+KQikAUhpaaWwcUABpKWkx7UDCkxS470GgBtFLRQA2ilzSUAJijtRRQAmKKWkoAKaetO7UhpAejEZpMU/FGK0IIzSYp+KT2oAYRTSKkIphoATFNOKfTTQAw0lOIpKAGkGkp1IaAExTTkHpSnNH1oAbRS0lACYpKWigBtJTqQ0AJikpTSUAJRS0hoAKSlpKAEoxS0lACUUuKKAG0g6UvSimAlJTqSgBKQ5z7UtJQAh5opTSUCCkpaKBjaSlNJQISkpaKAEpKWkoADTe9OpCKAGEUhGacabTAaRSU402gBDTTTjSUANIpppxFIRQAwnFICD2oKYOQaXFADaMU6mlecikAY4ppjB7U+igZEYlPajyl9KkAPfmlxQBF5S+lBhXPSpcUYpAR+SvpSeSvpUtFAyLyloEYBqXFJQAmMCilopAJSYp1JQAlGKKDQAmKD1oopDEopaSgBKOtFGKAEopabSAO1Jinc0lADT6UEUpANJQAUlLSUDENFLikoAQik6U48c00NmgApKWg0AJntQaMUUAJSH2pxxTT0oEelEe1JjNPKmjFWQR49aaRUpGaYRQAymkZp5FJQMjIxSGnkZptADTTSKeaSgBh4pDg04immgBuKKWkxQAhptONIaAG9aKWkoAQ0lHeloAbSGnUlACUUtJTASilpCKAEpD1p1JQAlJmnU0UAFFBooAQ0mM0tFAhKSlpDQAlJS0UAJSUvSkoAQ0UtNoADTadzSUAJSUuMUlMBM8+9FIykkGlpAJTacabQA00GlpKYEbMF5PFHUZpCm5uRTgABgUANNNPAp5ppoAhyS3HH1p+KXFFACd6KKWkAUg5paSgYdqTFKKKAExRS4pKQBQaWjFADaDS0lAxKKXFJQAUmKWikA3FLiig/WgBKSloxSGIKQ0tFACUUUUAIaTFLSc0gEo70pooAQ/WkpT0pO1ACGg0tIaAGn9aUUGigBDScelLz2pDQAfSkpe1IaBgaSlpDQAHpSGlpDQI9PppFPIpCKsgjIppFSEU0j2oAjppFSECmkUDIyKSpCPzpmKAGUhFPPpTSKAGHpSGnkU04oAbim4p5pMUAMIpKcRTaAEIpKdSYoAaaKU03FACGilNJQAlJS0UAJRS0lACYopaTg0wEooNFIBKSlooEJSUtJTGJSU6koEJSGlNJQAlFLSUAIRTenWn9qbQMaxIopTzTHHy8dRTELRQpJUGkOemKQAaShSehFLQA00hpxpKAG4ppp9NNACEZppFPpmfY0wExzTGBzkVJnIppGeCKAGnFJilCAdKO/TikAlHFOxSUAIaKWigYlJilooATrRijGKWkA3GKKdSUAIaQ06koGJijFLR0pANxR7UvSkoASkIzTqSgBoFH1p1J3pDG96KWkoATvRS0negApKWkpAFJRRQAhpKdikoASilpKAENNI5p1JQMKQ0H1ozmgQntSUtGKBifhR07UppKQCHrSUp+lIaYj1TbmmkY4NTFccimNVkERXFNIxUmPWmHg0DKpnXzSmDkdak6inPGrkEqCfWgjAxQBGRTTzT8UhFAhhFMNSGmnmgBlNIp9NNAxpFJTqbigBtIRTqaaAG4pMU40GgBlFLSGgBCKQ0tJigBKKWkoASilNJQAlJjnNOpKBCGkpTRQMSkpTRTENopaSgBKQ0tIRmgBOtIaXGKDQAlFLSUAJSGlNNZc0DCkIFKBiigBMYpDTjTe9AhKSlpKAEpDTqSgBtJTqSgBDSU403FADTSU4ikx6UANxSH6U49aMUAMwe3WlApaKBjaO9ONJigBtJTjSYpAJ3oJxS4ooASilpCKACkpNrf3qWgBvelqOZiq8DOacmdgJ6mkMdikNLikNACUUUUAIaTvSkZopDExSU6m0AJijHNOptABSUtJSASkNLRQAlNZlX7xxTqQqCOQKAEGD05oNHA46UYoGJR7Ud6KAE60ECgUEUAJSZpaTBzxQAUlGM9TRikAhpDTqQ80AetsKiK/5FWCvqKYV9K0MyuRTSOKlZabjP1oAiKmmkcVIcim0wITTalbrTGFAEZpuM0/FJgDpQBGRTTUhpp5pAM70hFOIppzQMbimnin000ANprDNOpKAG0UtJQAlIaWkoEJRS0lACUlOptAwpKWkPFACUGl4phJDY7etAhaSlppyBnn6UwFpDQpyO9LQA2ig0hoAKSlpCOaACkP1paSgYlJ9aWigQlJS03FAB1pKWigBhyOlHUc04ikoASkpTSUAJRRRQAlIaXvRQA2g0tIaAGmkxTj19KaeKACkpaMUAIRSGlooGJSUtFIBMUUUHp1oASk70tBFACUlLQRQAnXig0GikMTtSUpYAc0cHkUAJQaDRQAlMK/NnNPxSYpDCko70UAJSGlxz1pKACkJwKWjrQA3qKTmnYwKQ0AJiijHfNFIY3aM0UvekNABSfWlpDQAn8qM0ZzRQAlIaWkyKAEzR9KXFFIBO1Ifal60hoA9kK7qiZCOtWNnNMZe1aGZWYCo2Wp2SoyMGgCEjPWo2FTMMUwimBERkc00jFPbIpvWgCIimEVIRzTWFADCKbzTs4pDzSGMNNNOIpKAGHFJ0NOPWkNADDSYpxpKAGmmmnGkoASkpaQGgQhooooGJSUpooENpDTqSgYlIeadTcUCExRS0lMBuQaCKXFB6UAJSUtFACUmKU0lACUhp1NOMc0AFIaRD2zkUpwtACUlOpDQMSkpaDQISkpaSgBDikp1IaAGkUUppKAEpKdSUANop1IaAGEZoxSmg0AJSUtFAxDTcDrT6YFxn0pAHtSU7FJQA3FBGRzTqaW5x3oAAMUUo96OlADaKXOelFADcUUtJSGIQKTgU6kNADaKWkoASkpxpKQxhGaKUrzzRjFACUlOpMUAJijFFFACUEUppKQxKKKSgANIRSmkoATFFHOaKAEHSk70tIaAExRS0hpAJmiiigBDSEZpTSGgD2wrUbgY5qcrzTHjGK0Myow9OlRMO9WipA4wahdQe1AEBx6VGwqXBBprD0pgV2GDTT1qZhUZHFAETVGalNRkCkBGaTFOxzRQMYQaaad9aTHNADSKZinmmmgBppKU0negBppDTiM03FADaKWkNACEcUlLRQA2kp1JQAlJS0lAgpKWkoGIaQ040lAhKQ0tFMYlJS0GgBtJQDmg8DigAqLYd2SxIp/z9eD7Uoye2KAEximnLcEU4800Ag80AKBgYpKdSEUCEpDS4ooGJSYpabn1FAgpKWkoASjFLSUAJSU6koASkp2BSYxQMaaTFOpMUAJRS0UANoxS0nfpSASkpSMjFNUHoeaAA0mO9Oo70ANo4pcUUAJSGlpOvagY0GlzRjHSikAmeaQ06kNADaKM89DRQA3nNFO7UlIYlN706koASig0GgBKSlpKACjtQaTNIBKKDRQMaRRSn6UdaBDTRml7UhoAQ/Skp1JQAlIaWkoGJRQaQjJpCCkNOpp6dOlAz3MrUbAdKssuee9RsoxWpmVShHSoWq0VIHWoWFICsy+tRNwKsMo9aiYYNMCu3NR9KnPWomFAEJpjA4qYgGmkYpDIcDFNNSGmEUAMNN708nmmkd6AGGmkU400igBuKbT6aRQA00lKaQ0AJSGlpDQA00YpaQ0AJikpSaSgBKKWkoASkp1NoAKSlpOO9ACUjDPfFLnNFACUdqKSgBhBDZFOpaTOaYCUUtJQAhFJinUmKBCUlKaTGKBhRRRigBtFB45pKBBTc040w88jrQAtFLSUDENNLHdgUpXBzQFA5oAKQ0tGaAGmkpxpKAEooOccYopAJ2opaQ0ANbOOOtIM45p3aigBKTtS0lACdKOtLSUDEpKWigBMHPWkPBpaSkAlIOKXNBoAQ0mc0pwetJgdqAEzRRiigYUhopKQCUUtJQAhoxQaBQAhpDSnApOKADFIaXmg0hjTSU6kNAhKSl7UlABSE4paSgBOtGKWkNACe9J1pSaTrSGHNIaWkP1oGe9MRiojx9KmZfWoyPatDIgY/hULAZ6VYZahZfagCvIKgYVaYYqFgD2oArsKjap2HtULCmBEwpp6VIRjmo2pDImphxUhGeaYaAIyKZmpTUZoAaaaadSHpQAym0+mkUANNJS0lADaSnGkoAbSU40lADcc0UtJQAlJS0UAJSUtIaAENJilooASkpaKAEpKWkoAQ0lOpKAE+tJTqQ0AJ2pKWigBtFKaSmAlFKaSgBjqWGM4pqBkO0kketS03HNAAaSlpDQAlJTqKAG0GlpKAG496KWigBtJ0pfrQaAE7UUtJSASg0ZooASkxSmk7c0AJ2oprnjg80kZcj5qAHUUYo70hiUlBHeigANNNOpDQA3FFAOSaU0AN70UuKSkAmKTFOpDQMb3opaKAG0UYooAQ03NOprDIoAOtHSkXgY5pScUAJR1ozkUUhjTnNBpcUlAhKTFLRQAmKaadSGgBPwoNFFACGjGKWikMbSHHWnUh6UAe+kZqN+Klx3FROeeRWhmQtzULirDocZFREjHIoAruOMd6hZeKsMR6VCQGoArnrmo2FSuMVGT7UDITUZqVqibNADDzUbYqQ8VGaAGGmE09qYfpQA0800044pDQAw0hpTSUANNJSmkoAQ000tFADTSUppKAEpDS0lACUUUUAJSGloNADaKKDQAUhpaQ0AJSUtFACGkpaTGKACkpaSgApKWkpgIaSlooASkpaKAENIacabQAzdzginUm0DmloASk5pe9BoASkpaSkAUlLSGgBKTFLTdwzjpQApoxRR0oAQ0lLSUAJRS0mKAEwPSk6ClIpKQCZzRS0hFAxDRS0lACU1umKdSY5oAQLiiloNADe9BpTSdBSASkJoIyOKaqt/Ec0ALkGijaPSkJPYUABpKA2e3NFAxDSU7FJQAlFFIc9jQMKSlxRikISkNLSUANNJTqaTg0AJkUuaOCKKAEpDS4oxQAmKTFLSd6QwxSEcUtJQM9+INNKnqeadkikY8VoZELcjg1Cw7VOfpUEnHIoAhcVAxqy3I5qu5FAELc1Cw5qZge1Rt9KBkDcUwnjmpGUmon9KAIzTCKe3SozzQAwmmsaeaYaAI2Ge+PpTTx3p5ppoATimmnGm0AJ1pppSaQ0ANopc02gANNpTSUAIaSlpDQAlFFFACUUUUAIaSlNJQAUlLSGgBKKWkoATvRS0lACUlLRQAlJS0lACYopaSmAUlLSUgCkpaQ0AIaKWkoASkpCxB4Gad2oATFIaWkoATFJTjSdaAE703FOpMUAJRS4ooAbRS0hoAQ0maWigBKQ0ppKQxKQ80tBoAaaKWkpABpDRRQAnSkNLRigBtFLSUAJRS01jjsaAA8UnJpc5o70AM285op1MK0DFpKWg0AJSGlpDyKAEPNFGKO9IBKSl60lACGkpaQUAJ3opSKT8KADNJRRQMTpR1oxR2pAJSH6806oXfaeQcUAfQO73pjZ6ikOe1ID75rQzEJOKiYnFPYjtURNAET9ahde9SvnFRNnFAyE9KjPI61IetRM2KAIHbFR4709vmOaaTjpQAxqiOQakamnFAEZpppzUygBrU2nE00mgBtNpxppoAaaSnGm4oASkpTTaAEoxS0hoAbSU40lACUlLSUAIaKXFJQAhpKUiigApKKKAEpKWigBKSlpKAEooNAOe1ABSUtJmgBKKKKACkooNACUUUUAJQaDRQA3HNFKaSgApKDuzxik2jOaAA0lLRQA2kp1JQAlFFFACUmKWikA00UtJQAh4600MG6GlIyMUKoXpQMTPNFLjmkpAJSU6koASkpaDQA2iijpQA0k9hR2paDQAlJ9aWkxQAlFL2pCaAEpKWkoGIRSU403HfmgApCKWk7UgEooooAQig0GigBuKTvTqSgBKKKDQMQ8UGgc0mKAEzmjFLSGgBMUjDNONJSA9335FMz7UgP0pDj1rQzGuRmmk8Upz68VGzACgYwkg8Hio2f8ACnkg9ahkYDgdaAIpD6VVc5Pep3bPAqIpjk0AN2jHvTCOacWxTCc0ANYVGeKe1Rk5FADWplONNoAa1MNONNNADTxSUvem4oAQ0nelNJQAhpppxpKAEpDS0hoASkNLSUAJSUtFACdqSlpKAA0lLSUAJRQaKAEooooASkpaKAENJSmigBKSlNJQAhpKcaSgApDS0lABSUtJQAhPFGc0hbnFFAC0lFFACZzSUYooADSUE4o60AIaSlIBpMUAIKKWjFIBKSlpKACkxRRQAlJS0lIApKKTvQMDSUtJQAGkNFJkHoQaACkpTSUAJmiij60AJSZpaT60AH4U007NJQAlFHeigBDSUtJSGJSdKWigBMUhNLSUAJ3o70E4pAwY+9ABSUpHFFADScU0tTyM03aBzQACiiikMQ+nNFJjmimAntRS0hoA9uyfWkJpM8cUwk9+lWZj88VGxprTKoxUW/dnFAxWPfOKgdyeMU7nJyaa2MUAMwO9Mds96U/XNRtn8KAEIphoJNMJzxQA1jmmkYpxqNqBCGmE04nIphoGIaaTTjwKYaAENIRSkU2gBDSGlxSUAIaSlNJQAn4UlLSGkAhpKWkoASilNJTASkpaSgBKKWkoASilpKAEopab0oAKKM0UAIaKKDQAlFFFACGkpaKAEpKWigBMUh4FLSE0ANBBpaKKAEzzikpcDOaKAEpORS0UANzmjilpOtACUUUUAJR2opC2DSATOaKU0nSgBD0oxQelA+lACUlKee1JikMSmvkjin0hoAavA5opaQg9jQAhpoRVOQOafSYoATGaSnU2gApKWkyAaAEooooAbQKWkoGJ360lLyKQ9KAEoyKWkIpAJQaKTNABSUtJQAjLuHp9KhVQrcsSfepqQgEUAFGaaqkU6gBKKDRQMSkpeKT60gEooNFMBuecYoNLihsUAevec0Z+Vtw9DSmSaTttFOG0dBRv44qzMYExyxzQWGKTzOelIzcUDDORUDMQacWphY0AMLZprfWlbHWmE5oENOaYTzzTiab1oARjgVGTTyPemE0ANJppzSmmZoGIc0Ggmm0AFJS00igBue1FL0pDQAhpKWkoASkpaSgBDSUppKAEopaQ0gCm06kpgJSUtFACEZ60gGKU0lABRxmj8aMUAJSUtJQAUlLSUAFJ9aWkPWgApKU0lACUGiigBKQjNLSGgBMUlOpKAEopaSgApKWkoASiiigBKSlpKQCUhAJp1JQAUhpaSgBKQ0tJQMTmjFLSUAJQaKO1IBpFBpaQ0AJSZOfajPNFABSGlpDQAlJSmm55oAKDS9aaTigYUlANBoAO9IaOabnB5NAC0lLSfzoARjik60pGaQDApAHekpaSgBCQKQHNIy5PWlAwKACkpaSgAooFFACetJ+NLSUhiGk706kpgFN7U6k96Qz10Nk801jg8U3dRz61ZkKc4phY0jH3qMnigYrMaaxOKC1MJpgBORUZOKcTimE57UAIeabnFKSaYaQgJzTCaWkbigY002nGmmgBDTc4pTSUwEpKWkNACU00tJQA3nPtS0GikAlJS0lACUlKaTrTAKSlpKACkpTSUAJSHpTqSgBqnPGDS0UUAJn2opTSUAFIetFGaAEpKCTmlNACUlLSUAFJS0lABSUUUAJRRQaAEpKWigBtGKWkoASloNJQAUlLmikA2kIzS0UAJ2pKU0lABSUuKSgBO1JmnU2gYUlLQaAGEZPWlpTSUANz2opaKQDTSGnUlADfekNONJQAlIRmlooATpSUppKBid6QmnU04oAKaSD1p1M2c5oACewopaKAEpKWkNIBKSl70hoASil60hoASig0nPegAoNHSkNAwzxTTmloNIBMe5/Om4PYmn0lADPmHXpS5yKU0mKBnqxcU3ecU3OaaxxVmQ4k0hJ9Kbvppc9qBis1MoJpDQApNMLUGm4HegAJpppGNJmgAJprGndaaelADaQ0UhoAKQ0GkzQAlBo60lACGkNKaSgBKSlpDQMKSlpKBBTaWkpgFJS0lIApKWkNMBKKKKACkpaSgAoNHakNABSUtJigANJS0lACUlLRQAhpKB1ooADSGlpKACkpTSUAJSUppKADrRR3ooADTaWmnPagBaSjGO9FIApO9LSGgBDRQaKAEpDS0lABSUppDQAUlAz3ooGJSGlpKAEpp46806kIGKQCA8ZopaQ0AIaTFLSUAJRRQTQAdqaaCeKKAENFLim4oAKQ0tI3TikAlBpBx1pc0DExSGl4NIaAEpOaQk5pTQAGm0vekz6UAIaM0hz60DjrQMOlFFJSEKaSikwaBi5pKKSgBf5U38DS54pvQ0AeoE0mabmkqyBxJpuaQnikzQApPvTc8UpORTKADPvSZxRxTaAA8000pNITQAmaQ0E0ZoAaaSlNJmgBM0hpc0hoASkpaaaACkpCWz7UtAwprEKpJpTVa8SRosRk59qmTaV0NK7Gx6hDJOYuQ4q1WdY2ZjYu4BJ9a0KINtXYSST0ENJS0lUIKSlpKACkpTSUAJRS0lABSUtFACUlLQaBCUlL2opgJSYApaKAGkGkyR1FOpMUANApTRSGgApKWkIPrQAUlLRQAlJSmkoASg0UEZoASkpaKQCUUUUAJR3ooxQAhpPxpaTqKAG859qXpS4pKAEpp9M07FJQMQdOaKN3PSg0AJTCSPpTs80UgE60UYA6UUAIaTmlpKAAimnrTqbyKACko5pTQA3r1FFLSZFIBpFHSl5zSUAFJS0lADaKWm0AB4ptKaSgYhpKDSZoADSGjNITQAGjNN3dqDSGGaQ0ZpCaAFzRnFJmk4oAX6GjPNJmigAzQaQ9eaDQB6WD6UZpoOKN1WQLnNBpu72oJoADikzzSZNJn1oAcSDTT7UE02gA+tIetBpM0AGcUhozmkNACUlKaSgBOlJS0hoAQg5pMcUtFACUlBooASkNLSUAFIaWkoGJRRRQISkpaKAEpKWkoGBpKKWgBKKKKAEooooASkpTSZoACM0lONJQISkNLSc5oAKQ0tJQAlJS0UAJRRRQA3vRTqSgBKSlooASiiigYlIfalpDQAlJkZpc0GgBKKKKAEpKWkoAQ0hpc0YoASkPelpO9ACbcUUuaSkAhpKXFJ2oGJSUtHSgQlIRxS0HpQMSkoooEJTcc5p1FIYhpppx5ptAhOaKX8aaTQMQ00mgmm5oAU00nijNNNAAxOOKQH1oJptADiabupM03NIBcikzTSeaTNAx3NGaYWpM0wH7qM8UzNG6kA4EigNTM0ZoGP3Dpigmo8ijpQI9NpTTc0bhVEBmik60lMBc0hopCaADNJmg0ZoATJpDQTSZoAKSlpKAEoopKACkJoooASkpaQ0AFJRRQMQ0mKU0lABSGlpDQAlFGKSgAoopKACkNLSUAFFFFACUUUlAgooooASkpaQ0AFJS0lABRRmkoADSUtJQAUlLRQAlFFJQMDSUUtADaKWk7UCE4pKWigYhpKWkoAQ80UtJQAlFISaQg4460gFpKRN38dLQAHpTfpS0UAJSGlooAbnikU7uxpaOlACGig0GgBKSlpM+ooAKQ0tIeRSGJSGlwaTrQAneil/lTSaAE70lKTTd1ACMcUzcD0NKTmo2GDxQArHNJ0pM00n3oAUnmm559qTNNLYoAUmmF/alLVGTz0pAOz3pC3NNJ4ppagBxOeaaTSZppamMdn0ozURY0bqAJCxpq5Bpu7ijd+FAEm7NGfeo80m76UgJM0bsmoy1G7igD1LNJRRVGYZpM0UUDDNITRRTAaTR+NFFACZpKKKAEzRmiigBKTNFFABSZoooATNJmiigApKKKQxDRRRQAmaSiimAUlFFIApKKKAEooooASjNFFACUUUUAFJmiigQmaKKKYBmkzRRQAmRRmiigAzSZoooAKSiigApM0UUDEzQaKKAEppoooAWkJoopAJmjNFFABmkoooASkJ9KKKAGLkk5pxNFFACZ4pM0UUABpM0UUAJSZoooACaTNFFAxCRRmiigBDSZoopAJmiiigBKaTRRQCGM3403NFFAxpNNJ5oooAYTTSRRRQAwmmk5FFFIQ0tTSaKKAG5pu7FFFAhpam7s0UUxibqbuoooAM0m6iikAFuaTdRRQxhuxRv49KKKEB//9k=", 48 | "imageHeight": 600, 49 | "imageWidth": 800 50 | } -------------------------------------------------------------------------------- /images/train/IMG_20190104_164121.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164121.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164125.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164125.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164130.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164130.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164134.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164134.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164153.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164153.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164157.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164157.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164200.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164200.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164205.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164205.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164220.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164220.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164227.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164227.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164233.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164233.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164240.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164240.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164248.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164248.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164252.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164252.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164259.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164259.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164312.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164312.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164400.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164400.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164405.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164405.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164409.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164409.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164415.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164415.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164422.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164422.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164430.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164430.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164434.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164434.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164440.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164440.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164523.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164523.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164528.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164528.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164532.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164532.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164540.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164540.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164548.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164548.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164559.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164559.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164604.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164604.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164611.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164611.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164615.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164615.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164622.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164622.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164630.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164630.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_164635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_164635.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_165104.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_165104.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_165108.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_165108.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_165119.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_165119.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_165129.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_165129.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_165139.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_165139.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_165146.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_165146.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_165200.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_165200.jpg -------------------------------------------------------------------------------- /images/train/IMG_20190104_165204.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/images/train/IMG_20190104_165204.jpg -------------------------------------------------------------------------------- /resize_images.py: -------------------------------------------------------------------------------- 1 | from PIL import Image 2 | import os 3 | import argparse 4 | 5 | def rescale_images(directory, size): 6 | for img in os.listdir(directory): 7 | im = Image.open(directory+img) 8 | im_resized = im.resize(size, Image.ANTIALIAS) 9 | im_resized.save(directory+img) 10 | 11 | if __name__ == '__main__': 12 | parser = argparse.ArgumentParser(description="Rescale images") 13 | parser.add_argument('-d', '--directory', type=str, required=True, help='Directory containing the images') 14 | parser.add_argument('-s', '--size', type=int, nargs=2, required=True, metavar=('width', 'height'), help='Image size') 15 | args = parser.parse_args() 16 | rescale_images(args.directory, args.size) -------------------------------------------------------------------------------- /test.record: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/test.record -------------------------------------------------------------------------------- /train.record: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/train.record -------------------------------------------------------------------------------- /training/labelmap.pbtxt: -------------------------------------------------------------------------------- 1 | item { 2 | id: 1 3 | name: 'Arduino' 4 | } 5 | item { 6 | id: 2 7 | name: 'ESP8266' 8 | } 9 | item { 10 | id: 3 11 | name: 'Heltec' 12 | } 13 | item { 14 | id: 4 15 | name: 'Raspberry' 16 | } -------------------------------------------------------------------------------- /training/mask_rcnn_inception_resnet_v2_1024x1024_coco17_gpu-8.config: -------------------------------------------------------------------------------- 1 | # Mask R-CNN with Inception Resnet v2 (no atrous) 2 | # Sync-trained on COCO (with 8 GPUs) with batch size 16 (1024x1024 resolution) 3 | # Initialized from Imagenet classification checkpoint 4 | # 5 | # Train on GPU-8 6 | # 7 | # Achieves 40.4 box mAP and 35.5 mask mAP on COCO17 val 8 | 9 | model { 10 | faster_rcnn { 11 | number_of_stages: 3 12 | num_classes: 4 13 | image_resizer { 14 | fixed_shape_resizer { 15 | height: 1024 16 | width: 1024 17 | } 18 | } 19 | feature_extractor { 20 | type: 'faster_rcnn_inception_resnet_v2_keras' 21 | } 22 | first_stage_anchor_generator { 23 | grid_anchor_generator { 24 | scales: [0.25, 0.5, 1.0, 2.0] 25 | aspect_ratios: [0.5, 1.0, 2.0] 26 | height_stride: 16 27 | width_stride: 16 28 | } 29 | } 30 | first_stage_box_predictor_conv_hyperparams { 31 | op: CONV 32 | regularizer { 33 | l2_regularizer { 34 | weight: 0.0 35 | } 36 | } 37 | initializer { 38 | truncated_normal_initializer { 39 | stddev: 0.01 40 | } 41 | } 42 | } 43 | first_stage_nms_score_threshold: 0.0 44 | first_stage_nms_iou_threshold: 0.7 45 | first_stage_max_proposals: 300 46 | first_stage_localization_loss_weight: 2.0 47 | first_stage_objectness_loss_weight: 1.0 48 | initial_crop_size: 17 49 | maxpool_kernel_size: 1 50 | maxpool_stride: 1 51 | second_stage_box_predictor { 52 | mask_rcnn_box_predictor { 53 | use_dropout: false 54 | dropout_keep_probability: 1.0 55 | fc_hyperparams { 56 | op: FC 57 | regularizer { 58 | l2_regularizer { 59 | weight: 0.0 60 | } 61 | } 62 | initializer { 63 | variance_scaling_initializer { 64 | factor: 1.0 65 | uniform: true 66 | mode: FAN_AVG 67 | } 68 | } 69 | } 70 | mask_height: 33 71 | mask_width: 33 72 | mask_prediction_conv_depth: 0 73 | mask_prediction_num_conv_layers: 4 74 | conv_hyperparams { 75 | op: CONV 76 | regularizer { 77 | l2_regularizer { 78 | weight: 0.0 79 | } 80 | } 81 | initializer { 82 | truncated_normal_initializer { 83 | stddev: 0.01 84 | } 85 | } 86 | } 87 | predict_instance_masks: true 88 | } 89 | } 90 | second_stage_post_processing { 91 | batch_non_max_suppression { 92 | score_threshold: 0.0 93 | iou_threshold: 0.6 94 | max_detections_per_class: 100 95 | max_total_detections: 100 96 | } 97 | score_converter: SOFTMAX 98 | } 99 | second_stage_localization_loss_weight: 2.0 100 | second_stage_classification_loss_weight: 1.0 101 | second_stage_mask_prediction_loss_weight: 4.0 102 | resize_masks: false 103 | } 104 | } 105 | 106 | train_config: { 107 | batch_size: 1 108 | num_steps: 3000 109 | optimizer { 110 | momentum_optimizer: { 111 | learning_rate: { 112 | cosine_decay_learning_rate { 113 | learning_rate_base: 0.008 114 | total_steps: 200000 115 | warmup_learning_rate: 0.0 116 | warmup_steps: 5000 117 | } 118 | } 119 | momentum_optimizer_value: 0.9 120 | } 121 | use_moving_average: false 122 | } 123 | gradient_clipping_by_norm: 10.0 124 | fine_tune_checkpoint_version: V2 125 | fine_tune_checkpoint: "mask_rcnn_inception_resnet_v2_1024x1024_coco17_gpu-8/checkpoint/ckpt-0" 126 | fine_tune_checkpoint_type: "detection" 127 | data_augmentation_options { 128 | random_horizontal_flip { 129 | } 130 | } 131 | } 132 | 133 | train_input_reader: { 134 | label_map_path: "/content/labelmap.pbtxt" 135 | tf_record_input_reader { 136 | input_path: "/content/train.record" 137 | } 138 | load_instance_masks: true 139 | mask_type: PNG_MASKS 140 | } 141 | 142 | eval_config: { 143 | metrics_set: "coco_detection_metrics" 144 | metrics_set: "coco_mask_metrics" 145 | eval_instance_masks: true 146 | use_moving_averages: false 147 | batch_size: 1 148 | include_metrics_per_category: true 149 | } 150 | 151 | eval_input_reader: { 152 | label_map_path: "/content/labelmap.pbtxt" 153 | shuffle: false 154 | num_epochs: 1 155 | tf_record_input_reader { 156 | input_path: "/content/test.record" 157 | } 158 | load_instance_masks: true 159 | mask_type: PNG_MASKS 160 | } -------------------------------------------------------------------------------- /training/saved_model.pb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TannerGilbert/Tensorflow-Object-Detection-API-train-custom-Mask-R-CNN-model/e65aacc9e9308e5435185a77086a771d4a7dc93b/training/saved_model.pb --------------------------------------------------------------------------------