├── .gitignore ├── Documentation~ ├── images │ ├── blazeface.png │ ├── mobilenet.png │ └── yolo.png └── index.md ├── LICENSE.md ├── README.md ├── Third Party Notices.md └── UnityProject ├── .gitignore ├── Assets ├── 01-StaticImageRecognition-MobileNetV2.meta ├── 01-StaticImageRecognition-MobileNetV2 │ ├── 01-StaticImageRecognition-MobileNetV2.unity │ ├── 01-StaticImageRecognition-MobileNetV2.unity.meta │ ├── Images.meta │ ├── Images │ │ ├── Bee.jpg │ │ ├── Bee.jpg.meta │ │ ├── Coffee mug.jpg │ │ ├── Coffee mug.jpg.meta │ │ ├── Radiator.jpg │ │ ├── Radiator.jpg.meta │ │ ├── Rottweiler.jpg │ │ ├── Rottweiler.jpg.meta │ │ ├── Tailed frog.jpg │ │ └── Tailed frog.jpg.meta │ ├── Models.meta │ ├── Models │ │ ├── class_desc.txt │ │ ├── class_desc.txt.meta │ │ ├── mobilenet_v2.onnx │ │ └── mobilenet_v2.onnx.meta │ ├── Scripts.meta │ ├── Scripts │ │ ├── RunInferenceMobileNet.cs │ │ └── RunInferenceMobileNet.cs.meta │ ├── Shaders.meta │ ├── Shaders │ │ ├── NormalizeInput.mat │ │ ├── NormalizeInput.mat.meta │ │ ├── NormalizeInput.shader │ │ └── NormalizeInput.shader.meta │ ├── UnityUI.meta │ └── UnityUI │ │ ├── Fonts.meta │ │ ├── Fonts │ │ ├── Jupiter.meta │ │ └── Jupiter │ │ │ ├── Jupiter.ttf │ │ │ ├── Jupiter.ttf.meta │ │ │ ├── LICENSE.txt │ │ │ └── LICENSE.txt.meta │ │ ├── Prefabs.meta │ │ ├── Prefabs │ │ ├── SF Toggle.prefab │ │ └── SF Toggle.prefab.meta │ │ ├── Textures and Sprites.meta │ │ └── Textures and Sprites │ │ ├── SF UI.meta │ │ └── SF UI │ │ ├── SF Generic.psd │ │ └── SF Generic.psd.meta ├── 02-FaceTracking-BlazeFace.meta ├── 02-FaceTracking-BlazeFace │ ├── 02-FaceTracking-BlazeFace.unity │ ├── 02-FaceTracking-BlazeFace.unity.meta │ ├── Marker.meta │ ├── Marker │ │ ├── KeyPointsMarker.prefab │ │ ├── KeyPointsMarker.prefab.meta │ │ ├── Marker.cs │ │ └── Marker.cs.meta │ ├── Models.meta │ ├── Models │ │ ├── face_detection_front_128x128_barracuda.onnx │ │ └── face_detection_front_128x128_barracuda.onnx.meta │ ├── Scripts.meta │ ├── Scripts │ │ ├── RunInferenceBlazeFace.cs │ │ └── RunInferenceBlazeFace.cs.meta │ ├── Shaders.meta │ ├── Shaders │ │ ├── Common.hlsl │ │ ├── Common.hlsl.meta │ │ ├── Postprocess1.compute │ │ ├── Postprocess1.compute.meta │ │ ├── Postprocess1Kernel.hlsl │ │ ├── Postprocess1Kernel.hlsl.meta │ │ ├── Postprocess2.compute │ │ ├── Postprocess2.compute.meta │ │ ├── Preprocess.compute │ │ └── Preprocess.compute.meta │ ├── UnityUI.meta │ └── UnityUI │ │ ├── Fonts.meta │ │ ├── Fonts │ │ ├── Jupiter.meta │ │ └── Jupiter │ │ │ ├── Jupiter.ttf │ │ │ ├── Jupiter.ttf.meta │ │ │ ├── LICENSE.txt │ │ │ └── LICENSE.txt.meta │ │ ├── Prefabs.meta │ │ ├── Prefabs │ │ ├── SF Toggle.prefab │ │ └── SF Toggle.prefab.meta │ │ ├── Textures and Sprites.meta │ │ └── Textures and Sprites │ │ ├── SF UI.meta │ │ └── SF UI │ │ ├── SF Generic.psd │ │ └── SF Generic.psd.meta ├── 03-MultiObjectStaticImageRecognition-YoloV3Tiny.meta └── 03-MultiObjectStaticImageRecognition-YoloV3Tiny │ ├── 03-MultiObjectStaticImageRecognition-YoloV3Tiny.unity │ ├── 03-MultiObjectStaticImageRecognition-YoloV3Tiny.unity.meta │ ├── Images.meta │ ├── Images │ ├── balcony.png │ ├── balcony.png.meta │ ├── camp.png │ ├── camp.png.meta │ ├── cars.png │ ├── cars.png.meta │ ├── table.png │ └── table.png.meta │ ├── Models.meta │ ├── Models │ ├── classes.txt │ ├── classes.txt.meta │ ├── yolov3-tiny-original.onnx │ └── yolov3-tiny-original.onnx.meta │ ├── Scripts.meta │ ├── Scripts │ ├── RunInferenceYOLO.cs │ └── RunInferenceYOLO.cs.meta │ ├── UnityUI.meta │ └── UnityUI │ ├── Fonts.meta │ ├── Fonts │ ├── Jupiter.meta │ └── Jupiter │ │ ├── Jupiter.ttf │ │ ├── Jupiter.ttf.meta │ │ ├── LICENSE.txt │ │ └── LICENSE.txt.meta │ ├── Prefabs.meta │ ├── Prefabs │ ├── SF Toggle.prefab │ └── SF Toggle.prefab.meta │ ├── Textures and Sprites.meta │ └── Textures and Sprites │ ├── SF UI.meta │ └── SF UI │ ├── SF Generic.psd │ └── SF Generic.psd.meta ├── Packages ├── manifest.json └── packages-lock.json └── ProjectSettings ├── AudioManager.asset ├── BurstAotSettings_Android.json ├── BurstAotSettings_WebGL.json ├── BurstAotSettings_iOS.json ├── ClusterInputManager.asset ├── CommonBurstAotSettings.json ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── PackageManagerSettings.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset └── XRSettings.asset /.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uilds/ 10 | /[Ll]ogs/ 11 | /[Mm]emoryCaptures/ 12 | 13 | # Asset meta data should only be ignored when the corresponding asset is also ignored 14 | !/[Aa]ssets/**/*.meta 15 | 16 | # Uncomment this line if you wish to ignore the asset store tools plugin 17 | # /[Aa]ssets/AssetStoreTools* 18 | 19 | # Autogenerated Jetbrains Rider plugin 20 | [Aa]ssets/Plugins/Editor/JetBrains* 21 | 22 | # Visual Studio cache directory 23 | .vs/ 24 | 25 | # Gradle cache directory 26 | .gradle/ 27 | 28 | # Autogenerated VS/MD/Consulo solution and project files 29 | ExportedObj/ 30 | .consulo/ 31 | *.csproj 32 | *.unityproj 33 | *.sln 34 | *.suo 35 | *.tmp 36 | *.user 37 | *.userprefs 38 | *.pidb 39 | *.booproj 40 | *.svd 41 | *.pdb 42 | *.mdb 43 | *.opendb 44 | *.VC.db 45 | 46 | # Unity3D generated meta files 47 | *.pidb.meta 48 | *.pdb.meta 49 | *.mdb.meta 50 | 51 | # Unity3D generated file on crash reports 52 | sysinfo.txt 53 | 54 | # Builds 55 | *.apk 56 | *.unitypackage 57 | 58 | # Crashlytics generated file 59 | crashlytics-build.properties 60 | 61 | -------------------------------------------------------------------------------- /Documentation~/images/blazeface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/Documentation~/images/blazeface.png -------------------------------------------------------------------------------- /Documentation~/images/mobilenet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/Documentation~/images/mobilenet.png -------------------------------------------------------------------------------- /Documentation~/images/yolo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/Documentation~/images/yolo.png -------------------------------------------------------------------------------- /Documentation~/index.md: -------------------------------------------------------------------------------- 1 | # Barracuda Starter Kit 2 | 3 | This is a [Barracuda](https://github.com/Unity-Technologies/barracuda-release) demo library containing usage examples. All examples are also compatible with mobile platforms (iOS and Android) and WebGL (except the Face Tracking demo). 4 | 5 | Each example is placed in a separate folder with a demo scene and all the required resources. If you want to add your images, make sure to check the Texture Import Settings on the example images. 6 | 7 | ## Static Image Recognition 8 | 9 | ![MobileNetV2](images/mobilenet.png) 10 | 11 | MobileNetV2 [pytorch.org](https://pytorch.org/hub/pytorch_vision_mobilenet_v2) example running in Barracuda on a set of static images. 12 | 13 | To use this demo, open and run the `01-StaticImageRecognition-MobileNetV2` scene. Select the image and the top matching class will be selected for it, outputting the class name and accuracy percentage. 14 | 15 | This model was converted to `onnx` file using Python and `torch.onnx` from the `pytorch_vision_mobilenet_v2.ipynb` Google Colab. Softmax layer was added to the output layer to normalize resulting accuracy values. The following script was added to the PyTorch MobileNet demo source code. 16 | ```Python 17 | import torch 18 | import torch.onnx 19 | #... 20 | #... 21 | model = torch.nn.Sequential(model, torch.nn.Softmax(1)) 22 | torch_onnx.export(model, input_batch, "mobilenet_v2.onnx", verbose=False) 23 | ``` 24 | 25 | This model has 1000 classes and should be used with a square `224x224` image. Demo project preprocesses the image to fit the target image dimensions, but the best accuracy is reached when the height and width ratio equals one. 26 | 27 | Images used for this demo are created by Aurimas Petrovas and are under Unity license. 28 | 29 | ## Face Tracking 30 | 31 | ![BlazeFace](images/blazeface.png) 32 | 33 | [MediaPipe BlazeFace](https://sites.google.com/view/perception-cv4arvr/blazeface) model. Simplified real time camera face tracking Barracuda demo [project](https://github.com/keijiro/BlazeFaceBarracuda) originally created by Keijiro Takahashi. 34 | 35 | To use this demo, open and run the `02-FaceTracking-BlazeFace` scene. Point the web camera at a face and it will add a bounding box around the face with accuracy percentage and facial feature points. 36 | 37 | The BlazeFace ONNX model was originally converted by PINTO0309 (Katsuya Hyodo). 38 | Please refer to [his model zoo](https://github.com/PINTO0309/PINTO_model_zoo) for more information. Keijiro Takahashi converted his ONNX model into a Barracuda-compatible form. Please 39 | check [this Colab notebook]( https://colab.research.google.com/drive/1O1KDIVsmYyYDqEqv7hEqofsHMCa49xaZ?usp=sharing) for the details of the conversion process. 40 | 41 | ## Multi Object Static Image Recognition 42 | 43 | ![YOLOv3Tiny](images/yolo.png) 44 | 45 | YOLOv3-tiny [pjreddie.com](https://pjreddie.com/darknet/yolo/) example running in Barracuda on a set of static images. Converted to ONNX using [jkjung-avt](https://github.com/jkjung-avt/tensorrt_demos) tools. 46 | 47 | To use this demo, open and run the `03-MultiObjectStaticImageRecognition-YoloV3Tiny` scene. Select the image and the top matching classes will be marked on it, outputting the class name and bounding box. 48 | 49 | This model was converted to `onnx` file using [yolo_to_onnx.py](https://github.com/jkjung-avt/tensorrt_demos/blob/master/yolo/yolo_to_onnx.py) script. Resolution was set to 640x640 in the `yolov3-tiny.cfg` configuration file. 50 | ```Python 51 | width=640 52 | height=640 53 | ``` 54 | 55 | This model has 80 classes and can detect up to 6000 objects in a single image. The example Barracuda project includes an output decoder, non max suppression and visualization. 56 | 57 | Images used for this demo are created by Aurimas Petrovas and are under Unity license. 58 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Barracuda copyright © 2021 Unity Technologies ApS 2 | 3 | Licensed under the Unity Companion License for Unity-dependent projects--see [Unity Companion License](http://www.unity3d.com/legal/licenses/Unity_Companion_License). 4 | 5 | Unless expressly provided otherwise, the Software under this license is made available strictly on an “AS IS” BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. Please review the license for details on these and other terms and conditions. 6 | 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Barracuda Starter Kit 2 | 3 | ![MobileNetV2](Documentation~/images/mobilenet.png) 4 | 5 | This is a [Barracuda](https://github.com/Unity-Technologies/barracuda-release) demo library containing usage examples. All examples are also compatible with mobile platforms (iOS and Android) and WebGL (except the Face Tracking demo). 6 | 7 | ## Static Image Recognition 8 | 9 | MobileNetV2 [pytorch.org](https://pytorch.org/hub/pytorch_vision_mobilenet_v2) example running in Barracuda on a set of static images. 10 | 11 | ## Face Tracking 12 | 13 | [MediaPipe BlazeFace](https://sites.google.com/view/perception-cv4arvr/blazeface) model. Simplified real time camera face tracking Barracuda demo [project](https://github.com/keijiro/BlazeFaceBarracuda) originally created by Keijiro Takahashi. 14 | 15 | ## Multi Object Static Image Recognition 16 | 17 | YOLOv3-tiny [pjreddie.com](https://pjreddie.com/darknet/yolo/) example running in Barracuda on a set of static images. 18 | 19 | ## Unity 20 | 21 | This project requires Unity 2019.4.29f1 or later. 22 | -------------------------------------------------------------------------------- /Third Party Notices.md: -------------------------------------------------------------------------------- 1 | This package contains third-party software components governed by the license(s) indicated below: 2 | --------- 3 | 4 | Component Name: pytorch_vision_mobilenet_v2 5 | 6 | Source link: https://pytorch.org/hub/pytorch_vision_mobilenet_v2/ 7 | 8 | BSD 3-Clause License 9 | 10 | Copyright (c) Soumith Chintala 2016, 11 | All rights reserved. 12 | 13 | Redistribution and use in source and binary forms, with or without 14 | modification, are permitted provided that the following conditions are met: 15 | 16 | * Redistributions of source code must retain the above copyright notice, this 17 | list of conditions and the following disclaimer. 18 | 19 | * Redistributions in binary form must reproduce the above copyright notice, 20 | this list of conditions and the following disclaimer in the documentation 21 | and/or other materials provided with the distribution. 22 | 23 | * Neither the name of the copyright holder nor the names of its 24 | contributors may be used to endorse or promote products derived from 25 | this software without specific prior written permission. 26 | 27 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 28 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 29 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 30 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 31 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 32 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 33 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 34 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 35 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 36 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 37 | 38 | --------- 39 | 40 | Component Name: Keijiro Mediapipe Blazeface 41 | 42 | Source link: https://github.com/keijiro/BlazeFaceBarracuda 43 | 44 | Apache License 45 | 46 | Version 2.0, January 2004 47 | http://www.apache.org/licenses/ 48 | 49 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 50 | 51 | 1. Definitions. 52 | 53 | "License" shall mean the terms and conditions for use, reproduction, 54 | and distribution as defined by Sections 1 through 9 of this document. 55 | 56 | "Licensor" shall mean the copyright owner or entity authorized by 57 | the copyright owner that is granting the License. 58 | 59 | "Legal Entity" shall mean the union of the acting entity and all 60 | other entities that control, are controlled by, or are under common 61 | control with that entity. For the purposes of this definition, 62 | "control" means (i) the power, direct or indirect, to cause the 63 | direction or management of such entity, whether by contract or 64 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 65 | outstanding shares, or (iii) beneficial ownership of such entity. 66 | 67 | "You" (or "Your") shall mean an individual or Legal Entity 68 | exercising permissions granted by this License. 69 | 70 | "Source" form shall mean the preferred form for making modifications, 71 | including but not limited to software source code, documentation 72 | source, and configuration files. 73 | 74 | "Object" form shall mean any form resulting from mechanical 75 | transformation or translation of a Source form, including but 76 | not limited to compiled object code, generated documentation, 77 | and conversions to other media types. 78 | 79 | "Work" shall mean the work of authorship, whether in Source or 80 | Object form, made available under the License, as indicated by a 81 | copyright notice that is included in or attached to the work 82 | (an example is provided in the Appendix below). 83 | 84 | "Derivative Works" shall mean any work, whether in Source or Object 85 | form, that is based on (or derived from) the Work and for which the 86 | editorial revisions, annotations, elaborations, or other modifications 87 | represent, as a whole, an original work of authorship. For the purposes 88 | of this License, Derivative Works shall not include works that remain 89 | separable from, or merely link (or bind by name) to the interfaces of, 90 | the Work and Derivative Works thereof. 91 | 92 | "Contribution" shall mean any work of authorship, including 93 | the original version of the Work and any modifications or additions 94 | to that Work or Derivative Works thereof, that is intentionally 95 | submitted to Licensor for inclusion in the Work by the copyright owner 96 | or by an individual or Legal Entity authorized to submit on behalf of 97 | the copyright owner. For the purposes of this definition, "submitted" 98 | means any form of electronic, verbal, or written communication sent 99 | to the Licensor or its representatives, including but not limited to 100 | communication on electronic mailing lists, source code control systems, 101 | and issue tracking systems that are managed by, or on behalf of, the 102 | Licensor for the purpose of discussing and improving the Work, but 103 | excluding communication that is conspicuously marked or otherwise 104 | designated in writing by the copyright owner as "Not a Contribution." 105 | 106 | "Contributor" shall mean Licensor and any individual or Legal Entity 107 | on behalf of whom a Contribution has been received by Licensor and 108 | subsequently incorporated within the Work. 109 | 110 | 2. Grant of Copyright License. Subject to the terms and conditions of 111 | this License, each Contributor hereby grants to You a perpetual, 112 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 113 | copyright license to reproduce, prepare Derivative Works of, 114 | publicly display, publicly perform, sublicense, and distribute the 115 | Work and such Derivative Works in Source or Object form. 116 | 117 | 3. Grant of Patent License. Subject to the terms and conditions of 118 | this License, each Contributor hereby grants to You a perpetual, 119 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 120 | (except as stated in this section) patent license to make, have made, 121 | use, offer to sell, sell, import, and otherwise transfer the Work, 122 | where such license applies only to those patent claims licensable 123 | by such Contributor that are necessarily infringed by their 124 | Contribution(s) alone or by combination of their Contribution(s) 125 | with the Work to which such Contribution(s) was submitted. If You 126 | institute patent litigation against any entity (including a 127 | cross-claim or counterclaim in a lawsuit) alleging that the Work 128 | or a Contribution incorporated within the Work constitutes direct 129 | or contributory patent infringement, then any patent licenses 130 | granted to You under this License for that Work shall terminate 131 | as of the date such litigation is filed. 132 | 133 | 4. Redistribution. You may reproduce and distribute copies of the 134 | Work or Derivative Works thereof in any medium, with or without 135 | modifications, and in Source or Object form, provided that You 136 | meet the following conditions: 137 | 138 | (a) You must give any other recipients of the Work or 139 | Derivative Works a copy of this License; and 140 | 141 | (b) You must cause any modified files to carry prominent notices 142 | stating that You changed the files; and 143 | 144 | (c) You must retain, in the Source form of any Derivative Works 145 | that You distribute, all copyright, patent, trademark, and 146 | attribution notices from the Source form of the Work, 147 | excluding those notices that do not pertain to any part of 148 | the Derivative Works; and 149 | 150 | (d) If the Work includes a "NOTICE" text file as part of its 151 | distribution, then any Derivative Works that You distribute must 152 | include a readable copy of the attribution notices contained 153 | within such NOTICE file, excluding those notices that do not 154 | pertain to any part of the Derivative Works, in at least one 155 | of the following places: within a NOTICE text file distributed 156 | as part of the Derivative Works; within the Source form or 157 | documentation, if provided along with the Derivative Works; or, 158 | within a display generated by the Derivative Works, if and 159 | wherever such third-party notices normally appear. The contents 160 | of the NOTICE file are for informational purposes only and 161 | do not modify the License. You may add Your own attribution 162 | notices within Derivative Works that You distribute, alongside 163 | or as an addendum to the NOTICE text from the Work, provided 164 | that such additional attribution notices cannot be construed 165 | as modifying the License. 166 | 167 | You may add Your own copyright statement to Your modifications and 168 | may provide additional or different license terms and conditions 169 | for use, reproduction, or distribution of Your modifications, or 170 | for any such Derivative Works as a whole, provided Your use, 171 | reproduction, and distribution of the Work otherwise complies with 172 | the conditions stated in this License. 173 | 174 | 5. Submission of Contributions. Unless You explicitly state otherwise, 175 | any Contribution intentionally submitted for inclusion in the Work 176 | by You to the Licensor shall be under the terms and conditions of 177 | this License, without any additional terms or conditions. 178 | Notwithstanding the above, nothing herein shall supersede or modify 179 | the terms of any separate license agreement you may have executed 180 | with Licensor regarding such Contributions. 181 | 182 | 6. Trademarks. This License does not grant permission to use the trade 183 | names, trademarks, service marks, or product names of the Licensor, 184 | except as required for reasonable and customary use in describing the 185 | origin of the Work and reproducing the content of the NOTICE file. 186 | 187 | 7. Disclaimer of Warranty. Unless required by applicable law or 188 | agreed to in writing, Licensor provides the Work (and each 189 | Contributor provides its Contributions) on an "AS IS" BASIS, 190 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 191 | implied, including, without limitation, any warranties or conditions 192 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 193 | PARTICULAR PURPOSE. You are solely responsible for determining the 194 | appropriateness of using or redistributing the Work and assume any 195 | risks associated with Your exercise of permissions under this License. 196 | 197 | 8. Limitation of Liability. In no event and under no legal theory, 198 | whether in tort (including negligence), contract, or otherwise, 199 | unless required by applicable law (such as deliberate and grossly 200 | negligent acts) or agreed to in writing, shall any Contributor be 201 | liable to You for damages, including any direct, indirect, special, 202 | incidental, or consequential damages of any character arising as a 203 | result of this License or out of the use or inability to use the 204 | Work (including but not limited to damages for loss of goodwill, 205 | work stoppage, computer failure or malfunction, or any and all 206 | other commercial damages or losses), even if such Contributor 207 | has been advised of the possibility of such damages. 208 | 209 | 9. Accepting Warranty or Additional Liability. While redistributing 210 | the Work or Derivative Works thereof, You may choose to offer, 211 | and charge a fee for, acceptance of support, warranty, indemnity, 212 | or other liability obligations and/or rights consistent with this 213 | License. However, in accepting such obligations, You may act only 214 | on Your own behalf and on Your sole responsibility, not on behalf 215 | of any other Contributor, and only if You agree to indemnify, 216 | defend, and hold each Contributor harmless for any liability 217 | incurred by, or claims asserted against, such Contributor by reason 218 | of your accepting any such warranty or additional liability. 219 | 220 | END OF TERMS AND CONDITIONS 221 | 222 | APPENDIX: How to apply the Apache License to your work. 223 | 224 | To apply the Apache License to your work, attach the following 225 | boilerplate notice, with the fields enclosed by brackets "[]" 226 | replaced with your own identifying information. (Don't include 227 | the brackets!) The text should be enclosed in the appropriate 228 | comment syntax for the file format. We also recommend that a 229 | file or class name and description of purpose be included on the 230 | same "printed page" as the copyright notice for easier 231 | identification within third-party archives. 232 | 233 | Copyright [yyyy] [name of copyright owner] 234 | 235 | Licensed under the Apache License, Version 2.0 (the "License"); 236 | you may not use this file except in compliance with the License. 237 | You may obtain a copy of the License at 238 | 239 | http://www.apache.org/licenses/LICENSE-2.0 240 | 241 | Unless required by applicable law or agreed to in writing, software 242 | distributed under the License is distributed on an "AS IS" BASIS, 243 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 244 | See the License for the specific language governing permissions and 245 | limitations under the License. 246 | 247 | --------- 248 | 249 | Component Name: YOLO: Real-Time Object Detection 250 | 251 | Source link: https://pjreddie.com/darknet/yolo/ 252 | 253 | YOLO Licence 254 | 255 | Version 2, July 29 2016 256 | 257 | THIS SOFTWARE LICENSE IS PROVIDED "ALL CAPS" SO THAT YOU KNOW IT IS SUPER 258 | SERIOUS AND YOU DON'T MESS AROUND WITH COPYRIGHT LAW BECAUSE YOU WILL GET IN 259 | TROUBLE HERE ARE SOME OTHER BUZZWORDS COMMONLY IN THESE THINGS WARRANTIES 260 | LIABILITY CONTRACT TORT LIABLE CLAIMS RESTRICTION MERCHANTABILITY. NOW HERE'S 261 | THE REAL LICENSE: 262 | 263 | 0. Darknet is public domain. 264 | 1. Do whatever you want with it. 265 | 2. Stop emailing me about it! 266 | 267 | --------- 268 | 269 | Component Name: jkjung-avt yolo to onnx model converter 270 | 271 | Source link: https://github.com/jkjung-avt/tensorrt_demos 272 | 273 | MIT License 274 | 275 | Copyright (c) 2019 JK Jung 276 | 277 | Permission is hereby granted, free of charge, to any person obtaining a copy 278 | of this software and associated documentation files (the "Software"), to deal 279 | in the Software without restriction, including without limitation the rights 280 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 281 | copies of the Software, and to permit persons to whom the Software is 282 | furnished to do so, subject to the following conditions: 283 | 284 | The above copyright notice and this permission notice shall be included in all 285 | copies or substantial portions of the Software. 286 | 287 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 288 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 289 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 290 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 291 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 292 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 293 | SOFTWARE. 294 | -------------------------------------------------------------------------------- /UnityProject/.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uilds/ 10 | /[Ll]ogs/ 11 | /[Mm]emoryCaptures/ 12 | 13 | # Asset meta data should only be ignored when the corresponding asset is also ignored 14 | !/[Aa]ssets/**/*.meta 15 | 16 | # Uncomment this line if you wish to ignore the asset store tools plugin 17 | # /[Aa]ssets/AssetStoreTools* 18 | 19 | # Autogenerated Jetbrains Rider plugin 20 | [Aa]ssets/Plugins/Editor/JetBrains* 21 | 22 | # Visual Studio cache directory 23 | .vs/ 24 | 25 | # Gradle cache directory 26 | .gradle/ 27 | 28 | # Autogenerated VS/MD/Consulo solution and project files 29 | ExportedObj/ 30 | .consulo/ 31 | *.csproj 32 | *.unityproj 33 | *.sln 34 | *.suo 35 | *.tmp 36 | *.user 37 | *.userprefs 38 | *.pidb 39 | *.booproj 40 | *.svd 41 | *.pdb 42 | *.mdb 43 | *.opendb 44 | *.VC.db 45 | 46 | # Unity3D generated meta files 47 | *.pidb.meta 48 | *.pdb.meta 49 | *.mdb.meta 50 | 51 | # Unity3D generated file on crash reports 52 | sysinfo.txt 53 | 54 | # Builds 55 | *.apk 56 | *.unitypackage 57 | 58 | # Crashlytics generated file 59 | crashlytics-build.properties 60 | 61 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 22a0382d1753245dc9411942a1ec9587 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/01-StaticImageRecognition-MobileNetV2.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f7098788fb77c4e39988e28c915a6897 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Images.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4a4e930f43e8645dbab486b22c15ccb3 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Images/Bee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Images/Bee.jpg -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Images/Bee.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ceca61de593c84c25902660c61738ae2 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 0 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: 0 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: 4 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: 4 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: iPhone 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: 4 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: Android 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: 4 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | - serializedVersion: 3 111 | buildTarget: WebGL 112 | maxTextureSize: 2048 113 | resizeAlgorithm: 0 114 | textureFormat: 4 115 | textureCompression: 1 116 | compressionQuality: 50 117 | crunchedCompression: 0 118 | allowsAlphaSplitting: 0 119 | overridden: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | spritePackingTag: 136 | pSDRemoveMatte: 0 137 | pSDShowRemoveMatteOption: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Images/Coffee mug.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Images/Coffee mug.jpg -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Images/Coffee mug.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c05ab2221cf054964ab1efd3c7a52872 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 0 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: 0 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: 4 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: 4 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: iPhone 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: 4 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: Android 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: 4 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | - serializedVersion: 3 111 | buildTarget: WebGL 112 | maxTextureSize: 2048 113 | resizeAlgorithm: 0 114 | textureFormat: 4 115 | textureCompression: 1 116 | compressionQuality: 50 117 | crunchedCompression: 0 118 | allowsAlphaSplitting: 0 119 | overridden: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | spritePackingTag: 136 | pSDRemoveMatte: 0 137 | pSDShowRemoveMatteOption: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Images/Radiator.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Images/Radiator.jpg -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Images/Radiator.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cb84b5aa4aca2403ebc5875cf32a5918 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 0 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: 0 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: 4 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: 4 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: iPhone 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: 4 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: Android 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: 4 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | - serializedVersion: 3 111 | buildTarget: WebGL 112 | maxTextureSize: 2048 113 | resizeAlgorithm: 0 114 | textureFormat: 4 115 | textureCompression: 1 116 | compressionQuality: 50 117 | crunchedCompression: 0 118 | allowsAlphaSplitting: 0 119 | overridden: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | spritePackingTag: 136 | pSDRemoveMatte: 0 137 | pSDShowRemoveMatteOption: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Images/Rottweiler.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Images/Rottweiler.jpg -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Images/Rottweiler.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ee7a8525814cb4e80a93f88931193f3c 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 0 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: 0 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: 4 67 | textureCompression: 0 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: 4 79 | textureCompression: 0 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: iPhone 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: 4 91 | textureCompression: 0 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: Android 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: 4 103 | textureCompression: 0 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | - serializedVersion: 3 111 | buildTarget: WebGL 112 | maxTextureSize: 2048 113 | resizeAlgorithm: 0 114 | textureFormat: 4 115 | textureCompression: 0 116 | compressionQuality: 50 117 | crunchedCompression: 0 118 | allowsAlphaSplitting: 0 119 | overridden: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | spritePackingTag: 136 | pSDRemoveMatte: 0 137 | pSDShowRemoveMatteOption: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Images/Tailed frog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Images/Tailed frog.jpg -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Images/Tailed frog.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7000b75a2de05430395eea4fd67e0bd3 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 0 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: 0 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: 4 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: 4 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: iPhone 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: 4 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: Android 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: 4 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | - serializedVersion: 3 111 | buildTarget: WebGL 112 | maxTextureSize: 2048 113 | resizeAlgorithm: 0 114 | textureFormat: 4 115 | textureCompression: 1 116 | compressionQuality: 50 117 | crunchedCompression: 0 118 | allowsAlphaSplitting: 0 119 | overridden: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | spritePackingTag: 136 | pSDRemoveMatte: 0 137 | pSDShowRemoveMatteOption: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Models.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bc79fa7cf1057496cb928b9e1894d3fa 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Models/class_desc.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a2d179902aa8e457db59fba5764a98f6 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Models/mobilenet_v2.onnx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Models/mobilenet_v2.onnx -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Models/mobilenet_v2.onnx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 38d46cf52bb6a47ffa2039c7c86b2be6 3 | ScriptedImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 2 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3} 11 | optimizeModel: 1 12 | forceArbitraryBatchSize: 1 13 | treatErrorsAsWarnings: 0 14 | importMode: 1 15 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 36c9c9f3a5db144f4846bb58bf15808c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Scripts/RunInferenceMobileNet.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using Unity.Barracuda; 5 | using UnityEngine; 6 | using UnityEngine.UI; 7 | 8 | public class RunInferenceMobileNet : MonoBehaviour 9 | { 10 | public Texture2D[] inputImage; 11 | public int selectedImage = 0; 12 | public int inputResolutionY = 224; 13 | public int inputResolutionX = 224; 14 | public RawImage displayImage; 15 | public NNModel srcModel; 16 | public TextAsset labelsAsset; 17 | public Text resultClassText; 18 | public Material preprocessMaterial; 19 | public Dropdown backendDropdown; 20 | 21 | private string inferenceBackend = "CSharpBurst"; 22 | private Model model; 23 | private IWorker engine; 24 | private Dictionary inputs = new Dictionary(); 25 | private string[] labels; 26 | private RenderTexture targetRT; 27 | 28 | void Start() 29 | { 30 | Application.targetFrameRate = 60; 31 | Screen.orientation = ScreenOrientation.LandscapeLeft; 32 | AddBackendOptions(); 33 | //parse neural net labels 34 | labels = labelsAsset.text.Split('\n'); 35 | //load model 36 | model = ModelLoader.Load(srcModel); 37 | //format input texture variable 38 | targetRT = RenderTexture.GetTemporary(inputResolutionX, inputResolutionY, 0, RenderTextureFormat.ARGBHalf); 39 | //execute inference 40 | SelectBackendAndExecuteML(); 41 | } 42 | 43 | public void ExecuteML(int imageID) 44 | { 45 | selectedImage = imageID; 46 | displayImage.texture = inputImage[selectedImage]; 47 | 48 | if (inferenceBackend == "CSharpBurst") 49 | { 50 | engine = WorkerFactory.CreateWorker(WorkerFactory.Type.CSharpBurst, model); 51 | } 52 | else if (inferenceBackend == "ComputePrecompiled") 53 | { 54 | engine = WorkerFactory.CreateWorker(WorkerFactory.Type.ComputePrecompiled, model); 55 | } 56 | else if (inferenceBackend == "PixelShader") 57 | { 58 | engine = WorkerFactory.CreateWorker(WorkerFactory.Type.PixelShader, model); 59 | } 60 | 61 | //preprocess image for input 62 | var input = new Tensor(PrepareTextureForInput(inputImage[selectedImage]), 3); 63 | //execute neural net 64 | engine.Execute(input); 65 | //read output tensor 66 | var output = engine.PeekOutput(); 67 | //select the best output class and print the results 68 | var res = output.ArgMax()[0]; 69 | var label = labels[res]; 70 | var accuracy = output[res]; 71 | resultClassText.text = $"{label} {Math.Round(accuracy*100, 1)}﹪"; 72 | //clean memory 73 | input.Dispose(); 74 | engine.Dispose(); 75 | Resources.UnloadUnusedAssets(); 76 | } 77 | 78 | Texture PrepareTextureForInput(Texture2D src) 79 | { 80 | RenderTexture.active = targetRT; 81 | //normalization is applied in the NormalizeInput shader 82 | Graphics.Blit(src, targetRT, preprocessMaterial); 83 | 84 | var result = new Texture2D(targetRT.width, targetRT.height, TextureFormat.RGBAHalf, false); 85 | result.ReadPixels(new Rect(0,0, targetRT.width, targetRT.height), 0, 0); 86 | result.Apply(); 87 | return result; 88 | } 89 | 90 | public void AddBackendOptions() 91 | { 92 | List options = new List (); 93 | options.Add("CSharpBurst"); 94 | #if !UNITY_WEBGL 95 | options.Add("ComputePrecompiled"); 96 | #endif 97 | options.Add("PixelShader"); 98 | backendDropdown.ClearOptions (); 99 | backendDropdown.AddOptions(options); 100 | } 101 | 102 | public void SelectBackendAndExecuteML() 103 | { 104 | 105 | if (backendDropdown.options[backendDropdown.value].text == "CSharpBurst") 106 | { 107 | inferenceBackend = "CSharpBurst"; 108 | } 109 | else if (backendDropdown.options[backendDropdown.value].text == "ComputePrecompiled") 110 | { 111 | inferenceBackend = "ComputePrecompiled"; 112 | } 113 | else if (backendDropdown.options[backendDropdown.value].text == "PixelShader") 114 | { 115 | inferenceBackend = "PixelShader"; 116 | } 117 | ExecuteML(selectedImage); 118 | } 119 | 120 | private void OnDestroy() 121 | { 122 | engine?.Dispose(); 123 | 124 | foreach (var key in inputs.Keys) 125 | { 126 | inputs[key].Dispose(); 127 | } 128 | 129 | inputs.Clear(); 130 | } 131 | } 132 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Scripts/RunInferenceMobileNet.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3c1b8b7e373fc47be8396d6b2c4c0f9b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Shaders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bc5f9ae9369604e21ac770dd324a00ff 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Shaders/NormalizeInput.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: NormalizeInput 11 | m_Shader: {fileID: 4800000, guid: 1529b507094a5457c8eec134c0fea81a, type: 3} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 1, b: 1, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Shaders/NormalizeInput.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: adf9bc017eac04893a7736db6e05a86d 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Shaders/NormalizeInput.shader: -------------------------------------------------------------------------------- 1 | Shader "ML/NormalizeInput" 2 | { 3 | Properties 4 | { 5 | _MainTex ("Texture", 2D) = "white" {} 6 | } 7 | SubShader 8 | { 9 | // No culling or depth 10 | Cull Off ZWrite Off ZTest Always 11 | 12 | Pass 13 | { 14 | CGPROGRAM 15 | #pragma vertex vert 16 | #pragma fragment frag 17 | 18 | #include "UnityCG.cginc" 19 | 20 | struct appdata 21 | { 22 | float4 vertex : POSITION; 23 | float2 uv : TEXCOORD0; 24 | }; 25 | 26 | struct v2f 27 | { 28 | float2 uv : TEXCOORD0; 29 | float4 vertex : SV_POSITION; 30 | }; 31 | 32 | v2f vert (appdata v) 33 | { 34 | v2f o; 35 | o.vertex = UnityObjectToClipPos(v.vertex); 36 | o.uv = v.uv; 37 | return o; 38 | } 39 | 40 | sampler2D _MainTex; 41 | 42 | float4 frag (v2f i) : SV_Target 43 | { 44 | float4 col = tex2D(_MainTex, i.uv); 45 | col.r = (col.r - 0.485) / 0.229; 46 | col.g = (col.g - 0.456) / 0.224; 47 | col.b = (col.b - 0.406) / 0.225; 48 | return col; 49 | } 50 | ENDCG 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/Shaders/NormalizeInput.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1529b507094a5457c8eec134c0fea81a 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/UnityUI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 56e5a321b25ed4d9d82a428e810d5cc7 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/UnityUI/Fonts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9e3f0765f3440a541951dd9223a17825 3 | DefaultImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/UnityUI/Fonts/Jupiter.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 017120279e2244a70b07c667291aca40 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/UnityUI/Fonts/Jupiter/Jupiter.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/UnityUI/Fonts/Jupiter/Jupiter.ttf -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/UnityUI/Fonts/Jupiter/Jupiter.ttf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7cb2912222469634ba17a77055919ea8 3 | TrueTypeFontImporter: 4 | serializedVersion: 2 5 | fontSize: 16 6 | forceTextureCase: -2 7 | characterSpacing: 1 8 | characterPadding: 0 9 | includeFontData: 1 10 | use2xBehaviour: 0 11 | fontNames: [] 12 | customCharacters: 13 | fontRenderingMode: 0 14 | userData: 15 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/UnityUI/Fonts/Jupiter/LICENSE.txt: -------------------------------------------------------------------------------- 1 | The Jupiter font is created by Isurus Labs and is in the public domain. -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/UnityUI/Fonts/Jupiter/LICENSE.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9a4f8345bee404e36b84d948cd29fb8b 3 | TextScriptImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/UnityUI/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2a148c82c5cc8744a812f2f0f3739664 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/UnityUI/Prefabs/SF Toggle.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &100000 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 100100000} 8 | serializedVersion: 4 9 | m_Component: 10 | - 224: {fileID: 22400000} 11 | - 222: {fileID: 22200000} 12 | - 114: {fileID: 11400000} 13 | m_Layer: 0 14 | m_Name: Checkmark 15 | m_TagString: Untagged 16 | m_Icon: {fileID: 0} 17 | m_NavMeshLayer: 0 18 | m_StaticEditorFlags: 0 19 | m_IsActive: 1 20 | --- !u!1 &100002 21 | GameObject: 22 | m_ObjectHideFlags: 0 23 | m_PrefabParentObject: {fileID: 0} 24 | m_PrefabInternal: {fileID: 100100000} 25 | serializedVersion: 4 26 | m_Component: 27 | - 224: {fileID: 22400002} 28 | - 114: {fileID: 11400002} 29 | m_Layer: 0 30 | m_Name: SF Toggle 31 | m_TagString: Untagged 32 | m_Icon: {fileID: 0} 33 | m_NavMeshLayer: 0 34 | m_StaticEditorFlags: 0 35 | m_IsActive: 1 36 | --- !u!1 &100004 37 | GameObject: 38 | m_ObjectHideFlags: 0 39 | m_PrefabParentObject: {fileID: 0} 40 | m_PrefabInternal: {fileID: 100100000} 41 | serializedVersion: 4 42 | m_Component: 43 | - 224: {fileID: 22400004} 44 | - 222: {fileID: 22200002} 45 | - 114: {fileID: 11400004} 46 | m_Layer: 0 47 | m_Name: Background 48 | m_TagString: Untagged 49 | m_Icon: {fileID: 0} 50 | m_NavMeshLayer: 0 51 | m_StaticEditorFlags: 0 52 | m_IsActive: 1 53 | --- !u!114 &11400000 54 | MonoBehaviour: 55 | m_ObjectHideFlags: 1 56 | m_PrefabParentObject: {fileID: 0} 57 | m_PrefabInternal: {fileID: 100100000} 58 | m_GameObject: {fileID: 100000} 59 | m_Enabled: 1 60 | m_EditorHideFlags: 0 61 | m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} 62 | m_Name: 63 | m_EditorClassIdentifier: 64 | m_Material: {fileID: 0} 65 | m_Color: {r: 1, g: 1, b: 1, a: 1} 66 | m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} 67 | m_Type: 0 68 | m_PreserveAspect: 0 69 | m_FillCenter: 1 70 | m_FillMethod: 4 71 | m_FillAmount: 1 72 | m_FillClockwise: 1 73 | m_FillOrigin: 0 74 | --- !u!114 &11400002 75 | MonoBehaviour: 76 | m_ObjectHideFlags: 1 77 | m_PrefabParentObject: {fileID: 0} 78 | m_PrefabInternal: {fileID: 100100000} 79 | m_GameObject: {fileID: 100002} 80 | m_Enabled: 1 81 | m_EditorHideFlags: 0 82 | m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} 83 | m_Name: 84 | m_EditorClassIdentifier: 85 | m_Navigation: 86 | m_Mode: 3 87 | m_SelectOnUp: {fileID: 0} 88 | m_SelectOnDown: {fileID: 0} 89 | m_SelectOnLeft: {fileID: 0} 90 | m_SelectOnRight: {fileID: 0} 91 | m_Transition: 1 92 | m_Colors: 93 | m_NormalColor: {r: 0, g: .549019635, b: 1, a: 1} 94 | m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1} 95 | m_PressedColor: {r: .478431374, g: .784313738, b: 1, a: 1} 96 | m_DisabledColor: {r: 0, g: .286620408, b: .522058845, a: 1} 97 | m_ColorMultiplier: 1 98 | m_FadeDuration: .100000001 99 | m_SpriteState: 100 | m_HighlightedSprite: {fileID: 0} 101 | m_PressedSprite: {fileID: 0} 102 | m_DisabledSprite: {fileID: 0} 103 | m_AnimationTriggers: 104 | m_NormalTrigger: Normal 105 | m_HighlightedTrigger: Highlighted 106 | m_PressedTrigger: Pressed 107 | m_DisabledTrigger: Disabled 108 | m_Interactable: 1 109 | m_TargetGraphic: {fileID: 11400004} 110 | toggleTransition: 1 111 | graphic: {fileID: 11400000} 112 | m_Group: {fileID: 0} 113 | onValueChanged: 114 | m_PersistentCalls: 115 | m_Calls: [] 116 | m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, 117 | Culture=neutral, PublicKeyToken=null 118 | m_IsOn: 1 119 | --- !u!114 &11400004 120 | MonoBehaviour: 121 | m_ObjectHideFlags: 1 122 | m_PrefabParentObject: {fileID: 0} 123 | m_PrefabInternal: {fileID: 100100000} 124 | m_GameObject: {fileID: 100004} 125 | m_Enabled: 1 126 | m_EditorHideFlags: 0 127 | m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} 128 | m_Name: 129 | m_EditorClassIdentifier: 130 | m_Material: {fileID: 0} 131 | m_Color: {r: 1, g: 1, b: 1, a: 1} 132 | m_Sprite: {fileID: 21300000, guid: 1f1d5baae1d26404a8a639a07e5c7766, type: 3} 133 | m_Type: 1 134 | m_PreserveAspect: 0 135 | m_FillCenter: 1 136 | m_FillMethod: 4 137 | m_FillAmount: 1 138 | m_FillClockwise: 1 139 | m_FillOrigin: 0 140 | --- !u!222 &22200000 141 | CanvasRenderer: 142 | m_ObjectHideFlags: 1 143 | m_PrefabParentObject: {fileID: 0} 144 | m_PrefabInternal: {fileID: 100100000} 145 | m_GameObject: {fileID: 100000} 146 | --- !u!222 &22200002 147 | CanvasRenderer: 148 | m_ObjectHideFlags: 1 149 | m_PrefabParentObject: {fileID: 0} 150 | m_PrefabInternal: {fileID: 100100000} 151 | m_GameObject: {fileID: 100004} 152 | --- !u!224 &22400000 153 | RectTransform: 154 | m_ObjectHideFlags: 1 155 | m_PrefabParentObject: {fileID: 0} 156 | m_PrefabInternal: {fileID: 100100000} 157 | m_GameObject: {fileID: 100000} 158 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 159 | m_LocalPosition: {x: 0, y: 0, z: 0} 160 | m_LocalScale: {x: 1, y: 1, z: 1} 161 | m_Children: [] 162 | m_Father: {fileID: 22400002} 163 | m_RootOrder: 1 164 | m_AnchorMin: {x: 0, y: .5} 165 | m_AnchorMax: {x: 0, y: .5} 166 | m_AnchoredPosition: {x: 15, y: 0} 167 | m_SizeDelta: {x: 20, y: 20} 168 | m_Pivot: {x: .5, y: .5} 169 | --- !u!224 &22400002 170 | RectTransform: 171 | m_ObjectHideFlags: 1 172 | m_PrefabParentObject: {fileID: 0} 173 | m_PrefabInternal: {fileID: 100100000} 174 | m_GameObject: {fileID: 100002} 175 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 176 | m_LocalPosition: {x: 0, y: 0, z: 0} 177 | m_LocalScale: {x: 1, y: 1, z: 1} 178 | m_Children: 179 | - {fileID: 22400004} 180 | - {fileID: 22400000} 181 | m_Father: {fileID: 0} 182 | m_RootOrder: 0 183 | m_AnchorMin: {x: 0, y: 0} 184 | m_AnchorMax: {x: 0, y: 0} 185 | m_AnchoredPosition: {x: 0, y: 0} 186 | m_SizeDelta: {x: 30, y: 30} 187 | m_Pivot: {x: .5, y: .5} 188 | --- !u!224 &22400004 189 | RectTransform: 190 | m_ObjectHideFlags: 1 191 | m_PrefabParentObject: {fileID: 0} 192 | m_PrefabInternal: {fileID: 100100000} 193 | m_GameObject: {fileID: 100004} 194 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 195 | m_LocalPosition: {x: 0, y: 0, z: 0} 196 | m_LocalScale: {x: 1, y: 1, z: 1} 197 | m_Children: [] 198 | m_Father: {fileID: 22400002} 199 | m_RootOrder: 0 200 | m_AnchorMin: {x: 0, y: .5} 201 | m_AnchorMax: {x: 0, y: .5} 202 | m_AnchoredPosition: {x: 15, y: 0} 203 | m_SizeDelta: {x: 30, y: 30} 204 | m_Pivot: {x: .5, y: .5} 205 | --- !u!1001 &100100000 206 | Prefab: 207 | m_ObjectHideFlags: 1 208 | serializedVersion: 2 209 | m_Modification: 210 | m_TransformParent: {fileID: 0} 211 | m_Modifications: [] 212 | m_RemovedComponents: [] 213 | m_ParentPrefab: {fileID: 0} 214 | m_RootGameObject: {fileID: 100002} 215 | m_IsPrefabParent: 1 216 | m_IsExploded: 1 217 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/UnityUI/Prefabs/SF Toggle.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 212619aea848509449704f41e4a1d3f2 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/UnityUI/Textures and Sprites.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e3a5123eeaeabcb47b68c25bd63af922 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/UnityUI/Textures and Sprites/SF UI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bb3e338899432408a9491440d7123e65 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/UnityUI/Textures and Sprites/SF UI/SF Generic.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/UnityUI/Textures and Sprites/SF UI/SF Generic.psd -------------------------------------------------------------------------------- /UnityProject/Assets/01-StaticImageRecognition-MobileNetV2/UnityUI/Textures and Sprites/SF UI/SF Generic.psd.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1f1d5baae1d26404a8a639a07e5c7766 3 | TextureImporter: 4 | internalIDToNameTable: 5 | - first: 6 | 213: 21300000 7 | second: SF Generic_0 8 | externalObjects: {} 9 | serializedVersion: 11 10 | mipmaps: 11 | mipMapMode: 0 12 | enableMipMap: 0 13 | sRGBTexture: 1 14 | linearTexture: 0 15 | fadeOut: 0 16 | borderMipMap: 0 17 | mipMapsPreserveCoverage: 0 18 | alphaTestReferenceValue: 0.5 19 | mipMapFadeDistanceStart: 1 20 | mipMapFadeDistanceEnd: 3 21 | bumpmap: 22 | convertToNormalMap: 0 23 | externalNormalMap: 0 24 | heightScale: 0.25 25 | normalMapFilter: 0 26 | isReadable: 0 27 | streamingMipmaps: 0 28 | streamingMipmapsPriority: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: -3 34 | maxTextureSize: 4096 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 2 38 | aniso: 16 39 | mipBias: -100 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 2 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 8 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | applyGammaDecoding: 1 64 | platformSettings: 65 | - serializedVersion: 3 66 | buildTarget: DefaultTexturePlatform 67 | maxTextureSize: 4096 68 | resizeAlgorithm: 0 69 | textureFormat: -1 70 | textureCompression: 0 71 | compressionQuality: 50 72 | crunchedCompression: 0 73 | allowsAlphaSplitting: 0 74 | overridden: 0 75 | androidETC2FallbackOverride: 0 76 | forceMaximumCompressionQuality_BC6H_BC7: 1 77 | - serializedVersion: 3 78 | buildTarget: Standalone 79 | maxTextureSize: 4096 80 | resizeAlgorithm: 0 81 | textureFormat: -1 82 | textureCompression: 0 83 | compressionQuality: 50 84 | crunchedCompression: 0 85 | allowsAlphaSplitting: 0 86 | overridden: 0 87 | androidETC2FallbackOverride: 0 88 | forceMaximumCompressionQuality_BC6H_BC7: 1 89 | - serializedVersion: 3 90 | buildTarget: iPhone 91 | maxTextureSize: 4096 92 | resizeAlgorithm: 0 93 | textureFormat: -1 94 | textureCompression: 0 95 | compressionQuality: 50 96 | crunchedCompression: 0 97 | allowsAlphaSplitting: 0 98 | overridden: 0 99 | androidETC2FallbackOverride: 0 100 | forceMaximumCompressionQuality_BC6H_BC7: 1 101 | - serializedVersion: 3 102 | buildTarget: tvOS 103 | maxTextureSize: 4096 104 | resizeAlgorithm: 0 105 | textureFormat: -1 106 | textureCompression: 0 107 | compressionQuality: 50 108 | crunchedCompression: 0 109 | allowsAlphaSplitting: 0 110 | overridden: 0 111 | androidETC2FallbackOverride: 0 112 | forceMaximumCompressionQuality_BC6H_BC7: 1 113 | - serializedVersion: 3 114 | buildTarget: Android 115 | maxTextureSize: 4096 116 | resizeAlgorithm: 0 117 | textureFormat: -1 118 | textureCompression: 0 119 | compressionQuality: 50 120 | crunchedCompression: 0 121 | allowsAlphaSplitting: 0 122 | overridden: 0 123 | androidETC2FallbackOverride: 0 124 | forceMaximumCompressionQuality_BC6H_BC7: 1 125 | - serializedVersion: 3 126 | buildTarget: Windows Store Apps 127 | maxTextureSize: 4096 128 | resizeAlgorithm: 0 129 | textureFormat: -1 130 | textureCompression: 0 131 | compressionQuality: 50 132 | crunchedCompression: 0 133 | allowsAlphaSplitting: 0 134 | overridden: 0 135 | androidETC2FallbackOverride: 0 136 | forceMaximumCompressionQuality_BC6H_BC7: 1 137 | - serializedVersion: 3 138 | buildTarget: WebGL 139 | maxTextureSize: 4096 140 | resizeAlgorithm: 0 141 | textureFormat: -1 142 | textureCompression: 0 143 | compressionQuality: 50 144 | crunchedCompression: 0 145 | allowsAlphaSplitting: 0 146 | overridden: 0 147 | androidETC2FallbackOverride: 0 148 | forceMaximumCompressionQuality_BC6H_BC7: 1 149 | spriteSheet: 150 | serializedVersion: 2 151 | sprites: 152 | - serializedVersion: 2 153 | name: SF Generic_0 154 | rect: 155 | serializedVersion: 2 156 | x: 0 157 | y: 0 158 | width: 32 159 | height: 32 160 | alignment: 0 161 | pivot: {x: 0.5, y: 0.5} 162 | border: {x: 10, y: 10, z: 10, w: 10} 163 | outline: [] 164 | physicsShape: [] 165 | tessellationDetail: -1 166 | bones: [] 167 | spriteID: 02305410000000000800000000000000 168 | internalID: 21300000 169 | vertices: [] 170 | indices: 171 | edges: [] 172 | weights: [] 173 | outline: [] 174 | physicsShape: [] 175 | bones: [] 176 | spriteID: 177 | internalID: 0 178 | vertices: [] 179 | indices: 180 | edges: [] 181 | weights: [] 182 | secondaryTextures: [] 183 | spritePackingTag: SF 184 | pSDRemoveMatte: 1 185 | pSDShowRemoveMatteOption: 1 186 | userData: 187 | assetBundleName: 188 | assetBundleVariant: 189 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6611d3d4df58943b8a7fcafda952067d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/02-FaceTracking-BlazeFace.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 96aacd413c7c37f4e9df399114082954 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Marker.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8e7bc1f5a2cbd4aacbb3e04171b567af 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Marker/KeyPointsMarker.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 47a0fcd207399f14b8f37638653245e1 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Marker/Marker.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UI = UnityEngine.UI; 3 | 4 | namespace MediaPipe.BlazeFace { 5 | 6 | public sealed class Marker : MonoBehaviour 7 | { 8 | public RunInferenceBlazeFace.Detection detection { get; set; } 9 | 10 | [SerializeField] RectTransform[] _keyPoints; 11 | 12 | Marker _marker; 13 | RectTransform _xform; 14 | RectTransform _parent; 15 | UI.Text _label; 16 | 17 | void SetKeyPoint(RectTransform xform, Vector2 point) 18 | => xform.anchoredPosition = 19 | point * _parent.rect.size - _xform.anchoredPosition; 20 | 21 | void Start() 22 | { 23 | _marker = GetComponent(); 24 | _xform = GetComponent(); 25 | _parent = (RectTransform)_xform.parent; 26 | _label = GetComponentInChildren(); 27 | } 28 | 29 | void LateUpdate() 30 | { 31 | var detection = _marker.detection; 32 | 33 | // Bounding box center 34 | _xform.anchoredPosition = detection.center * _parent.rect.size; 35 | 36 | // Bounding box size 37 | var size = detection.extent * _parent.rect.size; 38 | _xform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, size.x); 39 | _xform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, size.y); 40 | 41 | // Key points 42 | SetKeyPoint(_keyPoints[0], detection.leftEye); 43 | SetKeyPoint(_keyPoints[1], detection.rightEye); 44 | SetKeyPoint(_keyPoints[2], detection.nose); 45 | SetKeyPoint(_keyPoints[3], detection.mouth); 46 | SetKeyPoint(_keyPoints[4], detection.leftEar); 47 | SetKeyPoint(_keyPoints[5], detection.rightEar); 48 | 49 | // Label 50 | _label.text = $"{(int)(detection.score * 100)}﹪"; 51 | } 52 | } 53 | 54 | } // namespace MediaPipe.BlazeFace 55 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Marker/Marker.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3c2c59eff681a904dbc2e8785c410275 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Models.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f9ed21759e8cc3e40919917114923692 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Models/face_detection_front_128x128_barracuda.onnx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/02-FaceTracking-BlazeFace/Models/face_detection_front_128x128_barracuda.onnx -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Models/face_detection_front_128x128_barracuda.onnx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b864a3b8f6ec93147ade176d904e1163 3 | ScriptedImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 2 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3} 11 | optimizeModel: 1 12 | forceArbitraryBatchSize: 1 13 | treatErrorsAsWarnings: 0 14 | importMode: 1 15 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 92986b57d33824e59bfb658bfbc49a0f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Scripts/RunInferenceBlazeFace.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UI = UnityEngine.UI; 3 | using System.Collections.Generic; 4 | using Unity.Barracuda; 5 | using System.Runtime.InteropServices; 6 | using UnityEngine.Android; 7 | 8 | namespace MediaPipe.BlazeFace { 9 | 10 | public sealed class RunInferenceBlazeFace : MonoBehaviour 11 | { 12 | private string _deviceName = ""; 13 | [SerializeField] Vector2Int _resolution = new Vector2Int(1080, 1080); 14 | 15 | WebCamTexture _webcam; 16 | RenderTexture _buffer; 17 | 18 | private Texture2D _image = null; 19 | [SerializeField, Range(0, 1)] float _threshold = 0.75f; 20 | [SerializeField] UI.RawImage _previewUI = null; 21 | [SerializeField] Marker _markerPrefab = null; 22 | 23 | Marker[] _markers = new Marker[16]; 24 | 25 | // Maximum number of detections. This value must be matched with 26 | // MAX_DETECTION in Common.hlsl. 27 | const int MaxDetection = 64; 28 | 29 | public NNModel _model; 30 | public ComputeShader _preprocess; 31 | public ComputeShader _postprocess1; 32 | public ComputeShader _postprocess2; 33 | ComputeBuffer _preBuffer; 34 | ComputeBuffer _post1Buffer; 35 | ComputeBuffer _post2Buffer; 36 | ComputeBuffer _countBuffer; 37 | IWorker _worker; 38 | int _size; 39 | 40 | public GameObject webglWarning; 41 | public UI.Dropdown _cameraDropdown; 42 | public UI.Dropdown _backendDropdown; 43 | 44 | // 45 | // Detection structure. The layout of this structure must be matched with 46 | // the one defined in Common.hlsl. 47 | // 48 | [StructLayout(LayoutKind.Sequential)] 49 | public readonly struct Detection 50 | { 51 | // Bounding box 52 | public readonly Vector2 center; 53 | public readonly Vector2 extent; 54 | 55 | // Key points 56 | public readonly Vector2 leftEye; 57 | public readonly Vector2 rightEye; 58 | public readonly Vector2 nose; 59 | public readonly Vector2 mouth; 60 | public readonly Vector2 leftEar; 61 | public readonly Vector2 rightEar; 62 | 63 | // Confidence score [0, 1] 64 | public readonly float score; 65 | 66 | // Padding 67 | public readonly float pad1, pad2, pad3; 68 | 69 | // sizeof(Detection) 70 | public const int Size = 20 * sizeof(float); 71 | }; 72 | 73 | void Start() 74 | { 75 | // Prepare camera 76 | #if PLATFORM_ANDROID 77 | Permission.RequestUserPermission(Permission.Camera); 78 | while (!Permission.HasUserAuthorizedPermission(Permission.Camera)) 79 | { 80 | 81 | } 82 | #endif 83 | #if UNITY_IOS 84 | Application.RequestUserAuthorization(UserAuthorization.WebCam); 85 | while (!Application.HasUserAuthorization(UserAuthorization.WebCam)) 86 | { 87 | 88 | } 89 | #endif 90 | #if UNITY_WEBGL 91 | webglWarning.SetActive(true); 92 | #endif 93 | 94 | _webcam = new WebCamTexture(_deviceName, _resolution.x, _resolution.y); 95 | _buffer = new RenderTexture(_resolution.x, _resolution.y, 0); 96 | _webcam.requestedFPS = 30; 97 | _webcam.Play(); 98 | 99 | Screen.orientation = ScreenOrientation.LandscapeLeft; 100 | 101 | AddCameraOptions(); 102 | AddBackendOptions(); 103 | 104 | //initialization 105 | AllocateObjects(); 106 | 107 | // Marker population 108 | for (var i = 0; i < _markers.Length; i++) 109 | _markers[i] = Instantiate(_markerPrefab, _previewUI.transform); 110 | 111 | // Static image test: Run the detector once. 112 | if (_image != null) runInference(_image); 113 | } 114 | 115 | void Update() 116 | { 117 | // Format video inpout 118 | if (!_webcam.didUpdateThisFrame) return; 119 | 120 | var aspect1 = (float)_webcam.width / _webcam.height; 121 | var aspect2 = (float)_resolution.x / _resolution.y; 122 | var gap = aspect2 / aspect1; 123 | 124 | var vflip = _webcam.videoVerticallyMirrored; 125 | var scale = new Vector2(gap, vflip ? -1 : 1); 126 | var offset = new Vector2((1 - gap) / 2, vflip ? 1 : 0); 127 | 128 | Graphics.Blit(_webcam, _buffer, scale, offset); 129 | } 130 | 131 | void LateUpdate() 132 | { 133 | // Webcam test: Run the detector every frame. 134 | runInference(_buffer); 135 | } 136 | 137 | public void AddCameraOptions() 138 | { 139 | List options = new List (); 140 | foreach (var option in WebCamTexture.devices) { 141 | options.Add(option.name); 142 | } 143 | _cameraDropdown.ClearOptions (); 144 | _cameraDropdown.AddOptions(options); 145 | } 146 | 147 | public void AddBackendOptions() 148 | { 149 | List options = new List (); 150 | #if !UNITY_WEBGL 151 | options.Add("ComputePrecompiled"); 152 | #endif 153 | //options.Add("PixelShader"); //not supported with this demo 154 | //options.Add("CSharpBurst"); //not supported with this demo 155 | _backendDropdown.ClearOptions(); 156 | _backendDropdown.AddOptions(options); 157 | } 158 | 159 | public void SwapCamera() 160 | { 161 | _webcam.Stop(); 162 | _webcam.deviceName = _cameraDropdown.options[_cameraDropdown.value].text; 163 | _webcam.Play(); 164 | } 165 | 166 | public void ProcessImage(Texture image, float threshold = 0.75f) 167 | => ExecuteML(image, threshold); 168 | 169 | public void AllocateObjects() 170 | { 171 | var model = ModelLoader.Load(_model); 172 | _size = model.inputs[0].shape[6]; // Input tensor width 173 | 174 | _preBuffer = new ComputeBuffer(_size * _size * 3, sizeof(float)); 175 | 176 | _post1Buffer = new ComputeBuffer 177 | (MaxDetection, Detection.Size, ComputeBufferType.Append); 178 | 179 | _post2Buffer = new ComputeBuffer 180 | (MaxDetection, Detection.Size, ComputeBufferType.Append); 181 | 182 | _countBuffer = new ComputeBuffer 183 | (1, sizeof(uint), ComputeBufferType.Raw); 184 | 185 | if (_backendDropdown.options[_backendDropdown.value].text == "ComputePrecompiled") 186 | { 187 | _worker = WorkerFactory.CreateWorker(WorkerFactory.Type.ComputePrecompiled, model); 188 | } 189 | else if (_backendDropdown.options[_backendDropdown.value].text == "PixelShader") 190 | { 191 | _worker = WorkerFactory.CreateWorker(WorkerFactory.Type.PixelShader, model); 192 | } 193 | else if (_backendDropdown.options[_backendDropdown.value].text == "CSharpBurst") 194 | { 195 | _worker = WorkerFactory.CreateWorker(WorkerFactory.Type.CSharpBurst, model); 196 | } 197 | } 198 | 199 | void ExecuteML(Texture source, float threshold) 200 | { 201 | // Reset the compute buffer counters. 202 | _post1Buffer.SetCounterValue(0); 203 | _post2Buffer.SetCounterValue(0); 204 | 205 | // Preprocessing 206 | var pre = _preprocess; 207 | pre.SetInt("_ImageSize", _size); 208 | pre.SetTexture(0, "_Texture", source); 209 | pre.SetBuffer(0, "_Tensor", _preBuffer); 210 | pre.Dispatch(0, _size / 8, _size / 8, 1); 211 | 212 | // Run the BlazeFace model. 213 | using (var tensor = new Tensor(1, _size, _size, 3, _preBuffer)) 214 | _worker.Execute(tensor); 215 | 216 | // Output tensors -> Temporary render textures 217 | var scores1RT = _worker.CopyOutputToTempRT("Identity" , 1, 512); 218 | var scores2RT = _worker.CopyOutputToTempRT("Identity_1", 1, 384); 219 | var boxes1RT = _worker.CopyOutputToTempRT("Identity_2", 16, 512); 220 | var boxes2RT = _worker.CopyOutputToTempRT("Identity_3", 16, 384); 221 | 222 | // 1st postprocess (bounding box aggregation) 223 | var post1 = _postprocess1; 224 | post1.SetFloat("_ImageSize", _size); 225 | post1.SetFloat("_Threshold", threshold); 226 | 227 | post1.SetTexture(0, "_Scores", scores1RT); 228 | post1.SetTexture(0, "_Boxes", boxes1RT); 229 | post1.SetBuffer(0, "_Output", _post1Buffer); 230 | post1.Dispatch(0, 1, 1, 1); 231 | 232 | post1.SetTexture(1, "_Scores", scores2RT); 233 | post1.SetTexture(1, "_Boxes", boxes2RT); 234 | post1.SetBuffer(1, "_Output", _post1Buffer); 235 | post1.Dispatch(1, 1, 1, 1); 236 | 237 | // Release the temporary render textures. 238 | RenderTexture.ReleaseTemporary(scores1RT); 239 | RenderTexture.ReleaseTemporary(scores2RT); 240 | RenderTexture.ReleaseTemporary(boxes1RT); 241 | RenderTexture.ReleaseTemporary(boxes2RT); 242 | 243 | // Retrieve the bounding box count. 244 | ComputeBuffer.CopyCount(_post1Buffer, _countBuffer, 0); 245 | 246 | // 2nd postprocess (overlap removal) 247 | var post2 = _postprocess2; 248 | post2.SetBuffer(0, "_Input", _post1Buffer); 249 | post2.SetBuffer(0, "_Count", _countBuffer); 250 | post2.SetBuffer(0, "_Output", _post2Buffer); 251 | post2.Dispatch(0, 1, 1, 1); 252 | 253 | // Retrieve the bounding box count after removal. 254 | ComputeBuffer.CopyCount(_post2Buffer, _countBuffer, 0); 255 | 256 | // Read cache invalidation 257 | _post2ReadCache = null; 258 | } 259 | 260 | void runInference(Texture input) 261 | { 262 | // Face detection 263 | ProcessImage(input, _threshold); 264 | 265 | // Marker update 266 | var i = 0; 267 | 268 | foreach (var detection in Detections) 269 | { 270 | if (i == _markers.Length) break; 271 | var marker = _markers[i++]; 272 | marker.detection = detection; 273 | marker.gameObject.SetActive(true); 274 | } 275 | 276 | for (; i < _markers.Length; i++) 277 | _markers[i].gameObject.SetActive(false); 278 | 279 | // UI update 280 | _previewUI.texture = input; 281 | } 282 | 283 | public IEnumerable Detections 284 | => _post2ReadCache ?? UpdatePost2ReadCache(); 285 | 286 | Detection[] _post2ReadCache; 287 | int[] _countReadCache = new int[1]; 288 | 289 | Detection[] UpdatePost2ReadCache() 290 | { 291 | _countBuffer.GetData(_countReadCache, 0, 0, 1); 292 | var count = _countReadCache[0]; 293 | 294 | _post2ReadCache = new Detection[count]; 295 | _post2Buffer.GetData(_post2ReadCache, 0, 0, count); 296 | 297 | return _post2ReadCache; 298 | } 299 | 300 | void OnDestroy() 301 | { 302 | Destroy(_webcam); 303 | Destroy(_buffer); 304 | Dispose(); 305 | } 306 | 307 | public void Dispose() 308 | => DeallocateObjects(); 309 | 310 | void DeallocateObjects() 311 | { 312 | _preBuffer?.Dispose(); 313 | _preBuffer = null; 314 | 315 | _post1Buffer?.Dispose(); 316 | _post1Buffer = null; 317 | 318 | _post2Buffer?.Dispose(); 319 | _post2Buffer = null; 320 | 321 | _countBuffer?.Dispose(); 322 | _countBuffer = null; 323 | 324 | _worker?.Dispose(); 325 | _worker = null; 326 | } 327 | 328 | } 329 | 330 | static class IWorkerExtensions 331 | { 332 | // 333 | // Retrieves an output tensor from a NN worker and returns it as a 334 | // temporary render texture. The caller must release it using 335 | // RenderTexture.ReleaseTemporary. 336 | // 337 | public static RenderTexture 338 | CopyOutputToTempRT(this IWorker worker, string name, int w, int h) 339 | { 340 | var fmt = RenderTextureFormat.RFloat; 341 | var shape = new TensorShape(1, h, w, 1); 342 | var rt = RenderTexture.GetTemporary(w, h, 0, fmt); 343 | using (var tensor = worker.PeekOutput(name).Reshape(shape)) 344 | tensor.ToRenderTexture(rt); 345 | return rt; 346 | } 347 | } 348 | 349 | } // namespace MediaPipe.BlazeFace 350 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Scripts/RunInferenceBlazeFace.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 62c8f13ba591f43f4afa2b27a30c858e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: 7 | - _image: {fileID: 2800000, guid: 81031357d7ecd6b439921f3d537988ea, type: 3} 8 | - _webcam: {instanceID: 0} 9 | - _previewUI: {instanceID: 0} 10 | - _resources: {fileID: 11400000, guid: bffd9847cd5fccc4e82026bcc7ae255a, type: 2} 11 | - _markerPrefab: {fileID: 8350498522753284527, guid: 47a0fcd207399f14b8f37638653245e1, type: 3} 12 | executionOrder: 0 13 | icon: {instanceID: 0} 14 | userData: 15 | assetBundleName: 16 | assetBundleVariant: 17 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Shaders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 564570003be73dd409132c0dd64ca2d7 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Shaders/Common.hlsl: -------------------------------------------------------------------------------- 1 | #ifndef _BLAZEFACEBARRACUDA_COMMON_H_ 2 | #define _BLAZEFACEBARRACUDA_COMMON_H_ 3 | 4 | // Maximum number of detections. This value must be matched with MaxDetection 5 | // in FaceDetector.cs. 6 | #define MAX_DETECTION 64 7 | 8 | // Detection structure: The layout of this structure must be matched with the 9 | // one defined in Detection.cs 10 | struct Detection 11 | { 12 | float2 center; 13 | float2 extent; 14 | float2 keyPoints[6]; 15 | float score; 16 | float3 pad; 17 | }; 18 | 19 | // We can encode the geometric features of Detection into a float4x4 matrix. 20 | // This is handy for calculating weighted means of detections. 21 | 22 | float4x4 DetectionToMatrix(in Detection d) 23 | { 24 | return float4x4(d.center, d.extent, 25 | d.keyPoints[0], d.keyPoints[1], 26 | d.keyPoints[2], d.keyPoints[3], 27 | d.keyPoints[4], d.keyPoints[5]); 28 | } 29 | 30 | Detection MatrixToDetection(float4x4 m, float score) 31 | { 32 | Detection d; 33 | d.center = m._m00_m01; 34 | d.extent = m._m02_m03; 35 | d.keyPoints[0] = m._m10_m11; 36 | d.keyPoints[1] = m._m12_m13; 37 | d.keyPoints[2] = m._m20_m21; 38 | d.keyPoints[3] = m._m22_m23; 39 | d.keyPoints[4] = m._m30_m31; 40 | d.keyPoints[5] = m._m32_m33; 41 | d.score = score; 42 | d.pad = 0; 43 | return d; 44 | } 45 | 46 | // Common math functions 47 | 48 | float2 VFlip(float2 p) 49 | { 50 | return float2(p.x, 1 - p.y); 51 | } 52 | 53 | float Sigmoid(float x) 54 | { 55 | return 1 / (1 + exp(-x)); 56 | } 57 | 58 | float CalculateIOU(in Detection d1, in Detection d2) 59 | { 60 | float area0 = d1.extent.x * d1.extent.y; 61 | float area1 = d2.extent.x * d2.extent.y; 62 | 63 | float2 p0 = max(d1.center - d1.extent / 2, d2.center - d2.extent / 2); 64 | float2 p1 = min(d1.center + d1.extent / 2, d2.center + d2.extent / 2); 65 | float areaInner = max(0, p1.x - p0.x) * max(0, p1.y - p0.y); 66 | 67 | return areaInner / (area0 + area1 - areaInner); 68 | } 69 | 70 | #endif 71 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Shaders/Common.hlsl.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 02cc0b44aeffb794893e4e3d4ffbad38 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | preprocessorOverride: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Shaders/Postprocess1.compute: -------------------------------------------------------------------------------- 1 | #pragma kernel Postprocess1Layer1 2 | #pragma kernel Postprocess1Layer2 3 | 4 | // 5 | // 1st postprocessor (bounding box aggregation) 6 | // 7 | 8 | #include "Common.hlsl" 9 | 10 | // Input uniforms 11 | Texture2D _Scores; 12 | Texture2D _Boxes; 13 | float _ImageSize; 14 | float _Threshold; 15 | 16 | // Output uniforms 17 | AppendStructuredBuffer _Output; 18 | 19 | // First layer: 8-pixel stride, two anchors 20 | #define CELLS_IN_ROW 16 21 | #define ANCHOR_COUNT 2 22 | #define KERNEL_NAME Postprocess1Layer1 23 | #include "Postprocess1Kernel.hlsl" 24 | 25 | #undef CELLS_IN_ROW 26 | #undef ANCHOR_COUNT 27 | #undef KERNEL_NAME 28 | 29 | // Second layer: 16-pixel stride, six anchors 30 | #define CELLS_IN_ROW 8 31 | #define ANCHOR_COUNT 6 32 | #define KERNEL_NAME Postprocess1Layer2 33 | #include "Postprocess1Kernel.hlsl" 34 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Shaders/Postprocess1.compute.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 45d5ffcf2ee5cc247b6f0b84924b6f11 3 | ComputeShaderImporter: 4 | externalObjects: {} 5 | currentAPIMask: 4 6 | preprocessorOverride: 0 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Shaders/Postprocess1Kernel.hlsl: -------------------------------------------------------------------------------- 1 | // 2 | // Function template for Postprocess1 (bounding box aggregation) 3 | // 4 | [numthreads(CELLS_IN_ROW, CELLS_IN_ROW, 1)] 5 | void KERNEL_NAME(uint2 id : SV_DispatchThreadID) 6 | { 7 | // Scale factor based on the input image size 8 | float scale = 1 / _ImageSize; 9 | 10 | // Corresponding row number in the input texture 11 | uint row0 = (id.y * CELLS_IN_ROW + id.x) * ANCHOR_COUNT; 12 | 13 | // Anchor point coordinates 14 | float2 anchor = (CELLS_IN_ROW - 0.5 - id) / CELLS_IN_ROW; 15 | 16 | for (uint ai = 0; ai < ANCHOR_COUNT; ai++) 17 | { 18 | Detection d; 19 | d.pad = 0; 20 | 21 | // Row number of this anchor 22 | uint row = row0 + ai; 23 | 24 | // Confidence score 25 | d.score = Sigmoid(_Scores[uint2(0, row)]); 26 | 27 | // Bounding box 28 | float x = _Boxes[uint2(0, row)]; 29 | float y = _Boxes[uint2(1, row)]; 30 | float w = _Boxes[uint2(2, row)]; 31 | float h = _Boxes[uint2(3, row)]; 32 | 33 | d.center = VFlip(anchor + float2(x, y) * scale); 34 | d.extent = float2(w, h) * scale; 35 | 36 | // Key points 37 | [unroll] for (uint ki = 0; ki < 6; ki++) 38 | { 39 | float kx = _Boxes[uint2(4 + 2 * ki + 0, row)]; 40 | float ky = _Boxes[uint2(4 + 2 * ki + 1, row)]; 41 | d.keyPoints[ki] = VFlip(anchor + float2(kx, ky) * scale); 42 | } 43 | 44 | // Thresholding 45 | if (d.score > _Threshold) _Output.Append(d); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Shaders/Postprocess1Kernel.hlsl.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a85ab50dd1165b141adce36219d853ce 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | preprocessorOverride: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Shaders/Postprocess2.compute: -------------------------------------------------------------------------------- 1 | #pragma kernel Postprocess2 2 | 3 | // 4 | // 2nd postprocessor (overlap removal) 5 | // 6 | 7 | #include "Common.hlsl" 8 | 9 | #define IOU_THRESHOLD 0.3 10 | 11 | // Input uniforms 12 | ConsumeStructuredBuffer _Input; 13 | ByteAddressBuffer _Count; 14 | 15 | // Output uniforms 16 | AppendStructuredBuffer _Output; 17 | 18 | // Detection entry cache 19 | groupshared Detection _entry[MAX_DETECTION]; 20 | 21 | [numthreads(1, 1, 1)] 22 | void Postprocess2(uint3 id : SV_DispatchThreadID) 23 | { 24 | // Detection entry cache initialization 25 | uint entry_count = _Count.Load(0); 26 | if (entry_count == 0) return; 27 | 28 | for (uint i = 0; i < entry_count; i++) 29 | _entry[i] = _Input.Consume(); 30 | 31 | // Try all the permutations. 32 | for (i = 0; i < entry_count - 1; i++) 33 | { 34 | if (_entry[i].score == 0) continue; 35 | 36 | // Variables for accumulation 37 | float max_score = _entry[i].score; 38 | float4x4 g_acc = DetectionToMatrix(_entry[i]) * max_score; 39 | float s_acc = max_score; 40 | 41 | for (uint j = i + 1; j < entry_count; j++) 42 | { 43 | if (_entry[j].score == 0) continue; 44 | 45 | // Overlap test 46 | if (CalculateIOU(_entry[i], _entry[j]) < IOU_THRESHOLD) continue; 47 | 48 | // Accumulation 49 | float score = _entry[j].score; 50 | g_acc += DetectionToMatrix(_entry[j]) * score; 51 | s_acc += score; 52 | max_score = max(max_score, score); 53 | 54 | // Remove the entry. 55 | _entry[j].score = 0; 56 | } 57 | 58 | // Output the blended detection. 59 | _Output.Append(MatrixToDetection(g_acc / s_acc, max_score)); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Shaders/Postprocess2.compute.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7e26301af32f9d84583db4e308679ada 3 | ComputeShaderImporter: 4 | externalObjects: {} 5 | currentAPIMask: 4 6 | preprocessorOverride: 0 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Shaders/Preprocess.compute: -------------------------------------------------------------------------------- 1 | #pragma kernel Preprocess 2 | 3 | // 4 | // Preprocessor (texture to tensor conversion) 5 | // 6 | 7 | // Input 8 | sampler2D _Texture; 9 | uint _ImageSize; 10 | 11 | // Output 12 | RWBuffer _Tensor; 13 | 14 | [numthreads(8, 8, 1)] 15 | void Preprocess(uint3 id : SV_DispatchThreadID) 16 | { 17 | // UV (vertically flipped) 18 | float2 uv = float2(0.5 + id.x, _ImageSize - 0.5 - id.y) / _ImageSize; 19 | 20 | // UV gradients 21 | float2 duv_dx = float2(1.0 / _ImageSize, 0); 22 | float2 duv_dy = float2(0, -1.0 / _ImageSize); 23 | 24 | // Texture sample 25 | float3 rgb = tex2Dgrad(_Texture, uv, duv_dx, duv_dy).rgb * 2 - 1; 26 | 27 | // Tensor element output 28 | uint offs = (id.y * _ImageSize + id.x) * 3; 29 | _Tensor[offs + 0] = rgb.r; 30 | _Tensor[offs + 1] = rgb.g; 31 | _Tensor[offs + 2] = rgb.b; 32 | } 33 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/Shaders/Preprocess.compute.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9dc350df966fdac4e9fa781f74b0fe6a 3 | ComputeShaderImporter: 4 | externalObjects: {} 5 | currentAPIMask: 4 6 | preprocessorOverride: 0 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/UnityUI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 29cb8a586d4474058bbea1b670ff19fe 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/UnityUI/Fonts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a19d4380fd357446c9500149cac2da43 3 | DefaultImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/UnityUI/Fonts/Jupiter.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 76785bd5c538c4c89b82102e5d54043f 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/UnityUI/Fonts/Jupiter/Jupiter.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/02-FaceTracking-BlazeFace/UnityUI/Fonts/Jupiter/Jupiter.ttf -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/UnityUI/Fonts/Jupiter/Jupiter.ttf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3b05adfd9d6e840a29f5a48278aa0c91 3 | TrueTypeFontImporter: 4 | serializedVersion: 2 5 | fontSize: 16 6 | forceTextureCase: -2 7 | characterSpacing: 1 8 | characterPadding: 0 9 | includeFontData: 1 10 | use2xBehaviour: 0 11 | fontNames: [] 12 | customCharacters: 13 | fontRenderingMode: 0 14 | userData: 15 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/UnityUI/Fonts/Jupiter/LICENSE.txt: -------------------------------------------------------------------------------- 1 | The Jupiter font is created by Isurus Labs and is in the public domain. -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/UnityUI/Fonts/Jupiter/LICENSE.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0830fe8d3ffad46fa9c7f40f8234ef60 3 | TextScriptImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/UnityUI/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: df4427832aaf4404dbda6b3ae9d5e096 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/UnityUI/Prefabs/SF Toggle.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &100000 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 100100000} 8 | serializedVersion: 4 9 | m_Component: 10 | - 224: {fileID: 22400000} 11 | - 222: {fileID: 22200000} 12 | - 114: {fileID: 11400000} 13 | m_Layer: 0 14 | m_Name: Checkmark 15 | m_TagString: Untagged 16 | m_Icon: {fileID: 0} 17 | m_NavMeshLayer: 0 18 | m_StaticEditorFlags: 0 19 | m_IsActive: 1 20 | --- !u!1 &100002 21 | GameObject: 22 | m_ObjectHideFlags: 0 23 | m_PrefabParentObject: {fileID: 0} 24 | m_PrefabInternal: {fileID: 100100000} 25 | serializedVersion: 4 26 | m_Component: 27 | - 224: {fileID: 22400002} 28 | - 114: {fileID: 11400002} 29 | m_Layer: 0 30 | m_Name: SF Toggle 31 | m_TagString: Untagged 32 | m_Icon: {fileID: 0} 33 | m_NavMeshLayer: 0 34 | m_StaticEditorFlags: 0 35 | m_IsActive: 1 36 | --- !u!1 &100004 37 | GameObject: 38 | m_ObjectHideFlags: 0 39 | m_PrefabParentObject: {fileID: 0} 40 | m_PrefabInternal: {fileID: 100100000} 41 | serializedVersion: 4 42 | m_Component: 43 | - 224: {fileID: 22400004} 44 | - 222: {fileID: 22200002} 45 | - 114: {fileID: 11400004} 46 | m_Layer: 0 47 | m_Name: Background 48 | m_TagString: Untagged 49 | m_Icon: {fileID: 0} 50 | m_NavMeshLayer: 0 51 | m_StaticEditorFlags: 0 52 | m_IsActive: 1 53 | --- !u!114 &11400000 54 | MonoBehaviour: 55 | m_ObjectHideFlags: 1 56 | m_PrefabParentObject: {fileID: 0} 57 | m_PrefabInternal: {fileID: 100100000} 58 | m_GameObject: {fileID: 100000} 59 | m_Enabled: 1 60 | m_EditorHideFlags: 0 61 | m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} 62 | m_Name: 63 | m_EditorClassIdentifier: 64 | m_Material: {fileID: 0} 65 | m_Color: {r: 1, g: 1, b: 1, a: 1} 66 | m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} 67 | m_Type: 0 68 | m_PreserveAspect: 0 69 | m_FillCenter: 1 70 | m_FillMethod: 4 71 | m_FillAmount: 1 72 | m_FillClockwise: 1 73 | m_FillOrigin: 0 74 | --- !u!114 &11400002 75 | MonoBehaviour: 76 | m_ObjectHideFlags: 1 77 | m_PrefabParentObject: {fileID: 0} 78 | m_PrefabInternal: {fileID: 100100000} 79 | m_GameObject: {fileID: 100002} 80 | m_Enabled: 1 81 | m_EditorHideFlags: 0 82 | m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} 83 | m_Name: 84 | m_EditorClassIdentifier: 85 | m_Navigation: 86 | m_Mode: 3 87 | m_SelectOnUp: {fileID: 0} 88 | m_SelectOnDown: {fileID: 0} 89 | m_SelectOnLeft: {fileID: 0} 90 | m_SelectOnRight: {fileID: 0} 91 | m_Transition: 1 92 | m_Colors: 93 | m_NormalColor: {r: 0, g: .549019635, b: 1, a: 1} 94 | m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1} 95 | m_PressedColor: {r: .478431374, g: .784313738, b: 1, a: 1} 96 | m_DisabledColor: {r: 0, g: .286620408, b: .522058845, a: 1} 97 | m_ColorMultiplier: 1 98 | m_FadeDuration: .100000001 99 | m_SpriteState: 100 | m_HighlightedSprite: {fileID: 0} 101 | m_PressedSprite: {fileID: 0} 102 | m_DisabledSprite: {fileID: 0} 103 | m_AnimationTriggers: 104 | m_NormalTrigger: Normal 105 | m_HighlightedTrigger: Highlighted 106 | m_PressedTrigger: Pressed 107 | m_DisabledTrigger: Disabled 108 | m_Interactable: 1 109 | m_TargetGraphic: {fileID: 11400004} 110 | toggleTransition: 1 111 | graphic: {fileID: 11400000} 112 | m_Group: {fileID: 0} 113 | onValueChanged: 114 | m_PersistentCalls: 115 | m_Calls: [] 116 | m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, 117 | Culture=neutral, PublicKeyToken=null 118 | m_IsOn: 1 119 | --- !u!114 &11400004 120 | MonoBehaviour: 121 | m_ObjectHideFlags: 1 122 | m_PrefabParentObject: {fileID: 0} 123 | m_PrefabInternal: {fileID: 100100000} 124 | m_GameObject: {fileID: 100004} 125 | m_Enabled: 1 126 | m_EditorHideFlags: 0 127 | m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} 128 | m_Name: 129 | m_EditorClassIdentifier: 130 | m_Material: {fileID: 0} 131 | m_Color: {r: 1, g: 1, b: 1, a: 1} 132 | m_Sprite: {fileID: 21300000, guid: 1f1d5baae1d26404a8a639a07e5c7766, type: 3} 133 | m_Type: 1 134 | m_PreserveAspect: 0 135 | m_FillCenter: 1 136 | m_FillMethod: 4 137 | m_FillAmount: 1 138 | m_FillClockwise: 1 139 | m_FillOrigin: 0 140 | --- !u!222 &22200000 141 | CanvasRenderer: 142 | m_ObjectHideFlags: 1 143 | m_PrefabParentObject: {fileID: 0} 144 | m_PrefabInternal: {fileID: 100100000} 145 | m_GameObject: {fileID: 100000} 146 | --- !u!222 &22200002 147 | CanvasRenderer: 148 | m_ObjectHideFlags: 1 149 | m_PrefabParentObject: {fileID: 0} 150 | m_PrefabInternal: {fileID: 100100000} 151 | m_GameObject: {fileID: 100004} 152 | --- !u!224 &22400000 153 | RectTransform: 154 | m_ObjectHideFlags: 1 155 | m_PrefabParentObject: {fileID: 0} 156 | m_PrefabInternal: {fileID: 100100000} 157 | m_GameObject: {fileID: 100000} 158 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 159 | m_LocalPosition: {x: 0, y: 0, z: 0} 160 | m_LocalScale: {x: 1, y: 1, z: 1} 161 | m_Children: [] 162 | m_Father: {fileID: 22400002} 163 | m_RootOrder: 1 164 | m_AnchorMin: {x: 0, y: .5} 165 | m_AnchorMax: {x: 0, y: .5} 166 | m_AnchoredPosition: {x: 15, y: 0} 167 | m_SizeDelta: {x: 20, y: 20} 168 | m_Pivot: {x: .5, y: .5} 169 | --- !u!224 &22400002 170 | RectTransform: 171 | m_ObjectHideFlags: 1 172 | m_PrefabParentObject: {fileID: 0} 173 | m_PrefabInternal: {fileID: 100100000} 174 | m_GameObject: {fileID: 100002} 175 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 176 | m_LocalPosition: {x: 0, y: 0, z: 0} 177 | m_LocalScale: {x: 1, y: 1, z: 1} 178 | m_Children: 179 | - {fileID: 22400004} 180 | - {fileID: 22400000} 181 | m_Father: {fileID: 0} 182 | m_RootOrder: 0 183 | m_AnchorMin: {x: 0, y: 0} 184 | m_AnchorMax: {x: 0, y: 0} 185 | m_AnchoredPosition: {x: 0, y: 0} 186 | m_SizeDelta: {x: 30, y: 30} 187 | m_Pivot: {x: .5, y: .5} 188 | --- !u!224 &22400004 189 | RectTransform: 190 | m_ObjectHideFlags: 1 191 | m_PrefabParentObject: {fileID: 0} 192 | m_PrefabInternal: {fileID: 100100000} 193 | m_GameObject: {fileID: 100004} 194 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 195 | m_LocalPosition: {x: 0, y: 0, z: 0} 196 | m_LocalScale: {x: 1, y: 1, z: 1} 197 | m_Children: [] 198 | m_Father: {fileID: 22400002} 199 | m_RootOrder: 0 200 | m_AnchorMin: {x: 0, y: .5} 201 | m_AnchorMax: {x: 0, y: .5} 202 | m_AnchoredPosition: {x: 15, y: 0} 203 | m_SizeDelta: {x: 30, y: 30} 204 | m_Pivot: {x: .5, y: .5} 205 | --- !u!1001 &100100000 206 | Prefab: 207 | m_ObjectHideFlags: 1 208 | serializedVersion: 2 209 | m_Modification: 210 | m_TransformParent: {fileID: 0} 211 | m_Modifications: [] 212 | m_RemovedComponents: [] 213 | m_ParentPrefab: {fileID: 0} 214 | m_RootGameObject: {fileID: 100002} 215 | m_IsPrefabParent: 1 216 | m_IsExploded: 1 217 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/UnityUI/Prefabs/SF Toggle.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e2cfc6d26c835463f9d1128ba02434f6 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/UnityUI/Textures and Sprites.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c2be25f219e02413089f078809c94975 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/UnityUI/Textures and Sprites/SF UI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 01c35209477004a66b91a5317ed9a059 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/UnityUI/Textures and Sprites/SF UI/SF Generic.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/02-FaceTracking-BlazeFace/UnityUI/Textures and Sprites/SF UI/SF Generic.psd -------------------------------------------------------------------------------- /UnityProject/Assets/02-FaceTracking-BlazeFace/UnityUI/Textures and Sprites/SF UI/SF Generic.psd.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 19e341da2079b48e5acbd351f9ffaa9c 3 | TextureImporter: 4 | internalIDToNameTable: 5 | - first: 6 | 213: 21300000 7 | second: SF Generic_0 8 | externalObjects: {} 9 | serializedVersion: 11 10 | mipmaps: 11 | mipMapMode: 0 12 | enableMipMap: 0 13 | sRGBTexture: 1 14 | linearTexture: 0 15 | fadeOut: 0 16 | borderMipMap: 0 17 | mipMapsPreserveCoverage: 0 18 | alphaTestReferenceValue: 0.5 19 | mipMapFadeDistanceStart: 1 20 | mipMapFadeDistanceEnd: 3 21 | bumpmap: 22 | convertToNormalMap: 0 23 | externalNormalMap: 0 24 | heightScale: 0.25 25 | normalMapFilter: 0 26 | isReadable: 0 27 | streamingMipmaps: 0 28 | streamingMipmapsPriority: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: -3 34 | maxTextureSize: 4096 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 2 38 | aniso: 16 39 | mipBias: -100 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 2 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 8 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | applyGammaDecoding: 1 64 | platformSettings: 65 | - serializedVersion: 3 66 | buildTarget: DefaultTexturePlatform 67 | maxTextureSize: 4096 68 | resizeAlgorithm: 0 69 | textureFormat: -1 70 | textureCompression: 0 71 | compressionQuality: 50 72 | crunchedCompression: 0 73 | allowsAlphaSplitting: 0 74 | overridden: 0 75 | androidETC2FallbackOverride: 0 76 | forceMaximumCompressionQuality_BC6H_BC7: 1 77 | - serializedVersion: 3 78 | buildTarget: Standalone 79 | maxTextureSize: 4096 80 | resizeAlgorithm: 0 81 | textureFormat: -1 82 | textureCompression: 0 83 | compressionQuality: 50 84 | crunchedCompression: 0 85 | allowsAlphaSplitting: 0 86 | overridden: 0 87 | androidETC2FallbackOverride: 0 88 | forceMaximumCompressionQuality_BC6H_BC7: 1 89 | - serializedVersion: 3 90 | buildTarget: iPhone 91 | maxTextureSize: 4096 92 | resizeAlgorithm: 0 93 | textureFormat: -1 94 | textureCompression: 0 95 | compressionQuality: 50 96 | crunchedCompression: 0 97 | allowsAlphaSplitting: 0 98 | overridden: 0 99 | androidETC2FallbackOverride: 0 100 | forceMaximumCompressionQuality_BC6H_BC7: 1 101 | - serializedVersion: 3 102 | buildTarget: tvOS 103 | maxTextureSize: 4096 104 | resizeAlgorithm: 0 105 | textureFormat: -1 106 | textureCompression: 0 107 | compressionQuality: 50 108 | crunchedCompression: 0 109 | allowsAlphaSplitting: 0 110 | overridden: 0 111 | androidETC2FallbackOverride: 0 112 | forceMaximumCompressionQuality_BC6H_BC7: 1 113 | - serializedVersion: 3 114 | buildTarget: Android 115 | maxTextureSize: 4096 116 | resizeAlgorithm: 0 117 | textureFormat: -1 118 | textureCompression: 0 119 | compressionQuality: 50 120 | crunchedCompression: 0 121 | allowsAlphaSplitting: 0 122 | overridden: 0 123 | androidETC2FallbackOverride: 0 124 | forceMaximumCompressionQuality_BC6H_BC7: 1 125 | - serializedVersion: 3 126 | buildTarget: Windows Store Apps 127 | maxTextureSize: 4096 128 | resizeAlgorithm: 0 129 | textureFormat: -1 130 | textureCompression: 0 131 | compressionQuality: 50 132 | crunchedCompression: 0 133 | allowsAlphaSplitting: 0 134 | overridden: 0 135 | androidETC2FallbackOverride: 0 136 | forceMaximumCompressionQuality_BC6H_BC7: 1 137 | - serializedVersion: 3 138 | buildTarget: WebGL 139 | maxTextureSize: 4096 140 | resizeAlgorithm: 0 141 | textureFormat: -1 142 | textureCompression: 0 143 | compressionQuality: 50 144 | crunchedCompression: 0 145 | allowsAlphaSplitting: 0 146 | overridden: 0 147 | androidETC2FallbackOverride: 0 148 | forceMaximumCompressionQuality_BC6H_BC7: 1 149 | spriteSheet: 150 | serializedVersion: 2 151 | sprites: 152 | - serializedVersion: 2 153 | name: SF Generic_0 154 | rect: 155 | serializedVersion: 2 156 | x: 0 157 | y: 0 158 | width: 32 159 | height: 32 160 | alignment: 0 161 | pivot: {x: 0.5, y: 0.5} 162 | border: {x: 10, y: 10, z: 10, w: 10} 163 | outline: [] 164 | physicsShape: [] 165 | tessellationDetail: -1 166 | bones: [] 167 | spriteID: 02305410000000000800000000000000 168 | internalID: 21300000 169 | vertices: [] 170 | indices: 171 | edges: [] 172 | weights: [] 173 | outline: [] 174 | physicsShape: [] 175 | bones: [] 176 | spriteID: 177 | internalID: 0 178 | vertices: [] 179 | indices: 180 | edges: [] 181 | weights: [] 182 | secondaryTextures: [] 183 | spritePackingTag: SF 184 | pSDRemoveMatte: 1 185 | pSDShowRemoveMatteOption: 1 186 | userData: 187 | assetBundleName: 188 | assetBundleVariant: 189 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e908ed78a44e24846b8e6d2f184fe89b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/03-MultiObjectStaticImageRecognition-YoloV3Tiny.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9c3f3ab6fcc0d4e8395859b09bf8535d 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Images.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1331071f355f14646ba299aeec3fa863 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Images/balcony.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Images/balcony.png -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Images/balcony.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cd4559cf926e34902a531eb580cddbc0 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 0 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: 0 35 | aniso: 1 36 | mipBias: 0 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: 4 67 | textureCompression: 0 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: 4 79 | textureCompression: 0 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: iPhone 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: 4 91 | textureCompression: 0 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: Android 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: 4 103 | textureCompression: 0 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | - serializedVersion: 3 111 | buildTarget: WebGL 112 | maxTextureSize: 2048 113 | resizeAlgorithm: 0 114 | textureFormat: 4 115 | textureCompression: 0 116 | compressionQuality: 50 117 | crunchedCompression: 0 118 | allowsAlphaSplitting: 0 119 | overridden: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | spritePackingTag: 136 | pSDRemoveMatte: 0 137 | pSDShowRemoveMatteOption: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Images/camp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Images/camp.png -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Images/camp.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f45cf80a4ffb34eb6a01c49587225668 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 0 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: 0 35 | aniso: 1 36 | mipBias: 0 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: 4 67 | textureCompression: 0 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: 4 79 | textureCompression: 0 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: iPhone 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: 4 91 | textureCompression: 0 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: Android 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: 4 103 | textureCompression: 0 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | - serializedVersion: 3 111 | buildTarget: WebGL 112 | maxTextureSize: 2048 113 | resizeAlgorithm: 0 114 | textureFormat: 4 115 | textureCompression: 0 116 | compressionQuality: 50 117 | crunchedCompression: 0 118 | allowsAlphaSplitting: 0 119 | overridden: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | spritePackingTag: 136 | pSDRemoveMatte: 0 137 | pSDShowRemoveMatteOption: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Images/cars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Images/cars.png -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Images/cars.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ac2792c2cc3ee42188e6dee4d7573af0 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 0 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: 0 35 | aniso: 1 36 | mipBias: 0 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: 4 67 | textureCompression: 0 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: 4 79 | textureCompression: 0 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: iPhone 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: 4 91 | textureCompression: 0 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: Android 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: 4 103 | textureCompression: 0 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | - serializedVersion: 3 111 | buildTarget: WebGL 112 | maxTextureSize: 2048 113 | resizeAlgorithm: 0 114 | textureFormat: 4 115 | textureCompression: 0 116 | compressionQuality: 50 117 | crunchedCompression: 0 118 | allowsAlphaSplitting: 0 119 | overridden: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | spritePackingTag: 136 | pSDRemoveMatte: 0 137 | pSDShowRemoveMatteOption: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Images/table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Images/table.png -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Images/table.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5ee629bf04a37416389a1e6b584461e9 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 0 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: 0 35 | aniso: 1 36 | mipBias: 0 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: 4 67 | textureCompression: 0 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: 4 79 | textureCompression: 0 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: iPhone 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: 4 91 | textureCompression: 0 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: Android 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: 4 103 | textureCompression: 0 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | - serializedVersion: 3 111 | buildTarget: WebGL 112 | maxTextureSize: 2048 113 | resizeAlgorithm: 0 114 | textureFormat: 4 115 | textureCompression: 0 116 | compressionQuality: 50 117 | crunchedCompression: 0 118 | allowsAlphaSplitting: 0 119 | overridden: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | spritePackingTag: 136 | pSDRemoveMatte: 0 137 | pSDShowRemoveMatteOption: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Models.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e1574f009e2f74b5c8f5d1f47a0082b0 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Models/classes.txt: -------------------------------------------------------------------------------- 1 | person 2 | bicycle 3 | car 4 | motorbike 5 | aeroplane 6 | bus 7 | train 8 | truck 9 | boat 10 | traffic light 11 | fire hydrant 12 | stop sign 13 | parking meter 14 | bench 15 | bird 16 | cat 17 | dog 18 | horse 19 | sheep 20 | cow 21 | elephant 22 | bear 23 | zebra 24 | giraffe 25 | backpack 26 | umbrella 27 | handbag 28 | tie 29 | suitcase 30 | frisbee 31 | skis 32 | snowboard 33 | sports ball 34 | kite 35 | baseball bat 36 | baseball glove 37 | skateboard 38 | surfboard 39 | tennis racket 40 | bottle 41 | wine glass 42 | cup 43 | fork 44 | knife 45 | spoon 46 | bowl 47 | banana 48 | apple 49 | sandwich 50 | orange 51 | broccoli 52 | carrot 53 | hot dog 54 | pizza 55 | donut 56 | cake 57 | chair 58 | sofa 59 | potted plant 60 | bed 61 | dining table 62 | toilet 63 | tv monitor 64 | laptop 65 | mouse 66 | remote 67 | keyboard 68 | cell phone 69 | microwave 70 | oven 71 | toaster 72 | sink 73 | refrigerator 74 | book 75 | clock 76 | vase 77 | scissors 78 | teddy bear 79 | hair drier 80 | toothbrush -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Models/classes.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5044607a409e249b7a1c5b516d508e12 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Models/yolov3-tiny-original.onnx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Models/yolov3-tiny-original.onnx -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Models/yolov3-tiny-original.onnx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3f659600ec79a419db46cf154a3da2d3 3 | ScriptedImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 2 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3} 11 | optimizeModel: 1 12 | forceArbitraryBatchSize: 1 13 | treatErrorsAsWarnings: 0 14 | importMode: 1 15 | weightsTypeMode: 0 16 | activationTypeMode: 0 17 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8b521cf13b53e41fd98bdbdc69876e36 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Scripts/RunInferenceYOLO.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using Unity.Barracuda; 5 | using UnityEngine; 6 | using UnityEngine.UI; 7 | using Object = System.Object; 8 | 9 | public class RunInferenceYOLO : MonoBehaviour 10 | { 11 | public Texture2D[] inputImage; 12 | public int selectedImage = 0; 13 | public RawImage displayImage; 14 | public NNModel srcModel; 15 | public TextAsset labelsAsset; 16 | public Dropdown backendDropdown; 17 | public Transform displayLocation; 18 | public Font font; 19 | public float confidenceThreshold = 0.25f; 20 | public float iouThreshold = 0.45f; 21 | 22 | private Model model; 23 | private IWorker engine; 24 | private Dictionary inputs = new Dictionary(); 25 | private string[] labels; 26 | private RenderTexture targetRT; 27 | private string inferenceBackend = "CSharpBurst"; 28 | private const int amountOfClasses = 80; 29 | private const int box20Sections = 20; 30 | private const int box40Sections = 40; 31 | private const int anchorBatchSize = 85; 32 | private const int inputResolutionX = 640; 33 | private const int inputResolutionY = 640; 34 | //model output returns box scales relative to the anchor boxes, 3 are used for 40x40 outputs and other 3 for 20x20 outputs, 35 | //each cell has 3 boxes 3x85=255 36 | private readonly float[] anchors = {10,14, 23,27, 37,58, 81,82, 135,169, 344,319}; 37 | 38 | //box struct with the original output data 39 | public struct Box 40 | { 41 | public float x; 42 | public float y; 43 | public float width; 44 | public float height; 45 | public string label; 46 | public int anchorIndex; 47 | public int cellIndexX; 48 | public int cellIndexY; 49 | } 50 | 51 | //restructured data with pixel units 52 | public struct PixelBox 53 | { 54 | public float x; 55 | public float y; 56 | public float width; 57 | public float height; 58 | public string label; 59 | } 60 | 61 | void Start() 62 | { 63 | Application.targetFrameRate = 60; 64 | Screen.orientation = ScreenOrientation.LandscapeLeft; 65 | AddBackendOptions(); 66 | //parse neural net labels 67 | labels = labelsAsset.text.Split('\n'); 68 | //load model 69 | model = ModelLoader.Load(srcModel); 70 | SelectBackendAndExecuteML(); 71 | } 72 | 73 | public void ExecuteML(int imageID) 74 | { 75 | ClearAnnotations(); 76 | selectedImage = imageID; 77 | if (inputImage[selectedImage].width != 640 || inputImage[selectedImage].height != 640) 78 | { 79 | Debug.LogError("Image resolution must be 640x640. Make sure Texture Import Settings are similar to the example images"); 80 | } 81 | displayImage.texture = inputImage[selectedImage]; 82 | 83 | if (inferenceBackend == "CSharpBurst") 84 | { 85 | engine = WorkerFactory.CreateWorker(WorkerFactory.Type.CSharpBurst, model); 86 | } 87 | else if (inferenceBackend == "ComputePrecompiled") 88 | { 89 | engine = WorkerFactory.CreateWorker(WorkerFactory.Type.ComputePrecompiled, model); 90 | } 91 | else if (inferenceBackend == "PixelShader") 92 | { 93 | engine = WorkerFactory.CreateWorker(WorkerFactory.Type.PixelShader, model); 94 | } 95 | 96 | //preprocess image for input 97 | var input = new Tensor((inputImage[imageID]), 3); 98 | engine.Execute(input); 99 | 100 | //read output tensors 101 | var output20 = engine.PeekOutput("016_convolutional"); //016_convolutional = original output tensor name for 20x20 boundingBoxes 102 | var output40 = engine.PeekOutput("023_convolutional"); //023_convolutional = original output tensor name for 40x40 boundingBoxes 103 | 104 | //this list is used to store the original model output data 105 | List outputBoxList = new List(); 106 | 107 | //this list is used to store the values converted to intuitive pixel data 108 | List pixelBoxList = new List(); 109 | 110 | //decode the output 111 | outputBoxList = DecodeOutput(output20,output40); 112 | 113 | //convert output to intuitive pixel data (x,y coords from the center of the image; height and width in pixels) 114 | pixelBoxList = ConvertBoxToPixelData(outputBoxList); 115 | 116 | //non max suppression (remove overlapping objects) 117 | pixelBoxList = NonMaxSuppression(pixelBoxList); 118 | 119 | //draw bounding boxes 120 | for (int i = 0; i < pixelBoxList.Count; i++) 121 | { 122 | DrawBox(pixelBoxList[i]); 123 | } 124 | 125 | //clean memory 126 | input.Dispose(); 127 | engine.Dispose(); 128 | Resources.UnloadUnusedAssets(); 129 | } 130 | 131 | public void AddBackendOptions() 132 | { 133 | List options = new List (); 134 | options.Add("CSharpBurst"); 135 | #if !UNITY_WEBGL 136 | options.Add("ComputePrecompiled"); 137 | #endif 138 | options.Add("PixelShader"); 139 | backendDropdown.ClearOptions (); 140 | backendDropdown.AddOptions(options); 141 | } 142 | 143 | public void SelectBackendAndExecuteML() 144 | { 145 | if (backendDropdown.options[backendDropdown.value].text == "CSharpBurst") 146 | { 147 | inferenceBackend = "CSharpBurst"; 148 | } 149 | else if (backendDropdown.options[backendDropdown.value].text == "ComputePrecompiled") 150 | { 151 | inferenceBackend = "ComputePrecompiled"; 152 | } 153 | else if (backendDropdown.options[backendDropdown.value].text == "PixelShader") 154 | { 155 | inferenceBackend = "PixelShader"; 156 | } 157 | ExecuteML(selectedImage); 158 | } 159 | 160 | public List DecodeOutput(Tensor output20, Tensor output40) 161 | { 162 | List outputBoxList = new List(); 163 | 164 | //decode results into a list for each output(20x20 and 40x40), anchor mask selects the output box presets (first 3 or the last 3 presets) 165 | outputBoxList = DecodeYolo(outputBoxList, output40, box40Sections, 0); 166 | outputBoxList = DecodeYolo(outputBoxList, output20, box20Sections, 3); 167 | 168 | return outputBoxList; 169 | } 170 | 171 | public List DecodeYolo(List outputBoxList, Tensor output, int boxSections, int anchorMask ) 172 | { 173 | for (int boundingBoxX = 0; boundingBoxX < boxSections; boundingBoxX++) 174 | { 175 | for (int boundingBoxY = 0; boundingBoxY < boxSections; boundingBoxY++) 176 | { 177 | for (int anchor = 0; anchor < 3; anchor++) 178 | { 179 | if (output[0, boundingBoxX, boundingBoxY, anchor * anchorBatchSize + 4] > confidenceThreshold) 180 | { 181 | //identify the best class 182 | float bestValue = 0; 183 | int bestIndex = 0; 184 | for (int i = 0; i < amountOfClasses; i++) 185 | { 186 | float value = output[0, boundingBoxX, boundingBoxY, anchor * anchorBatchSize + 5 + i]; 187 | if (value > bestValue ) 188 | { 189 | bestValue = value; 190 | bestIndex = i; 191 | } 192 | } 193 | //Debug.Log(labels[bestIndex]); 194 | Box tempBox; 195 | tempBox.x = output[0, boundingBoxX, boundingBoxY, anchor * anchorBatchSize]; 196 | tempBox.y = output[0, boundingBoxX, boundingBoxY, anchor * anchorBatchSize + 1]; 197 | tempBox.width = output[0, boundingBoxX, boundingBoxY, anchor * anchorBatchSize + 2]; 198 | tempBox.height = output[0, boundingBoxX, boundingBoxY, anchor * anchorBatchSize + 3]; 199 | tempBox.label = labels[bestIndex]; 200 | tempBox.anchorIndex = anchor + anchorMask; 201 | tempBox.cellIndexY = boundingBoxX; 202 | tempBox.cellIndexX = boundingBoxY; 203 | outputBoxList.Add(tempBox); 204 | 205 | } 206 | } 207 | } 208 | } 209 | return outputBoxList; 210 | } 211 | 212 | public List ConvertBoxToPixelData(List boxList) 213 | { 214 | List pixelBoxList = new List(); 215 | for (int i = 0; i < boxList.Count; i++) 216 | { 217 | PixelBox tempBox; 218 | 219 | //apply anchor mask, each output uses a different preset box 220 | var boxSections = boxList[i].anchorIndex > 2 ? box20Sections : box40Sections; 221 | 222 | //move marker to the edge of the picture -> move to the center of the cell -> add cell offset (cell size * amount of cells) -> add scale 223 | tempBox.x = (float)(-inputResolutionX * 0.5) + inputResolutionX / boxSections * 0.5f + 224 | inputResolutionX / boxSections * boxList[i].cellIndexX + Sigmoid(boxList[i].x); 225 | tempBox.y = (float)(-inputResolutionY * 0.5) + inputResolutionX / boxSections * 0.5f + 226 | inputResolutionX / boxSections * boxList[i].cellIndexY + Sigmoid(boxList[i].y); 227 | 228 | //select the anchor box and multiply it by scale 229 | tempBox.width = anchors[boxList[i].anchorIndex * 2] * (float)Math.Pow(Math.E, boxList[i].width); 230 | tempBox.height = anchors[boxList[i].anchorIndex * 2 + 1] * (float)Math.Pow(Math.E, boxList[i].height); 231 | tempBox.label = boxList[i].label; 232 | pixelBoxList.Add(tempBox); 233 | } 234 | 235 | return pixelBoxList; 236 | } 237 | 238 | public List NonMaxSuppression(List boxList) 239 | { 240 | for (int i = 0; i < boxList.Count - 1; i++) 241 | { 242 | for (int j = i + 1; j < boxList.Count; j++) 243 | { 244 | if (IntersectionOverUnion(boxList[i], boxList[j]) > iouThreshold && boxList[i].label == boxList[j].label) 245 | { 246 | boxList.RemoveAt(i); 247 | } 248 | } 249 | } 250 | return boxList; 251 | } 252 | 253 | public float IntersectionOverUnion(PixelBox box1, PixelBox box2) 254 | { 255 | //top left and bottom right corners of two rectangles 256 | float b1x1 = box1.x - 0.5f * box1.width; 257 | float b1x2 = box1.x + 0.5f * box1.width; 258 | float b1y1 = box1.y - 0.5f * box1.height; 259 | float b1y2 = box1.y + 0.5f * box1.height; 260 | float b2x1 = box2.x - 0.5f * box2.width; 261 | float b2x2 = box2.x + 0.5f * box2.width; 262 | float b2y1 = box2.y - 0.5f * box2.height; 263 | float b2y2 = box2.y + 0.5f * box2.height; 264 | 265 | //intersection rectangle 266 | float xLeft = Math.Max(b1x1, b2x1); 267 | float yTop = Math.Max(b1y1, b2y1); 268 | float xRight = Math.Max(b1x2, b2x2); 269 | float yBottom = Math.Max(b1y2, b2y2); 270 | 271 | //check if intersection rectangle exist 272 | if (xRight < xLeft || yBottom < yTop) 273 | { 274 | return 0.0f; 275 | } 276 | 277 | float intersectionArea = (xRight - xLeft) * (yBottom - yTop); 278 | float b1area = (b1x2 - b1x1) * (b1y2 - b1y1); 279 | float b2area = (b2x2 - b2x1) * (b2y2 - b2y1); 280 | return intersectionArea / (b1area + b2area - intersectionArea); 281 | } 282 | 283 | public float Sigmoid(float value) { 284 | return 1.0f / (1.0f + (float) Math.Exp(-value)); 285 | } 286 | 287 | public void DrawBox(PixelBox box) 288 | { 289 | //add bounding box 290 | GameObject panel = new GameObject("ObjectBox"); 291 | panel.AddComponent(); 292 | Image img = panel.AddComponent(); 293 | img.color = new Color(0,1,1,0.2f); 294 | panel.transform.SetParent(displayLocation, false); 295 | panel.transform.localPosition = new Vector3(box.x, -box.y); 296 | RectTransform rt = panel.GetComponent(); 297 | rt.sizeDelta = new Vector2(box.width, box.height); 298 | 299 | //add class label 300 | GameObject text = new GameObject("ObjectLabel"); 301 | text.AddComponent(); 302 | Text txt = text.AddComponent(); 303 | text.transform.SetParent(panel.transform, false); 304 | txt.text = box.label; 305 | txt.color = new Color(1,0,0,1); 306 | txt.fontSize = 40; 307 | txt.font = font; 308 | txt.horizontalOverflow = HorizontalWrapMode.Overflow; 309 | RectTransform rt2 = text.GetComponent(); 310 | rt2.offsetMin = new Vector2(20, rt2.offsetMin.y); 311 | rt2.offsetMax = new Vector2(0, rt2.offsetMax.y); 312 | rt2.offsetMax = new Vector2(rt2.offsetMax.x, 0); 313 | rt2.offsetMin = new Vector2(rt2.offsetMin.x, 0); 314 | rt2.anchorMin = new Vector2(0,0); 315 | rt2.anchorMax = new Vector2(1, 1); 316 | } 317 | 318 | public void ClearAnnotations() 319 | { 320 | foreach (Transform child in displayLocation) { 321 | Destroy(child.gameObject); 322 | } 323 | } 324 | 325 | private void OnDestroy() 326 | { 327 | engine?.Dispose(); 328 | 329 | foreach (var key in inputs.Keys) 330 | { 331 | inputs[key].Dispose(); 332 | } 333 | 334 | inputs.Clear(); 335 | } 336 | } 337 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/Scripts/RunInferenceYOLO.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0d507cc61de13437c9ef14f1a4c39bcf 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/UnityUI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e3a59c86d573b4250a1e7d443d5656fe 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/UnityUI/Fonts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: af4b65853218f4a91b1277ffd685c278 3 | DefaultImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/UnityUI/Fonts/Jupiter.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ead67bd7f43c1402bb076456aa164749 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/UnityUI/Fonts/Jupiter/Jupiter.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/UnityUI/Fonts/Jupiter/Jupiter.ttf -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/UnityUI/Fonts/Jupiter/Jupiter.ttf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 46d2f00b1ae3d4d6c97cb0e6ea860090 3 | TrueTypeFontImporter: 4 | serializedVersion: 2 5 | fontSize: 16 6 | forceTextureCase: -2 7 | characterSpacing: 1 8 | characterPadding: 0 9 | includeFontData: 1 10 | use2xBehaviour: 0 11 | fontNames: [] 12 | customCharacters: 13 | fontRenderingMode: 0 14 | userData: 15 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/UnityUI/Fonts/Jupiter/LICENSE.txt: -------------------------------------------------------------------------------- 1 | The Jupiter font is created by Isurus Labs and is in the public domain. -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/UnityUI/Fonts/Jupiter/LICENSE.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 93e802f7367e04b9c9602cd5ddcddbfb 3 | TextScriptImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/UnityUI/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 31ed597d4b0484593961f2e9aae13568 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/UnityUI/Prefabs/SF Toggle.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &100000 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 100100000} 8 | serializedVersion: 4 9 | m_Component: 10 | - 224: {fileID: 22400000} 11 | - 222: {fileID: 22200000} 12 | - 114: {fileID: 11400000} 13 | m_Layer: 0 14 | m_Name: Checkmark 15 | m_TagString: Untagged 16 | m_Icon: {fileID: 0} 17 | m_NavMeshLayer: 0 18 | m_StaticEditorFlags: 0 19 | m_IsActive: 1 20 | --- !u!1 &100002 21 | GameObject: 22 | m_ObjectHideFlags: 0 23 | m_PrefabParentObject: {fileID: 0} 24 | m_PrefabInternal: {fileID: 100100000} 25 | serializedVersion: 4 26 | m_Component: 27 | - 224: {fileID: 22400002} 28 | - 114: {fileID: 11400002} 29 | m_Layer: 0 30 | m_Name: SF Toggle 31 | m_TagString: Untagged 32 | m_Icon: {fileID: 0} 33 | m_NavMeshLayer: 0 34 | m_StaticEditorFlags: 0 35 | m_IsActive: 1 36 | --- !u!1 &100004 37 | GameObject: 38 | m_ObjectHideFlags: 0 39 | m_PrefabParentObject: {fileID: 0} 40 | m_PrefabInternal: {fileID: 100100000} 41 | serializedVersion: 4 42 | m_Component: 43 | - 224: {fileID: 22400004} 44 | - 222: {fileID: 22200002} 45 | - 114: {fileID: 11400004} 46 | m_Layer: 0 47 | m_Name: Background 48 | m_TagString: Untagged 49 | m_Icon: {fileID: 0} 50 | m_NavMeshLayer: 0 51 | m_StaticEditorFlags: 0 52 | m_IsActive: 1 53 | --- !u!114 &11400000 54 | MonoBehaviour: 55 | m_ObjectHideFlags: 1 56 | m_PrefabParentObject: {fileID: 0} 57 | m_PrefabInternal: {fileID: 100100000} 58 | m_GameObject: {fileID: 100000} 59 | m_Enabled: 1 60 | m_EditorHideFlags: 0 61 | m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} 62 | m_Name: 63 | m_EditorClassIdentifier: 64 | m_Material: {fileID: 0} 65 | m_Color: {r: 1, g: 1, b: 1, a: 1} 66 | m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} 67 | m_Type: 0 68 | m_PreserveAspect: 0 69 | m_FillCenter: 1 70 | m_FillMethod: 4 71 | m_FillAmount: 1 72 | m_FillClockwise: 1 73 | m_FillOrigin: 0 74 | --- !u!114 &11400002 75 | MonoBehaviour: 76 | m_ObjectHideFlags: 1 77 | m_PrefabParentObject: {fileID: 0} 78 | m_PrefabInternal: {fileID: 100100000} 79 | m_GameObject: {fileID: 100002} 80 | m_Enabled: 1 81 | m_EditorHideFlags: 0 82 | m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} 83 | m_Name: 84 | m_EditorClassIdentifier: 85 | m_Navigation: 86 | m_Mode: 3 87 | m_SelectOnUp: {fileID: 0} 88 | m_SelectOnDown: {fileID: 0} 89 | m_SelectOnLeft: {fileID: 0} 90 | m_SelectOnRight: {fileID: 0} 91 | m_Transition: 1 92 | m_Colors: 93 | m_NormalColor: {r: 0, g: .549019635, b: 1, a: 1} 94 | m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1} 95 | m_PressedColor: {r: .478431374, g: .784313738, b: 1, a: 1} 96 | m_DisabledColor: {r: 0, g: .286620408, b: .522058845, a: 1} 97 | m_ColorMultiplier: 1 98 | m_FadeDuration: .100000001 99 | m_SpriteState: 100 | m_HighlightedSprite: {fileID: 0} 101 | m_PressedSprite: {fileID: 0} 102 | m_DisabledSprite: {fileID: 0} 103 | m_AnimationTriggers: 104 | m_NormalTrigger: Normal 105 | m_HighlightedTrigger: Highlighted 106 | m_PressedTrigger: Pressed 107 | m_DisabledTrigger: Disabled 108 | m_Interactable: 1 109 | m_TargetGraphic: {fileID: 11400004} 110 | toggleTransition: 1 111 | graphic: {fileID: 11400000} 112 | m_Group: {fileID: 0} 113 | onValueChanged: 114 | m_PersistentCalls: 115 | m_Calls: [] 116 | m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, 117 | Culture=neutral, PublicKeyToken=null 118 | m_IsOn: 1 119 | --- !u!114 &11400004 120 | MonoBehaviour: 121 | m_ObjectHideFlags: 1 122 | m_PrefabParentObject: {fileID: 0} 123 | m_PrefabInternal: {fileID: 100100000} 124 | m_GameObject: {fileID: 100004} 125 | m_Enabled: 1 126 | m_EditorHideFlags: 0 127 | m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} 128 | m_Name: 129 | m_EditorClassIdentifier: 130 | m_Material: {fileID: 0} 131 | m_Color: {r: 1, g: 1, b: 1, a: 1} 132 | m_Sprite: {fileID: 21300000, guid: 1f1d5baae1d26404a8a639a07e5c7766, type: 3} 133 | m_Type: 1 134 | m_PreserveAspect: 0 135 | m_FillCenter: 1 136 | m_FillMethod: 4 137 | m_FillAmount: 1 138 | m_FillClockwise: 1 139 | m_FillOrigin: 0 140 | --- !u!222 &22200000 141 | CanvasRenderer: 142 | m_ObjectHideFlags: 1 143 | m_PrefabParentObject: {fileID: 0} 144 | m_PrefabInternal: {fileID: 100100000} 145 | m_GameObject: {fileID: 100000} 146 | --- !u!222 &22200002 147 | CanvasRenderer: 148 | m_ObjectHideFlags: 1 149 | m_PrefabParentObject: {fileID: 0} 150 | m_PrefabInternal: {fileID: 100100000} 151 | m_GameObject: {fileID: 100004} 152 | --- !u!224 &22400000 153 | RectTransform: 154 | m_ObjectHideFlags: 1 155 | m_PrefabParentObject: {fileID: 0} 156 | m_PrefabInternal: {fileID: 100100000} 157 | m_GameObject: {fileID: 100000} 158 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 159 | m_LocalPosition: {x: 0, y: 0, z: 0} 160 | m_LocalScale: {x: 1, y: 1, z: 1} 161 | m_Children: [] 162 | m_Father: {fileID: 22400002} 163 | m_RootOrder: 1 164 | m_AnchorMin: {x: 0, y: .5} 165 | m_AnchorMax: {x: 0, y: .5} 166 | m_AnchoredPosition: {x: 15, y: 0} 167 | m_SizeDelta: {x: 20, y: 20} 168 | m_Pivot: {x: .5, y: .5} 169 | --- !u!224 &22400002 170 | RectTransform: 171 | m_ObjectHideFlags: 1 172 | m_PrefabParentObject: {fileID: 0} 173 | m_PrefabInternal: {fileID: 100100000} 174 | m_GameObject: {fileID: 100002} 175 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 176 | m_LocalPosition: {x: 0, y: 0, z: 0} 177 | m_LocalScale: {x: 1, y: 1, z: 1} 178 | m_Children: 179 | - {fileID: 22400004} 180 | - {fileID: 22400000} 181 | m_Father: {fileID: 0} 182 | m_RootOrder: 0 183 | m_AnchorMin: {x: 0, y: 0} 184 | m_AnchorMax: {x: 0, y: 0} 185 | m_AnchoredPosition: {x: 0, y: 0} 186 | m_SizeDelta: {x: 30, y: 30} 187 | m_Pivot: {x: .5, y: .5} 188 | --- !u!224 &22400004 189 | RectTransform: 190 | m_ObjectHideFlags: 1 191 | m_PrefabParentObject: {fileID: 0} 192 | m_PrefabInternal: {fileID: 100100000} 193 | m_GameObject: {fileID: 100004} 194 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 195 | m_LocalPosition: {x: 0, y: 0, z: 0} 196 | m_LocalScale: {x: 1, y: 1, z: 1} 197 | m_Children: [] 198 | m_Father: {fileID: 22400002} 199 | m_RootOrder: 0 200 | m_AnchorMin: {x: 0, y: .5} 201 | m_AnchorMax: {x: 0, y: .5} 202 | m_AnchoredPosition: {x: 15, y: 0} 203 | m_SizeDelta: {x: 30, y: 30} 204 | m_Pivot: {x: .5, y: .5} 205 | --- !u!1001 &100100000 206 | Prefab: 207 | m_ObjectHideFlags: 1 208 | serializedVersion: 2 209 | m_Modification: 210 | m_TransformParent: {fileID: 0} 211 | m_Modifications: [] 212 | m_RemovedComponents: [] 213 | m_ParentPrefab: {fileID: 0} 214 | m_RootGameObject: {fileID: 100002} 215 | m_IsPrefabParent: 1 216 | m_IsExploded: 1 217 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/UnityUI/Prefabs/SF Toggle.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c57ef0c9119164e41bc7dcf5da499b85 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/UnityUI/Textures and Sprites.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ec3782f2eee04ec0bed86cc1092fefc 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/UnityUI/Textures and Sprites/SF UI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ec1dbd25d24d8475482846ebd8fc1f9d 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/UnityUI/Textures and Sprites/SF UI/SF Generic.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/barracuda-starter-kit/7db166014858f941538777e468bf20d31dca41ed/UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/UnityUI/Textures and Sprites/SF UI/SF Generic.psd -------------------------------------------------------------------------------- /UnityProject/Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/UnityUI/Textures and Sprites/SF UI/SF Generic.psd.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 89157a3c9bc9c412d92647e0c40b6dc7 3 | TextureImporter: 4 | internalIDToNameTable: 5 | - first: 6 | 213: 21300000 7 | second: SF Generic_0 8 | externalObjects: {} 9 | serializedVersion: 11 10 | mipmaps: 11 | mipMapMode: 0 12 | enableMipMap: 0 13 | sRGBTexture: 1 14 | linearTexture: 0 15 | fadeOut: 0 16 | borderMipMap: 0 17 | mipMapsPreserveCoverage: 0 18 | alphaTestReferenceValue: 0.5 19 | mipMapFadeDistanceStart: 1 20 | mipMapFadeDistanceEnd: 3 21 | bumpmap: 22 | convertToNormalMap: 0 23 | externalNormalMap: 0 24 | heightScale: 0.25 25 | normalMapFilter: 0 26 | isReadable: 0 27 | streamingMipmaps: 0 28 | streamingMipmapsPriority: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: -3 34 | maxTextureSize: 4096 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 2 38 | aniso: 16 39 | mipBias: -100 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 2 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 8 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | applyGammaDecoding: 1 64 | platformSettings: 65 | - serializedVersion: 3 66 | buildTarget: DefaultTexturePlatform 67 | maxTextureSize: 4096 68 | resizeAlgorithm: 0 69 | textureFormat: -1 70 | textureCompression: 0 71 | compressionQuality: 50 72 | crunchedCompression: 0 73 | allowsAlphaSplitting: 0 74 | overridden: 0 75 | androidETC2FallbackOverride: 0 76 | forceMaximumCompressionQuality_BC6H_BC7: 1 77 | - serializedVersion: 3 78 | buildTarget: Standalone 79 | maxTextureSize: 4096 80 | resizeAlgorithm: 0 81 | textureFormat: -1 82 | textureCompression: 0 83 | compressionQuality: 50 84 | crunchedCompression: 0 85 | allowsAlphaSplitting: 0 86 | overridden: 0 87 | androidETC2FallbackOverride: 0 88 | forceMaximumCompressionQuality_BC6H_BC7: 1 89 | - serializedVersion: 3 90 | buildTarget: iPhone 91 | maxTextureSize: 4096 92 | resizeAlgorithm: 0 93 | textureFormat: -1 94 | textureCompression: 0 95 | compressionQuality: 50 96 | crunchedCompression: 0 97 | allowsAlphaSplitting: 0 98 | overridden: 0 99 | androidETC2FallbackOverride: 0 100 | forceMaximumCompressionQuality_BC6H_BC7: 1 101 | - serializedVersion: 3 102 | buildTarget: tvOS 103 | maxTextureSize: 4096 104 | resizeAlgorithm: 0 105 | textureFormat: -1 106 | textureCompression: 0 107 | compressionQuality: 50 108 | crunchedCompression: 0 109 | allowsAlphaSplitting: 0 110 | overridden: 0 111 | androidETC2FallbackOverride: 0 112 | forceMaximumCompressionQuality_BC6H_BC7: 1 113 | - serializedVersion: 3 114 | buildTarget: Android 115 | maxTextureSize: 4096 116 | resizeAlgorithm: 0 117 | textureFormat: -1 118 | textureCompression: 0 119 | compressionQuality: 50 120 | crunchedCompression: 0 121 | allowsAlphaSplitting: 0 122 | overridden: 0 123 | androidETC2FallbackOverride: 0 124 | forceMaximumCompressionQuality_BC6H_BC7: 1 125 | - serializedVersion: 3 126 | buildTarget: Windows Store Apps 127 | maxTextureSize: 4096 128 | resizeAlgorithm: 0 129 | textureFormat: -1 130 | textureCompression: 0 131 | compressionQuality: 50 132 | crunchedCompression: 0 133 | allowsAlphaSplitting: 0 134 | overridden: 0 135 | androidETC2FallbackOverride: 0 136 | forceMaximumCompressionQuality_BC6H_BC7: 1 137 | - serializedVersion: 3 138 | buildTarget: WebGL 139 | maxTextureSize: 4096 140 | resizeAlgorithm: 0 141 | textureFormat: -1 142 | textureCompression: 0 143 | compressionQuality: 50 144 | crunchedCompression: 0 145 | allowsAlphaSplitting: 0 146 | overridden: 0 147 | androidETC2FallbackOverride: 0 148 | forceMaximumCompressionQuality_BC6H_BC7: 1 149 | spriteSheet: 150 | serializedVersion: 2 151 | sprites: 152 | - serializedVersion: 2 153 | name: SF Generic_0 154 | rect: 155 | serializedVersion: 2 156 | x: 0 157 | y: 0 158 | width: 32 159 | height: 32 160 | alignment: 0 161 | pivot: {x: 0.5, y: 0.5} 162 | border: {x: 10, y: 10, z: 10, w: 10} 163 | outline: [] 164 | physicsShape: [] 165 | tessellationDetail: -1 166 | bones: [] 167 | spriteID: 02305410000000000800000000000000 168 | internalID: 21300000 169 | vertices: [] 170 | indices: 171 | edges: [] 172 | weights: [] 173 | outline: [] 174 | physicsShape: [] 175 | bones: [] 176 | spriteID: 177 | internalID: 0 178 | vertices: [] 179 | indices: 180 | edges: [] 181 | weights: [] 182 | secondaryTextures: [] 183 | spritePackingTag: SF 184 | pSDRemoveMatte: 1 185 | pSDShowRemoveMatteOption: 1 186 | userData: 187 | assetBundleName: 188 | assetBundleVariant: 189 | -------------------------------------------------------------------------------- /UnityProject/Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.barracuda": "2.4.0-preview", 4 | "com.unity.ide.rider": "1.2.1", 5 | "com.unity.ide.visualstudio": "2.0.9", 6 | "com.unity.ide.vscode": "1.2.3", 7 | "com.unity.test-framework": "1.1.27", 8 | "com.unity.ugui": "1.0.0", 9 | "com.unity.modules.ai": "1.0.0", 10 | "com.unity.modules.androidjni": "1.0.0", 11 | "com.unity.modules.animation": "1.0.0", 12 | "com.unity.modules.assetbundle": "1.0.0", 13 | "com.unity.modules.audio": "1.0.0", 14 | "com.unity.modules.cloth": "1.0.0", 15 | "com.unity.modules.director": "1.0.0", 16 | "com.unity.modules.imageconversion": "1.0.0", 17 | "com.unity.modules.imgui": "1.0.0", 18 | "com.unity.modules.jsonserialize": "1.0.0", 19 | "com.unity.modules.particlesystem": "1.0.0", 20 | "com.unity.modules.physics": "1.0.0", 21 | "com.unity.modules.physics2d": "1.0.0", 22 | "com.unity.modules.screencapture": "1.0.0", 23 | "com.unity.modules.terrain": "1.0.0", 24 | "com.unity.modules.terrainphysics": "1.0.0", 25 | "com.unity.modules.tilemap": "1.0.0", 26 | "com.unity.modules.ui": "1.0.0", 27 | "com.unity.modules.uielements": "1.0.0", 28 | "com.unity.modules.umbra": "1.0.0", 29 | "com.unity.modules.unityanalytics": "1.0.0", 30 | "com.unity.modules.unitywebrequest": "1.0.0", 31 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 32 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 33 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 34 | "com.unity.modules.unitywebrequestwww": "1.0.0", 35 | "com.unity.modules.vehicles": "1.0.0", 36 | "com.unity.modules.video": "1.0.0", 37 | "com.unity.modules.vr": "1.0.0", 38 | "com.unity.modules.wind": "1.0.0", 39 | "com.unity.modules.xr": "1.0.0" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /UnityProject/Packages/packages-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.barracuda": { 4 | "version": "2.4.0-preview", 5 | "depth": 0, 6 | "source": "registry", 7 | "dependencies": { 8 | "com.unity.burst": "1.6.0", 9 | "com.unity.modules.jsonserialize": "1.0.0", 10 | "com.unity.modules.imageconversion": "1.0.0" 11 | }, 12 | "url": "https://packages.unity.com" 13 | }, 14 | "com.unity.burst": { 15 | "version": "1.6.0", 16 | "depth": 1, 17 | "source": "registry", 18 | "dependencies": { 19 | "com.unity.mathematics": "1.2.1" 20 | }, 21 | "url": "https://packages.unity.com" 22 | }, 23 | "com.unity.ext.nunit": { 24 | "version": "1.0.6", 25 | "depth": 1, 26 | "source": "registry", 27 | "dependencies": {}, 28 | "url": "https://packages.unity.com" 29 | }, 30 | "com.unity.ide.rider": { 31 | "version": "1.2.1", 32 | "depth": 0, 33 | "source": "registry", 34 | "dependencies": { 35 | "com.unity.test-framework": "1.1.1" 36 | }, 37 | "url": "https://packages.unity.com" 38 | }, 39 | "com.unity.ide.visualstudio": { 40 | "version": "2.0.9", 41 | "depth": 0, 42 | "source": "registry", 43 | "dependencies": { 44 | "com.unity.test-framework": "1.1.9" 45 | }, 46 | "url": "https://packages.unity.com" 47 | }, 48 | "com.unity.ide.vscode": { 49 | "version": "1.2.3", 50 | "depth": 0, 51 | "source": "registry", 52 | "dependencies": {}, 53 | "url": "https://packages.unity.com" 54 | }, 55 | "com.unity.mathematics": { 56 | "version": "1.2.1", 57 | "depth": 2, 58 | "source": "registry", 59 | "dependencies": {}, 60 | "url": "https://packages.unity.com" 61 | }, 62 | "com.unity.test-framework": { 63 | "version": "1.1.27", 64 | "depth": 0, 65 | "source": "registry", 66 | "dependencies": { 67 | "com.unity.ext.nunit": "1.0.6", 68 | "com.unity.modules.imgui": "1.0.0", 69 | "com.unity.modules.jsonserialize": "1.0.0" 70 | }, 71 | "url": "https://packages.unity.com" 72 | }, 73 | "com.unity.ugui": { 74 | "version": "1.0.0", 75 | "depth": 0, 76 | "source": "builtin", 77 | "dependencies": { 78 | "com.unity.modules.ui": "1.0.0", 79 | "com.unity.modules.imgui": "1.0.0" 80 | } 81 | }, 82 | "com.unity.modules.ai": { 83 | "version": "1.0.0", 84 | "depth": 0, 85 | "source": "builtin", 86 | "dependencies": {} 87 | }, 88 | "com.unity.modules.androidjni": { 89 | "version": "1.0.0", 90 | "depth": 0, 91 | "source": "builtin", 92 | "dependencies": {} 93 | }, 94 | "com.unity.modules.animation": { 95 | "version": "1.0.0", 96 | "depth": 0, 97 | "source": "builtin", 98 | "dependencies": {} 99 | }, 100 | "com.unity.modules.assetbundle": { 101 | "version": "1.0.0", 102 | "depth": 0, 103 | "source": "builtin", 104 | "dependencies": {} 105 | }, 106 | "com.unity.modules.audio": { 107 | "version": "1.0.0", 108 | "depth": 0, 109 | "source": "builtin", 110 | "dependencies": {} 111 | }, 112 | "com.unity.modules.cloth": { 113 | "version": "1.0.0", 114 | "depth": 0, 115 | "source": "builtin", 116 | "dependencies": { 117 | "com.unity.modules.physics": "1.0.0" 118 | } 119 | }, 120 | "com.unity.modules.director": { 121 | "version": "1.0.0", 122 | "depth": 0, 123 | "source": "builtin", 124 | "dependencies": { 125 | "com.unity.modules.audio": "1.0.0", 126 | "com.unity.modules.animation": "1.0.0" 127 | } 128 | }, 129 | "com.unity.modules.imageconversion": { 130 | "version": "1.0.0", 131 | "depth": 0, 132 | "source": "builtin", 133 | "dependencies": {} 134 | }, 135 | "com.unity.modules.imgui": { 136 | "version": "1.0.0", 137 | "depth": 0, 138 | "source": "builtin", 139 | "dependencies": {} 140 | }, 141 | "com.unity.modules.jsonserialize": { 142 | "version": "1.0.0", 143 | "depth": 0, 144 | "source": "builtin", 145 | "dependencies": {} 146 | }, 147 | "com.unity.modules.particlesystem": { 148 | "version": "1.0.0", 149 | "depth": 0, 150 | "source": "builtin", 151 | "dependencies": {} 152 | }, 153 | "com.unity.modules.physics": { 154 | "version": "1.0.0", 155 | "depth": 0, 156 | "source": "builtin", 157 | "dependencies": {} 158 | }, 159 | "com.unity.modules.physics2d": { 160 | "version": "1.0.0", 161 | "depth": 0, 162 | "source": "builtin", 163 | "dependencies": {} 164 | }, 165 | "com.unity.modules.screencapture": { 166 | "version": "1.0.0", 167 | "depth": 0, 168 | "source": "builtin", 169 | "dependencies": { 170 | "com.unity.modules.imageconversion": "1.0.0" 171 | } 172 | }, 173 | "com.unity.modules.subsystems": { 174 | "version": "1.0.0", 175 | "depth": 1, 176 | "source": "builtin", 177 | "dependencies": { 178 | "com.unity.modules.jsonserialize": "1.0.0" 179 | } 180 | }, 181 | "com.unity.modules.terrain": { 182 | "version": "1.0.0", 183 | "depth": 0, 184 | "source": "builtin", 185 | "dependencies": {} 186 | }, 187 | "com.unity.modules.terrainphysics": { 188 | "version": "1.0.0", 189 | "depth": 0, 190 | "source": "builtin", 191 | "dependencies": { 192 | "com.unity.modules.physics": "1.0.0", 193 | "com.unity.modules.terrain": "1.0.0" 194 | } 195 | }, 196 | "com.unity.modules.tilemap": { 197 | "version": "1.0.0", 198 | "depth": 0, 199 | "source": "builtin", 200 | "dependencies": { 201 | "com.unity.modules.physics2d": "1.0.0" 202 | } 203 | }, 204 | "com.unity.modules.ui": { 205 | "version": "1.0.0", 206 | "depth": 0, 207 | "source": "builtin", 208 | "dependencies": {} 209 | }, 210 | "com.unity.modules.uielements": { 211 | "version": "1.0.0", 212 | "depth": 0, 213 | "source": "builtin", 214 | "dependencies": { 215 | "com.unity.modules.imgui": "1.0.0", 216 | "com.unity.modules.jsonserialize": "1.0.0" 217 | } 218 | }, 219 | "com.unity.modules.umbra": { 220 | "version": "1.0.0", 221 | "depth": 0, 222 | "source": "builtin", 223 | "dependencies": {} 224 | }, 225 | "com.unity.modules.unityanalytics": { 226 | "version": "1.0.0", 227 | "depth": 0, 228 | "source": "builtin", 229 | "dependencies": { 230 | "com.unity.modules.unitywebrequest": "1.0.0", 231 | "com.unity.modules.jsonserialize": "1.0.0" 232 | } 233 | }, 234 | "com.unity.modules.unitywebrequest": { 235 | "version": "1.0.0", 236 | "depth": 0, 237 | "source": "builtin", 238 | "dependencies": {} 239 | }, 240 | "com.unity.modules.unitywebrequestassetbundle": { 241 | "version": "1.0.0", 242 | "depth": 0, 243 | "source": "builtin", 244 | "dependencies": { 245 | "com.unity.modules.assetbundle": "1.0.0", 246 | "com.unity.modules.unitywebrequest": "1.0.0" 247 | } 248 | }, 249 | "com.unity.modules.unitywebrequestaudio": { 250 | "version": "1.0.0", 251 | "depth": 0, 252 | "source": "builtin", 253 | "dependencies": { 254 | "com.unity.modules.unitywebrequest": "1.0.0", 255 | "com.unity.modules.audio": "1.0.0" 256 | } 257 | }, 258 | "com.unity.modules.unitywebrequesttexture": { 259 | "version": "1.0.0", 260 | "depth": 0, 261 | "source": "builtin", 262 | "dependencies": { 263 | "com.unity.modules.unitywebrequest": "1.0.0", 264 | "com.unity.modules.imageconversion": "1.0.0" 265 | } 266 | }, 267 | "com.unity.modules.unitywebrequestwww": { 268 | "version": "1.0.0", 269 | "depth": 0, 270 | "source": "builtin", 271 | "dependencies": { 272 | "com.unity.modules.unitywebrequest": "1.0.0", 273 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 274 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 275 | "com.unity.modules.audio": "1.0.0", 276 | "com.unity.modules.assetbundle": "1.0.0", 277 | "com.unity.modules.imageconversion": "1.0.0" 278 | } 279 | }, 280 | "com.unity.modules.vehicles": { 281 | "version": "1.0.0", 282 | "depth": 0, 283 | "source": "builtin", 284 | "dependencies": { 285 | "com.unity.modules.physics": "1.0.0" 286 | } 287 | }, 288 | "com.unity.modules.video": { 289 | "version": "1.0.0", 290 | "depth": 0, 291 | "source": "builtin", 292 | "dependencies": { 293 | "com.unity.modules.audio": "1.0.0", 294 | "com.unity.modules.ui": "1.0.0", 295 | "com.unity.modules.unitywebrequest": "1.0.0" 296 | } 297 | }, 298 | "com.unity.modules.vr": { 299 | "version": "1.0.0", 300 | "depth": 0, 301 | "source": "builtin", 302 | "dependencies": { 303 | "com.unity.modules.jsonserialize": "1.0.0", 304 | "com.unity.modules.physics": "1.0.0", 305 | "com.unity.modules.xr": "1.0.0" 306 | } 307 | }, 308 | "com.unity.modules.wind": { 309 | "version": "1.0.0", 310 | "depth": 0, 311 | "source": "builtin", 312 | "dependencies": {} 313 | }, 314 | "com.unity.modules.xr": { 315 | "version": "1.0.0", 316 | "depth": 0, 317 | "source": "builtin", 318 | "dependencies": { 319 | "com.unity.modules.physics": "1.0.0", 320 | "com.unity.modules.jsonserialize": "1.0.0", 321 | "com.unity.modules.subsystems": "1.0.0" 322 | } 323 | } 324 | } 325 | } 326 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 1024 20 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/BurstAotSettings_Android.json: -------------------------------------------------------------------------------- 1 | { 2 | "MonoBehaviour": { 3 | "Version": 3, 4 | "EnableBurstCompilation": true, 5 | "EnableOptimisations": true, 6 | "EnableSafetyChecks": false, 7 | "EnableDebugInAllBuilds": false, 8 | "CpuMinTargetX32": 0, 9 | "CpuMaxTargetX32": 0, 10 | "CpuMinTargetX64": 0, 11 | "CpuMaxTargetX64": 0 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/BurstAotSettings_WebGL.json: -------------------------------------------------------------------------------- 1 | { 2 | "MonoBehaviour": { 3 | "Version": 3, 4 | "EnableBurstCompilation": true, 5 | "EnableOptimisations": true, 6 | "EnableSafetyChecks": false, 7 | "EnableDebugInAllBuilds": false, 8 | "CpuMinTargetX32": 0, 9 | "CpuMaxTargetX32": 0, 10 | "CpuMinTargetX64": 0, 11 | "CpuMaxTargetX64": 0 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/BurstAotSettings_iOS.json: -------------------------------------------------------------------------------- 1 | { 2 | "MonoBehaviour": { 3 | "Version": 3, 4 | "EnableBurstCompilation": true, 5 | "EnableOptimisations": true, 6 | "EnableSafetyChecks": false, 7 | "EnableDebugInAllBuilds": false, 8 | "CpuMinTargetX32": 0, 9 | "CpuMaxTargetX32": 0, 10 | "CpuMinTargetX64": 0, 11 | "CpuMaxTargetX64": 0 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/CommonBurstAotSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "MonoBehaviour": { 3 | "Version": 3, 4 | "DisabledWarnings": "" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | m_FrictionType: 0 32 | m_EnableEnhancedDeterminism: 0 33 | m_EnableUnifiedHeightmaps: 1 34 | m_DefaultMaxAngluarSpeed: 7 35 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/01-StaticImageRecognition-MobileNetV2/01-StaticImageRecognition-MobileNetV2.unity 10 | guid: f7098788fb77c4e39988e28c915a6897 11 | - enabled: 0 12 | path: Assets/02-FaceTracking-BlazeFace/02-FaceTracking-BlazeFace.unity 13 | guid: 96aacd413c7c37f4e9df399114082954 14 | - enabled: 0 15 | path: Assets/03-MultiObjectStaticImageRecognition-YoloV3Tiny/03-MultiObjectStaticImageRecognition-YoloV3Tiny.unity 16 | guid: 9c3f3ab6fcc0d4e8395859b09bf8535d 17 | m_configObjects: {} 18 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 9 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 0 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 0 30 | m_AssetPipelineMode: 1 31 | m_CacheServerMode: 0 32 | m_CacheServerEndpoint: 33 | m_CacheServerNamespacePrefix: default 34 | m_CacheServerEnableDownload: 1 35 | m_CacheServerEnableUpload: 1 36 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} 39 | - {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0} 40 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} 41 | m_PreloadedShaders: [] 42 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 43 | type: 0} 44 | m_CustomRenderPipeline: {fileID: 0} 45 | m_TransparencySortMode: 0 46 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 47 | m_DefaultRenderingPath: 1 48 | m_DefaultMobileRenderingPath: 1 49 | m_TierSettings: [] 50 | m_LightmapStripping: 0 51 | m_FogStripping: 0 52 | m_InstancingStripping: 0 53 | m_LightmapKeepPlain: 1 54 | m_LightmapKeepDirCombined: 1 55 | m_LightmapKeepDynamicPlain: 1 56 | m_LightmapKeepDynamicDirCombined: 1 57 | m_LightmapKeepShadowMask: 1 58 | m_LightmapKeepSubtractive: 1 59 | m_FogKeepLinear: 1 60 | m_FogKeepExp: 1 61 | m_FogKeepExp2: 1 62 | m_AlbedoSwatchInfos: [] 63 | m_LightsUseLinearIntensity: 0 64 | m_LightsUseColorTemperature: 0 65 | m_LogWhenShaderIsCompiled: 0 66 | m_AllowEnlightenSupportForUpgradedProject: 0 67 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_ScopedRegistriesSettingsExpanded: 1 16 | oneTimeWarningShown: 0 17 | m_Registries: 18 | - m_Id: main 19 | m_Name: 20 | m_Url: https://packages.unity.com 21 | m_Scopes: [] 22 | m_IsDefault: 1 23 | m_UserSelectedRegistryName: 24 | m_UserAddingNewScopedRegistry: 0 25 | m_RegistryInfoDraft: 26 | m_ErrorMessage: 27 | m_Original: 28 | m_Id: 29 | m_Name: 30 | m_Url: 31 | m_Scopes: [] 32 | m_IsDefault: 0 33 | m_Modified: 0 34 | m_Name: 35 | m_Url: 36 | m_Scopes: 37 | - 38 | m_SelectedScopeIndex: 0 39 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2019.4.29f1 2 | m_EditorVersionWithRevision: 2019.4.29f1 (0eeae20b1d82) 3 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | streamingMipmapsActive: 0 33 | streamingMipmapsAddAllCameras: 1 34 | streamingMipmapsMemoryBudget: 512 35 | streamingMipmapsRenderersPerFrame: 512 36 | streamingMipmapsMaxLevelReduction: 2 37 | streamingMipmapsMaxFileIORequests: 1024 38 | particleRaycastBudget: 4 39 | asyncUploadTimeSlice: 2 40 | asyncUploadBufferSize: 16 41 | asyncUploadPersistentBuffer: 1 42 | resolutionScalingFixedDPIFactor: 1 43 | excludedTargetPlatforms: [] 44 | - serializedVersion: 2 45 | name: Low 46 | pixelLightCount: 0 47 | shadows: 0 48 | shadowResolution: 0 49 | shadowProjection: 1 50 | shadowCascades: 1 51 | shadowDistance: 20 52 | shadowNearPlaneOffset: 3 53 | shadowCascade2Split: 0.33333334 54 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 55 | shadowmaskMode: 0 56 | blendWeights: 2 57 | textureQuality: 0 58 | anisotropicTextures: 0 59 | antiAliasing: 0 60 | softParticles: 0 61 | softVegetation: 0 62 | realtimeReflectionProbes: 0 63 | billboardsFaceCameraPosition: 0 64 | vSyncCount: 0 65 | lodBias: 0.4 66 | maximumLODLevel: 0 67 | streamingMipmapsActive: 0 68 | streamingMipmapsAddAllCameras: 1 69 | streamingMipmapsMemoryBudget: 512 70 | streamingMipmapsRenderersPerFrame: 512 71 | streamingMipmapsMaxLevelReduction: 2 72 | streamingMipmapsMaxFileIORequests: 1024 73 | particleRaycastBudget: 16 74 | asyncUploadTimeSlice: 2 75 | asyncUploadBufferSize: 16 76 | asyncUploadPersistentBuffer: 1 77 | resolutionScalingFixedDPIFactor: 1 78 | excludedTargetPlatforms: [] 79 | - serializedVersion: 2 80 | name: Medium 81 | pixelLightCount: 1 82 | shadows: 1 83 | shadowResolution: 0 84 | shadowProjection: 1 85 | shadowCascades: 1 86 | shadowDistance: 20 87 | shadowNearPlaneOffset: 3 88 | shadowCascade2Split: 0.33333334 89 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 90 | shadowmaskMode: 0 91 | blendWeights: 2 92 | textureQuality: 0 93 | anisotropicTextures: 1 94 | antiAliasing: 0 95 | softParticles: 0 96 | softVegetation: 0 97 | realtimeReflectionProbes: 0 98 | billboardsFaceCameraPosition: 0 99 | vSyncCount: 1 100 | lodBias: 0.7 101 | maximumLODLevel: 0 102 | streamingMipmapsActive: 0 103 | streamingMipmapsAddAllCameras: 1 104 | streamingMipmapsMemoryBudget: 512 105 | streamingMipmapsRenderersPerFrame: 512 106 | streamingMipmapsMaxLevelReduction: 2 107 | streamingMipmapsMaxFileIORequests: 1024 108 | particleRaycastBudget: 64 109 | asyncUploadTimeSlice: 2 110 | asyncUploadBufferSize: 16 111 | asyncUploadPersistentBuffer: 1 112 | resolutionScalingFixedDPIFactor: 1 113 | excludedTargetPlatforms: [] 114 | - serializedVersion: 2 115 | name: High 116 | pixelLightCount: 2 117 | shadows: 2 118 | shadowResolution: 1 119 | shadowProjection: 1 120 | shadowCascades: 2 121 | shadowDistance: 40 122 | shadowNearPlaneOffset: 3 123 | shadowCascade2Split: 0.33333334 124 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 125 | shadowmaskMode: 1 126 | blendWeights: 2 127 | textureQuality: 0 128 | anisotropicTextures: 1 129 | antiAliasing: 0 130 | softParticles: 0 131 | softVegetation: 1 132 | realtimeReflectionProbes: 1 133 | billboardsFaceCameraPosition: 1 134 | vSyncCount: 1 135 | lodBias: 1 136 | maximumLODLevel: 0 137 | streamingMipmapsActive: 0 138 | streamingMipmapsAddAllCameras: 1 139 | streamingMipmapsMemoryBudget: 512 140 | streamingMipmapsRenderersPerFrame: 512 141 | streamingMipmapsMaxLevelReduction: 2 142 | streamingMipmapsMaxFileIORequests: 1024 143 | particleRaycastBudget: 256 144 | asyncUploadTimeSlice: 2 145 | asyncUploadBufferSize: 16 146 | asyncUploadPersistentBuffer: 1 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Very High 151 | pixelLightCount: 3 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 2 156 | shadowDistance: 70 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 2 164 | antiAliasing: 2 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 1.5 171 | maximumLODLevel: 0 172 | streamingMipmapsActive: 0 173 | streamingMipmapsAddAllCameras: 1 174 | streamingMipmapsMemoryBudget: 512 175 | streamingMipmapsRenderersPerFrame: 512 176 | streamingMipmapsMaxLevelReduction: 2 177 | streamingMipmapsMaxFileIORequests: 1024 178 | particleRaycastBudget: 1024 179 | asyncUploadTimeSlice: 2 180 | asyncUploadBufferSize: 16 181 | asyncUploadPersistentBuffer: 1 182 | resolutionScalingFixedDPIFactor: 1 183 | excludedTargetPlatforms: [] 184 | - serializedVersion: 2 185 | name: Ultra 186 | pixelLightCount: 4 187 | shadows: 2 188 | shadowResolution: 2 189 | shadowProjection: 1 190 | shadowCascades: 4 191 | shadowDistance: 150 192 | shadowNearPlaneOffset: 3 193 | shadowCascade2Split: 0.33333334 194 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 195 | shadowmaskMode: 1 196 | blendWeights: 4 197 | textureQuality: 0 198 | anisotropicTextures: 2 199 | antiAliasing: 2 200 | softParticles: 1 201 | softVegetation: 1 202 | realtimeReflectionProbes: 1 203 | billboardsFaceCameraPosition: 1 204 | vSyncCount: 1 205 | lodBias: 2 206 | maximumLODLevel: 0 207 | streamingMipmapsActive: 0 208 | streamingMipmapsAddAllCameras: 1 209 | streamingMipmapsMemoryBudget: 512 210 | streamingMipmapsRenderersPerFrame: 512 211 | streamingMipmapsMaxLevelReduction: 2 212 | streamingMipmapsMaxFileIORequests: 1024 213 | particleRaycastBudget: 4096 214 | asyncUploadTimeSlice: 2 215 | asyncUploadBufferSize: 16 216 | asyncUploadPersistentBuffer: 1 217 | resolutionScalingFixedDPIFactor: 1 218 | excludedTargetPlatforms: [] 219 | m_PerPlatformDefaultQuality: 220 | Android: 2 221 | Lumin: 5 222 | Nintendo 3DS: 5 223 | Nintendo Switch: 5 224 | PS4: 5 225 | PSP2: 2 226 | Stadia: 5 227 | Standalone: 5 228 | WebGL: 3 229 | Windows Store Apps: 5 230 | XboxOne: 5 231 | iPhone: 2 232 | tvOS: 2 233 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_StripUpdateShader: {fileID: 0} 10 | m_RenderPipeSettingsPath: 11 | m_FixedTimeStep: 0.016666668 12 | m_MaxDeltaTime: 0.05 13 | -------------------------------------------------------------------------------- /UnityProject/ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } --------------------------------------------------------------------------------