{ "apiVersion": "camel.apache.org/v1", "kind": "Kamelet", "metadata": { "name": "djl-image-to-text-action", "annotations": { "camel.apache.org/kamelet.support.level": "Preview", "camel.apache.org/catalog.version": "4.22.1", "camel.apache.org/kamelet.icon": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDU1OCA1MjIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM6c2VyaWY9Imh0dHA6Ly93d3cuc2VyaWYuY29tLyIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoyOyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEsMCwwLC0wLjEsMCw1MjIpIj4KICAgICAgICA8cGF0aCBkPSJNMzc1MCw0MTgwTDM3NTAsMTQ3MEw1NDQwLDE0NzBMNTQ0MCwxNzc1TDQ4MDYsMTc3MkM0MjM1LDE3NzAgNDE3MCwxNzcxIDQxNTYsMTc4NkM0MTQxLDE4MDAgNDE0MCwxOTExIDQxNDAsMjk4OEw0MTQwLDQxNzVMMzk0NSw0MTc4TDM3NTAsNDE4MFoiIHN0eWxlPSJmaWxsOnJnYigxMTgsMTEzLDExMyk7ZmlsbC1ydWxlOm5vbnplcm87Ii8+CiAgICAgICAgPHBhdGggZD0iTTIwNSw0MTQ0QzE5OCw0MTQxIDE5NywzNjg2IDIwMCwyNzkzTDIwNSwxNDQ1TDY5MCwxNDQzQzExMjIsMTQ0MCAxMTkwLDE0NDIgMTMxMCwxNDU5QzE1MTQsMTQ4OCAxNTkyLDE1MTEgMTczNywxNTgzQzE3OTQsMTYxMSAxODUyLDE2NDUgMTg2NywxNjU4QzE4ODMsMTY3MSAxOTE5LDE3MDEgMTk0OCwxNzI2QzIwMzEsMTc5OCAyMTMzLDE5NDMgMjE5MSwyMDcxQzIzNjMsMjQ1NSAyMzY4LDMxMDEgMjIwMywzNDkwQzIxNTcsMzU5NyAyMTIwLDM2NjggMjA5NywzNjkyQzIwOTAsMzY5OSAyMDY5LDM3MjggMjA1MCwzNzU2QzIwMTEsMzgxMyAxODM1LDM5NzAgMTgwOSwzOTcwQzE4MDAsMzk3MCAxNzg3LDM5NzcgMTc4MCwzOTg1QzE3NzMsMzk5MyAxNzYwLDQwMDAgMTc1MCw0MDAwQzE3NDAsNDAwMCAxNzI3LDQwMDcgMTcyMCw0MDE1QzE3MTMsNDAyMyAxNjk5LDQwMzAgMTY4OCw0MDMwQzE2NzgsNDAzMCAxNjY3LDQwMzcgMTY2NCw0MDQ1QzE2NjAsNDA1NCAxNjQ1LDQwNjAgMTYyNiw0MDYwQzE2MDksNDA2MCAxNTg2LDQwNjcgMTU3Niw0MDc1QzE1NjUsNDA4MyAxNTQwLDQwOTAgMTUyMCw0MDkwQzE1MDAsNDA5MCAxNDc1LDQwOTcgMTQ2NCw0MTA1QzE0NTMsNDExNCAxNDIyLDQxMjAgMTM4NSw0MTIwQzEzNTIsNDEyMCAxMjk0LDQxMjcgMTI1NSw0MTM1QzExOTgsNDE0NyAxMDkzLDQxNTAgNzAwLDQxNDlDNDMzLDQxNDkgMjExLDQxNDcgMjA1LDQxNDRaTTEzMDAsMzgyMkMxNDAyLDM3OTQgMTQwNCwzNzk0IDE0OTcsMzc0N0MxNTU1LDM3MTggMTYwMiwzNjg1IDE2NTMsMzYzNkMxNzI5LDM1NjIgMTgzMCwzNDIzIDE4MzAsMzM5MUMxODMwLDMzODEgMTgzNywzMzY3IDE4NDUsMzM2MEMxODUzLDMzNTMgMTg2MCwzMzM1IDE4NjAsMzMyMEMxODYwLDMzMDUgMTg2NywzMjg3IDE4NzUsMzI4MEMxODg0LDMyNzIgMTg5MCwzMjUwIDE4OTAsMzIyMUMxODkwLDMxOTUgMTg5NSwzMTY5IDE5MDIsMzE2MkMxOTE1LDMxNDkgMTkzNCwyOTMzIDE5MzQsMjc5NUMxOTMzLDI2NDQgMTkxOSwyNDY3IDE5MDQsMjQyN0MxODk2LDI0MDcgMTg5MCwyMzczIDE4OTAsMjM1MkMxODkwLDIzMzIgMTg4MywyMzA2IDE4NzUsMjI5NkMxODY3LDIyODUgMTg2MCwyMjY2IDE4NjAsMjI1NEMxODYwLDIyNDIgMTg1MywyMjI3IDE4NDUsMjIyMEMxODM3LDIyMTMgMTgzMCwyMTk3IDE4MzAsMjE4NUMxODMwLDIxNzMgMTgyMywyMTU3IDE4MTUsMjE1MEMxODA3LDIxNDMgMTgwMCwyMTMzIDE4MDAsMjEyOEMxODAwLDIxMjIgMTc4NywyMTAxIDE3NzAsMjA4MEMxNzU0LDIwNTkgMTc0MCwyMDM4IDE3NDAsMjAzM0MxNzQwLDIwMDggMTU0NSwxODQwIDE1MTcsMTg0MEMxNTA5LDE4NDAgMTQ5NywxODMzIDE0OTAsMTgyNUMxNDgzLDE4MTcgMTQ3MCwxODEwIDE0NjAsMTgxMEMxNDUwLDE4MTAgMTQzNywxODAzIDE0MzAsMTc5NUMxNDIzLDE3ODcgMTQwMywxNzgwIDEzODYsMTc4MEMxMzY4LDE3ODAgMTM0OSwxNzc1IDEzNDIsMTc2OEMxMzM2LDE3NjIgMTMwNywxNzUzIDEyNzgsMTc0OUMxMjQ5LDE3NDQgMTE5NiwxNzM2IDExNjAsMTczMUMxMTI0LDE3MjUgOTg0LDE3MjAgODQ4LDE3MjBDNjE0LDE3MjAgNjAwLDE3MjEgNTkwLDE3MzlDNTc0LDE3NzAgNTc2LDM4MjIgNTkzLDM4MzlDNjAyLDM4NDkgNjcxLDM4NTEgOTE1LDM4NDdDMTE4OSwzODQzIDEyMzQsMzg0MSAxMzAwLDM4MjJaIiBzdHlsZT0iZmlsbDpyZ2IoMTE4LDExMywxMTMpO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgICAgIDxwYXRoIGQ9Ik0zMTE1LDQxMzhDMzExMiw0MTMxIDMxMDgsMzY4MiAzMTA2LDMxNDBDMzEwMiwyMTY5IDMwOTcsMjAwMyAzMDczLDE5NzhDMzA2NiwxOTcyIDMwNjAsMTk1NCAzMDYwLDE5MzlDMzA2MCwxOTI0IDMwNTMsMTkwNyAzMDQ1LDE5MDBDMzAzNywxODkzIDMwMzAsMTg4MSAzMDMwLDE4NzRDMzAzMCwxODU0IDI5MzAsMTc1OCAyODkwLDE3MzlDMjc4OCwxNjkwIDI3ODYsMTY5MCAyNTk3LDE2OTBDMjQ1OCwxNjkxIDI0MDksMTY5NCAyMzkwLDE3MDVDMjM3NiwxNzEzIDIzNDksMTcyMCAyMzMwLDE3MjBDMjMxMSwxNzIwIDIyODQsMTcyNyAyMjcwLDE3MzVDMjI1NiwxNzQzIDIyMzMsMTc0OSAyMjE4LDE3NTBMMjE5MCwxNzUwTDIxOTAsMTQ3MUwyMjIzLDE0NTdDMjI1OSwxNDQxIDIzMzQsMTQyMCAyNDMyLDEzOTZDMjUyNCwxMzc0IDI4NTQsMTM3MyAyOTA3LDEzOTVDMjkyNiwxNDAzIDI5NTUsMTQxMCAyOTcwLDE0MTBDMzAyNCwxNDEwIDMxNjksMTQ4MSAzMjQyLDE1NDNDMzMwNywxNTk5IDMzODEsMTcwMSAzNDA5LDE3NzVDMzQyMSwxODA4IDM0MzYsMTg0MyAzNDQxLDE4NTNDMzQ0NywxODYzIDM0NTQsMTg5NSAzNDU3LDE5MjNDMzQ1OSwxOTUyIDM0NjgsMTk4OSAzNDc2LDIwMDdDMzQ4OCwyMDMzIDM0OTAsMjIwOSAzNDkwLDMwOTRMMzQ5MCw0MTUwTDMzMDUsNDE1MEMzMTY2LDQxNTAgMzExOCw0MTQ3IDMxMTUsNDEzOFoiIHN0eWxlPSJmaWxsOnJnYigxNTgsMjA1LDI0Nik7ZmlsbC1ydWxlOm5vbnplcm87Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=", "camel.apache.org/provider": "Apache Software Foundation", "camel.apache.org/kamelet.group": "Actions", "camel.apache.org/kamelet.namespace": "AI" }, "labels": { "camel.apache.org/kamelet.type": "action" } }, "spec": { "definition": { "title": "Image-to-Text Action", "description": "Detect and classify objects in an image into texts using the SSD and ResNet models and the ImageNet dataset.", "type": "object" }, "types": { "out": { "mediaType": "application/json" } }, "dependencies": [ "mvn:ai.djl.pytorch:pytorch-engine:0.29.0", "mvn:ai.djl.pytorch:pytorch-model-zoo:0.29.0", "camel:core", "camel:kamelet", "camel:jackson", "camel:djl" ], "template": { "beans": [ { "name": "imageNetUtil", "type": "#class:org.apache.camel.component.djl.ImageNetUtil" } ], "from": { "uri": "kamelet:source", "steps": [ { "to": "djl:cv/object_detection?artifactId=ssd" }, { "convertBodyTo": "ai.djl.modality.cv.Image[]" }, { "split": { "expression": { "simple": "${body}" }, "aggregationStrategy": "#class:org.apache.camel.processor.aggregate.GroupedBodyAggregationStrategy", "steps": [ { "to": "djl:cv/image_classification?artifactId=resnet" }, { "bean": { "ref": "{{imageNetUtil}}", "method": "extractClassName" } }, { "bean": { "ref": "{{imageNetUtil}}", "method": "addHypernym" } } ] } }, { "marshal": { "json": {} } } ] } } }, "propertiesSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "title": "Image-to-Text Action", "description": "Detect and classify objects in an image into texts using the SSD and ResNet models and the ImageNet dataset." } }