"}},"componentScriptGroups({\"componentId\":\"custom.widget.MicrosoftFooter\"})":{"__typename":"ComponentScriptGroups","scriptGroups":{"__typename":"ComponentScriptGroupsDefinition","afterInteractive":{"__typename":"PageScriptGroupDefinition","group":"AFTER_INTERACTIVE","scriptIds":[]},"lazyOnLoad":{"__typename":"PageScriptGroupDefinition","group":"LAZY_ON_LOAD","scriptIds":[]}},"componentScripts":[]},"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/community/NavbarDropdownToggle\"]})":[{"__ref":"CachedAsset:text:en_US-components/community/NavbarDropdownToggle-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageListTabs\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageListTabs-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageView/MessageViewInline\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageView/MessageViewInline-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/common/Pager/PagerLoadMore\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/common/Pager/PagerLoadMore-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/common/OverflowNav\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/common/OverflowNav-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/users/UserLink\"]})":[{"__ref":"CachedAsset:text:en_US-components/users/UserLink-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageSubject\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageSubject-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageTime\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageTime-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/nodes/NodeIcon\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/nodes/NodeIcon-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageUnreadCount\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageUnreadCount-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageViewCount\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageViewCount-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/kudos/KudosCount\"]})":[{"__ref":"CachedAsset:text:en_US-components/kudos/KudosCount-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageRepliesCount\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageRepliesCount-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/users/UserAvatar\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1745505307000"}]},"Theme:customTheme1":{"__typename":"Theme","id":"customTheme1"},"User:user:-1":{"__typename":"User","id":"user:-1","uid":-1,"login":"Deleted","email":"","avatar":null,"rank":null,"kudosWeight":1,"registrationData":{"__typename":"RegistrationData","status":"ANONYMOUS","registrationTime":null,"confirmEmailStatus":false,"registrationAccessLevel":"VIEW","ssoRegistrationFields":[]},"ssoId":null,"profileSettings":{"__typename":"ProfileSettings","dateDisplayStyle":{"__typename":"InheritableStringSettingWithPossibleValues","key":"layout.friendly_dates_enabled","value":"false","localValue":"true","possibleValues":["true","false"]},"dateDisplayFormat":{"__typename":"InheritableStringSetting","key":"layout.format_pattern_date","value":"MMM dd yyyy","localValue":"MM-dd-yyyy"},"language":{"__typename":"InheritableStringSettingWithPossibleValues","key":"profile.language","value":"en-US","localValue":null,"possibleValues":["en-US","es-ES"]},"repliesSortOrder":{"__typename":"InheritableStringSettingWithPossibleValues","key":"config.user_replies_sort_order","value":"DEFAULT","localValue":"DEFAULT","possibleValues":["DEFAULT","LIKES","PUBLISH_TIME","REVERSE_PUBLISH_TIME"]}},"deleted":false},"CachedAsset:pages-1747040215822":{"__typename":"CachedAsset","id":"pages-1747040215822","value":[{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"BlogViewAllPostsPage","type":"BLOG","urlPath":"/category/:categoryId/blog/:boardId/all-posts/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"CasePortalPage","type":"CASE_PORTAL","urlPath":"/caseportal","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"CreateGroupHubPage","type":"GROUP_HUB","urlPath":"/groups/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"CaseViewPage","type":"CASE_DETAILS","urlPath":"/case/:caseId/:caseNumber","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"InboxPage","type":"COMMUNITY","urlPath":"/inbox","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"HelpFAQPage","type":"COMMUNITY","urlPath":"/help","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"IdeaMessagePage","type":"IDEA_POST","urlPath":"/idea/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"IdeaViewAllIdeasPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId/all-ideas/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"LoginPage","type":"USER","urlPath":"/signin","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"BlogPostPage","type":"BLOG","urlPath":"/category/:categoryId/blogs/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"UserBlogPermissions.Page","type":"COMMUNITY","urlPath":"/c/user-blog-permissions/page","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"ThemeEditorPage","type":"COMMUNITY","urlPath":"/designer/themes","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"TkbViewAllArticlesPage","type":"TKB","urlPath":"/category/:categoryId/kb/:boardId/all-articles/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1730819800000,"localOverride":null,"page":{"id":"AllEvents","type":"CUSTOM","urlPath":"/Events","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"OccasionEditPage","type":"EVENT","urlPath":"/event/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"OAuthAuthorizationAllowPage","type":"USER","urlPath":"/auth/authorize/allow","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"PageEditorPage","type":"COMMUNITY","urlPath":"/designer/pages","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"PostPage","type":"COMMUNITY","urlPath":"/category/:categoryId/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"ForumBoardPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"TkbBoardPage","type":"TKB","urlPath":"/category/:categoryId/kb/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"EventPostPage","type":"EVENT","urlPath":"/category/:categoryId/events/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"UserBadgesPage","type":"COMMUNITY","urlPath":"/users/:login/:userId/badges","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"GroupHubMembershipAction","type":"GROUP_HUB","urlPath":"/membership/join/:nodeId/:membershipType","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"MaintenancePage","type":"COMMUNITY","urlPath":"/maintenance","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"IdeaReplyPage","type":"IDEA_REPLY","urlPath":"/idea/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"UserSettingsPage","type":"USER","urlPath":"/mysettings/:userSettingsTab","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"GroupHubsPage","type":"GROUP_HUB","urlPath":"/groups","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"ForumPostPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"OccasionRsvpActionPage","type":"OCCASION","urlPath":"/event/:boardId/:messageSubject/:messageId/rsvp/:responseType","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"VerifyUserEmailPage","type":"USER","urlPath":"/verifyemail/:userId/:verifyEmailToken","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"AllOccasionsPage","type":"OCCASION","urlPath":"/category/:categoryId/events/:boardId/all-events/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"EventBoardPage","type":"EVENT","urlPath":"/category/:categoryId/events/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"TkbReplyPage","type":"TKB_REPLY","urlPath":"/kb/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"IdeaBoardPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"CommunityGuideLinesPage","type":"COMMUNITY","urlPath":"/communityguidelines","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"CaseCreatePage","type":"SALESFORCE_CASE_CREATION","urlPath":"/caseportal/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"TkbEditPage","type":"TKB","urlPath":"/kb/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"ForgotPasswordPage","type":"USER","urlPath":"/forgotpassword","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"IdeaEditPage","type":"IDEA","urlPath":"/idea/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"TagPage","type":"COMMUNITY","urlPath":"/tag/:tagName","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"BlogBoardPage","type":"BLOG","urlPath":"/category/:categoryId/blog/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"OccasionMessagePage","type":"OCCASION_TOPIC","urlPath":"/event/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"ManageContentPage","type":"COMMUNITY","urlPath":"/managecontent","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"ClosedMembershipNodeNonMembersPage","type":"GROUP_HUB","urlPath":"/closedgroup/:groupHubId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"CommunityPage","type":"COMMUNITY","urlPath":"/","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"ForumMessagePage","type":"FORUM_TOPIC","urlPath":"/discussions/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"IdeaPostPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1730819800000,"localOverride":null,"page":{"id":"CommunityHub.Page","type":"CUSTOM","urlPath":"/Directory","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"BlogMessagePage","type":"BLOG_ARTICLE","urlPath":"/blog/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"RegistrationPage","type":"USER","urlPath":"/register","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"EditGroupHubPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"ForumEditPage","type":"FORUM","urlPath":"/discussions/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"ResetPasswordPage","type":"USER","urlPath":"/resetpassword/:userId/:resetPasswordToken","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1730819800000,"localOverride":null,"page":{"id":"AllBlogs.Page","type":"CUSTOM","urlPath":"/blogs","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"TkbMessagePage","type":"TKB_ARTICLE","urlPath":"/kb/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"BlogEditPage","type":"BLOG","urlPath":"/blog/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"ManageUsersPage","type":"USER","urlPath":"/users/manage/:tab?/:manageUsersTab?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"ForumReplyPage","type":"FORUM_REPLY","urlPath":"/discussions/:boardId/:messageSubject/:messageId/replies/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"PrivacyPolicyPage","type":"COMMUNITY","urlPath":"/privacypolicy","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"NotificationPage","type":"COMMUNITY","urlPath":"/notifications","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"UserPage","type":"USER","urlPath":"/users/:login/:userId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"HealthCheckPage","type":"COMMUNITY","urlPath":"/health","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"OccasionReplyPage","type":"OCCASION_REPLY","urlPath":"/event/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"ManageMembersPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/manage/:tab?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"SearchResultsPage","type":"COMMUNITY","urlPath":"/search","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"BlogReplyPage","type":"BLOG_REPLY","urlPath":"/blog/:boardId/:messageSubject/:messageId/replies/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"GroupHubPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"TermsOfServicePage","type":"COMMUNITY","urlPath":"/termsofservice","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"CategoryPage","type":"CATEGORY","urlPath":"/category/:categoryId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"ForumViewAllTopicsPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId/all-topics/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"TkbPostPage","type":"TKB","urlPath":"/category/:categoryId/kbs/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1747040215822,"localOverride":null,"page":{"id":"GroupHubPostPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"}],"localOverride":false},"CachedAsset:text:en_US-components/context/AppContext/AppContextProvider-0":{"__typename":"CachedAsset","id":"text:en_US-components/context/AppContext/AppContextProvider-0","value":{"noCommunity":"Cannot find community","noUser":"Cannot find current user","noNode":"Cannot find node with id {nodeId}","noMessage":"Cannot find message with id {messageId}","userBanned":"We're sorry, but you have been banned from using this site.","userBannedReason":"You have been banned for the following reason: {reason}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Loading/LoadingDot-0":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Loading/LoadingDot-0","value":{"title":"Loading..."},"localOverride":false},"CachedAsset:theme:customTheme1-1747040215297":{"__typename":"CachedAsset","id":"theme:customTheme1-1747040215297","value":{"id":"customTheme1","animation":{"fast":"150ms","normal":"250ms","slow":"500ms","slowest":"750ms","function":"cubic-bezier(0.07, 0.91, 0.51, 1)","__typename":"AnimationThemeSettings"},"avatar":{"borderRadius":"50%","collections":["default"],"__typename":"AvatarThemeSettings"},"basics":{"browserIcon":{"imageAssetName":"favicon-1730836283320.png","imageLastModified":"1730836286415","__typename":"ThemeAsset"},"customerLogo":{"imageAssetName":"favicon-1730836271365.png","imageLastModified":"1730836274203","__typename":"ThemeAsset"},"maximumWidthOfPageContent":"1300px","oneColumnNarrowWidth":"800px","gridGutterWidthMd":"30px","gridGutterWidthXs":"10px","pageWidthStyle":"WIDTH_OF_BROWSER","__typename":"BasicsThemeSettings"},"buttons":{"borderRadiusSm":"3px","borderRadius":"3px","borderRadiusLg":"5px","paddingY":"5px","paddingYLg":"7px","paddingYHero":"var(--lia-bs-btn-padding-y-lg)","paddingX":"12px","paddingXLg":"16px","paddingXHero":"60px","fontStyle":"NORMAL","fontWeight":"700","textTransform":"NONE","disabledOpacity":0.5,"primaryTextColor":"var(--lia-bs-white)","primaryTextHoverColor":"var(--lia-bs-white)","primaryTextActiveColor":"var(--lia-bs-white)","primaryBgColor":"var(--lia-bs-primary)","primaryBgHoverColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) * 0.85))","primaryBgActiveColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) * 0.7))","primaryBorder":"1px solid transparent","primaryBorderHover":"1px solid transparent","primaryBorderActive":"1px solid transparent","primaryBorderFocus":"1px solid var(--lia-bs-white)","primaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","secondaryTextColor":"var(--lia-bs-gray-900)","secondaryTextHoverColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.95))","secondaryTextActiveColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.9))","secondaryBgColor":"var(--lia-bs-gray-200)","secondaryBgHoverColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.96))","secondaryBgActiveColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.92))","secondaryBorder":"1px solid transparent","secondaryBorderHover":"1px solid transparent","secondaryBorderActive":"1px solid transparent","secondaryBorderFocus":"1px solid transparent","secondaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","tertiaryTextColor":"var(--lia-bs-gray-900)","tertiaryTextHoverColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.95))","tertiaryTextActiveColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.9))","tertiaryBgColor":"transparent","tertiaryBgHoverColor":"transparent","tertiaryBgActiveColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.04)","tertiaryBorder":"1px solid transparent","tertiaryBorderHover":"1px solid hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","tertiaryBorderActive":"1px solid transparent","tertiaryBorderFocus":"1px solid transparent","tertiaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","destructiveTextColor":"var(--lia-bs-danger)","destructiveTextHoverColor":"hsl(var(--lia-bs-danger-h), var(--lia-bs-danger-s), calc(var(--lia-bs-danger-l) * 0.95))","destructiveTextActiveColor":"hsl(var(--lia-bs-danger-h), var(--lia-bs-danger-s), calc(var(--lia-bs-danger-l) * 0.9))","destructiveBgColor":"var(--lia-bs-gray-200)","destructiveBgHoverColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.96))","destructiveBgActiveColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.92))","destructiveBorder":"1px solid transparent","destructiveBorderHover":"1px solid transparent","destructiveBorderActive":"1px solid transparent","destructiveBorderFocus":"1px solid transparent","destructiveBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","__typename":"ButtonsThemeSettings"},"border":{"color":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","mainContent":"NONE","sideContent":"LIGHT","radiusSm":"3px","radius":"5px","radiusLg":"9px","radius50":"100vw","__typename":"BorderThemeSettings"},"boxShadow":{"xs":"0 0 0 1px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.08), 0 3px 0 -1px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.16)","sm":"0 2px 4px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.12)","md":"0 5px 15px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.3)","lg":"0 10px 30px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.3)","__typename":"BoxShadowThemeSettings"},"cards":{"bgColor":"var(--lia-panel-bg-color)","borderRadius":"var(--lia-panel-border-radius)","boxShadow":"var(--lia-box-shadow-xs)","__typename":"CardsThemeSettings"},"chip":{"maxWidth":"300px","height":"30px","__typename":"ChipThemeSettings"},"coreTypes":{"defaultMessageLinkColor":"var(--lia-bs-link-color)","defaultMessageLinkDecoration":"none","defaultMessageLinkFontStyle":"NORMAL","defaultMessageLinkFontWeight":"400","defaultMessageFontStyle":"NORMAL","defaultMessageFontWeight":"400","defaultMessageFontFamily":"var(--lia-bs-font-family-base)","forumColor":"#4099E2","forumFontFamily":"var(--lia-bs-font-family-base)","forumFontWeight":"var(--lia-default-message-font-weight)","forumLineHeight":"var(--lia-bs-line-height-base)","forumFontStyle":"var(--lia-default-message-font-style)","forumMessageLinkColor":"var(--lia-default-message-link-color)","forumMessageLinkDecoration":"var(--lia-default-message-link-decoration)","forumMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","forumMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","forumSolvedColor":"#148563","blogColor":"#1CBAA0","blogFontFamily":"var(--lia-bs-font-family-base)","blogFontWeight":"var(--lia-default-message-font-weight)","blogLineHeight":"1.75","blogFontStyle":"var(--lia-default-message-font-style)","blogMessageLinkColor":"var(--lia-default-message-link-color)","blogMessageLinkDecoration":"var(--lia-default-message-link-decoration)","blogMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","blogMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","tkbColor":"#4C6B90","tkbFontFamily":"var(--lia-bs-font-family-base)","tkbFontWeight":"var(--lia-default-message-font-weight)","tkbLineHeight":"1.75","tkbFontStyle":"var(--lia-default-message-font-style)","tkbMessageLinkColor":"var(--lia-default-message-link-color)","tkbMessageLinkDecoration":"var(--lia-default-message-link-decoration)","tkbMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","tkbMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","qandaColor":"#4099E2","qandaFontFamily":"var(--lia-bs-font-family-base)","qandaFontWeight":"var(--lia-default-message-font-weight)","qandaLineHeight":"var(--lia-bs-line-height-base)","qandaFontStyle":"var(--lia-default-message-link-font-style)","qandaMessageLinkColor":"var(--lia-default-message-link-color)","qandaMessageLinkDecoration":"var(--lia-default-message-link-decoration)","qandaMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","qandaMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","qandaSolvedColor":"#3FA023","ideaColor":"#FF8000","ideaFontFamily":"var(--lia-bs-font-family-base)","ideaFontWeight":"var(--lia-default-message-font-weight)","ideaLineHeight":"var(--lia-bs-line-height-base)","ideaFontStyle":"var(--lia-default-message-font-style)","ideaMessageLinkColor":"var(--lia-default-message-link-color)","ideaMessageLinkDecoration":"var(--lia-default-message-link-decoration)","ideaMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","ideaMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","contestColor":"#FCC845","contestFontFamily":"var(--lia-bs-font-family-base)","contestFontWeight":"var(--lia-default-message-font-weight)","contestLineHeight":"var(--lia-bs-line-height-base)","contestFontStyle":"var(--lia-default-message-link-font-style)","contestMessageLinkColor":"var(--lia-default-message-link-color)","contestMessageLinkDecoration":"var(--lia-default-message-link-decoration)","contestMessageLinkFontStyle":"ITALIC","contestMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","occasionColor":"#D13A1F","occasionFontFamily":"var(--lia-bs-font-family-base)","occasionFontWeight":"var(--lia-default-message-font-weight)","occasionLineHeight":"var(--lia-bs-line-height-base)","occasionFontStyle":"var(--lia-default-message-font-style)","occasionMessageLinkColor":"var(--lia-default-message-link-color)","occasionMessageLinkDecoration":"var(--lia-default-message-link-decoration)","occasionMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","occasionMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","grouphubColor":"#333333","categoryColor":"#949494","communityColor":"#FFFFFF","productColor":"#949494","__typename":"CoreTypesThemeSettings"},"colors":{"black":"#000000","white":"#FFFFFF","gray100":"#F7F7F7","gray200":"#F7F7F7","gray300":"#E8E8E8","gray400":"#D9D9D9","gray500":"#CCCCCC","gray600":"#717171","gray700":"#707070","gray800":"#545454","gray900":"#333333","dark":"#545454","light":"#F7F7F7","primary":"#0069D4","secondary":"#333333","bodyText":"#1E1E1E","bodyBg":"#FFFFFF","info":"#409AE2","success":"#41C5AE","warning":"#FCC844","danger":"#BC341B","alertSystem":"#FF6600","textMuted":"#707070","highlight":"#FFFCAD","outline":"var(--lia-bs-primary)","custom":["#D3F5A4","#243A5E"],"__typename":"ColorsThemeSettings"},"divider":{"size":"3px","marginLeft":"4px","marginRight":"4px","borderRadius":"50%","bgColor":"var(--lia-bs-gray-600)","bgColorActive":"var(--lia-bs-gray-600)","__typename":"DividerThemeSettings"},"dropdown":{"fontSize":"var(--lia-bs-font-size-sm)","borderColor":"var(--lia-bs-border-color)","borderRadius":"var(--lia-bs-border-radius-sm)","dividerBg":"var(--lia-bs-gray-300)","itemPaddingY":"5px","itemPaddingX":"20px","headerColor":"var(--lia-bs-gray-700)","__typename":"DropdownThemeSettings"},"email":{"link":{"color":"#0069D4","hoverColor":"#0061c2","decoration":"none","hoverDecoration":"underline","__typename":"EmailLinkSettings"},"border":{"color":"#e4e4e4","__typename":"EmailBorderSettings"},"buttons":{"borderRadiusLg":"5px","paddingXLg":"16px","paddingYLg":"7px","fontWeight":"700","primaryTextColor":"#ffffff","primaryTextHoverColor":"#ffffff","primaryBgColor":"#0069D4","primaryBgHoverColor":"#005cb8","primaryBorder":"1px solid transparent","primaryBorderHover":"1px solid transparent","__typename":"EmailButtonsSettings"},"panel":{"borderRadius":"5px","borderColor":"#e4e4e4","__typename":"EmailPanelSettings"},"__typename":"EmailThemeSettings"},"emoji":{"skinToneDefault":"#ffcd43","skinToneLight":"#fae3c5","skinToneMediumLight":"#e2cfa5","skinToneMedium":"#daa478","skinToneMediumDark":"#a78058","skinToneDark":"#5e4d43","__typename":"EmojiThemeSettings"},"heading":{"color":"var(--lia-bs-body-color)","fontFamily":"Segoe UI","fontStyle":"NORMAL","fontWeight":"400","h1FontSize":"34px","h2FontSize":"32px","h3FontSize":"28px","h4FontSize":"24px","h5FontSize":"20px","h6FontSize":"16px","lineHeight":"1.3","subHeaderFontSize":"11px","subHeaderFontWeight":"500","h1LetterSpacing":"normal","h2LetterSpacing":"normal","h3LetterSpacing":"normal","h4LetterSpacing":"normal","h5LetterSpacing":"normal","h6LetterSpacing":"normal","subHeaderLetterSpacing":"2px","h1FontWeight":"var(--lia-bs-headings-font-weight)","h2FontWeight":"var(--lia-bs-headings-font-weight)","h3FontWeight":"var(--lia-bs-headings-font-weight)","h4FontWeight":"var(--lia-bs-headings-font-weight)","h5FontWeight":"var(--lia-bs-headings-font-weight)","h6FontWeight":"var(--lia-bs-headings-font-weight)","__typename":"HeadingThemeSettings"},"icons":{"size10":"10px","size12":"12px","size14":"14px","size16":"16px","size20":"20px","size24":"24px","size30":"30px","size40":"40px","size50":"50px","size60":"60px","size80":"80px","size120":"120px","size160":"160px","__typename":"IconsThemeSettings"},"imagePreview":{"bgColor":"var(--lia-bs-gray-900)","titleColor":"var(--lia-bs-white)","controlColor":"var(--lia-bs-white)","controlBgColor":"var(--lia-bs-gray-800)","__typename":"ImagePreviewThemeSettings"},"input":{"borderColor":"var(--lia-bs-gray-600)","disabledColor":"var(--lia-bs-gray-600)","focusBorderColor":"var(--lia-bs-primary)","labelMarginBottom":"10px","btnFontSize":"var(--lia-bs-font-size-sm)","focusBoxShadow":"0 0 0 3px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","checkLabelMarginBottom":"2px","checkboxBorderRadius":"3px","borderRadiusSm":"var(--lia-bs-border-radius-sm)","borderRadius":"var(--lia-bs-border-radius)","borderRadiusLg":"var(--lia-bs-border-radius-lg)","formTextMarginTop":"4px","textAreaBorderRadius":"var(--lia-bs-border-radius)","activeFillColor":"var(--lia-bs-primary)","__typename":"InputThemeSettings"},"loading":{"dotDarkColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.2)","dotLightColor":"hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.5)","barDarkColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.06)","barLightColor":"hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.4)","__typename":"LoadingThemeSettings"},"link":{"color":"var(--lia-bs-primary)","hoverColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) - 10%))","decoration":"none","hoverDecoration":"underline","__typename":"LinkThemeSettings"},"listGroup":{"itemPaddingY":"15px","itemPaddingX":"15px","borderColor":"var(--lia-bs-gray-300)","__typename":"ListGroupThemeSettings"},"modal":{"contentTextColor":"var(--lia-bs-body-color)","contentBg":"var(--lia-bs-white)","backgroundBg":"var(--lia-bs-black)","smSize":"440px","mdSize":"760px","lgSize":"1080px","backdropOpacity":0.3,"contentBoxShadowXs":"var(--lia-bs-box-shadow-sm)","contentBoxShadow":"var(--lia-bs-box-shadow)","headerFontWeight":"700","__typename":"ModalThemeSettings"},"navbar":{"position":"FIXED","background":{"attachment":null,"clip":null,"color":"var(--lia-bs-white)","imageAssetName":"","imageLastModified":"0","origin":null,"position":"CENTER_CENTER","repeat":"NO_REPEAT","size":"COVER","__typename":"BackgroundProps"},"backgroundOpacity":0.8,"paddingTop":"15px","paddingBottom":"15px","borderBottom":"1px solid var(--lia-bs-border-color)","boxShadow":"var(--lia-bs-box-shadow-sm)","brandMarginRight":"30px","brandMarginRightSm":"10px","brandLogoHeight":"30px","linkGap":"10px","linkJustifyContent":"flex-start","linkPaddingY":"5px","linkPaddingX":"10px","linkDropdownPaddingY":"9px","linkDropdownPaddingX":"var(--lia-nav-link-px)","linkColor":"var(--lia-bs-body-color)","linkHoverColor":"var(--lia-bs-primary)","linkFontSize":"var(--lia-bs-font-size-sm)","linkFontStyle":"NORMAL","linkFontWeight":"400","linkTextTransform":"NONE","linkLetterSpacing":"normal","linkBorderRadius":"var(--lia-bs-border-radius-sm)","linkBgColor":"transparent","linkBgHoverColor":"transparent","linkBorder":"none","linkBorderHover":"none","linkBoxShadow":"none","linkBoxShadowHover":"none","linkTextBorderBottom":"none","linkTextBorderBottomHover":"none","dropdownPaddingTop":"10px","dropdownPaddingBottom":"15px","dropdownPaddingX":"10px","dropdownMenuOffset":"2px","dropdownDividerMarginTop":"10px","dropdownDividerMarginBottom":"10px","dropdownBorderColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","controllerBgHoverColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.1)","controllerIconColor":"var(--lia-bs-body-color)","controllerIconHoverColor":"var(--lia-bs-body-color)","controllerTextColor":"var(--lia-nav-controller-icon-color)","controllerTextHoverColor":"var(--lia-nav-controller-icon-hover-color)","controllerHighlightColor":"hsla(30, 100%, 50%)","controllerHighlightTextColor":"var(--lia-yiq-light)","controllerBorderRadius":"var(--lia-border-radius-50)","hamburgerColor":"var(--lia-nav-controller-icon-color)","hamburgerHoverColor":"var(--lia-nav-controller-icon-color)","hamburgerBgColor":"transparent","hamburgerBgHoverColor":"transparent","hamburgerBorder":"none","hamburgerBorderHover":"none","collapseMenuMarginLeft":"20px","collapseMenuDividerBg":"var(--lia-nav-link-color)","collapseMenuDividerOpacity":0.16,"__typename":"NavbarThemeSettings"},"pager":{"textColor":"var(--lia-bs-link-color)","textFontWeight":"var(--lia-font-weight-md)","textFontSize":"var(--lia-bs-font-size-sm)","__typename":"PagerThemeSettings"},"panel":{"bgColor":"var(--lia-bs-white)","borderRadius":"var(--lia-bs-border-radius)","borderColor":"var(--lia-bs-border-color)","boxShadow":"none","__typename":"PanelThemeSettings"},"popover":{"arrowHeight":"8px","arrowWidth":"16px","maxWidth":"300px","minWidth":"100px","headerBg":"var(--lia-bs-white)","borderColor":"var(--lia-bs-border-color)","borderRadius":"var(--lia-bs-border-radius)","boxShadow":"0 0.5rem 1rem hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.15)","__typename":"PopoverThemeSettings"},"prism":{"color":"#000000","bgColor":"#f5f2f0","fontFamily":"var(--font-family-monospace)","fontSize":"var(--lia-bs-font-size-base)","fontWeightBold":"var(--lia-bs-font-weight-bold)","fontStyleItalic":"italic","tabSize":2,"highlightColor":"#b3d4fc","commentColor":"#62707e","punctuationColor":"#6f6f6f","namespaceOpacity":"0.7","propColor":"#990055","selectorColor":"#517a00","operatorColor":"#906736","operatorBgColor":"hsla(0, 0%, 100%, 0.5)","keywordColor":"#0076a9","functionColor":"#d3284b","variableColor":"#c14700","__typename":"PrismThemeSettings"},"rte":{"bgColor":"var(--lia-bs-white)","borderRadius":"var(--lia-panel-border-radius)","boxShadow":" var(--lia-panel-box-shadow)","customColor1":"#bfedd2","customColor2":"#fbeeb8","customColor3":"#f8cac6","customColor4":"#eccafa","customColor5":"#c2e0f4","customColor6":"#2dc26b","customColor7":"#f1c40f","customColor8":"#e03e2d","customColor9":"#b96ad9","customColor10":"#3598db","customColor11":"#169179","customColor12":"#e67e23","customColor13":"#ba372a","customColor14":"#843fa1","customColor15":"#236fa1","customColor16":"#ecf0f1","customColor17":"#ced4d9","customColor18":"#95a5a6","customColor19":"#7e8c8d","customColor20":"#34495e","customColor21":"#000000","customColor22":"#ffffff","defaultMessageHeaderMarginTop":"40px","defaultMessageHeaderMarginBottom":"20px","defaultMessageItemMarginTop":"0","defaultMessageItemMarginBottom":"10px","diffAddedColor":"hsla(170, 53%, 51%, 0.4)","diffChangedColor":"hsla(43, 97%, 63%, 0.4)","diffNoneColor":"hsla(0, 0%, 80%, 0.4)","diffRemovedColor":"hsla(9, 74%, 47%, 0.4)","specialMessageHeaderMarginTop":"40px","specialMessageHeaderMarginBottom":"20px","specialMessageItemMarginTop":"0","specialMessageItemMarginBottom":"10px","__typename":"RteThemeSettings"},"tags":{"bgColor":"var(--lia-bs-gray-200)","bgHoverColor":"var(--lia-bs-gray-400)","borderRadius":"var(--lia-bs-border-radius-sm)","color":"var(--lia-bs-body-color)","hoverColor":"var(--lia-bs-body-color)","fontWeight":"var(--lia-font-weight-md)","fontSize":"var(--lia-font-size-xxs)","textTransform":"UPPERCASE","letterSpacing":"0.5px","__typename":"TagsThemeSettings"},"toasts":{"borderRadius":"var(--lia-bs-border-radius)","paddingX":"12px","__typename":"ToastsThemeSettings"},"typography":{"fontFamilyBase":"Segoe UI","fontStyleBase":"NORMAL","fontWeightBase":"400","fontWeightLight":"300","fontWeightNormal":"400","fontWeightMd":"500","fontWeightBold":"700","letterSpacingSm":"normal","letterSpacingXs":"normal","lineHeightBase":"1.5","fontSizeBase":"16px","fontSizeXxs":"11px","fontSizeXs":"12px","fontSizeSm":"14px","fontSizeLg":"20px","fontSizeXl":"24px","smallFontSize":"14px","customFonts":[{"source":"SERVER","name":"Segoe UI","styles":[{"style":"NORMAL","weight":"400","__typename":"FontStyleData"},{"style":"NORMAL","weight":"300","__typename":"FontStyleData"},{"style":"NORMAL","weight":"600","__typename":"FontStyleData"},{"style":"NORMAL","weight":"700","__typename":"FontStyleData"},{"style":"ITALIC","weight":"400","__typename":"FontStyleData"}],"assetNames":["SegoeUI-normal-400.woff2","SegoeUI-normal-300.woff2","SegoeUI-normal-600.woff2","SegoeUI-normal-700.woff2","SegoeUI-italic-400.woff2"],"__typename":"CustomFont"},{"source":"SERVER","name":"MWF Fluent Icons","styles":[{"style":"NORMAL","weight":"400","__typename":"FontStyleData"}],"assetNames":["MWFFluentIcons-normal-400.woff2"],"__typename":"CustomFont"}],"__typename":"TypographyThemeSettings"},"unstyledListItem":{"marginBottomSm":"5px","marginBottomMd":"10px","marginBottomLg":"15px","marginBottomXl":"20px","marginBottomXxl":"25px","__typename":"UnstyledListItemThemeSettings"},"yiq":{"light":"#ffffff","dark":"#000000","__typename":"YiqThemeSettings"},"colorLightness":{"primaryDark":0.36,"primaryLight":0.74,"primaryLighter":0.89,"primaryLightest":0.95,"infoDark":0.39,"infoLight":0.72,"infoLighter":0.85,"infoLightest":0.93,"successDark":0.24,"successLight":0.62,"successLighter":0.8,"successLightest":0.91,"warningDark":0.39,"warningLight":0.68,"warningLighter":0.84,"warningLightest":0.93,"dangerDark":0.41,"dangerLight":0.72,"dangerLighter":0.89,"dangerLightest":0.95,"__typename":"ColorLightnessThemeSettings"},"localOverride":false,"__typename":"Theme"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Loading/LoadingDot-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Loading/LoadingDot-1745505307000","value":{"title":"Loading..."},"localOverride":false},"CachedAsset:text:en_US-components/common/EmailVerification-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/common/EmailVerification-1745505307000","value":{"email.verification.title":"Email Verification Required","email.verification.message.update.email":"To participate in the community, you must first verify your email address. The verification email was sent to {email}. To change your email, visit My Settings.","email.verification.message.resend.email":"To participate in the community, you must first verify your email address. The verification email was sent to {email}. Resend email."},"localOverride":false},"CachedAsset:text:en_US-pages/tags/TagPage-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-pages/tags/TagPage-1745505307000","value":{"tagPageTitle":"Tag:\"{tagName}\" | {communityTitle}","tagPageForNodeTitle":"Tag:\"{tagName}\" in \"{title}\" | {communityTitle}","name":"Tags Page","tag":"Tag: {tagName}"},"localOverride":false},"Category:category:top":{"__typename":"Category","id":"category:top","entityType":"CATEGORY","displayId":"top","nodeType":"category","depth":0,"title":"Top","shortTitle":"Top"},"Category:category:communities":{"__typename":"Category","id":"category:communities","entityType":"CATEGORY","displayId":"communities","nodeType":"category","depth":1,"title":"Communities","description":"","avatar":null,"profileSettings":{"__typename":"ProfileSettings","language":null},"parent":{"__ref":"Category:category:top"},"ancestors":{"__typename":"CoreNodeConnection","edges":[{"__typename":"CoreNodeEdge","node":{"__ref":"Community:community:gxcuf89792"}}]},"userContext":{"__typename":"NodeUserContext","canAddAttachments":false,"canUpdateNode":false,"canPostMessages":false,"isSubscribed":false},"theme":{"__ref":"Theme:customTheme1"},"tagPolicies":{"__typename":"TagPolicies","canSubscribeTagOnNode":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.labels.action.corenode.subscribe_labels.allow.accessDenied","key":"error.lithium.policies.labels.action.corenode.subscribe_labels.allow.accessDenied","args":[]}},"canManageTagDashboard":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.labels.action.corenode.admin_labels.allow.accessDenied","key":"error.lithium.policies.labels.action.corenode.admin_labels.allow.accessDenied","args":[]}}}},"CachedAsset:quilt:o365.prod:pages/tags/TagPage:category:communities-1747040213450":{"__typename":"CachedAsset","id":"quilt:o365.prod:pages/tags/TagPage:category:communities-1747040213450","value":{"id":"TagPage","container":{"id":"Common","headerProps":{"removeComponents":["community.widget.bannerWidget"],"__typename":"QuiltContainerSectionProps"},"items":[{"id":"tag-header-widget","layout":"ONE_COLUMN","bgColor":"var(--lia-bs-white)","showBorder":"BOTTOM","sectionEditLevel":"LOCKED","columnMap":{"main":[{"id":"tags.widget.TagsHeaderWidget","__typename":"QuiltComponent"}],"__typename":"OneSectionColumns"},"__typename":"OneColumnQuiltSection"},{"id":"messages-list-for-tag-widget","layout":"ONE_COLUMN","columnMap":{"main":[{"id":"messages.widget.messageListForNodeByRecentActivityWidget","props":{"viewVariant":{"type":"inline","props":{"useUnreadCount":true,"useViewCount":true,"useAuthorLogin":true,"clampBodyLines":3,"useAvatar":true,"useBoardIcon":false,"useKudosCount":true,"usePreviewMedia":true,"useTags":false,"useNode":true,"useNodeLink":true,"useTextBody":true,"truncateBodyLength":-1,"useBody":true,"useRepliesCount":true,"useSolvedBadge":true,"timeStampType":"conversation.lastPostingActivityTime","useMessageTimeLink":true,"clampSubjectLines":2}},"panelType":"divider","useTitle":false,"hideIfEmpty":false,"pagerVariant":{"type":"loadMore"},"style":"list","showTabs":true,"tabItemMap":{"default":{"mostRecent":true,"mostRecentUserContent":false,"newest":false},"additional":{"mostKudoed":true,"mostViewed":true,"mostReplies":false,"noReplies":false,"noSolutions":false,"solutions":false}}},"__typename":"QuiltComponent"}],"__typename":"OneSectionColumns"},"__typename":"OneColumnQuiltSection"}],"__typename":"QuiltContainer"},"__typename":"Quilt"},"localOverride":false},"CachedAsset:quiltWrapper:o365.prod:Common:1747040156047":{"__typename":"CachedAsset","id":"quiltWrapper:o365.prod:Common:1747040156047","value":{"id":"Common","header":{"backgroundImageProps":{"assetName":null,"backgroundSize":"COVER","backgroundRepeat":"NO_REPEAT","backgroundPosition":"CENTER_CENTER","lastModified":null,"__typename":"BackgroundImageProps"},"backgroundColor":"transparent","items":[{"id":"community.widget.navbarWidget","props":{"showUserName":true,"showRegisterLink":true,"useIconLanguagePicker":true,"useLabelLanguagePicker":true,"className":"QuiltComponent_lia-component-edit-mode__0nCcm","links":{"sideLinks":[],"mainLinks":[{"children":[],"linkType":"INTERNAL","id":"gxcuf89792","params":{},"routeName":"CommunityPage"},{"children":[],"linkType":"EXTERNAL","id":"external-link","url":"/Directory","target":"SELF"},{"children":[{"linkType":"INTERNAL","id":"microsoft365","params":{"categoryId":"microsoft365"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"windows","params":{"categoryId":"Windows"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"Common-microsoft365-copilot-link","params":{"categoryId":"Microsoft365Copilot"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-teams","params":{"categoryId":"MicrosoftTeams"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-securityand-compliance","params":{"categoryId":"microsoft-security"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"azure","params":{"categoryId":"Azure"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"Common-content_management-link","params":{"categoryId":"Content_Management"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"exchange","params":{"categoryId":"Exchange"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"windows-server","params":{"categoryId":"Windows-Server"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"outlook","params":{"categoryId":"Outlook"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-endpoint-manager","params":{"categoryId":"microsoftintune"},"routeName":"CategoryPage"},{"linkType":"EXTERNAL","id":"external-link-2","url":"/Directory","target":"SELF"}],"linkType":"EXTERNAL","id":"communities","url":"/","target":"BLANK"},{"children":[{"linkType":"INTERNAL","id":"a-i","params":{"categoryId":"AI"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"education-sector","params":{"categoryId":"EducationSector"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"partner-community","params":{"categoryId":"PartnerCommunity"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"i-t-ops-talk","params":{"categoryId":"ITOpsTalk"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"healthcare-and-life-sciences","params":{"categoryId":"HealthcareAndLifeSciences"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-mechanics","params":{"categoryId":"MicrosoftMechanics"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"public-sector","params":{"categoryId":"PublicSector"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"s-m-b","params":{"categoryId":"MicrosoftforNonprofits"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"io-t","params":{"categoryId":"IoT"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"startupsat-microsoft","params":{"categoryId":"StartupsatMicrosoft"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"driving-adoption","params":{"categoryId":"DrivingAdoption"},"routeName":"CategoryPage"},{"linkType":"EXTERNAL","id":"external-link-1","url":"/Directory","target":"SELF"}],"linkType":"EXTERNAL","id":"communities-1","url":"/","target":"SELF"},{"children":[],"linkType":"EXTERNAL","id":"external","url":"/Blogs","target":"SELF"},{"children":[],"linkType":"EXTERNAL","id":"external-1","url":"/Events","target":"SELF"},{"children":[{"linkType":"INTERNAL","id":"microsoft-learn-1","params":{"categoryId":"MicrosoftLearn"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-learn-blog","params":{"boardId":"MicrosoftLearnBlog","categoryId":"MicrosoftLearn"},"routeName":"BlogBoardPage"},{"linkType":"EXTERNAL","id":"external-10","url":"https://learningroomdirectory.microsoft.com/","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-3","url":"https://docs.microsoft.com/learn/dynamics365/?WT.mc_id=techcom_header-webpage-m365","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-4","url":"https://docs.microsoft.com/learn/m365/?wt.mc_id=techcom_header-webpage-m365","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-5","url":"https://docs.microsoft.com/learn/topics/sci/?wt.mc_id=techcom_header-webpage-m365","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-6","url":"https://docs.microsoft.com/learn/powerplatform/?wt.mc_id=techcom_header-webpage-powerplatform","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-7","url":"https://docs.microsoft.com/learn/github/?wt.mc_id=techcom_header-webpage-github","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-8","url":"https://docs.microsoft.com/learn/teams/?wt.mc_id=techcom_header-webpage-teams","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-9","url":"https://docs.microsoft.com/learn/dotnet/?wt.mc_id=techcom_header-webpage-dotnet","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-2","url":"https://docs.microsoft.com/learn/azure/?WT.mc_id=techcom_header-webpage-m365","target":"BLANK"}],"linkType":"INTERNAL","id":"microsoft-learn","params":{"categoryId":"MicrosoftLearn"},"routeName":"CategoryPage"},{"children":[],"linkType":"INTERNAL","id":"community-info-center","params":{"categoryId":"Community-Info-Center"},"routeName":"CategoryPage"}]},"style":{"boxShadow":"var(--lia-bs-box-shadow-sm)","controllerHighlightColor":"hsla(30, 100%, 50%)","linkFontWeight":"400","dropdownDividerMarginBottom":"10px","hamburgerBorderHover":"none","linkBoxShadowHover":"none","linkFontSize":"14px","backgroundOpacity":0.8,"controllerBorderRadius":"var(--lia-border-radius-50)","hamburgerBgColor":"transparent","hamburgerColor":"var(--lia-nav-controller-icon-color)","linkTextBorderBottom":"none","brandLogoHeight":"30px","linkBgHoverColor":"transparent","linkLetterSpacing":"normal","collapseMenuDividerOpacity":0.16,"dropdownPaddingBottom":"15px","paddingBottom":"15px","dropdownMenuOffset":"2px","hamburgerBgHoverColor":"transparent","borderBottom":"1px solid var(--lia-bs-border-color)","hamburgerBorder":"none","dropdownPaddingX":"10px","brandMarginRightSm":"10px","linkBoxShadow":"none","collapseMenuDividerBg":"var(--lia-nav-link-color)","linkColor":"var(--lia-bs-body-color)","linkJustifyContent":"flex-start","dropdownPaddingTop":"10px","controllerHighlightTextColor":"var(--lia-yiq-dark)","controllerTextColor":"var(--lia-nav-controller-icon-color)","background":{"imageAssetName":"","color":"var(--lia-bs-white)","size":"COVER","repeat":"NO_REPEAT","position":"CENTER_CENTER","imageLastModified":""},"linkBorderRadius":"var(--lia-bs-border-radius-sm)","linkHoverColor":"var(--lia-bs-body-color)","position":"FIXED","linkBorder":"none","linkTextBorderBottomHover":"2px solid var(--lia-bs-body-color)","brandMarginRight":"30px","hamburgerHoverColor":"var(--lia-nav-controller-icon-color)","linkBorderHover":"none","collapseMenuMarginLeft":"20px","linkFontStyle":"NORMAL","controllerTextHoverColor":"var(--lia-nav-controller-icon-hover-color)","linkPaddingX":"10px","linkPaddingY":"5px","paddingTop":"15px","linkTextTransform":"NONE","dropdownBorderColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","controllerBgHoverColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.1)","linkBgColor":"transparent","linkDropdownPaddingX":"var(--lia-nav-link-px)","linkDropdownPaddingY":"9px","controllerIconColor":"var(--lia-bs-body-color)","dropdownDividerMarginTop":"10px","linkGap":"10px","controllerIconHoverColor":"var(--lia-bs-body-color)"},"showSearchIcon":false,"languagePickerStyle":"iconAndLabel"},"__typename":"QuiltComponent"},{"id":"community.widget.breadcrumbWidget","props":{"backgroundColor":"transparent","linkHighlightColor":"var(--lia-bs-primary)","visualEffects":{"showBottomBorder":true},"linkTextColor":"var(--lia-bs-gray-700)"},"__typename":"QuiltComponent"},{"id":"custom.widget.HeroBanner","props":{"widgetVisibility":"signedInOrAnonymous","usePageWidth":false,"useTitle":true,"cMax_items":3,"useBackground":false,"title":"","lazyLoad":false,"widgetChooser":"custom.widget.HeroBanner"},"__typename":"QuiltComponent"}],"__typename":"QuiltWrapperSection"},"footer":{"backgroundImageProps":{"assetName":null,"backgroundSize":"COVER","backgroundRepeat":"NO_REPEAT","backgroundPosition":"CENTER_CENTER","lastModified":null,"__typename":"BackgroundImageProps"},"backgroundColor":"transparent","items":[{"id":"custom.widget.MicrosoftFooter","props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"}],"__typename":"QuiltWrapperSection"},"__typename":"QuiltWrapper","localOverride":false},"localOverride":false},"CachedAsset:text:en_US-components/common/ActionFeedback-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/common/ActionFeedback-1745505307000","value":{"joinedGroupHub.title":"Welcome","joinedGroupHub.message":"You are now a member of this group and are subscribed to updates.","groupHubInviteNotFound.title":"Invitation Not Found","groupHubInviteNotFound.message":"Sorry, we could not find your invitation to the group. The owner may have canceled the invite.","groupHubNotFound.title":"Group Not Found","groupHubNotFound.message":"The grouphub you tried to join does not exist. It may have been deleted.","existingGroupHubMember.title":"Already Joined","existingGroupHubMember.message":"You are already a member of this group.","accountLocked.title":"Account Locked","accountLocked.message":"Your account has been locked due to multiple failed attempts. Try again in {lockoutTime} minutes.","editedGroupHub.title":"Changes Saved","editedGroupHub.message":"Your group has been updated.","leftGroupHub.title":"Goodbye","leftGroupHub.message":"You are no longer a member of this group and will not receive future updates.","deletedGroupHub.title":"Deleted","deletedGroupHub.message":"The group has been deleted.","groupHubCreated.title":"Group Created","groupHubCreated.message":"{groupHubName} is ready to use","accountClosed.title":"Account Closed","accountClosed.message":"The account has been closed and you will now be redirected to the homepage","resetTokenExpired.title":"Reset Password Link has Expired","resetTokenExpired.message":"Try resetting your password again","invalidUrl.title":"Invalid URL","invalidUrl.message":"The URL you're using is not recognized. Verify your URL and try again.","accountClosedForUser.title":"Account Closed","accountClosedForUser.message":"{userName}'s account is closed","inviteTokenInvalid.title":"Invitation Invalid","inviteTokenInvalid.message":"Your invitation to the community has been canceled or expired.","inviteTokenError.title":"Invitation Verification Failed","inviteTokenError.message":"The url you are utilizing is not recognized. Verify your URL and try again","pageNotFound.title":"Access Denied","pageNotFound.message":"You do not have access to this area of the community or it doesn't exist","eventAttending.title":"Responded as Attending","eventAttending.message":"You'll be notified when there's new activity and reminded as the event approaches","eventInterested.title":"Responded as Interested","eventInterested.message":"You'll be notified when there's new activity and reminded as the event approaches","eventNotFound.title":"Event Not Found","eventNotFound.message":"The event you tried to respond to does not exist.","redirectToRelatedPage.title":"Showing Related Content","redirectToRelatedPageForBaseUsers.title":"Showing Related Content","redirectToRelatedPageForBaseUsers.message":"The content you are trying to access is archived","redirectToRelatedPage.message":"The content you are trying to access is archived","relatedUrl.archivalLink.flyoutMessage":"The content you are trying to access is archived View Archived Content"},"localOverride":false},"CachedAsset:component:custom.widget.HeroBanner-en-us-1747040256584":{"__typename":"CachedAsset","id":"component:custom.widget.HeroBanner-en-us-1747040256584","value":{"component":{"id":"custom.widget.HeroBanner","template":{"id":"HeroBanner","markupLanguage":"REACT","style":null,"texts":{"searchPlaceholderText":"Search this community","followActionText":"Follow","unfollowActionText":"Following","searchOnHoverText":"Please enter your search term(s) and then press return key to complete a search.","blogs.sidebar.pagetitle":"Latest Blogs | Microsoft Tech Community","followThisNode":"Follow this node","unfollowThisNode":"Unfollow this node"},"defaults":{"config":{"applicablePages":[],"description":null,"fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[{"id":"max_items","dataType":"NUMBER","list":false,"defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"control":"INPUT","__typename":"PropDefinition"}],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.HeroBanner","form":{"fields":[{"id":"widgetChooser","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"title","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useTitle","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useBackground","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"widgetVisibility","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"moreOptions","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"cMax_items","validation":null,"noValidation":null,"dataType":"NUMBER","list":false,"control":"INPUT","defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"__typename":"FormField"}],"layout":{"rows":[{"id":"widgetChooserGroup","type":"fieldset","as":null,"items":[{"id":"widgetChooser","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"titleGroup","type":"fieldset","as":null,"items":[{"id":"title","className":null,"__typename":"FormFieldRef"},{"id":"useTitle","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"useBackground","type":"fieldset","as":null,"items":[{"id":"useBackground","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"widgetVisibility","type":"fieldset","as":null,"items":[{"id":"widgetVisibility","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"moreOptionsGroup","type":"fieldset","as":null,"items":[{"id":"moreOptions","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"componentPropsGroup","type":"fieldset","as":null,"items":[{"id":"cMax_items","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"}],"actionButtons":null,"className":"custom_widget_HeroBanner_form","formGroupFieldSeparator":"divider","__typename":"FormLayout"},"__typename":"Form"},"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":null,"fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[{"id":"max_items","dataType":"NUMBER","list":false,"defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"control":"INPUT","__typename":"PropDefinition"}],"__typename":"ComponentProperties"},"form":{"fields":[{"id":"widgetChooser","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"title","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useTitle","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useBackground","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"widgetVisibility","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"moreOptions","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"cMax_items","validation":null,"noValidation":null,"dataType":"NUMBER","list":false,"control":"INPUT","defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"__typename":"FormField"}],"layout":{"rows":[{"id":"widgetChooserGroup","type":"fieldset","as":null,"items":[{"id":"widgetChooser","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"titleGroup","type":"fieldset","as":null,"items":[{"id":"title","className":null,"__typename":"FormFieldRef"},{"id":"useTitle","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"useBackground","type":"fieldset","as":null,"items":[{"id":"useBackground","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"widgetVisibility","type":"fieldset","as":null,"items":[{"id":"widgetVisibility","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"moreOptionsGroup","type":"fieldset","as":null,"items":[{"id":"moreOptions","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"componentPropsGroup","type":"fieldset","as":null,"items":[{"id":"cMax_items","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"}],"actionButtons":null,"className":"custom_widget_HeroBanner_form","formGroupFieldSeparator":"divider","__typename":"FormLayout"},"__typename":"Form"},"__typename":"Component","localOverride":false},"globalCss":null,"form":{"fields":[{"id":"widgetChooser","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"title","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useTitle","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useBackground","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"widgetVisibility","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"moreOptions","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"cMax_items","validation":null,"noValidation":null,"dataType":"NUMBER","list":false,"control":"INPUT","defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"__typename":"FormField"}],"layout":{"rows":[{"id":"widgetChooserGroup","type":"fieldset","as":null,"items":[{"id":"widgetChooser","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"titleGroup","type":"fieldset","as":null,"items":[{"id":"title","className":null,"__typename":"FormFieldRef"},{"id":"useTitle","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"useBackground","type":"fieldset","as":null,"items":[{"id":"useBackground","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"widgetVisibility","type":"fieldset","as":null,"items":[{"id":"widgetVisibility","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"moreOptionsGroup","type":"fieldset","as":null,"items":[{"id":"moreOptions","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"componentPropsGroup","type":"fieldset","as":null,"items":[{"id":"cMax_items","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"}],"actionButtons":null,"className":"custom_widget_HeroBanner_form","formGroupFieldSeparator":"divider","__typename":"FormLayout"},"__typename":"Form"}},"localOverride":false},"CachedAsset:component:custom.widget.MicrosoftFooter-en-us-1747040256584":{"__typename":"CachedAsset","id":"component:custom.widget.MicrosoftFooter-en-us-1747040256584","value":{"component":{"id":"custom.widget.MicrosoftFooter","template":{"id":"MicrosoftFooter","markupLanguage":"HANDLEBARS","style":".context-uhf {\n min-width: 280px;\n font-size: 15px;\n box-sizing: border-box;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n & *,\n & *:before,\n & *:after {\n box-sizing: inherit;\n }\n a.c-uhff-link {\n color: #616161;\n word-break: break-word;\n text-decoration: none;\n }\n &a:link,\n &a:focus,\n &a:hover,\n &a:active,\n &a:visited {\n text-decoration: none;\n color: inherit;\n }\n & div {\n font-family: 'Segoe UI', SegoeUI, 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n}\n.c-uhff {\n background: #f2f2f2;\n margin: -1.5625;\n width: auto;\n height: auto;\n}\n.c-uhff-nav {\n margin: 0 auto;\n max-width: calc(1600px + 10%);\n padding: 0 5%;\n box-sizing: inherit;\n &:before,\n &:after {\n content: ' ';\n display: table;\n clear: left;\n }\n @media only screen and (max-width: 1083px) {\n padding-left: 12px;\n }\n .c-heading-4 {\n color: #616161;\n word-break: break-word;\n font-size: 15px;\n line-height: 20px;\n padding: 36px 0 4px;\n font-weight: 600;\n }\n .c-uhff-nav-row {\n .c-uhff-nav-group {\n display: block;\n float: left;\n min-height: 1px;\n vertical-align: text-top;\n padding: 0 12px;\n width: 100%;\n zoom: 1;\n &:first-child {\n padding-left: 0;\n @media only screen and (max-width: 1083px) {\n padding-left: 12px;\n }\n }\n @media only screen and (min-width: 540px) and (max-width: 1082px) {\n width: 33.33333%;\n }\n @media only screen and (min-width: 1083px) {\n width: 16.6666666667%;\n }\n ul.c-list.f-bare {\n font-size: 11px;\n line-height: 16px;\n margin-top: 0;\n margin-bottom: 0;\n padding-left: 0;\n list-style-type: none;\n li {\n word-break: break-word;\n padding: 8px 0;\n margin: 0;\n }\n }\n }\n }\n}\n.c-uhff-base {\n background: #f2f2f2;\n margin: 0 auto;\n max-width: calc(1600px + 10%);\n padding: 30px 5% 16px;\n &:before,\n &:after {\n content: ' ';\n display: table;\n }\n &:after {\n clear: both;\n }\n a.c-uhff-ccpa {\n font-size: 11px;\n line-height: 16px;\n float: left;\n margin: 3px 0;\n }\n a.c-uhff-ccpa:hover {\n text-decoration: underline;\n }\n ul.c-list {\n font-size: 11px;\n line-height: 16px;\n float: right;\n margin: 3px 0;\n color: #616161;\n li {\n padding: 0 24px 4px 0;\n display: inline-block;\n }\n }\n .c-list.f-bare {\n padding-left: 0;\n list-style-type: none;\n }\n @media only screen and (max-width: 1083px) {\n display: flex;\n flex-wrap: wrap;\n padding: 30px 24px 16px;\n }\n}\n\n.social-share {\n position: fixed;\n top: 60%;\n transform: translateY(-50%);\n left: 0;\n z-index: 1000;\n}\n\n.sharing-options {\n list-style: none;\n padding: 0;\n margin: 0;\n display: block;\n flex-direction: column;\n background-color: white;\n width: 43px;\n border-radius: 0px 7px 7px 0px;\n}\n.linkedin-icon {\n border-top-right-radius: 7px;\n}\n.linkedin-icon:hover {\n border-radius: 0;\n}\n.social-share-rss-image {\n border-bottom-right-radius: 7px;\n}\n.social-share-rss-image:hover {\n border-radius: 0;\n}\n\n.social-link-footer {\n position: relative;\n display: block;\n margin: -2px 0;\n transition: all 0.2s ease;\n}\n.social-link-footer:hover .linkedin-icon {\n border-radius: 0;\n}\n.social-link-footer:hover .social-share-rss-image {\n border-radius: 0;\n}\n\n.social-link-footer img {\n width: 40px;\n height: auto;\n transition: filter 0.3s ease;\n}\n\n.social-share-list {\n width: 40px;\n}\n.social-share-rss-image {\n width: 40px;\n}\n\n.share-icon {\n border: 2px solid transparent;\n display: inline-block;\n position: relative;\n}\n\n.share-icon:hover {\n opacity: 1;\n border: 2px solid white;\n box-sizing: border-box;\n}\n\n.share-icon:hover .label {\n opacity: 1;\n visibility: visible;\n border: 2px solid white;\n box-sizing: border-box;\n border-left: none;\n}\n\n.label {\n position: absolute;\n left: 100%;\n white-space: nowrap;\n opacity: 0;\n visibility: hidden;\n transition: all 0.2s ease;\n color: white;\n border-radius: 0 10 0 10px;\n top: 50%;\n transform: translateY(-50%);\n height: 40px;\n border-radius: 0 6px 6px 0;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 5px 20px 8px;\n margin-left: -1px;\n}\n.linkedin {\n background-color: #0474b4;\n}\n.facebook {\n background-color: #3c5c9c;\n}\n.twitter {\n background-color: white;\n color: black;\n}\n.reddit {\n background-color: #fc4404;\n}\n.mail {\n background-color: #848484;\n}\n.bluesky {\n background-color: white;\n color: black;\n}\n.rss {\n background-color: #ec7b1c;\n}\n#RSS {\n width: 40px;\n height: 40px;\n}\n\n@media (max-width: 991px) {\n .social-share {\n display: none;\n }\n}\n","texts":{"New tab":"What's New","New 1":"Surface Laptop Studio 2","New 2":"Surface Laptop Go 3","New 3":"Surface Pro 9","New 4":"Surface Laptop 5","New 5":"Surface Studio 2+","New 6":"Copilot in Windows","New 7":"Microsoft 365","New 8":"Windows 11 apps","Store tab":"Microsoft Store","Store 1":"Account Profile","Store 2":"Download Center","Store 3":"Microsoft Store Support","Store 4":"Returns","Store 5":"Order tracking","Store 6":"Certified Refurbished","Store 7":"Microsoft Store Promise","Store 8":"Flexible Payments","Education tab":"Education","Edu 1":"Microsoft in education","Edu 2":"Devices for education","Edu 3":"Microsoft Teams for Education","Edu 4":"Microsoft 365 Education","Edu 5":"How to buy for your school","Edu 6":"Educator Training and development","Edu 7":"Deals for students and parents","Edu 8":"Azure for students","Business tab":"Business","Bus 1":"Microsoft Cloud","Bus 2":"Microsoft Security","Bus 3":"Dynamics 365","Bus 4":"Microsoft 365","Bus 5":"Microsoft Power Platform","Bus 6":"Microsoft Teams","Bus 7":"Microsoft Industry","Bus 8":"Small Business","Developer tab":"Developer & IT","Dev 1":"Azure","Dev 2":"Developer Center","Dev 3":"Documentation","Dev 4":"Microsoft Learn","Dev 5":"Microsoft Tech Community","Dev 6":"Azure Marketplace","Dev 7":"AppSource","Dev 8":"Visual Studio","Company tab":"Company","Com 1":"Careers","Com 2":"About Microsoft","Com 3":"Company News","Com 4":"Privacy at Microsoft","Com 5":"Investors","Com 6":"Diversity and inclusion","Com 7":"Accessiblity","Com 8":"Sustainibility"},"defaults":{"config":{"applicablePages":[],"description":"The Microsoft Footer","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.MicrosoftFooter","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":"The Microsoft Footer","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":{"css":".custom_widget_MicrosoftFooter_context-uhf_105bp_1 {\n min-width: 17.5rem;\n font-size: 0.9375rem;\n box-sizing: border-box;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n & *,\n & *:before,\n & *:after {\n box-sizing: inherit;\n }\n a.custom_widget_MicrosoftFooter_c-uhff-link_105bp_12 {\n color: #616161;\n word-break: break-word;\n text-decoration: none;\n }\n &a:link,\n &a:focus,\n &a:hover,\n &a:active,\n &a:visited {\n text-decoration: none;\n color: inherit;\n }\n & div {\n font-family: 'Segoe UI', SegoeUI, 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n}\n.custom_widget_MicrosoftFooter_c-uhff_105bp_12 {\n background: #f2f2f2;\n margin: -1.5625;\n width: auto;\n height: auto;\n}\n.custom_widget_MicrosoftFooter_c-uhff-nav_105bp_35 {\n margin: 0 auto;\n max-width: calc(100rem + 10%);\n padding: 0 5%;\n box-sizing: inherit;\n &:before,\n &:after {\n content: ' ';\n display: table;\n clear: left;\n }\n @media only screen and (max-width: 1083px) {\n padding-left: 0.75rem;\n }\n .custom_widget_MicrosoftFooter_c-heading-4_105bp_49 {\n color: #616161;\n word-break: break-word;\n font-size: 0.9375rem;\n line-height: 1.25rem;\n padding: 2.25rem 0 0.25rem;\n font-weight: 600;\n }\n .custom_widget_MicrosoftFooter_c-uhff-nav-row_105bp_57 {\n .custom_widget_MicrosoftFooter_c-uhff-nav-group_105bp_58 {\n display: block;\n float: left;\n min-height: 0.0625rem;\n vertical-align: text-top;\n padding: 0 0.75rem;\n width: 100%;\n zoom: 1;\n &:first-child {\n padding-left: 0;\n @media only screen and (max-width: 1083px) {\n padding-left: 0.75rem;\n }\n }\n @media only screen and (min-width: 540px) and (max-width: 1082px) {\n width: 33.33333%;\n }\n @media only screen and (min-width: 1083px) {\n width: 16.6666666667%;\n }\n ul.custom_widget_MicrosoftFooter_c-list_105bp_78.custom_widget_MicrosoftFooter_f-bare_105bp_78 {\n font-size: 0.6875rem;\n line-height: 1rem;\n margin-top: 0;\n margin-bottom: 0;\n padding-left: 0;\n list-style-type: none;\n li {\n word-break: break-word;\n padding: 0.5rem 0;\n margin: 0;\n }\n }\n }\n }\n}\n.custom_widget_MicrosoftFooter_c-uhff-base_105bp_94 {\n background: #f2f2f2;\n margin: 0 auto;\n max-width: calc(100rem + 10%);\n padding: 1.875rem 5% 1rem;\n &:before,\n &:after {\n content: ' ';\n display: table;\n }\n &:after {\n clear: both;\n }\n a.custom_widget_MicrosoftFooter_c-uhff-ccpa_105bp_107 {\n font-size: 0.6875rem;\n line-height: 1rem;\n float: left;\n margin: 0.1875rem 0;\n }\n a.custom_widget_MicrosoftFooter_c-uhff-ccpa_105bp_107:hover {\n text-decoration: underline;\n }\n ul.custom_widget_MicrosoftFooter_c-list_105bp_78 {\n font-size: 0.6875rem;\n line-height: 1rem;\n float: right;\n margin: 0.1875rem 0;\n color: #616161;\n li {\n padding: 0 1.5rem 0.25rem 0;\n display: inline-block;\n }\n }\n .custom_widget_MicrosoftFooter_c-list_105bp_78.custom_widget_MicrosoftFooter_f-bare_105bp_78 {\n padding-left: 0;\n list-style-type: none;\n }\n @media only screen and (max-width: 1083px) {\n display: flex;\n flex-wrap: wrap;\n padding: 1.875rem 1.5rem 1rem;\n }\n}\n.custom_widget_MicrosoftFooter_social-share_105bp_138 {\n position: fixed;\n top: 60%;\n transform: translateY(-50%);\n left: 0;\n z-index: 1000;\n}\n.custom_widget_MicrosoftFooter_sharing-options_105bp_146 {\n list-style: none;\n padding: 0;\n margin: 0;\n display: block;\n flex-direction: column;\n background-color: white;\n width: 2.6875rem;\n border-radius: 0 0.4375rem 0.4375rem 0;\n}\n.custom_widget_MicrosoftFooter_linkedin-icon_105bp_156 {\n border-top-right-radius: 7px;\n}\n.custom_widget_MicrosoftFooter_linkedin-icon_105bp_156:hover {\n border-radius: 0;\n}\n.custom_widget_MicrosoftFooter_social-share-rss-image_105bp_162 {\n border-bottom-right-radius: 7px;\n}\n.custom_widget_MicrosoftFooter_social-share-rss-image_105bp_162:hover {\n border-radius: 0;\n}\n.custom_widget_MicrosoftFooter_social-link-footer_105bp_169 {\n position: relative;\n display: block;\n margin: -0.125rem 0;\n transition: all 0.2s ease;\n}\n.custom_widget_MicrosoftFooter_social-link-footer_105bp_169:hover .custom_widget_MicrosoftFooter_linkedin-icon_105bp_156 {\n border-radius: 0;\n}\n.custom_widget_MicrosoftFooter_social-link-footer_105bp_169:hover .custom_widget_MicrosoftFooter_social-share-rss-image_105bp_162 {\n border-radius: 0;\n}\n.custom_widget_MicrosoftFooter_social-link-footer_105bp_169 img {\n width: 2.5rem;\n height: auto;\n transition: filter 0.3s ease;\n}\n.custom_widget_MicrosoftFooter_social-share-list_105bp_188 {\n width: 2.5rem;\n}\n.custom_widget_MicrosoftFooter_social-share-rss-image_105bp_162 {\n width: 2.5rem;\n}\n.custom_widget_MicrosoftFooter_share-icon_105bp_195 {\n border: 2px solid transparent;\n display: inline-block;\n position: relative;\n}\n.custom_widget_MicrosoftFooter_share-icon_105bp_195:hover {\n opacity: 1;\n border: 2px solid white;\n box-sizing: border-box;\n}\n.custom_widget_MicrosoftFooter_share-icon_105bp_195:hover .custom_widget_MicrosoftFooter_label_105bp_207 {\n opacity: 1;\n visibility: visible;\n border: 2px solid white;\n box-sizing: border-box;\n border-left: none;\n}\n.custom_widget_MicrosoftFooter_label_105bp_207 {\n position: absolute;\n left: 100%;\n white-space: nowrap;\n opacity: 0;\n visibility: hidden;\n transition: all 0.2s ease;\n color: white;\n border-radius: 0 10 0 0.625rem;\n top: 50%;\n transform: translateY(-50%);\n height: 2.5rem;\n border-radius: 0 0.375rem 0.375rem 0;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1.25rem 0.3125rem 1.25rem 0.5rem;\n margin-left: -0.0625rem;\n}\n.custom_widget_MicrosoftFooter_linkedin_105bp_156 {\n background-color: #0474b4;\n}\n.custom_widget_MicrosoftFooter_facebook_105bp_237 {\n background-color: #3c5c9c;\n}\n.custom_widget_MicrosoftFooter_twitter_105bp_240 {\n background-color: white;\n color: black;\n}\n.custom_widget_MicrosoftFooter_reddit_105bp_244 {\n background-color: #fc4404;\n}\n.custom_widget_MicrosoftFooter_mail_105bp_247 {\n background-color: #848484;\n}\n.custom_widget_MicrosoftFooter_bluesky_105bp_250 {\n background-color: white;\n color: black;\n}\n.custom_widget_MicrosoftFooter_rss_105bp_254 {\n background-color: #ec7b1c;\n}\n#custom_widget_MicrosoftFooter_RSS_105bp_1 {\n width: 2.5rem;\n height: 2.5rem;\n}\n@media (max-width: 991px) {\n .custom_widget_MicrosoftFooter_social-share_105bp_138 {\n display: none;\n }\n}\n","tokens":{"context-uhf":"custom_widget_MicrosoftFooter_context-uhf_105bp_1","c-uhff-link":"custom_widget_MicrosoftFooter_c-uhff-link_105bp_12","c-uhff":"custom_widget_MicrosoftFooter_c-uhff_105bp_12","c-uhff-nav":"custom_widget_MicrosoftFooter_c-uhff-nav_105bp_35","c-heading-4":"custom_widget_MicrosoftFooter_c-heading-4_105bp_49","c-uhff-nav-row":"custom_widget_MicrosoftFooter_c-uhff-nav-row_105bp_57","c-uhff-nav-group":"custom_widget_MicrosoftFooter_c-uhff-nav-group_105bp_58","c-list":"custom_widget_MicrosoftFooter_c-list_105bp_78","f-bare":"custom_widget_MicrosoftFooter_f-bare_105bp_78","c-uhff-base":"custom_widget_MicrosoftFooter_c-uhff-base_105bp_94","c-uhff-ccpa":"custom_widget_MicrosoftFooter_c-uhff-ccpa_105bp_107","social-share":"custom_widget_MicrosoftFooter_social-share_105bp_138","sharing-options":"custom_widget_MicrosoftFooter_sharing-options_105bp_146","linkedin-icon":"custom_widget_MicrosoftFooter_linkedin-icon_105bp_156","social-share-rss-image":"custom_widget_MicrosoftFooter_social-share-rss-image_105bp_162","social-link-footer":"custom_widget_MicrosoftFooter_social-link-footer_105bp_169","social-share-list":"custom_widget_MicrosoftFooter_social-share-list_105bp_188","share-icon":"custom_widget_MicrosoftFooter_share-icon_105bp_195","label":"custom_widget_MicrosoftFooter_label_105bp_207","linkedin":"custom_widget_MicrosoftFooter_linkedin_105bp_156","facebook":"custom_widget_MicrosoftFooter_facebook_105bp_237","twitter":"custom_widget_MicrosoftFooter_twitter_105bp_240","reddit":"custom_widget_MicrosoftFooter_reddit_105bp_244","mail":"custom_widget_MicrosoftFooter_mail_105bp_247","bluesky":"custom_widget_MicrosoftFooter_bluesky_105bp_250","rss":"custom_widget_MicrosoftFooter_rss_105bp_254","RSS":"custom_widget_MicrosoftFooter_RSS_105bp_1"}},"form":null},"localOverride":false},"CachedAsset:text:en_US-components/community/Breadcrumb-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/community/Breadcrumb-1745505307000","value":{"navLabel":"Breadcrumbs","dropdown":"Additional parent page navigation"},"localOverride":false},"CachedAsset:text:en_US-components/tags/TagsHeaderWidget-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/tags/TagsHeaderWidget-1745505307000","value":{"tag":"{tagName}","topicsCount":"{count} {count, plural, one {Topic} other {Topics}}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageListForNodeByRecentActivityWidget-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageListForNodeByRecentActivityWidget-1745505307000","value":{"title@userScope:other":"Recent Content","title@userScope:self":"Contributions","title@board:FORUM@userScope:other":"Recent Discussions","title@board:BLOG@userScope:other":"Recent Blogs","emptyDescription":"No content to show","MessageListForNodeByRecentActivityWidgetEditor.nodeScope.label":"Scope","title@instance:1722894000155":"Recent Discussions","title@instance:1727367112619":"Recent Blog Articles","title@instance:1727367069748":"Recent Discussions","title@instance:1727366213114":"Latest Discussions","title@instance:1727899609720":"","title@instance:1727363308925":"Latest Discussions","title@instance:1737115580352":"Latest Articles","title@instance:1720453418992":"Recent Discssions","title@instance:1727365950181":"Latest Blog Articles","title@instance:bmDPnI":"Latest Blog Articles","title@instance:IiDDJZ":"Latest Blog Articles","title@instance:1721244347979":"Latest blog posts","title@instance:1728383752171":"Related Content","title@instance:1722893956545":"Latest Skilling Resources","title@instance:dhcgCU":"Latest Discussions"},"localOverride":false},"Category:category:Exchange":{"__typename":"Category","id":"category:Exchange","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Outlook":{"__typename":"Category","id":"category:Outlook","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Community-Info-Center":{"__typename":"Category","id":"category:Community-Info-Center","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:EducationSector":{"__typename":"Category","id":"category:EducationSector","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:DrivingAdoption":{"__typename":"Category","id":"category:DrivingAdoption","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Azure":{"__typename":"Category","id":"category:Azure","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Windows-Server":{"__typename":"Category","id":"category:Windows-Server","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:MicrosoftTeams":{"__typename":"Category","id":"category:MicrosoftTeams","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:PublicSector":{"__typename":"Category","id":"category:PublicSector","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:microsoft365":{"__typename":"Category","id":"category:microsoft365","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:IoT":{"__typename":"Category","id":"category:IoT","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"displayId":"IoT"},"Category:category:HealthcareAndLifeSciences":{"__typename":"Category","id":"category:HealthcareAndLifeSciences","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:ITOpsTalk":{"__typename":"Category","id":"category:ITOpsTalk","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:MicrosoftLearn":{"__typename":"Category","id":"category:MicrosoftLearn","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Blog:board:MicrosoftLearnBlog":{"__typename":"Blog","id":"board:MicrosoftLearnBlog","blogPolicies":{"__typename":"BlogPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:AI":{"__typename":"Category","id":"category:AI","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:MicrosoftMechanics":{"__typename":"Category","id":"category:MicrosoftMechanics","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:MicrosoftforNonprofits":{"__typename":"Category","id":"category:MicrosoftforNonprofits","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:StartupsatMicrosoft":{"__typename":"Category","id":"category:StartupsatMicrosoft","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:PartnerCommunity":{"__typename":"Category","id":"category:PartnerCommunity","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Microsoft365Copilot":{"__typename":"Category","id":"category:Microsoft365Copilot","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Windows":{"__typename":"Category","id":"category:Windows","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Content_Management":{"__typename":"Category","id":"category:Content_Management","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:microsoft-security":{"__typename":"Category","id":"category:microsoft-security","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:microsoftintune":{"__typename":"Category","id":"category:microsoftintune","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Conversation:conversation:3293617":{"__typename":"Conversation","id":"conversation:3293617","topic":{"__typename":"BlogTopicMessage","uid":3293617},"lastPostingActivityTime":"2022-04-29T13:15:31.253-07:00","solved":false},"Blog:board:IoTBlog":{"__typename":"Blog","id":"board:IoTBlog","displayId":"IoTBlog","nodeType":"board","conversationStyle":"BLOG","title":"Internet of Things Blog","shortTitle":"Internet of Things Blog","parent":{"__ref":"Category:category:IoT"}},"User:user:1308823":{"__typename":"User","uid":1308823,"login":"Gaya24","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0xMzA4ODIzLTM0ODcyNmkwOUE4REMyRTdBQkYwNEE4"},"id":"user:1308823"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ2MmlDOUZCNDBGNzc5QkEzQzdF?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ2MmlDOUZCNDBGNzc5QkEzQzdF?revision=12","title":"Screen Shot 2022-04-04 at 12.29.53.jpeg","associationType":"TEASER","width":4032,"height":3024,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ1NmlFRjUyRUYxMEFERTZFRTA2?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ1NmlFRjUyRUYxMEFERTZFRTA2?revision=12","title":"Gaya24_0-1650869157719.png","associationType":"BODY","width":795,"height":844,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ1N2lBNEM5RjE5RjUzOTcxMDQ0?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ1N2lBNEM5RjE5RjUzOTcxMDQ0?revision=12","title":"Gaya24_1-1650869157725.png","associationType":"BODY","width":806,"height":431,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ1OGkwMkVBMEE0N0YwRkU3MTc5?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ1OGkwMkVBMEE0N0YwRkU3MTc5?revision=12","title":"Gaya24_2-1650869157733.png","associationType":"BODY","width":606,"height":616,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ1OWkzMEM1QjdCQTJBRThGRDM4?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ1OWkzMEM1QjdCQTJBRThGRDM4?revision=12","title":"Gaya24_3-1650869157749.png","associationType":"BODY","width":1950,"height":653,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ2MGk5RDNFODAzNDQ1NjVDMURD?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ2MGk5RDNFODAzNDQ1NjVDMURD?revision=12","title":"Gaya24_4-1650869157759.png","associationType":"BODY","width":975,"height":560,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ2MWk4MTdCMDgzMUU0OTc1RTRE?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ2MWk4MTdCMDgzMUU0OTc1RTRE?revision=12","title":"Gaya24_5-1650869157768.png","associationType":"BODY","width":1477,"height":469,"altText":null},"BlogTopicMessage:message:3293617":{"__typename":"BlogTopicMessage","subject":"AI for ANYONE with Azure Percept","conversation":{"__ref":"Conversation:conversation:3293617"},"id":"message:3293617","revisionNum":12,"uid":3293617,"depth":0,"board":{"__ref":"Blog:board:IoTBlog"},"author":{"__ref":"User:user:1308823"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" Azure Percept is an end-to-end rapid-prototyping solution for deploying pre-Using Azure Percept to solve a fun problem at my workplace involving coffee. \n \n \n \n ","introduction":"","metrics":{"__typename":"MessageMetrics","views":3118},"postTime":"2022-04-27T08:00:00.063-07:00","lastPublishTime":"2022-04-29T13:15:31.253-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Azure Percept is an end-to-end rapid-prototyping solution for deploying AI models on Edge \n \n \n \n Just like any other tech hub, our workplace runs on coffee, but often times when I want to go make a cup of coffee, there is queue at the machine. Since I tend to have only few mins between meetings or coding sessions to grab coffee, waiting in line is not ideal. \n \n Tricky problem, right? *My developer brain thinks of a fun project* \n I built an office coffee bot with Azure Percept using in-built people detection AI model that can tell me when the coffee machine is unoccupied. AI + coffee - fun combo, isn’t it? Now, let’s get to details. \n \n Azure Percept CoffeeBot Setup \n \n The development kit comes with AI models that include people detection, object classification, etc., and can be easily integrated with Azure services. \n \n Using Azure Percept studio, you can manage your devices and deploy custom models built with Azure Custom Vision. I decided to deploy the people detection model on Percept for my use case and configured it to continuously stream detection data onto Azure IoT Hub. On IoT hub, you can configure a device to receive these events. \n \n \n \n Next, I plugged Stream Analytics to IoT Hub to in order to run queries on streaming data. The input of the stream analytics job is set as IoT Hub device I had created earlier. The output of the job is sent to CosmosDB in this usecase. \n \n \n \n \n Stream Analytics job query counting number of people detected every 3 minutes \n \n \n \n The data is stored as CosmosDB documents \n \n \n \n In order to finalise my bot, I setup a Microsoft Teams bot that calls an Azure Function App via HTTP trigger in order to instantly answer whether the coffee machine is free. \n \n This is how the whole setup looks - \n \n The people counter data in Cosmos DB can also be visualised over a period of time using PowerBI or similar tool to know when people are most at the coffee machine which can lead to other automation possibilities such as - when to stock up coffee beans or to schedule cleaning of machine. \n \n Voila! Coffee mission accomplished \n \n Other use cases \n \n This is just a fun project in order to demonstrate how Azure Percept comes in handy and it was extremely easy to build this prototype. There are a variety of other use cases where Azure Percept can come in handy such as finding available meeting rooms, stock detection or defect detection in retail and other scenarios where AI is really powerful. \n \n If you want to get started on developing AI models on Azure Percept: \n Setup Azure Percept \n Overview of AI models \n \n Other use cases where Azure Percept is used \n Retail self checkout \n \n About me \n \n Gaya works as Data Engineer and has around 9 years of experience in building data engineering and infrastructure solutions for different companies. \n When not drinking coffee, she likes to go cycling, hiking and to other outdoor activities \n ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"3200","kudosSumWeight":4,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ2MmlDOUZCNDBGNzc5QkEzQzdF?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ2MmlDOUZCNDBGNzc5QkEzQzdF?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ1NmlFRjUyRUYxMEFERTZFRTA2?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDQ","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ1N2lBNEM5RjE5RjUzOTcxMDQ0?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDU","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ1OGkwMkVBMEE0N0YwRkU3MTc5?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDY","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ1OWkzMEM1QjdCQTJBRThGRDM4?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDc","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ2MGk5RDNFODAzNDQ1NjVDMURD?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDg","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjkzNjE3LTM2NjQ2MWk4MTdCMDgzMUU0OTc1RTRE?revision=12\"}"}}],"totalCount":8,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:3390910":{"__typename":"Conversation","id":"conversation:3390910","topic":{"__typename":"BlogTopicMessage","uid":3390910},"lastPostingActivityTime":"2022-05-20T08:33:56.278-07:00","solved":false},"User:user:1392012":{"__typename":"User","uid":1392012,"login":"bluevalhalla","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0xMzkyMDEyLTM3MjEyN2kyRUU2RTc3MkRDQzc1QTcx"},"id":"user:1392012"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY5OWlEMTFBNTk3MzAyNUE2QUY2?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY5OWlEMTFBNTk3MzAyNUE2QUY2?revision=9","title":"BearIDCollage-Header-370x200.png","associationType":"TEASER","width":370,"height":200,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY4NWk3OURBMzBCRjg0ODE0QzE5?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY4NWk3OURBMzBCRjg0ODE0QzE5?revision=9","title":"BearIDCollage-Header.png","associationType":"BODY","width":1200,"height":480,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY4Nmk2N0Q5RDM1NzEzRDBFQzdD?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY4Nmk2N0Q5RDM1NzEzRDBFQzdD?revision=9","title":"ArchDiagram.png","associationType":"BODY","width":3377,"height":2502,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY4N2k2OThEMEFDNzExNTI0Nzgz?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY4N2k2OThEMEFDNzExNTI0Nzgz?revision=9","title":"PerceptDK.jpg","associationType":"BODY","width":3072,"height":4080,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY4OGkwQTFBQzhCQjYyRDBCQjVD?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY4OGkwQTFBQzhCQjYyRDBCQjVD?revision=9","title":"PerceptWebstream-crop.jpg","associationType":"BODY","width":1646,"height":946,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY4OWkzRjJGQTgwNURDOEY3RkFE?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY4OWkzRjJGQTgwNURDOEY3RkFE?revision=9","title":"Cameratrap_BearID.png","associationType":"BODY","width":1894,"height":1068,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY5MGk4MTZGNUQxMjM2OTIyMTQw?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY5MGk4MTZGNUQxMjM2OTIyMTQw?revision=9","title":"CustomVisionDataset.png","associationType":"BODY","width":2846,"height":1590,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY5MWk0OTlERDJEMjE0Q0MzN0I2?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY5MWk0OTlERDJEMjE0Q0MzN0I2?revision=9","title":"CustomVisionPerformance.png","associationType":"BODY","width":2874,"height":1590,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY5Mmk2QzNDNUJGMTZEMzg0MTA1?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY5Mmk2QzNDNUJGMTZEMzg0MTA1?revision=9","title":"PerceptCalendar-crop.jpg","associationType":"BODY","width":1600,"height":1200,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY5NGk4N0ZDOUM3MkNEM0Q3MzVD?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY5NGk4N0ZDOUM3MkNEM0Q3MzVD?revision=9","title":"PerceptGrazerID-crop.png","associationType":"BODY","width":1628,"height":1226,"altText":null},"BlogTopicMessage:message:3390910":{"__typename":"BlogTopicMessage","subject":"Wildlife Monitoring and Conservation with Azure Percept","conversation":{"__ref":"Conversation:conversation:3390910"},"id":"message:3390910","revisionNum":9,"uid":3390910,"depth":0,"board":{"__ref":"Blog:board:IoTBlog"},"author":{"__ref":"User:user:1392012"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" \n \n \n \n \n \n \n \n \n Using Azure Custom Vision to train a model to identify individual brown bears then deploying it to Azure Percept. \n \n \n \n \n \n ","introduction":"","metrics":{"__typename":"MessageMetrics","views":3802},"postTime":"2022-05-19T08:00:00.048-07:00","lastPublishTime":"2022-05-20T08:33:56.278-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" \n \n BearID Project is a non-profit organization staffed by conservation scientists and volunteer software engineers. Our aim is to progress the field of conservation technology by developing individual identification software applied to camera trap data for use in noninvasive wildlife monitoring. Our initial application focuses on brown bears and provides the foundation for the development of individual recognition for other wildlife, which could aid conservation efforts worldwide. \n \n While the current BearID application significantly reduces to time to process camera data, it still takes weeks to months to determine which bears were seen. This is mainly due to the need to retrieve the memory cards from the field. Connected cameras could reduce the time lag, however, streaming video directly to the cloud requires considerable data bandwidth and device power. Bandwidth and power pose significant challenges due to the remote location of the cameras. The ability to detect and identify individuals directly on the camera combined with connectivity could enable remote device management and near real-time monitoring and notification. Intelligent sensing devices with renewable power and long-range connectivity would be a game-changer for conservation science. \n \n As a Microsoft AI for Earth grantee with the BearID Project I was introduced to Azure Percept. Azure Percept provides an easy way to set up and manage IoT devices and experiment with detection and identification models on an edge-computing device like the Azure Percept. This would serve as a first step toward on-camera machine learning. This blog will walk through the steps we followed from setting up Azure Percept to training and deploying a model and running inference remotely to detect and identify a bear. \n \n Overview of the Use Case \n Using Azure Percept and Azure Custom Vision, I developed a prototype camera trap with bear face detection and individual identification. This consisted of training a machine learning model with Azure Custom Vision, deploying it to an Azure Percept DK and using it to identify bears by pointing the Azure Percept Vision at various photos of bears. \n \n Here is an architecture diagram of the solution: \n \n \n \n Setup \n The Azure Percept DK comes with 3 main components: \n \n Azure Percept Developer Board - the main compute board powered by the NXP i.MX 8M application processor, powered by 4 Arm Cortex-A53 cores \n Azure Percept Vision - a vision system-on-module (SoM) with an Intel Movidius Myriad X (MA2085) vision processing unit (VPU) and an RGB camera sensor \n Azure Percept Audio - an audio system-on-module (SoM) with an XMOS XUF208 multicore microcontroller and 4 MEMS microphones \n \n \n \n \n Setting up the device is easy, just follow the quickstart guide. I did have an issue when creating the Azure IoT Hub. I tried to add it to an existing resource group but got an error. The error message didn't provide much information. When I tried to create a new resource group, I got the same error. However, when I tried using the new resource group a second time, I was able to complete the process. If you do get errors, check the resource group activity log for more information on the error (I discovered this after the fact!). \n \n Once the Percept DK was setup, I was easily able to connect to the device using Azure Percept Studio. From the Percept Studio Overview, select Devices and select your device from the list. On the device page, switch to the Vision tab. Under Actions, click View stream. You should see the camera feed in a browser window. Most likely it is already running a default object detection model. My view looked like this: \n \n \n \n My helper, Kodi (aka teddy bear: 0.99), is looking forward to identifying some friends. Let's get started! \n \n Training a model \n As one of our early experiments with the AI for Earth grant, we trained a bear face detection model using Azure Custom Vision and the SDK for Python (it properly detects Kodi!). I had written a blog post, Object Detection with Azure Custom Vision, which describes a low-code approach to the problem. That post will serve as a starting point for this one. This time we want to not only find the bear faces, but we want to label them with the individual bear's identification (a name or number). As with the bear face detector posted previously, we will follow the Quickstart: Create an object detection project with the Custom Vision client library guide and use the Python SDK do the following: \n \n Create a new Custom Vision project \n Add tags to the project \n Upload and tag images \n Train the model \n \n \n If you are just getting started with Custom Vision, follow the prerequisites and Setting up sections of the guide. The rest of this post assumes familiarity with utilizing Custom Vision for object detection. \n \n \n \n Create a new Custom Vision project \n I used the same code as with the face detector to setup up the Azure Custom Vision object detection project and credentials. The only change was in naming the project in the Custom Vision API call trainer.create_project, which I changed from face-resize to face-id-resize: \n \n project = trainer.create_project(\"face-resize\", domain_id=obj_detection_domain.id) \n \n Initially I used the General domain, which I could easily test on the server. For use with the Percept DK, I used the General (compact) domain. The compact domain is optimized for edge devices. For more information on domains, see Select a domain for a Custom Vision project. \n \n Add tags to the project \n Custom Vision first needs a list of tags, or labels, for the objects we want to detect. In the bear face detector, we had a box drawn around each bear's face and all the boxes were labelled as bear. This time, the boxes remain the same, but the labels will correspond to the individual bear's identification. For training object detectors, the Custom Vision documentation recommends a minimum of 50 instances of each object for training. When all the objects were labeled as bear, we had more than 3000 instances. For most of the bears in our dataset, we don't have that many images (and, sadly, no Kodi). We will need to pull out a subset of bears with 50 or more images. \n \n Our dataset uses an XML file format defined by dlib’s imglab tool. We have written a parser in Python, xml_utils.py, which can be found in the tools directory in the bearid GitHub repository. The parser reads the metadata into a dictionary, keyed by the bear ID. I have bearid cloned at ~/dev/bearid. We can import xml_utils and a few other common libraries: \n \n import sys\nsys.path.append('~/dev/bearid/tools')\nimport xml_utils as x\nfrom collections import defaultdict\nfrom PIL import Image \n \n We can read in the XML file and load the objects from it using the load_objs_from_files function in xml_utils. \n \n objs_d = defaultdict(list)\nx.load_objs_from_files(['faceGold_train_resize.xml'], objs_d, 'faces') \n \n Next we loop through the keys to find those with more 50 images. We will use this set as our list of tags, which we can set using the Custom Vision API, trainer.create_tag. In this case we end up with a set of 21 individual bears. Here's the code: \n \n MIN_TAGS = 50\n\n# get all tags from XML and loop through them to create_tag in project\nlabel_tag = defaultdict()\nfor key, objs in list(objs_d.items()) :\n if (len(objs) < MIN_TAGS):\n continue\n label_tag[key] = trainer.create_tag(project.id, key) \n \n Upload and tag images \n Now we need to upload the dataset to Azure Custom Vision. We will only be uploading the images of the 21 bears where we have at least 50. For each image, we care about the image file and box information. The Custom Vision API allows you to upload images in batches of 64. So let’s set up a constant for the batch size and keep track of the current image_list and image_count: \n \n MAX_IMAGE_BATCH = 64\nimage_list = []\nimage_count = 0 \n \n The next block of code is nearly the same as for the bear face object detector. Again, the primary difference is that we use the bear ID as the key (label). Here's what is does: \n \n Loop through labels (key is the label) \n Loop through all the objs for one key (an obj in this case is an image) \n For each obj, get the image file with all the tags (labels) and all the regions (bounding boxes) \n Upload the batch of images for each label \n Break after uploading 64 images of a label (this will help normalize the distribution of images per bear to 50-64) \n \n \n Here's the code: \n \n MAX_IMAGE_BATCH = 64\n# loop through all the labels and get their corresponding objects\nfor key, objs in list(objs_d.items()) :\n obj_count = 0\n obj_size = len(objs)\n print(key, obj_size)\n # if there are less than 50 images, skip it\n if (obj_size < MIN_TAGS):\n continue\n # loop through objects (images) for each label\n for obj in objs :\n image_count += 1\n obj_count += 1\n file_name = obj.attrib.get('file')\n print(\"Image:\", image_count, file_name)\n img = Image.open(file_name)\n width,height = img.size\n regions = []\n # find all the bounding boxes\n for box in obj.findall('box') :\n bleft = int (box.attrib.get('left'))\n btop = int (box.attrib.get('top'))\n bheight = int (box.attrib.get('height'))\n bwidth = int (box.attrib.get('width'))\n # add bounding box to regions, and translate coordinates\n # from absolute (pixel) to relative (percentage)\n regions.append(Region(tag_id=label_tag[key].id, left=bleft/width,top=btop/height,width=bwidth/width,height=bheight/height))\n # add object to the image list\n with open(file_name, \"rb\") as image_contents:\n image_list.append(ImageFileCreateEntry(name=file_name, contents=image_contents.read(), regions=regions))\n # if this is the last image or if we hit the batch size\n # then upload the images\n if ((obj_count == obj_size) or ((obj_count % MAX_IMAGE_BATCH) == 0)):\n print(\"Upload batch:\", key, obj_count)\n upload_result = trainer.create_images_from_files(project.id, ImageFileCreateBatch(images=image_list))\n if not upload_result.is_batch_successful:\n print(\"Image batch upload failed.\")\n for image in upload_result.images:\n if ((image.status != \"OKDuplicate\") and (image.status != \"OK\")) :\n print(\"Image status: \", image.status)\n exit(-1)\n print(\"Continue...\")\n image_list.clear()\n obj_count = 0\n obj_size -= MAX_IMAGE_BATCH\n # To upload a max of MAX_IMAGE_BATCH, uncomment the next line\n break \n \n You can view your labeled dataset in the web portal: \n \n \n \n You can also use the web portal to edit your labels as needed. \n \n Train the project \n Once your dataset is ready, it is time for training. In the bear face object detector post I described how to use the Python API to start a training iteration. I did this for the General domain. I did some experimentation with other domains using the web portal. For use with the Percept DK, I trained an iteration using the General (compact) domain by changing the domain in the project settings. In the training dialog box, I selected Advanced Training and set the budget for 1 hour. \n \n Once training is complete, you can see the cross-validation performance on the web portal: \n \n \n \n In this case, for a probability threshold of 50% and an overlap threshold of 30%, we are getting 79.4% mean Average Precision with a Precision of 78.2% and a Recall of 67.4. A longer training budget may result in better performance. Kodi wants to get to the good stuff, so this is good enough for now. \n \n Deploying a model \n Now we need to deploy our new face-id-resize model to the Azure Percept DK. Since we trained our model in Azure Custom Vision, deployment is a snap with Azure Percept Studio. In Percept Studio, go to the Vision tab on your device page. Click on Deploy project. In the popup card, you can select the Custom Vision model and iteration you want to deploy. \n \n Check out the Deploy a vision AI model to Azure Percept DK guide for more details. \n \n Identifying a bear \n \n \n After deployment completes, the stream view should show the camera feed with an overlay of our custom model detections. For the `face-id-resize` model, we need some bears. Since Kodi is not in our dataset, and none of the 21 bears in the dataset are in or around my home (they all reside in Alaska or British Columbia), we'll use some images of bears. \n \n Rather than point the Azure Percept Vision at a computer screen and viewing images from our test set, I opted to use the Katmai Conservancy Fat Bear Calendar 2022. I selected the September bear, 128 Grazer (bf_128 in our dataset), who is one of the 21 bears in our data subset (Kodi says Grazer is a ferocious mother bear!). You can see the result from the stream view below, which shows a bounding box around Grazer's face, the predicted label (bf_128) and the confidence score (0.79). \n \n The model found bear faces in the calendar images quite reliably. However, the identification was not always correct. Many of the bears in the calendar are not in the subset we used. Even for the bears in subset, there were some misidentifications. Some errors could be due to changes in the bear's appearance, as our dataset is mainly from photos taken 2014-2017. Some errors and variation in the confidence score are likely due to the angles and glare involved with pointing the Azure Percept Vision at a glossy photo. \n \n \n \n With Azure Custom Vision and the Azure Percept DK we were able to go from setup to identifying individual bears in a matter of hours. \n \n Conclusion \n Azure Percept DK is an easy to set up IoT device capable of vision processing at the edge. Azure Custom Vision makes it simple to create no-code or low-code machine learning vision models which can easily be loaded to the Percept DK using Azure Percept Studio. With this array of tools, vision models can be trained in hours then deployed at the edge in minutes. \n \n Azure Percept is great start for conservation scientists wanting to experiment with noninvasive monitoring. ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"14681","kudosSumWeight":3,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY5OWlEMTFBNTk3MzAyNUE2QUY2?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY4NWk3OURBMzBCRjg0ODE0QzE5?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY4Nmk2N0Q5RDM1NzEzRDBFQzdD?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDQ","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY4N2k2OThEMEFDNzExNTI0Nzgz?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDU","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY4OGkwQTFBQzhCQjYyRDBCQjVD?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDY","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY4OWkzRjJGQTgwNURDOEY3RkFE?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDc","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY5MGk4MTZGNUQxMjM2OTIyMTQw?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDg","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY5MWk0OTlERDJEMjE0Q0MzN0I2?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDk","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY5Mmk2QzNDNUJGMTZEMzg0MTA1?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEw","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMzkwOTEwLTM3MjY5NGk4N0ZDOUM3MkNEM0Q3MzVD?revision=9\"}"}}],"totalCount":10,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:2967567":{"__typename":"Conversation","id":"conversation:2967567","topic":{"__typename":"BlogTopicMessage","uid":2967567},"lastPostingActivityTime":"2021-11-18T10:03:00.634-08:00","solved":false},"User:user:1035738":{"__typename":"User","uid":1035738,"login":"Amiyouss","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0xMDM1NzM4LTI5MzMwNmkwOTYzREJGMzQ4RjU4NkNE"},"id":"user:1035738"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yOTY3NTY3LTMyNzE3NGlENzgwREIzMkQ2MDVCOUUx?revision=8\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yOTY3NTY3LTMyNzE3NGlENzgwREIzMkQ2MDVCOUUx?revision=8","title":"Azure-Percept-Ignite-Recap_teaser-image-2.jpg","associationType":"TEASER","width":740,"height":400,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yOTY3NTY3LTMyMTU5NmkxRTE2Mzc3MDIyRTQ4OEIy?revision=8\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yOTY3NTY3LTMyMTU5NmkxRTE2Mzc3MDIyRTQ4OEIy?revision=8","title":"MS NVIDIA_IgniteGTC Presentation_v3.jpg","associationType":"BODY","width":1280,"height":720,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yOTY3NTY3LTMyNzE1NWkyQTExOEJFQkQxMjExRUNE?revision=8\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yOTY3NTY3LTMyNzE1NWkyQTExOEJFQkQxMjExRUNE?revision=8","title":"Azure-Video-Analyzer.png","associationType":"BODY","width":1464,"height":814,"altText":null},"BlogTopicMessage:message:2967567":{"__typename":"BlogTopicMessage","subject":"AI @ Edge: Azure Percept announcements from Microsoft Ignite you don’t want to miss!","conversation":{"__ref":"Conversation:conversation:2967567"},"id":"message:2967567","revisionNum":8,"uid":2967567,"depth":0,"board":{"__ref":"Blog:board:IoTBlog"},"author":{"__ref":"User:user:1035738"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" In case you missed the Microsoft Ignite announcements related to edge AI, here are six that I highly recommend learning more about. \n \n ","introduction":"","metrics":{"__typename":"MessageMetrics","views":5529},"postTime":"2021-11-16T08:00:00.055-08:00","lastPublishTime":"2021-11-18T10:03:00.634-08:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" We unveiled many exciting innovations and service enhancements across the intelligent edge and cloud at Microsoft Ignite, including the continued expansion of Azure Percept and its easy-to-deploy capabilities. \n Amid all the product news and informative speaker sessions, you might have missed our edge AI developments. It's not too late to watch these Ignite sessions on-demand to learn about Azure Percept, Azure Video Analyzer, and other Microsoft technologies designed to bring AI and related capabilities to the edge. In case you missed our notable announcements related to edge AI, here are six that I highly recommend learning more about. \n \n 1. You can create edge AI applications in minutes with Azure Percept DK \n \n It's never been easier to get started with the Azure Percept development kit. Introduced earlier this year—and now available in more than 16 markets—the Azure Percept development kit makes the process of adding edge AI and computer vision capabilities to solutions easier and accessible for anyone with an idea and a passion to build. \n Check out this Microsoft Ignite technical demonstration and discussion to see how you can get started and the step-by-step process for using the hardware development kit and Azure Percept Studio to create, deploy, and train an AI model. Additionally, Microsoft Percept experts answer questions about how the platform, dev kit, and studio can help you build solutions. \n \n 2. Coming soon: Bringing Azure Percept to Azure Stack HCI \n \n Microsoft announced that the next area of investment for Azure Percept is to bring Azure Percept to Azure Stack HCI powered by NVIDIA T4 Tensor Core GPU. Combining NVIDIA's powerful computing platform with the edge devices and services offered by Azure will help to further accelerate the development and deployment of advanced, increasingly capable AI solutions. \n \n The joint work between Microsoft Azure and NVIDIA to advance the adoption of AI from high-performance computing in the cloud to the intelligent edge soon will offer new possibilities for users. These include delivering GPU-powered engineering simulations via the cloud and employing AI and deep learning to improve shoppers' in-store experiences. \n \n To see how easy it is to automate your operations with Azure Percept, check out this session where we deploy a computer vision application within a matter of minutes. \n \n \n \n 3. DataRobot, Neal Analytics, and other partners are harnessing the power of edge AI \n \n Even as Microsoft Azure and its partners strive to bring AI to the edge, too many enterprises still see a gap between the promise and reality of AI solutions. DataRobot is trying to close that gap with the DataRobot AI Cloud. The company's Nick King and Dan Wright explained during an Ignite session how the DataRobot AI cloud can bring together teams and unify operations across the cloud, to the data center, and to the edge. By running the DataRobot AI Cloud platform on Azure, customers can harness the power of AI at the edge with Azure Percept. Soon, they'll also be able to drive real-time collaboration between data scientists and data managers on Teams. \n Neal Analytics is another partner using AI at the edge for its innovative solution, as the company has collaborated with Microsoft and NVIDIA to build its Stockview solution powered by Azure Percept on Azure Stack HCI. The solution enables retailers to reduce lost sales and improve customer experiences by leveraging vision AI at the edge for inventory monitoring and out-of-stock detection. \n \n 4. You can try Azure Percept on Azure today \n \n In conjunction with the Azure HCI Stack announcement, we're giving developers the chance to try a virtualized Azure Percept appliance integrated with our first-party Spatial Analysis AI service. \n \n This open-source solution will enable you to deploy all the required components to run Azure Percept VMs for Azure HCI Stack with your own Azure subscription without the need for an actual edge device. Additionally, it will allow you to upload your own videos for AI processing on N-series VMs with NVIDIA GPUs in the Azure public cloud. You can request access to try it out today. \n \n 5. Azure Video Analyzer launches new features for intelligent video management \n \n In the short time since its debut, Azure Video Analyzer capabilities have grown significantly to meet your customers' needs. During Microsoft Ignite, we announced the availability of new cloud-native video management solutions and the visualization of insights from intelligent video applications. Additionally, we've added video analytics optimization for Windows devices. Watch this Ask the Experts Ignite session with experts from Microsoft, Intel, and Vision Group Inc. as they explain how to streamline the adoption of computer vision solutions. \n \n \n \n 6. We're also enhancing Azure Video Analyzer for Media files \n \n Computer vision solutions need the power of sophisticated analysis of video in order to achieve their purpose, and Microsoft announced the latest improvements to the Azure Video Analyzer for Media files (AVAM) during Ignite. AVAM provides rich business insights from your video and audio files in a shared timeline and readable format without requiring complicated integrations or machine learning knowledge. \n \n We plan to release additional models and improve the accuracy of detection models to meet our customer feedback. AVAM and Streamland Media's Technology Team also are collaborating to create solutions and drive more innovation in the post-production space. \n \n Deep dive into what's possible with these Microsoft Ignite sessions \n \n As made clear by our announcements and expert sessions during Microsoft Ignite, we continue to expand the solutions made possible by Azure Percept and other edge AI platforms and services. The latest event featured dozens of sessions, including more focused on edge applications, AI, Azure Percept, and edge technology from our partners. We encourage you to explore the on-demand sessions to learn more. \n If you want a deep dive into what's new with edge AI and Azure Percept, below is the full list of sessions and announcements: \n \n Azure Percept overview \n \n Session: The cutting edge of AI: Discover the possibilities with Azure Percept \n Ask the Experts: The cutting edge of AI: Discover the possibilities with Azure Percept (The Blueprint Files) \n \n Azure Percept on Azure Stack HCI \n \n Session: Automate your operations with edge AI \n Session: Discover how DataRobot and Microsoft deliver more connected AI solutions at scale \n Microsoft and NVIDIA partner to accelerate edge AI deployment \n NVIDIA works with Microsoft to bolster GPU-accelerated edge AI and visualization \n Deliver more connected, intelligent AI solutions at scale with Microsoft and DataRobot AI Cloud \n Reduce lost sales and improve customer experiences with Neal Analytics edge AI solution \n \n Azure Video Analyzer \n \n Ask the Experts: Solving real-world problems with computer vision at the edge \n Video Analytics across edge and cloud \n Ignite 2021: Scale up with the latest enhancements of Azure Video Analzyer for Media files (AVAM) \n Article: Build Intelligent Video Solutions with Axis Cameras and Azure Video Analyzer \n ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"7405","kudosSumWeight":3,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yOTY3NTY3LTMyNzE3NGlENzgwREIzMkQ2MDVCOUUx?revision=8\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yOTY3NTY3LTMyMTU5NmkxRTE2Mzc3MDIyRTQ4OEIy?revision=8\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yOTY3NTY3LTMyNzE1NWkyQTExOEJFQkQxMjExRUNE?revision=8\"}"}}],"totalCount":3,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:2812741":{"__typename":"Conversation","id":"conversation:2812741","topic":{"__typename":"BlogTopicMessage","uid":2812741},"lastPostingActivityTime":"2021-10-21T18:59:55.574-07:00","solved":false},"User:user:655711":{"__typename":"User","uid":655711,"login":"chrisjeffreyuk","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS02NTU3MTEtMjkyOTcyaTE0NDc0RUIwQjkyOEM1Rjk"},"id":"user:655711"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxODk3NWlCRTZCRjRCRUYzMEEyNURD?revision=37\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxODk3NWlCRTZCRjRCRUYzMEEyNURD?revision=37","title":"Baby_Groot_Spaghetti_Teaser_Newjpg.jpg","associationType":"TEASER","width":370,"height":200,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTYyM2k2NUY5NjIyQ0UxRkRERkE0?revision=37\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTYyM2k2NUY5NjIyQ0UxRkRERkE0?revision=37","title":"General_Image.jpg","associationType":"BODY","width":2245,"height":3445,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTI4Mmk5M0QxNTc3Nzk5NjQxRDE0?revision=37\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTI4Mmk5M0QxNTc3Nzk5NjQxRDE0?revision=37","title":"Spaghetti_Detection_Test.jpg","associationType":"BODY","width":1354,"height":1063,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTUzNWlFMUIyQjMwRjVBQzgwREEz?revision=37\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTUzNWlFMUIyQjMwRjVBQzgwREEz?revision=37","title":"OctoPrint.jpg","associationType":"BODY","width":964,"height":1120,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU5MWkxRjQ0NUQ5NDZCNEE2OEM5?revision=37\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU5MWkxRjQ0NUQ5NDZCNEE2OEM5?revision=37","title":"PostMan_Image_1.jpg","associationType":"BODY","width":1420,"height":467,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU5MmlDRTg0QkUzQzRBNEQ1MjY4?revision=37\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU5MmlDRTg0QkUzQzRBNEQ1MjY4?revision=37","title":"PostMan_Image_2.jpg","associationType":"BODY","width":1413,"height":262,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTMwNGk4RjgxRDg2MjFDQkU2NUMy?revision=37\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTMwNGk4RjgxRDg2MjFDQkU2NUMy?revision=37","title":"PostMan_Image_3.jpg","associationType":"BODY","width":650,"height":162,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTUzOGk3MERBM0JENzA4NzFCQUU0?revision=37\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTUzOGk3MERBM0JENzA4NzFCQUU0?revision=37","title":"Custom_Endpoint.jpg","associationType":"BODY","width":590,"height":538,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTUzOWk1NjUwQ0YyOTE0MUZGNkI0?revision=37\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTUzOWk1NjUwQ0YyOTE0MUZGNkI0?revision=37","title":"Message_Routing.jpg","associationType":"BODY","width":930,"height":1077,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU0NWlFMTlDRTg3MzhGMEQ2QUU0?revision=37\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU0NWlFMTlDRTg3MzhGMEQ2QUU0?revision=37","title":"Logic_App.jpg","associationType":"BODY","width":916,"height":1210,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU1NGk3NEUyN0QzMTRBQzBBQTAx?revision=37\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU1NGk3NEUyN0QzMTRBQzBBQTAx?revision=37","title":"Spaghetti_Detection_059.jpg","associationType":"BODY","width":1319,"height":1053,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU1MmlBQTI4QkFERDJEQTU5QjlB?revision=37\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU1MmlBQTI4QkFERDJEQTU5QjlB?revision=37","title":"Email_059.jpg","associationType":"BODY","width":825,"height":418,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU1M2k2M0Q2QzA3RDM5NkVFQURF?revision=37\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU1M2k2M0Q2QzA3RDM5NkVFQURF?revision=37","title":"SMS_059.jpg","associationType":"BODY","width":610,"height":452,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTUzMmlFQ0U4Q0NEQUM5ODM3QUUy?revision=37\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTUzMmlFQ0U4Q0NEQUM5ODM3QUUy?revision=37","title":"Thingiverse.jpg","associationType":"BODY","width":959,"height":705,"altText":null},"BlogTopicMessage:message:2812741":{"__typename":"BlogTopicMessage","subject":"Monitoring 3D Print Quality using Azure Percept DK","conversation":{"__ref":"Conversation:conversation:2812741"},"id":"message:2812741","revisionNum":37,"uid":2812741,"depth":0,"board":{"__ref":"Blog:board:IoTBlog"},"author":{"__ref":"User:user:655711"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" Using the the Azure Percept DK to monitor 3D printing for quality assurance and control. \n \n \n ","introduction":"","metrics":{"__typename":"MessageMetrics","views":4585},"postTime":"2021-10-20T08:00:00.035-07:00","lastPublishTime":"2021-10-21T07:54:31.018-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" A few weeks back I was running a demo on Azure Percept DK with one of Microsoft’s Global Partners and the Dev Kit I had setup on a tripod fell off! So, I decided to do something about it. I setup my 3D Printer and after some time using Autodesk Fusion 360 and Ultimaker Cura I managed to print a custom mount that fits a standard tripod fitting and the Azure Percept DK 80/20 rail. \n \n However, the process started me thinking, could I use the Azure Percept DK to monitor the 3D Printer for fault detection? Could I create a Machine Learning model that would understand what a fault was? and had this been created already? 3D Printing can be notoriously tricky, and if unmanaged can produce wasted material and prints. So, creating a solution to monitor and react unattended would be beneficial and lets me honest - Fun! \n \n The idea of using IoT, AI/ML is common in manufacturing, but I wanted to create something very custom and if possible, using no code. I'm not a data scientist or AI/ML expert so my goal was to, where possible, use the Azure Services that were available to me to create my 3D printing fault detector. After some thinking I decided to go with the following technologies to build the solution: \n \n \n Azure Percept DK \n Azure Percept Studio \n Custom Vision \n Azure IoT Hub \n Message Routing, Custom Endpoint \n Azure Service Bus / Queues \n Azure Logic Apps + API Connections \n REST API \n Email integration / Twilio SMS ability \n \n \n You may ask \"Why not use Event Grid?\". For this solution I wanted a FIFO (First In / First Out) model to take actions on how the printer would respond to commands, but we will get to that a little later. However, if you are interested in knowing how to use Event Grid do this as well? Look at the doc from Microsoft: Tutorial - Use IoT Hub events to trigger Azure Logic Apps - Azure Event Grid | Microsoft Docs. For a comparison on Azure Message Handling solutions take a look at Compare Azure messaging services - Azure Event Grid | Microsoft Docs \n \n Steps, Code, and Examples \n To create my solution I broke the process down into steps: \n \n Stage 1 - Setup Azure Percept DK \n Stage 2 - Create the Custom Vison Model and Test \n Stage 3 - Ascertain how to control the printer \n Stage 4 - Filter and Route the telemetry \n Stage 5 - Build my Actions and Responses \n \n I deliberately only used the consoles, no ARM, TF or AZ CLI. So, throughout the article I have added links the Microsoft docs on how to perform each action which I will call out at the relevant points. However, I've complied all the commands you would need to recreate the resources for the solution into a Public GitHub Repo so that this can be replicated by anyone. The repo can be found GitHub Repo and all are welcome to comment or contribute. \n \n Stage 1 - Setup Azure Percept DK \n \n Configure Azure Percept DK \n Configuring the OOBE for Azure Percept DK is very straightforward. I’m not going to cover it in this post but you can find a great example here: Set up the Azure Percept DK device | Microsoft Docs along with a full video walkthrough. \n I wanted to use an existing IoT Hub and Resource Group which I had already specified, but this is fully supported in the OOBE. \n \n After running through the OOBE I now had my Azure Percept DK connected to my home network and registered in Azure Percept Studio and Azure IoT Hub. Azure Percept Studio is configured as part of the Azure Percept DK setup. \n \n I configured the Dev Kit to sit as low as possible in front of the printer. This was so that the \"Azureye\" camera module had a clear view of the printing nozzle and bed. \n \n \n Now for the model… \n \n Stage 2 - Create the Custom Vison Model and Test \n \n Fault Detection Model \n I knew I wanted to create the model in Custom Vision and I had a good idea of what domain and settings I needed, but had this been done before? The answer was yes. \n An Overview of 3D Printing Concepts \n In 3D Printing the most common issue is something called “Spaghetti”. Essentially a 3D printer melts plastic filament into small layers to build the object you are looking to print, but if several settings are not correct (nozzle temp, bed temp, z-axis offset) the filament does not make a good bond and starts to come out looking like, you guessed it – “Spaghetti”. \n \n After some research I found that there is a great Open Source project called the Spaghetti Detective with the code hosted on GitHub. \n The project itself can be run on an NVIDIA Jetson Nano (which I had also tried), but no support was available yet for Azure Percept. So I started to create a model. \n \n Model Creation \n I started by creating a new Custom Vision Project. If you have not used Custom Vision before you will need to signup via the portal (full instructions can be found here). However, as I already had an account I created my project via the link within Azure Percept Studio. \n \n Because the model needed to look for “Spaghetti” within the image, I knew I needed to have a Project Type of “Object Detection”, and because I needed a split between Accuracy and Low Latency, “Balanced” was the correct Optimization option. \n The reason behind using “balanced” was although I wanted to detect errors quickly as to not waste any filament, I also wanted to make sure there was an element of accuracy, as I did not want to have the printer to stop or pause unnecessarily. \n Moving to the next stage I wanted to use generic images to tag, rather than using the device stream to capture them, so I just selected my IoT Hub and Device and moved on to Tag Images and Model Training. This allowed me to open the Custom Vision Portal. \n \n Now I was able to upload my images (you will need a minimum of 15 images per tag for object detection). I did a scan on the web and found around 20 images I could use to train the model, then spent some time tagging regions for each as “Spaghetti”. I also changed the model Domain to General (Compact) so that I could export the model at a later date. (You can find this in the GitHub Repo). \n The specifics of this are out of scope for this post, but you can find a full walkthrough here. \n Once my model was trained to an acceptable level for Precision, Recall and mAP, I returned to the Azure Percept Studio and deployed the model to the Dev Kit. \n \n Testing the Model \n Before moving on I wanted to ensure the model was working and could successfully detect “Spaghetti” on the printer. I selected the “View Your Device Stream” option within Azure Percept Studio and also the “View Live Telemetry”. This would ensure that detection was working, and I could also get an accurate representation of the payload schema. \n I used an old print that had produced “Spaghetti” on a previous job, and success the model worked! \n \n \n Example Payload \n {\n \"body\": {\n \"NEURAL_NETWORK\": [\n {\n \"bbox\": [\n 0.521,\n 0.375,\n 0.651,\n 0.492\n ],\n \"label\": \"Spaghetti\",\n \"confidence\": \"0.552172\",\n \"timestamp\": \"1633438718613618265\"\n }\n ]\n }\n} \n \n Stage 3 - Ascertain how to control the printer \n \n OctoPrint Overview and Connectivity \n The printer I use is the Ender-3 V2 3D Printer (creality.com), which by default does not have any connected services. It essentially uses either a USB connection or MicroSD card to upload the printer files. However, an amazing Opensource solution is available from OctoPrint.org that runs on Raspberry Pi and is built into the Octopi image. This allows you to enable full remote control and monitoring to printer via your network, but the main reason for using this is that it enables API Management. Full instructions on how to set this up can be found here. \n \n \n \n \n In order to test my solution, I needed to enable port forwarding on my firewall and create an API key within OctoPrint, all of which can be found here: REST API — OctoPrint master documentation \n \n For my example I am just using port 80 (HTTP), however in a production situation this would need to be secured and possibly NAT implemented. \n \n Postman Dry Run \n In order to test the REST API I needed to send a few commands direct to the printer using Postman. The first was to check internally within my LAN that I could connect to the printer and retrieve data using REST, the second was then to ensure the external IP and port was accessible for the same. \n \n \n \n Once I knew this was responding I could send a command to pause the printer in the same manor: \n \n \n Because I was using a POST rather than a GET this time, I needed to send the commands within the body: \n \n \n It was during these checks I thought, what if the printer has already paused? I ran some more checks by pausing a job and then sending the pause command again. This gave a new response of \"409 CONFLICT\". I decided I could use this within my logic app as a condition. \n \n Recap on The Services \n Going back to the beginning I could now tick off some of the services I mentioned: \n \n \n Azure Percept DK \n Azure Percept Studio \n Custom Vision \n Azure IoT Hub \n Message Routing / Custom Endpoint \n Azure Service Bus / Queues \n Azure Logic Apps + API Connections \n REST API \n Email integration / Twilio SMS ability \n \n Now it was time to wrap this all up and make everything work. \n \n Stage 4 - Filter and Route the telemetry \n \n Azure Service Bus \n As I mentioned earlier, I could have gone with Azure Event Grid to make things a little simpler. However I really wanted to control the flow of the messages coming into the Logic App, to ensure my API commands followed a specific order. \n \n Use the Azure portal to create a Service Bus queue - Azure Service Bus | Microsoft Docs \n \n Once I had my Azure Service Bus and Queue created I needed to configure my device telemetry coming from the Azure Percept DK to be sent to it. For this I needed to configure Message Routing in Azure IoT Hub. I chose to create this using the portal as I wanted to visually check some of the settings. \n \n \n Once I had the Custom Endpoint created I could setup Message Routing. However, I did not want to send all telemetry to the queue, only those that matched the \"Spaghetti\" label, and only with a confidence of > 30%. For this I needed to use an example message body which I took from the Telemetry I received during the model testing. I then used the query language to create a routing query that I could use to test against. \n \n \n \n As I only had the one device in my IoT Hub I did not add any filters based on the Device Twin, but for a 3D Printing cluster this would be a great option, which then could be passed into the message details within the Logic App. \n \n Stage 5 - Build my Actions and Responses \n \n Logic App \n Lastly was the Logic App. I know that what I wanted to create was an alert for any message that came into the queue. Remember we have already filtered the messages by this stage, so we know the messages we now receive we need to take action on. However, I also want to ensure the process handling was clean. \n \n I also had to consider how to deal with not only the message body, but the content-data within the message body (The actual telemetry) was Base64 encrypted. With some research time, trial and error and discussions with some awesome people in my team, I finally came up with the workflow I needed. Plus I would also need some API connection for Service Bus, Outlook and Twilio (For SMS messaging). \n \n https://docs.microsoft.com/azure/logic-apps/quickstart-create-first-logic-app-workflow \n \n \n \n \n The steps for the Logic App workflow are as follows: \n \n \n (Operation / API Connection - Service Bus) When a message is received into the queue (TESTQUEUE)\n \n The operation is set to check the queue every 5 seconds \n \n \n (Action) Parse the Service Bus Message as JSON\n \n This takes the Service Bus Message Payload and generates a schema to use. \n \n \n (Action) Decode the Content-Data section of the message from Base64 to String.\n \n This takes the following Expression json(base64ToString(triggerBody()?['ContentData'])) to convert the Telemetry and uses an example payload again. \n \n \n (Action) Get the current Printer Pause Status\n \n Adds a True/False Condition. \n Sends a GET API call to the printers external IP address to see if the status is “409 CONFLICT”\n \n If this is TRUE, the printer is already paused and the Logic App is terminated. \n If False, the next Action is triggered. \n \n \n \n \n (Action) Issue HTTP Pause Command\n \n Sends a POST API call to the external IP address of the printer with both “action”: “pause” and “command”: “pause” included in the body. \n \n \n (Parallel Actions)\n \n API Connection Outlook) Send Detection Email\n \n Sends a High Priority email with the Subject “Azure Percept DK – 3D Printing Alert” \n \n \n (API Connection Twilio) Send Detection SMS\n \n Sends an SMS via Twilio. This is easy to setup and can be done using a trial account. All details are here \n \n \n \n \n \n All the schema and payloads I used are included in the GitHub Repo, along with the actual Logic App in JSON form. \n \n Testing the End-to-End Process \n Now everything was in place it was time to test all the services End-to-End. In order to really test the model and the alerting I decided to start printing an object and then deliberately change the settings to cause a fault. I also decided to use a clear printing filament to make things a little harder to detect. \n \n \n \n Success! The model detected the fault and sent the telemetry to the queue as it matched both the label and confidence. The Logic App trigger the actions and checked to see if the printer had already been paused. In this instance it had not so the Logic App sent the pause command via the API and then confirmed this with an email and SMS message. \n \n \n \n \n \n \n Wrap Up \n So that's it, a functioning 3D printing fault detection system running on Azure using Azure Percept DK and Custom Vision. Reverting back to my original concept of creating the solution only using services and no code, I believe I managed to get very close. I did need to create some query code and a few lines within the Logic App, but generally that was it. Although I have provided the AZ CLI code to reproduce the solution, I purposefully only used the Azure and Custom Vision Portal to build out. \n \n What do you think? How would you approach this? Would you look to use Azure Functions? I'd love to get some feedback on this, so please take a look at the GitHub Repo and see if you can replicate the solution. I will also be updating the model with a new iteration to improve the accuracy in the next few weeks, so keep an eye out on the GitHub repo for the updates. \n \n Learn More about Azure Percept \n Azure Percept - Product Details \n Pre-Built AI Models \n Azure Percept - YouTube \n \n Purchase Azure Percept \n Build Your Azure Percept \n \n Azure Percept Tripod Mount \n For anyone who is interested you can find the model files I created for this on Thingiverse to print yourself. - Enjoy! \n \n ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"15643","kudosSumWeight":3,"repliesCount":5,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxODk3NWlCRTZCRjRCRUYzMEEyNURD?revision=37\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTYyM2k2NUY5NjIyQ0UxRkRERkE0?revision=37\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTI4Mmk5M0QxNTc3Nzk5NjQxRDE0?revision=37\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDQ","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTUzNWlFMUIyQjMwRjVBQzgwREEz?revision=37\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDU","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU5MWkxRjQ0NUQ5NDZCNEE2OEM5?revision=37\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDY","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU5MmlDRTg0QkUzQzRBNEQ1MjY4?revision=37\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDc","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTMwNGk4RjgxRDg2MjFDQkU2NUMy?revision=37\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDg","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTUzOGk3MERBM0JENzA4NzFCQUU0?revision=37\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDk","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTUzOWk1NjUwQ0YyOTE0MUZGNkI0?revision=37\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEw","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU0NWlFMTlDRTg3MzhGMEQ2QUU0?revision=37\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEx","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU1NGk3NEUyN0QzMTRBQzBBQTAx?revision=37\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEy","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU1MmlBQTI4QkFERDJEQTU5QjlB?revision=37\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEz","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTU1M2k2M0Q2QzA3RDM5NkVFQURF?revision=37\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE0","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODEyNzQxLTMxNTUzMmlFQ0U4Q0NEQUM5ODM3QUUy?revision=37\"}"}}],"totalCount":14,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:2779509":{"__typename":"Conversation","id":"conversation:2779509","topic":{"__typename":"BlogTopicMessage","uid":2779509},"lastPostingActivityTime":"2022-10-07T10:43:31.202-07:00","solved":false},"User:user:1139606":{"__typename":"User","uid":1139606,"login":"nealmcfee","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0xMTM5NjA2LTMwODU4MGk3NEM1OUFDQjRCRTEyMkE2"},"id":"user:1139606"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxMjQ5MWk3NEJDMjc2QkRDRjRBMjJD?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxMjQ5MWk3NEJDMjc2QkRDRjRBMjJD?revision=12","title":"azureperceptdk_drone_t.png","associationType":"TEASER","width":370,"height":239,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ2NWlBMDYzNkI3OTk2Rjg3NjQ4?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ2NWlBMDYzNkI3OTk2Rjg3NjQ4?revision=12","title":"onlandignpad.png","associationType":"BODY","width":488,"height":468,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ2NmlGRkVCMjVFOTUwMzdCQUFF?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ2NmlGRkVCMjVFOTUwMzdCQUFF?revision=12","title":"mpgrid.png","associationType":"BODY","width":774,"height":596,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ2N2k3MDQ4NkQ3Q0M4NTU5NDg4?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ2N2k3MDQ4NkQ3Q0M4NTU5NDg4?revision=12","title":"perceptstudio1.png","associationType":"BODY","width":775,"height":559,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ2OGkyNTZCODVDMjI5ODM5RjE2?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ2OGkyNTZCODVDMjI5ODM5RjE2?revision=12","title":"perceptstudio2.png","associationType":"BODY","width":772,"height":554,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ2OWk0RDZCQUZBMTYwN0FFRTcz?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ2OWk0RDZCQUZBMTYwN0FFRTcz?revision=12","title":"perceptstudio3.png","associationType":"BODY","width":773,"height":547,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3MGlFOUJDNDY0MzRBODNENjRF?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3MGlFOUJDNDY0MzRBODNENjRF?revision=12","title":"perceptstudio4.png","associationType":"BODY","width":780,"height":451,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3MWk3MjQyQzUxM0QzRTM5MTMz?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3MWk3MjQyQzUxM0QzRTM5MTMz?revision=12","title":"perceptstudio5.png","associationType":"BODY","width":778,"height":693,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3Mmk2MzI4MzA1OUE2RDU0NTk5?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3Mmk2MzI4MzA1OUE2RDU0NTk5?revision=12","title":"perceptstudio6.png","associationType":"BODY","width":781,"height":380,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3M2kzNjdEMDNBRTMzRTMxNkFD?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3M2kzNjdEMDNBRTMzRTMxNkFD?revision=12","title":"perceptstudio7.png","associationType":"BODY","width":780,"height":495,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3NGlFNzc5REY3Q0JEMTM5NTBB?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3NGlFNzc5REY3Q0JEMTM5NTBB?revision=12","title":"perceptstudio8.png","associationType":"BODY","width":771,"height":367,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3NWk3QTYwNDY5RUJFRjczQzc4?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3NWk3QTYwNDY5RUJFRjczQzc4?revision=12","title":"perceptstudio9.png","associationType":"BODY","width":770,"height":364,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3Nmk5NTA5MDZCRjQxQ0E5RTBG?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3Nmk5NTA5MDZCRjQxQ0E5RTBG?revision=12","title":"perceptstudio10.png","associationType":"BODY","width":766,"height":365,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3N2lGOTkyN0VDRDRGNkM2M0Uy?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3N2lGOTkyN0VDRDRGNkM2M0Uy?revision=12","title":"perceptstudio11.png","associationType":"BODY","width":780,"height":702,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3OGkzRURCMDlBRDdGMjJCNEFB?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3OGkzRURCMDlBRDdGMjJCNEFB?revision=12","title":"perceptstudio12.png","associationType":"BODY","width":769,"height":680,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3OWkzQzUzNTMwOUY1MzMzMDFC?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3OWkzQzUzNTMwOUY1MzMzMDFC?revision=12","title":"perceptstudio13.png","associationType":"BODY","width":780,"height":341,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4MWk4MjhDMzc4QzI3NzAxOEND?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4MWk4MjhDMzc4QzI3NzAxOEND?revision=12","title":"perceptstudio14.png","associationType":"BODY","width":771,"height":485,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4MmkwNzk2QTRDODZDOUQ3MjFC?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4MmkwNzk2QTRDODZDOUQ3MjFC?revision=12","title":"perceptstudio15.png","associationType":"BODY","width":779,"height":811,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4M2kzOTBCOERFQkIwNDFDQjU0?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4M2kzOTBCOERFQkIwNDFDQjU0?revision=12","title":"perceptstudio16.png","associationType":"BODY","width":533,"height":111,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4NGk0NEMxRTUwMEQyOEUxMUIz?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4NGk0NEMxRTUwMEQyOEUxMUIz?revision=12","title":"perceptstudio17.png","associationType":"BODY","width":759,"height":317,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4NWk2NjQ0RDFCQTFCMDUxOEIw?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4NWk2NjQ0RDFCQTFCMDUxOEIw?revision=12","title":"perceptstudio18.png","associationType":"BODY","width":547,"height":131,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4NmlGQ0Q4MzY0RDQyOUU1MTgy?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4NmlGQ0Q4MzY0RDQyOUU1MTgy?revision=12","title":"perceptstudio19.png","associationType":"BODY","width":684,"height":568,"altText":null},"BlogTopicMessage:message:2779509":{"__typename":"BlogTopicMessage","subject":"Rapidly equip a drone with AI using the Azure Percept DK","conversation":{"__ref":"Conversation:conversation:2779509"},"id":"message:2779509","revisionNum":12,"uid":2779509,"depth":0,"board":{"__ref":"Blog:board:IoTBlog"},"author":{"__ref":"User:user:1139606"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" Find out how to add AI to aerial use cases using the Azure Percept DK and a drone. ","introduction":"","metrics":{"__typename":"MessageMetrics","views":7097},"postTime":"2021-10-05T08:00:00.335-07:00","lastPublishTime":"2021-10-05T08:00:00.335-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Find out how to add AI to aerial use cases using the Azure Percept DK and a drone \n \n As a commercial FAA Part 107 drone pilot I look for various ways to use drones to perform tasks that are dangerous, repetitive, or otherwise not optimal for humans to perform. One of these dangerous tasks is inspecting rooftops for damage or deficiencies. During regular routine inspections the task can be dangerous, but after damage from a storm or other event where the structure of the roof is in question then a drone is a great fit to get eyes on the rooftop. \n \n I frequently fly drones using an autonomous flight path and I was interested in adding artificial intelligence to the drone to identify damage in real-time. The Azure Percept DK is purpose built for rapid prototyping and I found that by using the Azure Percept DK and an Azure Custom Vision model I was able to use artificial intelligence to recognize damage on a roof in under a week. Using the Azure Percept DK was by far the most rapid prototyping experience and quite frankly, the simplest path from concept to execution. Learn more about Azure Percept here. \n \n There are commercially available Artificial Intelligence systems that are used with drones, but the focus has been on improving flight autonomy. Unmanned Aerial Systems, typically known as UAS or “drone” are the go-to platform for gathering environment data. This data can be video, photos, or other environment properties via a sensor array. As UAS use cases expand, the need for intelligent systems to assist UAS operators continues to grow. I’ve created a walkthrough that you can use to get started with the Azure Percept DK and Azure Custom Vision to recognize objects. I’ll also demonstrate the Azure Percept DK mounted to a drone performing a real inspection of a roof using the Azure Custom Vision model I created using this walkthrough. \n \n Introducing the Azure Percept DK and AI at the Edge \n \n The Azure Percept DK is a development kit that can rapidly accelerate prototyping of AI at the Edge solutions. AI at the Edge is a concept where all processing of gathered data happens on a device. There is not a need for an uplink to another location to process the gathered data. Typically, the data processing happens in real time on the device. \n \n How using an Azure Percept DK can speed up the adoption of AI at the Edge in a UAS use case \n \n What I’ve done is mounted an Azure Percept DK to a custom built UAS platform. You will see that the Azure Percept DK is modular and fits on a small footprint. The UAS is a medium sized 500mm platform very similar to a HolyBro x500. \n \n \n \n Typical UAS operation \n \n USE CASE: Residential Roof Inspection \n \n There are two typical ways a UAS will fly over a target area such as a residential roof. \n \n Using a Ground Control Station that runs software such as QGroundControl or ArduPilot Mission Planner a flight path is created then uploaded to the UAS flight computer. This flight path is then flown by the UAS autonomously. Additional vendors such as Pix4D have published their own versions of Ground Control Station software for multiple brands and configuration of UAS. Other companies such as Auterion have built flight control computers and specialized Ground Control Station software for industry verticals. \n Using a radio transmitter, the UAS operator controls the flight path over the target area themselves. \n \n \n \n Using either of the operation methods above a flight for inspecting a residential roof the UAS operator will make several passes over the target area to look for defects or damage in the surface or structure of the roof. Typically, the operator will take photos or a video of the roof as the UAS passes overhead. The visual data would then be processed later and an inspection report would be delivered to the customer highlighting what the inspection found. \n The time spent reviewing the visual data to create an inspection report can take a long time to complete. Additionally, the expertise to spot damage and defects can take a long time to acquire. \n \n Now imagine if you can collect visual data and have your UAS identify and catalog damage and defects on a residential roof as the UAS passes over the roof. \n \n Using an Azure Percept DK mounted on your UAS you can bring AI at the Edge to your inspection project to spot and highlight damage and defects without specialized AI skills. \n \n Using Azure Percept Studio, UAS operators can explore the library of pre-built AI models or build custom models themselves without coding. \n \n But How Easy is it? \n \n Let’s walk through the steps to create a custom vision model to identify defects on a residential roof. You will see that there is no need for specialized AI skills, just the knowledge of how to tag photos with attributes. \n \n \n Prerequisites Purchase an Azure Percept DK Set up the Azure Percept DK device Of course, you must start with purchasing an Azure Percept DK. You will also need an Azure subscription and using the Azure Percept DK setup experience you connected to a wi-fi network, created an Azure IoT Hub, and connected the Azure Percept DK to the IoT Hub. \n Azure Percept Studio Overview After completing the prerequisites and you have opened the Azure Portal you can then open the Azure Percept Studio. Click the link above to learn more about the Azure Percept Studio and how to access it from the Azure Portal and how to get started using it. \n Custom vision prototype Create a no-code vision solution in Azure Percept Studio Next you can follow the tutorial to create a no-code vision solution in Azure Percept Studio. I will continue to highlight how to complete a residential roof inspection project. For the Residential Roof Inspection project we are performing object detection, we are looking for defects and training the AI model to highlight these defects. The optimization setting is best set for balanced for this project, more information can be found if you hover over the information pop-up, or research more in the tutorial. ential Roof Inspection project \n Image Capture At this point we will not capture pictures via Automatic image capture or via the device stream. Make sure you select the IoT Hub you created in the Prerequisites step. Also select the Device you setup in the Prerequisites step and will work with for this Custom Vision project. We can move to the next screen by clicking the Next: Tag images and model training button. \n \n \n \n Tag images and model training Custom Vision Overview Custom Vision Projects On this screen we will Open the project in Custom Vision in a new browser window. TIP: Leave the Azure Percept Studio page open, we will return to it soon The Custom Vision service uses a machine learning algorithm to analyze images. You submit groups of images that feature and lack the characteristics in question. You label the images yourself at the time of submission. Then, the algorithm trains to this data and calculates its own accuracy by testing itself on those same images. In our example we will add images to the Custom Vision project by uploading images we gathered using the UAS. We will then label the uploaded images by creating a box around characteristics such as “lifting”, “scrape” and “discoloration”. After we have labeled the images we will train the Custom Vision algorithm to recognize the characteristics in images based on the tags. In this example I selected Advanced Training, more information on the choices and the difference between them can be found via the information pop-ups or via the Custom Vision Overview article. For most Custom Vision Projects the Quick Training is sufficient for getting started. \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Evaluate the Detector Evaluate the detector After training has completed, the model's performance is calculated and displayed. The Custom Vision service uses the images that you submitted for training to calculate precision, recall, and mean average precision. Precision and recall are two different measurements of the effectiveness of a detector: • Precision indicates the fraction of identified classifications that were correct. For example, if the model identified 100 images as dogs, and 99 of them were actually of dogs, then the precision would be 99%. • Recall indicates the fraction of actual classifications that were correctly identified. For example, if there were actually 100 images of apples, and the model identified 80 as apples, the recall would be 80%. • Mean average precision is the average value of the average precision (AP). AP is the area under the precision/recall curve (precision plotted against recall for each prediction made). \n \n \n Evaluate and Deploy in Azure Percept Studio Return to Azure Percept Studio and click the Evaluate and deploy link. This screen shows a composite view of all the tasks you have completed up to this point. You have connected your Azure Percept DK device and you should see the device connected now. You have uploaded images and tagged them You have trained an algorithm and received results on the model’s performance\n \n What is left to do? \n Deploy the Custom Vision model to your Azure Percept DK device. Make sure you select the IoT Hub you created in the Prerequisite step. Select the Azure Percept DK device you are using Verify and select the Model Iteration you wish to deploy onto the Azure Percept DK device Click the Deploy model button Verify the Device deployment is successful by watching for the Azure Portal notification stating that the deployment is successful \n \n \n \n \n \n \n View the device stream to see real time identification of the characteristics you tagged via inference Access the device stream via the Vision section of Azure Percept Studio Click on the link View Stream in the View your device stream section Watch for the popup in the Azure Portal notification area that says your stream is ready Click the View stream link to open the Webstream Video webpage \n \n \n \n \n \n \n \n \n Here is the flight plan I created using ArduPilot Mission Planner\n \n \n \n \n \n Conclusion: Using Azure Percept DK along with your UAS the time to prototype the use of AI is reduced. \n \n What I just demonstrated is the capability to identify three characteristics of roof damage or deficiencies. This identification was done in real-time using Artificial Intelligence without coding, a team of Data Scientists, or a purpose-built companion computer. The great thing it you can improve the identification of characteristics in data as time goes on by tagging additional images and re-training the algorithm and re-deploying the model to the Azure Percept DK. \n \n Using Azure Percept DK to rapidly prototype UAS use cases that can take advantage of Artificial Intelligence will put you at an advantage when incorporating new capabilities into your workflow. \n \n Think about this rapid prototype and how easy it is to incorporate Artificial Intelligence into your systems and workflow. \n \n UAS use cases where Artificial Intelligence could be used \n \n Asset Inspection Autonomous mapping Package delivery Monitoring and Detection Pedestrian and vehicle counting \n \n You now can get started with Azure Percept DK: \n \n Purchase an Azure Percept DK Learn more about Azure Percept DK sample AI models Learn more about Azure Cognitive Services – Custom Vision Dive deeper with Industry Use Cases and Community Projects ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"12043","kudosSumWeight":3,"repliesCount":2,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxMjQ5MWk3NEJDMjc2QkRDRjRBMjJD?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ2NWlBMDYzNkI3OTk2Rjg3NjQ4?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ2NmlGRkVCMjVFOTUwMzdCQUFF?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDQ","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ2N2k3MDQ4NkQ3Q0M4NTU5NDg4?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDU","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ2OGkyNTZCODVDMjI5ODM5RjE2?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDY","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ2OWk0RDZCQUZBMTYwN0FFRTcz?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDc","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3MGlFOUJDNDY0MzRBODNENjRF?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDg","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3MWk3MjQyQzUxM0QzRTM5MTMz?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDk","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3Mmk2MzI4MzA1OUE2RDU0NTk5?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEw","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3M2kzNjdEMDNBRTMzRTMxNkFD?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEx","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3NGlFNzc5REY3Q0JEMTM5NTBB?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEy","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3NWk3QTYwNDY5RUJFRjczQzc4?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEz","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3Nmk5NTA5MDZCRjQxQ0E5RTBG?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE0","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3N2lGOTkyN0VDRDRGNkM2M0Uy?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE1","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3OGkzRURCMDlBRDdGMjJCNEFB?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE2","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ3OWkzQzUzNTMwOUY1MzMzMDFC?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE3","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4MWk4MjhDMzc4QzI3NzAxOEND?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE4","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4MmkwNzk2QTRDODZDOUQ3MjFC?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE5","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4M2kzOTBCOERFQkIwNDFDQjU0?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDIw","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4NGk0NEMxRTUwMEQyOEUxMUIz?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDIx","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4NWk2NjQ0RDFCQTFCMDUxOEIw?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDIy","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yNzc5NTA5LTMxNDQ4NmlGQ0Q4MzY0RDQyOUU1MTgy?revision=12\"}"}}],"totalCount":22,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:3277356":{"__typename":"Conversation","id":"conversation:3277356","topic":{"__typename":"BlogTopicMessage","uid":3277356},"lastPostingActivityTime":"2023-04-11T19:30:41.828-07:00","solved":false},"User:user:1353590":{"__typename":"User","uid":1353590,"login":"ArthurMagnus","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0xMzUzNTkwLTM2MTM2OWlBNEIzMzMxMTM1RjgxOUE0"},"id":"user:1353590"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTY4NWk2RDAyMUIxNDlCNTg1QUNG?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTY4NWk2RDAyMUIxNDlCNTg1QUNG?revision=16","title":"sidekix-media-VaGdhK-kI1c-unsplash.jpg","associationType":"TEASER","width":6000,"height":4000,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTY4OWkzQzA4MkJGRDE3MDVBQUJF?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTY4OWkzQzA4MkJGRDE3MDVBQUJF?revision=16","title":"ArthurMagnus_0-1649225695372.jpeg","associationType":"BODY","width":1462,"height":973,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTcwNGk3NzVBQUI5RDI0NzVFNkQ4?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTcwNGk3NzVBQUI5RDI0NzVFNkQ4?revision=16","title":"Reference Architecture.png","associationType":"BODY","width":1280,"height":720,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTcwNWkxMUVGMzlDNUEwOTNEMUQ1?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTcwNWkxMUVGMzlDNUEwOTNEMUQ1?revision=16","title":"Implementation.png","associationType":"BODY","width":1280,"height":720,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTY5Mmk5NUY2NUVGMzFCRTQ3ODI4?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTY5Mmk5NUY2NUVGMzFCRTQ3ODI4?revision=16","title":"ArthurMagnus_4-1649225695456.png","associationType":"BODY","width":1694,"height":603,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTcwNmkxODBEOEYwQzhCN0MwQ0Mw?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTcwNmkxODBEOEYwQzhCN0MwQ0Mw?revision=16","title":"Web Stream Screenshot.PNG","associationType":"BODY","width":1021,"height":773,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTY5M2k2MjJGQzBERDQwOUFCODc5?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTY5M2k2MjJGQzBERDQwOUFCODc5?revision=16","title":"ArthurMagnus_6-1649225695526.png","associationType":"BODY","width":1139,"height":642,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTcwN2lGNEQyRTExRDlFQjMzODVF?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTcwN2lGNEQyRTExRDlFQjMzODVF?revision=16","title":"NodeJS Webapp.png","associationType":"BODY","width":797,"height":892,"altText":null},"BlogTopicMessage:message:3277356":{"__typename":"BlogTopicMessage","subject":"Creating the next generation of smart refrigerators using Azure Percept","conversation":{"__ref":"Conversation:conversation:3277356"},"id":"message:3277356","revisionNum":16,"uid":3277356,"depth":0,"board":{"__ref":"Blog:board:IoTBlog"},"author":{"__ref":"User:user:1353590"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" \n \n Learn how we created the next generation of smart refrigerators using the Azure Percept DK. ","introduction":"","metrics":{"__typename":"MessageMetrics","views":6379},"postTime":"2022-04-18T08:00:00.046-07:00","lastPublishTime":"2022-04-18T08:00:00.046-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" \n \n Smart refrigerators have been around for a while now. We've been able to see inside our refrigerator and control its performance from anywhere. But what's next? Why will everyone want a smart refrigerator in the future? And how could it impact the future of retail? \n \n To explore the capabilities of Azure Percept, we - a team from Fujitsu - have tried to find an answer to these questions for the Solution Hack of the Azure Percept Bootcamp. The result is a working proof of concept of a next generation smart refrigerator. \n \n In this article, I’ll give you an overview of this proof of concept and show you how we implemented it in only a couple of days using Azure Percept! \n \n Overview of the Solution \n \n The next generation smart refrigerator proof of concept: it is a smart refrigerator that not only has to track what’s inside your refrigerator and make an inventory, but it also has to track how long items have been inside. Based on this, the refrigerator could suggest checking the expiration date of certain items to make sure nothing is thrown away. With this information the refrigerator could also suggest some recipes you can make with these items and/or other items in your refrigerator. But how could it impact the future of retail? \n \n Having an inventory of the contents of your refrigerator is not only interesting for knowing if an item is expiring soon or what recipes you could make for dinner. It’s also interesting to know what to put on your grocery list for the next time you go grocery shopping. Items could be added to a grocery list automatically or even ordered automatically when you’re almost running out of them. This will certainly change the way we think about grocery shopping in the future. \n \n A brief demo of the end-to-end solution can be found in the following YouTube video: \n \n \n \n Solution Architecture \n \n The overall architecture for the solution is shown below: \n \n We started on the edge, where our Azure Percept Dev kit is located. To get a video stream of our refrigerator we connected the Vision Module to the Azure Percept Dev kit. This stream is then analyzed by a Custom Vision detection model running on the Azure Percept Dev kit, which results in telemetry being sent to the cloud. \n \n On the cloud, the telemetry from the Azure Percept Dev kit is received on an IoT Hub and forwarded to a Stream Analytics Job. This stream analytics job saves every detection on an Azure SQL Database. With the data in the database, we could use it to display some basic information in a Power BI Dashboard. But we also wanted a more advanced way to visualize our refrigerator’s content and do some calculations. So, we decided to build a simple NodeJS web app running on Azure App Services. The last resource we needed on the cloud was Custom Vision. This is where the model will be trained that is running on the Azure Percept Dev kit. \n \n Solution Implementation \n \n After creating an architecture for our solution, we started implementing it. All the necessary resources were created on the cloud. Then we started by creating our smart refrigerator object detection model on Custom Vision. The overall implementation process is shown in the diagram below: \n \n First, we took some items out of our own refrigerator: Agrum Soda, Lemon Soda, Orange Soda, Iced-Tea, Cola, Beer, Chocolate Mousse, Crêpes, Grated Cheese, Ham, Pear, Quiche, Salad, Salmon. Then, we started placing these items in our smart refrigerator and taking pictures. For each picture we changed the content of the refrigerator and laid it out in different ways. \n \n \n \n After a total of 15 pictures for each item we uploaded them to Custom Vision. The next step was to tag all the items in each picture. After this was done, we started training our model. Thanks to the ease-of-use of Custom Vision this was as easy as clicking a button. Next, it was time to deploy it to our Azure Percept Dev Kit and test it using the video stream available in Azure Percept Studio. \n \n \n \n The first iteration of our model was already quite effective, but it couldn’t distinguish some of the drinks we put inside the refrigerator. To improve our model, we started taking pictures again but focused on the drinks. We took another 15 pictures for each item and retrained our model. We then deployed this second iteration of the model on the Azure Percept Dev Kit and tested it again. This time, the model recognized everything in the refrigerator! \n \n With a working detection model for our smart refrigerator, it was time to implement the other parts of our solution. First, we started writing a query for our Stream Analytics Job. To make our data easy to work with, we only wanted one entry per item with a timestamp. However, the telemetry sent by the Azure Percept Dev Kit is an array of items detected on a particular timestamp. To split this array into different entries we used the following query: \n \n SELECT\n event.EventEnqueuedUtcTime as Time,\n FridgeContent.ArrayValue.label as Content\nINTO Output\nFROM Input as event\nCROSS APPLY GetArrayElements(NEURAL_NETWORK) as FridgeContent \n \n With the data now flowing into our Azure SQL Database the way we wanted, we started creating a PowerBI dashboard. First, we grouped our entries by timestamp, which gave us a list of items for each timestamp. Next, we put a matrix table on our dashboard that showed every item in the refrigerator on a specific time. \n \n \n \n While we love how easy it is to show data visually on PowerBI, we wanted a more custom approach for this solution. For this reason, we developed a simple NodeJS webapp using Express (web framework). \n \n \n \n Closing remarks \n \n In only a couple of days, we managed to build a fully working smart refrigerator thanks to Azure Percept. \n \n Of course, our solution could evolve in the future. We had the idea to implement a voice assistant to which you could ask what you have in your refrigerator or how much beer you have left for example. For this, we would need to connect the Audio module to our Azure Percept Dev Kit. Another idea we had was to propose recipes based on the items in the refrigerator. And a last idea was to be able to add items to a grocery list automatically or ordering items directly when you’re low on stock. \n \n The possibilities are endless! And so is our imagination thanks to the ease-of-use of Azure Percept! We think it will revolutionize the use of AI on the Edge. Combined with the other Azure Services it forms one of the most advanced IoT platforms on the market. \n \n We're looking forward to using this technology on our customers' projects and help pave the way to a more connected world! \n \n We hope you’re as excited as us to start exploring the possibilities of Azure Percept! Below are some resources for you to start exploring: \n \n \n Azure Percept \n Azure Percept Documentation \n Discover the possibilities with Azure Percept \n Azure Percept on Youtube \n \n ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"7203","kudosSumWeight":2,"repliesCount":1,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTY4NWk2RDAyMUIxNDlCNTg1QUNG?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTY4OWkzQzA4MkJGRDE3MDVBQUJF?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTcwNGk3NzVBQUI5RDI0NzVFNkQ4?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDQ","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTcwNWkxMUVGMzlDNUEwOTNEMUQ1?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDU","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTY5Mmk5NUY2NUVGMzFCRTQ3ODI4?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDY","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTcwNmkxODBEOEYwQzhCN0MwQ0Mw?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDc","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTY5M2k2MjJGQzBERDQwOUFCODc5?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDg","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMjc3MzU2LTM2MTcwN2lGNEQyRTExRDlFQjMzODVF?revision=16\"}"}}],"totalCount":8,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:3072914":{"__typename":"Conversation","id":"conversation:3072914","topic":{"__typename":"BlogTopicMessage","uid":3072914},"lastPostingActivityTime":"2022-03-15T11:16:13.117-07:00","solved":false},"User:user:1286034":{"__typename":"User","uid":1286034,"login":"saadeghos","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0xMjg2MDM0LTM0MjIxMmlFQTg5Nzg0QjNFQTVCNTAz"},"id":"user:1286034"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjYyMWk0QTVBQjMyMUZDODRDN0Uz?revision=10\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjYyMWk0QTVBQjMyMUZDODRDN0Uz?revision=10","title":"saadeghos_0-1643219116892.jpeg","associationType":"TEASER","width":800,"height":450,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjYzMGk1QTE4OEFDMDhFQUQ2OEI5?revision=10\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjYzMGk1QTE4OEFDMDhFQUQ2OEI5?revision=10","title":"saadeghos_1-1643219790382.jpeg","associationType":"BODY","width":800,"height":450,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjYzNWlEN0REREZDOTFEREYzRkEw?revision=10\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjYzNWlEN0REREZDOTFEREYzRkEw?revision=10","title":"saadeghos_5-1643220408495.png","associationType":"BODY","width":2260,"height":1194,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjYzOGlGQjA0RjEyQ0I5QTEyQ0U1?revision=10\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjYzOGlGQjA0RjEyQ0I5QTEyQ0U1?revision=10","title":"saadeghos_7-1643221169716.png","associationType":"BODY","width":873,"height":482,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjYzOWk2MDc4NkRGRTFDNjY5RTcw?revision=10\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjYzOWk2MDc4NkRGRTFDNjY5RTcw?revision=10","title":"saadeghos_8-1643221184522.png","associationType":"BODY","width":575,"height":345,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0MGkwMjA2NUE5OTFEQjE0MzE3?revision=10\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0MGkwMjA2NUE5OTFEQjE0MzE3?revision=10","title":"saadeghos_9-1643221184532.png","associationType":"BODY","width":641,"height":525,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0MWlFODM4N0RCRDNDODAwQUUz?revision=10\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0MWlFODM4N0RCRDNDODAwQUUz?revision=10","title":"saadeghos_10-1643221212026.png","associationType":"BODY","width":575,"height":386,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0NGk4RTc1QTdDNzlCMDdERjhD?revision=10\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0NGk4RTc1QTdDNzlCMDdERjhD?revision=10","title":"saadeghos_12-1643221312244.png","associationType":"BODY","width":1151,"height":527,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0NWkxRjQ3MURBNDU5QTdFOUU4?revision=10\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0NWkxRjQ3MURBNDU5QTdFOUU4?revision=10","title":"saadeghos_13-1643221328122.png","associationType":"BODY","width":1441,"height":845,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0Nmk0QzQ3MDNEN0M3QkU2ODZE?revision=10\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0Nmk0QzQ3MDNEN0M3QkU2ODZE?revision=10","title":"saadeghos_14-1643221364907.png","associationType":"BODY","width":729,"height":504,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0N2k4OUFENzkwNzg3ODczRkQ5?revision=10\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0N2k4OUFENzkwNzg3ODczRkQ5?revision=10","title":"saadeghos_15-1643221369661.png","associationType":"BODY","width":639,"height":484,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0OGkyMUIxMEY4MDgzNzU5RkEy?revision=10\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0OGkyMUIxMEY4MDgzNzU5RkEy?revision=10","title":"saadeghos_16-1643221387305.png","associationType":"BODY","width":997,"height":305,"altText":null},"BlogTopicMessage:message:3072914":{"__typename":"BlogTopicMessage","subject":"Retail Self-checkout Object Detection Solution using Azure Percept","conversation":{"__ref":"Conversation:conversation:3072914"},"id":"message:3072914","revisionNum":10,"uid":3072914,"depth":0,"board":{"__ref":"Blog:board:IoTBlog"},"author":{"__ref":"User:user:1286034"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" \n Deploying object detection to the edge, featuring three implementations of fruit detection \n ","introduction":"","metrics":{"__typename":"MessageMetrics","views":8555},"postTime":"2022-01-27T08:00:00.046-08:00","lastPublishTime":"2022-03-15T11:16:13.117-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" \n \n There is a high demand for self-checkouts in grocery stores. This is because it has several advantages, such as a faster process (and hence shorter waiting lines) or, in the case of a pandemic such as the COVID-19, safer iteration as fewer people need to touch the products. Computer vision can help with these tasks by automatically detecting objects and the number of items, especially in fruit detection, where the self-checkout kiosk would already have information on the fruits collected in the basket. \n \n To implement the Retail Self-checkout Object Detection solution using Azure Percept, we can choose between a no code approach, an approach requiring some code (low code), and the option of customizing every small detail (pure code). This flexibility allows us to work on a vast range of projects and timeframes, i.e., supercharging POCs and MVPs; the platform incorporates scalability in its core, enabling us to push the ML system to any number of edge devices. \n \n In order to explore the capabilities of Azure Percept, a team from Cognizant enrolled to the Microsoft Azure Percept Bootcamp. Using the knowledge from the bootcamp, we developed a Retail Self-checkout Object Detection solution, outlined below, and deployed it to Azure Percept DK. The solution and the approaches we used are detailed in this article. \n \n Overview of the Solution \n \n We implemented the Retail Self-checkout Object Detection Solution using Azure Percept using three different approaches: No Code, Low Code and Pure Code, on the same fruit detection use case. Each approach will iteratively require more customization and allow for more flexibility. We have outlined each approach in detail in separate sections below. \n \n A brief description of the solution can be found in the following YouTube video: \n \n \n \n The overall architecture for the solution is shown below. The solution features an integrated framework with Azure Key Services: Azure Percept Studio, Azure Machine Learning Studio, Azure Custom Vision, IoT Hub and IoT Edge. \n \n \n \n General Pre-requisites – What is required to get started \n \n Azure Percept DK: https://docs.microsoft.com/azure/azure-percept/overview-azure-percept-dk \n Azure Percept Vision module: https://docs.microsoft.com/azure/azure-percept/azureeyemodule-overview \n Microsoft Azure subscription (able to provision all required resources): https://azure.microsoft.com/free/ \n Set-up the Azure Percept DK \n \n https://docs.microsoft.com/azure/azure-percept/quickstart-percept-dk-unboxing \n https://docs.microsoft.com/azure/azure-percept/quickstart-percept-dk-set-up \n Above two items should have resulted in provisioning an IoT Hub and accessing an Azure Percept Studio. \n \n Fresh fruits (bananas, apples, oranges) \n \n \n Solution Implementation \n \n Retail Self-checkout Object Detection Solution: No Code Implementation \n \n Summary \n The first approach for deploying an object detection model using Azure Percept is without any kind of coding. This way, a user will acquire the dataset manually with Azure Percept Vision. Individually labeling each image, putting the user in direct control of what the model is going to be trained on, and the performance metrics of each model training iteration. Finally, we can manually choose the best performing model to be deployed to Azure Percept DK. \n You will need to: \n \n Capture data, with the custom vision service. \n Label the data with the custom vision service. \n Train an object detection model, with the custom vision service. \n Publish the model and download the solution module to Azure Percept DK, with Azure Percept Studio. \n \n \n Pre-requisites \n \n “Custom Vision” resource – This you will create following below steps (same as MS tutorial) \n \n \n Data \n In this approach we use the Custom Vision service Azure is offering. This service allows us to connect a Custom Vision project to the Azure Percept Studio, and capture images with Azure Percept Vision, which automatically makes the images available on the Custom Vision service. After we have captured the necessary images of the fruits we are interested in, \n either by single snapshots, or based on a timer, we create bounding box labels for these. (As above MS tutorial is very detailed in its steps, and will be updated as service gets updated, we will neglect specific steps here.) \n \n After these steps, labelling our images of fresh fruits, we end up with something like presented in the bottom screenshot. \n \n \n \n Model \n This part using the Custom Vision service is pretty straight forward. Just like I love having a limited number of coffee options to make it easier to pick one in the end, Microsoft, maybe not by choice, presents a limited number of model options to pick form. Basic idea behind blow options is probably to give quick starters and fairly general transfer learning options. \n You can read more on the domains and model footprint here https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/select-domain. \n \n \n \n Naturally we chose the object detection project, and for the domain, we picked General (compact). As this needs to be pushed to Azure Percept DK and give real-time inferencing. \n \n Training and testing \n This section is even easier than the model decision step. We only have to hit the green train button, and decide for a quick training option, or an “advanced” – advanced being for how many hours we want to train our model. \n \n \n \n No need to get familiarized with numerous hyperparameters and model optimization options. Start the training, and come back after the coffee break, and voila. A finished trained model, on your use case. \n \n You can run the training multiple times and a new iteration tag will show up in your list, these indicate a new model. You can toggle the threshold values, and your model’s performance shows based on your training data, not recommended as final model KPIs, use a separate test set. \n \n Model deployment \n To finish off the No Code approach, we simply need to follow the step wise instructions on highlighting what model we want deployed and to what device (Azure Percept DK). And after a few point-and-click steps, you can see the video stream of your device, with your custom labels and objects of interest. \n \n Final comments \n The No Code capability of Azure Percept is really easy to learn and follow along with. It will help you get an MVP IoT solution with ease! \n \n The following image is captured from the video feed of Azure Percept Vision. \n \n \n \n Retail Self-checkout Object Detection Solution: Low Code Implementation \n Summary \n A low code approach could be an option for deploying an object detection model based on a previously existing dataset with all labels indicated. This way we don't need to manually label each object of interest. Here we create the fruit detection system by implementing the solution with Azure available no-code services, and train a model based on pre-labeled data. The data, we will load to the Custom Vision service through the Custom Vision Library. \n We will need to: \n \n Acquire labelled data from Kaggle (or other sources). \n Push labelled data with custom vision client library. \n Train an object detection model, with the custom vision service. \n Publish the model and download the solution module to Azure Percept DK, with Azure Percept Studio. \n \n \n Pre-requisites \n \n “Custom Vision” resource – This you will create following below step (MS tutorial: https://docs.microsoft.com/azure/azure-percept/tutorial-nocode-vision#create-a-vision-prototype) \n Relevant data, we used this source https://www.kaggle.com/mbkinaci/fruit-images-for-object-detection \n Python 3.x \n \n (To follow along with custom vision library steps refer to MS tutorial: https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&pivots=programming-language-python) \n \n Data \n The main point for this approach is to explore the flexibility of Custom Vision and Azure Percept services in accepting already labelled data. \n There is already a huge number of open-source datasets, we even might have the relevant labelled data ourselves, then why bother labelling new data? Fortunately, Microsoft has enabled loading of our own data to its services! To test this capability, we first need data – labelled data of our fruits, bananas, apples and oranges! \n A quick search leads us to numerous open-source datasets, we ended up using this one, from Kaggle: https://www.kaggle.com/mbkinaci/fruit-images-for-object-detection. This project contains a web -scrap-based dataset, i.e., random images from the web on objects of interest, including bounding box tags. \n \n Instructions on enabling the dataset: Bananas, Apples and Oranges \n In order to use this dataset, we need to write some code and utilize the custom vision library! (Low Code part) \n \n The following code snippets will just highlight the diff between the tutorial/test code(https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&pivots=programming-language-python) of Microsoft and our code. \n \n \n We needed to download the dataset, Kaggle requires an account to be able to download Kaggle content – however its free. \n We provisioned an Azure ML studio, and a standard compute instance. (no specific need for the ml studio, but makes the environment setup easier) \n We copied over the template/Quickstart from the Microsoft tutorial above. \n Next, we added the account specific credentials, where needed. \n We replaced/added the tags with tags specific to our project. \n \n banana_tag = trainer.create_tag(project.id, \"banana\")\napple_tag = trainer.create_tag(project.id, \"apple\")\nornage_tag = trainer.create_tag(project.id, \"orange\") \n \n Now we need to type some custom code to translate the original bounding box labels, so the Custom Vision service can understand it. Also, we need to type split up our data in batches during upload of the data. \n \n \n The labels of this specific dataset come in xml format, additionally, the bounding box format are different to the custom vision accepted format. Custom Vision expects a normalized bounding box, and it expects the bounding box to have a < (left, top, width, height) > format. Both of which is different in our dataset. \n \n Custom Vision has also a couple more limitations, (1) it can only handle 64 images at a time, and (2) it has a limit of 20 tags per image. \n See code snippet figure for relevant code for this specific dataset, that includes the translation and data upload to custom vision. Following image displays labelled images in the Custom Vision portal with tags. \n \n \n Finally, we need to confirm the data is available on Custom Vision – which it should be. This concludes the coding for the low code approach. \n \n base_image_location = train_dir\n\nbanana = 'banana'\napple = 'apple'\norange = 'orange'\n\n# batch(64) available data, decode, normalize and push\nprint (\"Adding images...\")\nbatch_size = 64\n\nfor n in range(0, len(train_set), batch_size):\n batch = train_set[n:n+batch_size]\n\n tagged_images_with_regions = []\n\n # for every image in ach batch read xml, decode and normalize\n for sample in batch:\n with open(sample[1], 'r') as f:\n data = f.read()\n\n annotation = objectify.fromstring(data)\n\n file_name = str(annotation.filename).split('.')[0]\n img_width = annotation.size.width\n img_height = annotation.size.height\n\n if img_width == 0 or img_height == 0:\n continue\n\n regions = []\n for i in range(len(annotation.object)):\n\n x = annotation.object[i].bndbox.xmin\n y = annotation.object[i].bndbox.ymin\n w = annotation.object[i].bndbox.xmax - x\n h = annotation.object[i].bndbox.ymax - y\n\n #norm\n x = x / img_width\n y = y / img_height\n w = w / img_width\n h = h / img_height\n\n if annotation.object[i].name == banana:\n regions.append(Region(tag_id=banana_tag.id, left=x, top=y, width=w, height=h))\n \n elif annotation.object[i].name == apple:\n regions.append(Region(tag_id=apple_tag.id, left=x, top=y, width=w, height=h))\n\n else: #orange\n regions.append(Region(tag_id=orange_tag.id, left=x, top=y, width=w, height=h))\n\n with open(os.path.join(base_image_location, file_name + '.jpg'), mode='rb') as image_contents:\n tagged_images_with_regions.append(ImageFileCreateEntry(name=file_name, contents=image_contents.read(), regions=regions))\n\n upload_result = trainer.create_images_from_files(project.id, ImageFileCreateBatch(images=tagged_images_with_regions))\n if not upload_result.is_batch_successful:\n print(\"Image batch upload failed.\")\n for image in upload_result.images:\n print(\"Image status: \", image.status)\n exit(-1) \n \n \n \n \n Model \n Same steps as for the No Code approach. \n \n Training and testing \n Same steps as for the No Code approach. \n \n Model deployment \n Same steps as for the No Code approach. \n \n Final comments \n Even though the capability of pushing labelled data is hidden behind a library, it is really good that Microsoft has this capability! This increases the value of this service tremendously! \n \n The following image, (source: random image found on google), highlights the models’ ability to detect objects of interest – by training a model on pre-labelled data. \n \n \n \n Retail Self-checkout Object Detection Solution: Pure Code \n \n Summary \n Finally, a user may want to have a fully custom approach on the data acquisition/labeling and model training/analysis. In this case, one might only be interested in deploying the final model to Azure Percept DK. This is also supported, here, we will implement the fruit detection system by training a custom model within Azure ML studio (you can choose your preferred platform) and configure required containerization files to enable deployment on the Azure Percept DK. \n \n We will need to: \n \n Acquire labelled data from COCO (or other sources). \n Train an object detection model, on Azure ML studio (or other platforms). \n Publish the model and download the solution module to Azure Percept DK, with Azure Percept SDK. \n \n The aim of this approach was to deploy a custom object detection model to Azure Percept DK through the Module Twin update feature. Through this approach, we end up with having a broader range of models and set-ups to choose from, while at the same time having more control over the process of going from a solution to a use case to an end-to-end object detection system deployed on the edge. \n \n We used some of the available online resources from the Azure Percept team in the following solution. They are located here: https://github.com/microsoft/azure-percept-advanced-development. \n \n In this specific case, we have been using one of Azure Percept’s own tutorials, which contains all the steps from data acquisition to model building and training and lastly, model deployment. The particular notebook we used as inspiration can be found here: https://github.com/microsoft/azure-percept-advanced-development/blob/main/machine-learning-notebooks/transfer-learning/transfer-learning-using-ssd.ipynb. \n \n Pre-requisites \n \n A Jupyter notebook (running Python 3.x and a deep learning library for building and training a model, e.g. TensorFlow). Example from Azure Percept team: https://github.com/microsoft/azure-percept-advanced-development/blob/main/machine-learning-notebooks/train-from-scratch/SemanticSegmentationUNet.ipynb \n Azure ML studio (or any environment with Azure storage and IoT Hub packages installed) and a pre-trained object detection model. https://azure.microsoft.com/en-gb/services/machine-learning/ \n \n \n Data \n The dataset we use for this approach is a subset of the publicly available image dataset COCO, where we filter out the redundant classes, leaving us with images of bananas, apples and oranges in various settings. The dataset contains around 4500 images of these three classes, along with their respective bounding boxes and labels. For more information about the COCO dataset, visit their website: https://cocodataset.org/#home. \n \n Model \n We choose to go with a TensorFlow version of the SSD-MobileNet model for this task, due to its limited footprint and hence its suitability for edge deployment, while at the same time providing a solid performance in object detection tasks. The SSD (short for Single-Shot Detector) is a popular object detection architecture in scenarios where inference speed and model footprint is of high priority. The key feature of this type of architecture is its ability to produce bounding box estimates straight away, instead of having to first produce proposals for possible bounding boxes. Additionally, its backbone network (the feature extraction part) is completely independent, meaning that it is replaceable. This enables us to use a model architecture like MobileNet (https://arxiv.org/abs/1704.04861) for this purpose, a relatively small and lightweight image classification architecture, well suited for our needs in this task. \n \n Training and testing \n To ease our efforts slightly, we use a pre-trained model for this task. Further, the model is trained on our dataset for around 30000 epochs, to obtain a fair level of accuracy upon inference. \n \n After training, we test our model performance on a couple of test images. Below we display two model outputs: \n \n \n \n \n \n Model deployment \n After the model is trained, we convert the model to the OpenVINO IR (Intermediate Representation) format that Azure Percept DK demands. OpenVINO is Intel’s open-source toolkit for optimizing and deploying AI models on the Intel hardware, such as the Intel Movidius Myriad X (MA2085) VPU on Azure Percept Vision. In short, the IR format is used for converting deep learning models from frameworks like TensorFlow and further, optimizing the model graph so that the inference latency and general footprint is greatly reduced. For more information about OpenVINO and their toolkits, visit https://docs.openvino.ai/latest/index.html. \n \n After the model is converted, we upload it to Azure Storage in the form of a blob before the model is finally replaced in the Azureeyemodule through the Module Twin update feature. Essentially, the only thing that needs to be changed is where the module looks for its detection model. We thus update the module with a link to where we stored our model. \n \n \n After this is done and the module is updated, we start the camera stream with Azure Percept up, and we should see our model inferencing outputs. \n \n Final comments \n Overall, this approach provides a highly customizable way of deploying a deep learning framework of our own choosing to Azure Percept. The Module Twin Update method enables a fast and simple model deployment to the device and with the Azureeyemodule, real-time inference is seamlessly integrated into Azure Percept DK. \n \n Closing remarks \n \n Azure Percept Development Kit, Azure Percept Vision module along with the Custom Vision tech-stack is a really powerful tool, enabling just about anyone, no matter skill proficiency, to create an intelligent vision solution. This can be backed up by the fact that all three implementations outlined above (no code, low code and pure code), of the Retail Self-checkout Object Detection Solution, was completed within one week. The documentation and intuitive implementation of the tech stack has also allowed us to quickly skill up several teammates. \n \n Since Cognizant teams’ participation in the Microsoft Azure Percept Bootcamp, we have used the tech stack in a number of POCs, and engagements. It has in particular accelerated our real-time decision-making offerings. We are also very fond of the level of integration, and the comprehensiveness of these services, enabling us to create simple iterations of the use case earlier in the engagement, which allows us to capture and build trust in the audience faster. We encourage you to try Azure Percept and deploy your model with a single click. \n \n Resources for learning more about Azure Percept \n \n The cutting edge of AI: Discover the possibilities with Azure Percept \n Azure Percept | Edge Computing Solution | Microsoft Azure \n Explore pre-built AI models \n Azure Percept product overview \n Azure Percept videos \n \n ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"21295","kudosSumWeight":2,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjYyMWk0QTVBQjMyMUZDODRDN0Uz?revision=10\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjYzMGk1QTE4OEFDMDhFQUQ2OEI5?revision=10\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjYzNWlEN0REREZDOTFEREYzRkEw?revision=10\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDQ","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjYzOGlGQjA0RjEyQ0I5QTEyQ0U1?revision=10\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDU","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjYzOWk2MDc4NkRGRTFDNjY5RTcw?revision=10\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDY","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0MGkwMjA2NUE5OTFEQjE0MzE3?revision=10\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDc","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0MWlFODM4N0RCRDNDODAwQUUz?revision=10\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDg","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0NGk4RTc1QTdDNzlCMDdERjhD?revision=10\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDk","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0NWkxRjQ3MURBNDU5QTdFOUU4?revision=10\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEw","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0Nmk0QzQ3MDNEN0M3QkU2ODZE?revision=10\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEx","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0N2k4OUFENzkwNzg3ODczRkQ5?revision=10\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEy","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zMDcyOTE0LTM0MjY0OGkyMUIxMEY4MDgzNzU5RkEy?revision=10\"}"}}],"totalCount":12,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:2897307":{"__typename":"Conversation","id":"conversation:2897307","topic":{"__typename":"BlogTopicMessage","uid":2897307},"lastPostingActivityTime":"2021-11-02T08:00:03.604-07:00","solved":false},"User:user:88002":{"__typename":"User","uid":88002,"login":"Christa St Pierre","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS04ODAwMi1aY1hLdlg?image-coordinates=167%2C51%2C691%2C575"},"id":"user:88002"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODk3MzA3LTMyMjQ3NGk0QUY0QTg2MjU3RTFCNTM1?revision=8\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODk3MzA3LTMyMjQ3NGk0QUY0QTg2MjU3RTFCNTM1?revision=8","title":"Azure Percept-Ignite_teaser-image.jpg","associationType":"TEASER","width":740,"height":400,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODk3MzA3LTMyMTU5NmkxRTE2Mzc3MDIyRTQ4OEIy?revision=8\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODk3MzA3LTMyMTU5NmkxRTE2Mzc3MDIyRTQ4OEIy?revision=8","title":"MS NVIDIA_IgniteGTC Presentation_v3.jpg","associationType":"BODY","width":1280,"height":720,"altText":null},"BlogTopicMessage:message:2897307":{"__typename":"BlogTopicMessage","subject":"Microsoft and NVIDIA partner to accelerate edge AI deployment","conversation":{"__ref":"Conversation:conversation:2897307"},"id":"message:2897307","revisionNum":8,"uid":2897307,"depth":0,"board":{"__ref":"Blog:board:IoTBlog"},"author":{"__ref":"User:user:88002"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" Discover the next area of investment for Azure Percept, and how Microsoft is partnering with NVIDIA. \n \n ","introduction":"","metrics":{"__typename":"MessageMetrics","views":11692},"postTime":"2021-11-02T08:00:03.604-07:00","lastPublishTime":"2021-11-02T08:00:03.604-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" In a journey to understand the typical edge AI deployment journey, Microsoft spoke to over 500 customers and partners about their biggest barriers to entry. We heard about complexities when trying to scale, no end-to-end solution platforms, even security concerns. With these findings in mind, we released Azure Percept DK to public preview in Spring 2021. It's now available to customers in 16 markets around the world. \n \n Azure Percept is a fully integrated platform for creating edge AI solutions. It's designed to allow developers to start prototyping solutions in minutes and includes hardware accelerators that work seamlessly with Azure AI and Azure IoT services. Indeed, since we launched Azure Percept DK, developers around the world have harnessed the dev kit to build, train, and deploy machine learning models for a variety of innovative uses. \n \n Now, to keep advancing the capabilities and adoption of edge AI, our next area of investment for Azure Percept is to bring Azure Percept to Azure Stack HCI powered by NVIDIA T4 Tensor Core GPU. Combining NVIDIA's powerful computing platform with our edge devices and services will help to further accelerate the development and deployment of world-class AI solutions. This collaboration is highlighted in the Microsoft Ignite session, Automate your Operations with Edge AI, and it is just the beginning as we look to bring Azure Percept to other platforms and endpoints in the future. \n \n Better together: Azure Percept on Azure Stack HCI \n \n Azure Percept DK is fully integrated with Azure Machine Learning, Azure cloud-based security, and Azure IoT connectivity and device management services. Literally from out of the box, it works with these Azure services. Azure Stack HCI, meanwhile, provides a flexible infrastructure (HCI) operating system delivered as an Azure service that provides the latest security, performance, and feature updates. It enables customers to deploy and run Windows and Linux virtual machines (VMs) in data centers or at the edge using existing tools, processes, and skillsets. \n \n Azure Stack HCI is a subscription service for hyperconverged infrastructure from Microsoft Azure. As an integrated virtualization stack, Azure Stack HCI is built on proven technologies that have been deployed at scale including Hyper-V, Storage Spaces Direct, and Azure-inspired SDN. Each Azure Stack HCI cluster consists of between two and 16 physical, validated servers, with the clustered servers sharing common configuration and resources. With Azure Stack HCI, you can run virtual machines, containers, and select Azure services on-premises with management, billing, and support through the Azure cloud. Azure hybrid services also can easily be added to Azure Stack HCI to enhance the cluster with capabilities such as cloud-based monitoring, site recovery, and VM backups, as well as providing a central view of all your Azure Stack HCI deployments in the Azure portal. Learn more about Azure Stack HCI. \n \n \n \n Used together, Azure Percept and Azure Stack HCI will allow customers to deploy and manage edge AI in a scalable and secure way across their solutions. For example, they will enable customers who already have numerous cameras to connect them and leverage Azure Percept without having to invest in new cameras. The below demo shows how to easily create such a pilot solution in the Azure Percept Studio and deploy it to Azure Stack HCI. The solution uses the integrated Azure Video Analyzer and Azure Spatial Analysis, and it can handle multiple cameras and training models. Additionally, with Azure Percept and Azure Stack HCI, users can set up the solution for basic insights or alerts and stream video to Power BI for visualization of real-time data. Watch to check out the new Azure Percept Studio experience. \n \n \n \n Combined technologies to boost edge AI innovation \n \n Microsoft and NVIDIA have been long-term strategic partners with the vision to democratize AI on the edge for our customer and partner ecosystem. NVIDIA is sponsoring Microsoft Ignite at the highest level, check out their Ignite presence for more details. \n \n Microsoft and NVIDIA have worked jointly on advancing the adoption of AI from high-performance computing in the cloud to the intelligent edge across a wide variety of industries. Together, Azure Stack HCI with the powerful NVIDIA GPU and Azure Percept will form a better-together hybrid solution that allows enterprises to connect their existing on-premises assets with cloud capabilities. Bringing this type of cloud innovation with Azure Percept to the edge can enable an end-to-end AI platform with NVIDIA. \n \n Customers also can use NVIDIA DeepStream, designed for efficient run-time execution of complex AI applications, in combination with Azure Video Analyzer and Azure IoT Edge to optimize video analytics applications. And with NVIDIA GPU integration, customers can build and run their own AI and machine learning solutions at the edge, or handle graphics-intense virtual desktop infrastructure (VDI) workloads. As we continue to integrate the Microsoft and NVIDIA stacks, customers will be able to run their Azure Percept solutions on NVIDIA GPUs as well. \n \n Teaming with global hardware and solution partners \n \n In addition to collaborating with NVIDIA on Azure edge AI technology, Microsoft is working with global partners around the world who are building high-performance hardware and solutions that work with Azure Percept. These include Intel, which provides the dev kit's Movidius Myriad X vision processing unit. The Intel OpenVINO™ toolkit also is supported by the dev kit. \n \n Through its partnership with Microsoft and NVIDIA, Lenovo has introduced the ThinkAgile MX1020 series, an edge-specific HCI appliance built with Microsoft Azure Stack that makes Edge HCI easier to deploy and utilize. \n \n Solution builders working with Azure Percept include Neal Analytics, a world-leading system integrator focusing upon edge AI. The company's StockView AI application, powered by Azure Percept running on Azure Stack HCI, helps retailers reduce lost sales and improve customer experience by automatically detecting out-of-stock inventory using ordinary cameras. \n \n PCL, a global construction management company, is extending its Job Site Insights application to add worker safety AI powered by Azure Percept running on Azure Stack HCI and Azure Spatial Analysis. This solution can proactively identify and alert employees and managers to dangerous situations at busy construction sites. \n \n DataRobot AI at the edge capabilities—including enhanced employee safety, defect detection, and occupancy management—also are powered by Azure Percept running on Azure Stack HCI. \n \n Try Azure Percept today \n \n We're just at the beginning of what's possible, with tremendous momentum and energy from the community as they build innovative edge AI solutions across industries and use cases. And we have plans to expand to even more platforms and endpoints in the future. If you haven'tt tried Azure Percept and experienced what'spossible now, you can order a development kit, as well as learn more about the Azure Percept Studio of pre-built AI models. \n \n You also can try a virtualized Azure Percept appliance integrated with our first-party Spatial Analysis AI service. This solution can be deployed on N-series VMs with NVIDIA GPUs in the Azure public cloud, enabling you to upload your own videos for AI processing. Explore what this technology can do when you request access to get started. ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"7692","kudosSumWeight":2,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODk3MzA3LTMyMjQ3NGk0QUY0QTg2MjU3RTFCNTM1?revision=8\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0yODk3MzA3LTMyMTU5NmkxRTE2Mzc3MDIyRTQ4OEIy?revision=8\"}"}}],"totalCount":2,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:3577917":{"__typename":"Conversation","id":"conversation:3577917","topic":{"__typename":"BlogTopicMessage","uid":3577917},"lastPostingActivityTime":"2022-07-22T08:00:00.040-07:00","solved":false},"User:user:112040":{"__typename":"User","uid":112040,"login":"Jim Bennett","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0xMTIwNDAtMTI3MTY1aUYyMjBGNjFENkU2MEI5RUI"},"id":"user:112040"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4NzUxN2lGMTIzMEYxN0UwODdFRENC?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4NzUxN2lGMTIzMEYxN0UwODdFRENC?revision=9","title":"julyot.gif","associationType":"TEASER","width":480,"height":270,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4NzUzMGk5MkUwMEZBQTA1QkVENDQ5?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4NzUzMGk5MkUwMEZBQTA1QkVENDQ5?revision=9","title":"JulI-oT_Animated.gif","associationType":"BODY","width":480,"height":270,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTY0NGkwMzkyMzNGNTRCQUU4Qzk4?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTY0NGkwMzkyMzNGNTRCQUU4Qzk4?revision=9","title":"JimBennett_0-1658341745188.png","associationType":"BODY","width":1000,"height":420,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTY0NWk0REVFRUVFNTI1OTA5RkFD?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTY0NWk0REVFRUVFNTI1OTA5RkFD?revision=9","title":"JimBennett_0-1658342189315.png","associationType":"BODY","width":1000,"height":420,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTY0N2k5QkYwNDI5NkJBMURGNDI5?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTY0N2k5QkYwNDI5NkJBMURGNDI5?revision=9","title":"JimBennett_1-1658342290377.png","associationType":"BODY","width":1000,"height":420,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTcwM2lGNjZFNDZGRDdEMDczMDc5?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTcwM2lGNjZFNDZGRDdEMDczMDc5?revision=9","title":"JimBennett_0-1658363225015.png","associationType":"BODY","width":1000,"height":420,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTcwNGlCOUFDRDEzMzEzQjU0NEFB?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTcwNGlCOUFDRDEzMzEzQjU0NEFB?revision=9","title":"JimBennett_1-1658363297483.png","associationType":"BODY","width":1000,"height":420,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTcwOGk5MkM2QjNGOUFDMTI0MjUw?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTcwOGk5MkM2QjNGOUFDMTI0MjUw?revision=9","title":"JimBennett_3-1658363849485.png","associationType":"BODY","width":1000,"height":420,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTcwOWkwMTk0RDI5RUYwRTE5QTcz?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTcwOWkwMTk0RDI5RUYwRTE5QTcz?revision=9","title":"JimBennett_0-1658363921531.png","associationType":"BODY","width":1000,"height":420,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4Njg1MmlGMjYxQkNFMTQxNTAxQjY1?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4Njg1MmlGMjYxQkNFMTQxNTAxQjY1?revision=9","title":"how_it_works_3.png","associationType":"BODY","width":640,"height":420,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTcwNWk1MDNBQUM1MDVFQUI5QTY0?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTcwNWk1MDNBQUM1MDVFQUI5QTY0?revision=9","title":"JimBennett_2-1658363496742.png","associationType":"BODY","width":1000,"height":420,"altText":null},"BlogTopicMessage:message:3577917":{"__typename":"BlogTopicMessage","subject":"JulyOT weekly round up week 3, 🐮, AI on the edge, JulIoT, and secure embedded development","conversation":{"__ref":"Conversation:conversation:3577917"},"id":"message:3577917","revisionNum":9,"uid":3577917,"depth":0,"board":{"__ref":"Blog:board:IoTBlog"},"author":{"__ref":"User:user:112040"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" As we end the third full week of JulyOT, here's a round up of the IoT content we've shared so far. \n ","introduction":"","metrics":{"__typename":"MessageMetrics","views":3029},"postTime":"2022-07-22T08:00:00.040-07:00","lastPublishTime":"2022-07-22T08:00:00.040-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" As we wrap up the third full week of #JulyOT 2022, here's a round up of all the IoT content we've shared so far. Check back here every week for a weekly roundup, or catch the new content every week day in July at JulyOT.dev. \n \n We also shared more of our JulIoT content - JulyOT in Spanish! \n \n JulIoT \n \n #JulIoT is JulyOT in Spanish! We want to bring JulyOT to as many developers as possible, so watch out for more languages next year! \n \n \n \n For JulIoT this week we previewed a set of upcoming livestreams in Spanish showing how to use the Seeed Studio reTerminal with Azure and AI! \n \n \n \n Beginners, makers and students \n \n For our beginners track, we ran lesson 4 of IoT for Beginners this week as a live stream. \n \n \n \n We also gave a sneak peek at an upcoming series showing how to use the Seeed Studio reTerminal with Azure and AI! This is the same series we are running for #JulIoT, but in English. \n \n \n \n For those wanting to create an IoT-based make, or prototype a new IoT solution, we shared an IoT device list for prototyping, helping makers to find the right hardware for their needs. \n \n \n \n Embedded IoT \n \n This week continues our series on nanoFramework with a blog post on building nanoFramework and interoperability.. \n \n \n \n We also looked at how to accelerate your Azure Sphere development with DevX, a component of Azure RTOS. \n \n \n \n AI at the edge \n \n For AI at the edge we have more Azure Percept content with a blog post on the unlimited possibilities of Azure Percept, showing some of the use cases from bootcamps and hackathons. \n \n \n \n We also preview 4 upcoming livestreams on building autonomous robots using Project Bonsai. \n \n \n \n Finally we had an AMA and a great discussion on using IoT and AI in dairy farming with Bryn Lewis from NZ. Catch the recording here: \n \n \n \n Learning and certifications \n \n \n Want to become a subject matter in the IoT Domain? Compete the hundreds of other developers who have joined the JulyOT Microsoft Cloud Skills Challenge! \n \n We also focus on certifications with a blog post on the AZ-220 Azure IoT developer speciality certification. \n \n \n \n \n Join us next week! ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"2419","kudosSumWeight":1,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4NzUxN2lGMTIzMEYxN0UwODdFRENC?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4NzUzMGk5MkUwMEZBQTA1QkVENDQ5?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTY0NGkwMzkyMzNGNTRCQUU4Qzk4?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDQ","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTY0NWk0REVFRUVFNTI1OTA5RkFD?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDU","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTY0N2k5QkYwNDI5NkJBMURGNDI5?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDY","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTcwM2lGNjZFNDZGRDdEMDczMDc5?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDc","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTcwNGlCOUFDRDEzMzEzQjU0NEFB?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDg","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTcwOGk5MkM2QjNGOUFDMTI0MjUw?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDk","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTcwOWkwMTk0RDI5RUYwRTE5QTcz?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEw","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4Njg1MmlGMjYxQkNFMTQxNTAxQjY1?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEx","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTc3OTE3LTM4OTcwNWk1MDNBQUM1MDVFQUI5QTY0?revision=9\"}"}}],"totalCount":11,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:3543219":{"__typename":"Conversation","id":"conversation:3543219","topic":{"__typename":"BlogTopicMessage","uid":3543219},"lastPostingActivityTime":"2022-06-27T08:00:00.037-07:00","solved":false},"User:user:1064900":{"__typename":"User","uid":1064900,"login":"CharlesElwood","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0xMDY0OTAwLTI4NjI5MGk0QzkyOUU2REI4QTk2OEM2"},"id":"user:1064900"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTQzMjE5LTM4MzAwMGlDNDYzODA2RTk3MzVENzM1?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTQzMjE5LTM4MzAwMGlDNDYzODA2RTk3MzVENzM1?revision=12","title":"CharlesElwood_0-1655988619485.jpeg","associationType":"TEASER","width":949,"height":674,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTQzMjE5LTM4Mjk5OWkwQzhEOUVFNDM1QTM0NDMw?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTQzMjE5LTM4Mjk5OWkwQzhEOUVFNDM1QTM0NDMw?revision=12","title":"CharlesElwood_2-1655988619507.png","associationType":"BODY","width":592,"height":528,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTQzMjE5LTM4MzAwMWk0QzkwOUJEQzhBN0REMjlG?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTQzMjE5LTM4MzAwMWk0QzkwOUJEQzhBN0REMjlG?revision=12","title":"CharlesElwood_3-1655988619512.png","associationType":"BODY","width":1054,"height":817,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTQzMjE5LTM4MzAwMmk1MUY2MjYxOTE3NEZCQTFG?revision=12\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTQzMjE5LTM4MzAwMmk1MUY2MjYxOTE3NEZCQTFG?revision=12","title":"CharlesElwood_4-1655988619517.png","associationType":"BODY","width":1052,"height":493,"altText":null},"BlogTopicMessage:message:3543219":{"__typename":"BlogTopicMessage","subject":"Azure Percept shines light on Holland Museum collections","conversation":{"__ref":"Conversation:conversation:3543219"},"id":"message:3543219","revisionNum":12,"uid":3543219,"depth":0,"board":{"__ref":"Blog:board:IoTBlog"},"author":{"__ref":"User:user:1064900"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" \n Azure Percept makes it possible to expose long hidden works of art ","introduction":"","metrics":{"__typename":"MessageMetrics","views":2771},"postTime":"2022-06-27T08:00:00.037-07:00","lastPublishTime":"2022-06-27T08:00:00.037-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" \n \n The Holland Museum is a small, yet innovative museum located in Holland, on the western coast of Michigan. The museum owns and operates four buildings: the main galleries in an old Post Office building, the Settlers House, the Cappon House, and the Armory. The museum is proud to collect artifacts and stories from Holland’s early settlers, the original inhabitants of the area, and the latest wave of immigrants to the area. \n \n I serve on the Holland Museum’s Board and wanted to use Azure Percept to help the museum showcase more of its artifacts. More than 100,000 artifacts sit in the Holland Museum basement, with only 700 artifacts on display and visible to the public. \n \n In April 2022, the Museum was preparing for the Tulip Time festival in Holland, Michigan where 500,000 visitors arrive to see millions of tulips in bloom. The Museum’s goal was to engage Tulip Time visitors with Azure Percept and detect the “dwell time” visitors spent with each artifact. The results the museum staff and I experienced were amazing and will further shape the way future exhibits are designed and monitored. \n \n In this blog post, I will be sharing the ways that the Holland Museum staff were able to accomplish their goals of sharing the museum's story and large collection of artifacts while also exploring how Azure Percept can bring some of the artifacts that were once out of sight, into the public's view. \n \n Azure Percept and Holland Museum collections overview \n \n A brief demo of the Azure Percept shines light on Holland Museum collections can be found in the following YouTube video: \n \n \n Azure Percept and Holland Museum collections Implementation \n \n Phase 1: Getting Started \n The first stage of the journey was training the museum staff about Azure Percept. I used two Azure Percept DKs; one unit was used to detect tulips, and the second was used to detect people in front of the display. \n \n Azure Percept is very easy to use. One museum staff member attended the meeting virtually, so we shared our screen and logged in to Azure Percept Studio. She was able to remotely upload images of 10 tulip varieties, build the bounding boxes, and press the train button. Thirty minutes later, we had the new AI model running Tulip Detecting with Azure Percept. It was that easy! \n \n The following 3 key steps were followed in this phase: \n \n Step 1: Getting the DK set up. \n Step 2: Azure Percept Studio: Upload 15 images for each tulip species, drag out the bounding boxes, and select the respective tag from the menu. \n Step 3: Deploy the newly trained AI model to Azure Percept. \n \n \n Phase 2: Training our own AI model \n A week later, I revisited the museum to review the model. The amazing part is the museum staff was able to train an intern to upload images and had also trained her on the AI model. This democratized Edge AI in action with Azure Percept, as the knowledge and processes were being organically transferred throughout the museum. At this second meeting, we walked through the iteration test images to better understand the issues in training images that were causing incorrect guesses. Our intern was then able to update the model and rebuild the bounding boxes prior to the influx of tourists that would arrive in West Michigan. \n \n Visitor interaction \n Visitors walked up to the exhibit, quickly read through the instructions, pulled out their phones and swiped through the images of tulips they took during their Tulip Time visit. They held up their images to the camera and watched for tulip variety detection. Some visitors noted they had to hold the phone/images very close to the camera for detection to occur. Others noticed that images with many tulips triggered detection events as easily as images of a single flower. \n \n Precision of the Model \n Initially only 15 images were uploaded for each species, but the museum staff noticed there was some misrecognition occurring. We learned that adding more images improved the initial model. The staff also learned that using images with close-ups and isolated images of tulips was much more effective than using images with a whole field of tulips. The staff revised the AI model and trained seven additional iterations before the model was ready for visitor use. \n \n \n \n Visualizing the data \n \n The exhibit was a huge success as it introduced visitors to new technology, connected visitors with tulip varieties (which represent a rich Dutch heritage in the local area), and provided a fun and interactive way for visitors to engage with the Museum’s artifacts and exhibits. \n \n The most exciting part of this exhibit was viewing the live data connection using PowerBI. We could see when people were standing in front of the exhibit. We could also see at night that traffic lights in the museum gallery were being detected when no people or cars were being detected. Car detection was interesting as well. When a horse drawn carriage with two rows of seating was in front of Azure Percept, it was detected as a “car.” \n \n \n \n Next steps: The future of Edge AI: Azure Percept in museums \n \n It’s crazy to think about how far we have come in making Edge AI and customized AI models accessible and available for public use with Azure Percept. To get started, you really only need to get an Azure Percept Dev Kit, connect the kit with the self-contained out-of-box experience/user interface, set up and train an AI model with Azure Percept Studio and then deploy your model to the device. With Azure Percept, you get the added benefit of working on the Edge, where internet connection is not a requirement anymore, and privacy is protected since the AI model can be trained to only collect specific types of information. \n \n This project breaks the mold of traditional communication methods, taking cutting edge (pun intended) technology and merging museum stories with Edge AI: Azure Percept, therefore pushing the boundaries for future exhibits/displays. \n \n We are planning to place three Azure Percept DK in the museum’s main gallery. We want to monitor three important artifacts and measure the dwell time visitors spend with each artifact. We can, in turn, make changes to the artifacts and study changes in dwell time. Some of the data we could monitor includes: change in artifact height, change in artifact labeling, movement of artifacts to a different space in the museum gallery, and replacement of one artifact with another from the collection. As the museum staff learns about how AI can measure dwell time, we want to survey the staff on further applications of Edge AI: Azure Percept in the museum. By understanding what artifacts attract a visitor’s interest, and which ones they want to spend more time with, museums can create exhibits that will generate greater foot traffic and loyal patrons. We look forward to presenting our project at museum conferences nationwide! \n \n To learn more about Azure Percept, visit these resources: \n \n Learn about Azure Percept \n Learn about Azure Percept Technical Documentation \n Learn more about our customer and partner stories \n \n \n Microsoft Build 2022 Key Sessions \n \n Microsoft Build Into Focus: Preparing for the metaverse \n Embrace digital transformation at the edge with Azure Percept \n \n \n GTC Spring 2022 Key Sessions \n \n Session: Transforming AI and ML at the edge with Microsoft and NVIDIA \n Embrace digital transformation at the edge with Azure Percept \n ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"7605","kudosSumWeight":1,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTQzMjE5LTM4MzAwMGlDNDYzODA2RTk3MzVENzM1?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTQzMjE5LTM4MzAwMGlDNDYzODA2RTk3MzVENzM1?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTQzMjE5LTM4Mjk5OWkwQzhEOUVFNDM1QTM0NDMw?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDQ","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTQzMjE5LTM4MzAwMWk0QzkwOUJEQzhBN0REMjlG?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDU","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zNTQzMjE5LTM4MzAwMmk1MUY2MjYxOTE3NEZCQTFG?revision=12\"}"}}],"totalCount":5,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"CachedAsset:text:en_US-components/community/Navbar-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/community/Navbar-1745505307000","value":{"community":"Community Home","inbox":"Inbox","manageContent":"Manage Content","tos":"Terms of Service","forgotPassword":"Forgot Password","themeEditor":"Theme Editor","edit":"Edit Navigation Bar","skipContent":"Skip to content","gxcuf89792":"Tech Community","external-1":"Events","s-m-b":"Nonprofit Community","windows-server":"Windows Server","education-sector":"Education Sector","driving-adoption":"Driving Adoption","Common-content_management-link":"Content Management","microsoft-learn":"Microsoft Learn","s-q-l-server":"Content Management","partner-community":"Microsoft Partner Community","microsoft365":"Microsoft 365","external-9":".NET","external-8":"Teams","external-7":"Github","products-services":"Products","external-6":"Power Platform","communities-1":"Topics","external-5":"Microsoft Security","planner":"Outlook","external-4":"Microsoft 365","external-3":"Dynamics 365","azure":"Azure","healthcare-and-life-sciences":"Healthcare and Life Sciences","external-2":"Azure","microsoft-mechanics":"Microsoft Mechanics","microsoft-learn-1":"Community","external-10":"Learning Room Directory","microsoft-learn-blog":"Blog","windows":"Windows","i-t-ops-talk":"ITOps Talk","external-link-1":"View All","microsoft-securityand-compliance":"Microsoft Security","public-sector":"Public Sector","community-info-center":"Lounge","external-link-2":"View All","microsoft-teams":"Microsoft Teams","external":"Blogs","microsoft-endpoint-manager":"Microsoft Intune","startupsat-microsoft":"Startups at Microsoft","exchange":"Exchange","a-i":"AI and Machine Learning","io-t":"Internet of Things (IoT)","Common-microsoft365-copilot-link":"Microsoft 365 Copilot","outlook":"Microsoft 365 Copilot","external-link":"Community Hubs","communities":"Products"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarHamburgerDropdown-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarHamburgerDropdown-1745505307000","value":{"hamburgerLabel":"Side Menu"},"localOverride":false},"CachedAsset:text:en_US-components/community/BrandLogo-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/community/BrandLogo-1745505307000","value":{"logoAlt":"Khoros","themeLogoAlt":"Brand Logo"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarTextLinks-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarTextLinks-1745505307000","value":{"more":"More"},"localOverride":false},"CachedAsset:text:en_US-components/authentication/AuthenticationLink-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/authentication/AuthenticationLink-1745505307000","value":{"title.login":"Sign In","title.registration":"Register","title.forgotPassword":"Forgot Password","title.multiAuthLogin":"Sign In"},"localOverride":false},"CachedAsset:text:en_US-components/nodes/NodeLink-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/nodes/NodeLink-1745505307000","value":{"place":"Place {name}"},"localOverride":false},"CachedAsset:text:en_US-components/tags/TagSubscriptionAction-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/tags/TagSubscriptionAction-1745505307000","value":{"success.follow.title":"Following Tag","success.unfollow.title":"Unfollowed Tag","success.follow.message.followAcrossCommunity":"You will be notified when this tag is used anywhere across the community","success.unfollowtag.message":"You will no longer be notified when this tag is used anywhere in this place","success.unfollowtagAcrossCommunity.message":"You will no longer be notified when this tag is used anywhere across the community","unexpected.error.title":"Error - Action Failed","unexpected.error.message":"An unidentified problem occurred during the action you took. Please try again later.","buttonTitle":"{isSubscribed, select, true {Unfollow} false {Follow} other{}}","unfollow":"Unfollow"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/QueryHandler-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/QueryHandler-1745505307000","value":{"title":"Query Handler"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarDropdownToggle-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarDropdownToggle-1745505307000","value":{"ariaLabelClosed":"Press the down arrow to open the menu"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageListTabs-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageListTabs-1745505307000","value":{"mostKudoed":"{value, select, IDEA {Most Votes} other {Most Likes}}","mostReplies":"Most Replies","mostViewed":"Most Viewed","newest":"{value, select, IDEA {Newest Ideas} OCCASION {Newest Events} other {Newest Topics}}","newestOccasions":"Newest Events","mostRecent":"Most Recent","noReplies":"No Replies Yet","noSolutions":"No Solutions Yet","solutions":"Solutions","mostRecentUserContent":"Most Recent","trending":"Trending","draft":"Drafts","spam":"Spam","abuse":"Abuse","moderation":"Moderation","tags":"Tags","PAST":"Past","UPCOMING":"Upcoming","sortBymostRecent":"Sort By Most Recent","sortBymostRecentUserContent":"Sort By Most Recent","sortBymostKudoed":"Sort By Most Likes","sortBymostReplies":"Sort By Most Replies","sortBymostViewed":"Sort By Most Viewed","sortBynewest":"Sort By Newest Topics","sortBynewestOccasions":"Sort By Newest Events","otherTabs":" Messages list in the {tab} for {conversationStyle}","guides":"Guides","archives":"Archives"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageView/MessageViewInline-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageView/MessageViewInline-1745505307000","value":{"bylineAuthor":"{bylineAuthor}","bylineBoard":"{bylineBoard}","anonymous":"Anonymous","place":"Place {bylineBoard}","gotoParent":"Go to parent {name}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Pager/PagerLoadMore-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Pager/PagerLoadMore-1745505307000","value":{"loadMore":"Show More"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/OverflowNav-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/OverflowNav-1745505307000","value":{"toggleText":"More"},"localOverride":false},"CachedAsset:text:en_US-components/users/UserLink-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/users/UserLink-1745505307000","value":{"authorName":"View Profile: {author}","anonymous":"Anonymous"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSubject-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSubject-1745505307000","value":{"noSubject":"(no subject)"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageTime-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageTime-1745505307000","value":{"postTime":"Published: {time}","lastPublishTime":"Last Update: {time}","conversation.lastPostingActivityTime":"Last posting activity time: {time}","conversation.lastPostTime":"Last post time: {time}","moderationData.rejectTime":"Rejected time: {time}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/nodes/NodeIcon-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeIcon-1745505307000","value":{"contentType":"Content Type {style, select, FORUM {Forum} BLOG {Blog} TKB {Knowledge Base} IDEA {Ideas} OCCASION {Events} other {}} icon"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageUnreadCount-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageUnreadCount-1745505307000","value":{"unread":"{count} unread","comments":"{count, plural, one { unread comment} other{ unread comments}}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageViewCount-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageViewCount-1745505307000","value":{"textTitle":"{count, plural,one {View} other{Views}}","views":"{count, plural, one{View} other{Views}}"},"localOverride":false},"CachedAsset:text:en_US-components/kudos/KudosCount-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/kudos/KudosCount-1745505307000","value":{"textTitle":"{count, plural,one {{messageType, select, IDEA{Vote} other{Like}}} other{{messageType, select, IDEA{Votes} other{Likes}}}}","likes":"{count, plural, one{like} other{likes}}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageRepliesCount-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageRepliesCount-1745505307000","value":{"textTitle":"{count, plural,one {{conversationStyle, select, IDEA{Comment} OCCASION{Comment} other{Reply}}} other{{conversationStyle, select, IDEA{Comments} OCCASION{Comments} other{Replies}}}}","comments":"{count, plural, one{Comment} other{Comments}}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserAvatar-1745505307000","value":{"altText":"{login}'s avatar","altTextGeneric":"User's avatar"},"localOverride":false}}}},"page":"/tags/TagPage/TagPage","query":{"messages.widget.messagelistfornodebyrecentactivitywidget-tab-main-messages-list-for-tag-widget-0":"mostKudoed","nodeId":"category:communities","tagName":"Azure Percept Studio"},"buildId":"-gVUpXaWnPcjlrLJZ92B7","runtimeConfig":{"buildInformationVisible":false,"logLevelApp":"info","logLevelMetrics":"info","openTelemetryClientEnabled":false,"openTelemetryConfigName":"o365","openTelemetryServiceVersion":"25.3.0","openTelemetryUniverse":"prod","openTelemetryCollector":"http://localhost:4318","openTelemetryRouteChangeAllowedTime":"5000","apolloDevToolsEnabled":false,"inboxMuteWipFeatureEnabled":false},"isFallback":false,"isExperimentalCompile":false,"dynamicIds":["./components/community/Navbar/NavbarWidget.tsx","./components/community/Breadcrumb/BreadcrumbWidget.tsx","./components/customComponent/CustomComponent/CustomComponent.tsx","./components/tags/TagsHeaderWidget/TagsHeaderWidget.tsx","./components/messages/MessageListForNodeByRecentActivityWidget/MessageListForNodeByRecentActivityWidget.tsx","./components/tags/TagSubscriptionAction/TagSubscriptionAction.tsx","./components/external/components/ExternalComponent.tsx","../shared/client/components/common/List/ListGroup/ListGroup.tsx","./components/messages/MessageView/MessageView.tsx","./components/messages/MessageView/MessageViewInline/MessageViewInline.tsx","../shared/client/components/common/Pager/PagerLoadMore/PagerLoadMore.tsx","./components/customComponent/CustomComponentContent/TemplateContent.tsx"],"appGip":true,"scriptLoader":[{"id":"analytics","src":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/pagescripts/1730819800000/analytics.js?page.id=TagPage","strategy":"afterInteractive"}]}