![No UI](https://img.shields.io/static/v1?label=UI&message=none&color=inactive) With the *MS Azure Custom Tags* extension you can train a custom end point using the Azure GUI specifically developed for this task. This end point is then used by this plugin to tag assets with the trained custom tags. **Important: If the name of a tag is changed in the training application, then the tag has to be renamed manually in CELUM too (default language only).** [MINITOC] ## Properties To be configured in {home}/appserver/conf/custom.properties ##### azureCustomVision.license > type: string, **required: yes**, default: - The license key for the plugin (product: azureCustomVision), provided by *brix*. ##### azureCustomVision.allowedUserGroupIds > type: comma-separated list of user group ids, required: no, default: - The user group ids which are allowed to use this extension (superadmins are always entitled). ##### azureCustomVision.threads > type: integer, required: no, default: 5 The number of threads in the thread pool, that are processing the asset changes and initiating the automated tagging, has to be >= 2. ##### azureCustomVision.debounceTimeInSeconds > type: integer, required: no, default: 10 The debounce time in seconds. E.g. 10 means that for 5s, all changes that happen on an asset are collected and then processed at once. This has the advantage that if 10 relevant changes happen one after another within an interval of 5s, cognitive services are still only asked once and not 10 times. ##### azureCustomVision.tags.partition.threshold > type: integer, required: no, default: 100 Nodes are partitioned if the number of children in a node (which are not intermediate nodes) becomes greater than the threshold. That way, the GUI doesn't freeze if you try to open the tag tree. A number <= 0 prevents the partitioning. ##### azureCustomVision.contextMenu > type: comma-separated string list of configuration names, required: no, default: -, version: 2+ > ~~type: boolean, required: no, default: true~~ If at least one configuration name is listed the menu is available (for the allowed user groups). All the listed configurations will be executed if the extension is called via context menu. ~~Whether the context menu should be available (for the allowed user groups) or not. Restart required.~~ ##### azureCustomVision.automate > type: comma-separated list of configuration names, required: no, default: -, version: 2+ > ~~type: boolean, required: no, default: false~~ Triggers all the listed configurations automatically when an update is made to an asset ~~Whether images should be tagged automatically or not. Restart required.~~ ##### azureCustomVision.initialize > type: comma-separated list of configuration names, required: no, default: -, version: 2+ The configurations to execute in the initialize task. ##### azureCustomVision.forceInitialize > type: boolean, required: no, default: false, version: 2.0.1+ If set to true all the assets in the scopes are retagged, otherwise only those where the tag field is empty are tagged. ##### ~~azureCustomVision.url~~ > ~~type: url, **required: yes**, default: -~~ ##### azureCustomVision.endpoint.{name}.url > type: url, **required: yes**, default: -, version: 2+ URL to the custom end point. On the Azure Training GUI, go to *Performance > Prediction URL* and copy the shown URL under the title *If you have an image URL*. ##### ~~azureCustomVision.key~~ > ~~type: string, **required: yes**, default: -~~ ##### azureCustomVision.endpoint.{name}.key > type: string, **required: yes**, default: -, version: 2+ The prediction key. On the Azure Training GUI go to *Performance > Prediction URL* and copy the prediction key. ##### ~~azureCustomVision.tagsInfoFieldId~~ > ~~type: integer, **required: yes**, default: -~~ ##### azureCustomVision.endpoint.{name}.tagsInfofield > type: integer, **required: yes**, default: -, version: 2+ The id of the node reference (or tag since v2) information field for the tags. ##### ~~azureCustomVision.tagsThreshold~~ > ~~type: double, required: no, default: 0.5~~ ##### azureCustomVision.endpoint.{name}.tagsThreshold > type: double, required: no, default: 0.5, version: 2+ Only apply tags with a probability (a number between 0 and 1) ≥ the threshold. ##### ~~azureCustomVision.search~~ > ~~type: string, required: no, default: -~~ ##### azureCustomVision.endpoint.{name}.searchFilter > type: string, required: no, default: -, version: 2+ [Search expression](https://docs.brix.ch/celum_extensions/search_util_2), only tag images within the scope (for automation and initialize task). ##### ~~azureCustomVision.search.userId~~ > ~~type: integer, required: no, default: api-user~~ ##### azureCustomVision.endpoint.{name}.searchUserId > type: integer, required: no, default: api-user, version: 2+ User id of the user to perform the search with (only assets visible to this user will be found). ## Installation 1. Get a license from brix 2. Register for custom vision ([Custom Vision](https://azure.microsoft.com/en-us/services/cognitive-services/custom-vision-service/)) 3. Upload and tag images ([getting started](https://docs.microsoft.com/en-us/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier)) 4. Train and publish the images to get the URL and key (more information: [test your model](https://docs.microsoft.com/en-us/azure/cognitive-services/custom-vision-service/test-your-model) or [improve your model](https://docs.microsoft.com/en-us/azure/cognitive-services/custom-vision-service/getting-started-improving-your-classifier)) 5. Add the information field and configuration to the custom.properties file, put the jar file into the lib folder and restart the CELUM app server ## Compatibility Matrix | MS Azure Custom Tags | CELUM (min. version) | | :----- |:----------------------| | 1.0.0 | 6.4 (tested with 6.8) | | 2.0.0 | 6.14 | | Nova Plugin | CELUM (min. version) | Backend Plugin (min. version) | | ---------------- | --------------------- | --------------------- | | 1.0.0 | 6.10.0 | 1.2.0 | ## Release Notes ##### 1.0.0 > Released 2021-03-23 Initial version ##### 1.2.0 > Released 2021-10-11 Nova plugin support ##### 2.0.0 > Released 2023-04-03 - Multiple endpoints - Tag field support