Patent Publication Number: US-2023153697-A1

Title: Systems and methods for automated object recognition

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of U.S. patent application Ser. No. 17/175,271, filed Feb. 12, 2021, which is a continuation of U.S. patent application Ser. No. 16/656,006, filed Oct. 17, 2019, which is a continuation of U.S. patent application Ser. No. 15/630,913, filed Jun. 22, 2017, which claims priority from U.S. Provisional Patent Application No. 62/354,059, filed on Jun. 23, 2016, the entire disclosure of which applications is incorporated by reference in the present application. 
    
    
     TECHNICAL FIELD 
     The present disclosure generally relates to computer vision and, more particularly, to machine recognition and identification of a specific object shown in video or image content. 
     BACKGROUND 
     Video and image content often contains numerous objects that are visible to a viewer. Although a human viewer may perceive the objects shown in the video or image content with little effort, it is no easy task for a machine or computer to recognize and identify the objects. Moreover, objects in a video, that is, an image stream, may constantly change, move, appear, disappear, etc. As such, computerized object recognition in a continuous video/image stream often requires a tremendous amount of computation power. This task is a challenge for many user devices (e.g., smart TVs, personal computers, smart phones) that have limited computing resources. 
     Moreover, it is often desirable to know and use information related to the objects shown in the video or image content. For example, although a human viewer can easily determine that an object currently shown on a TV screen is a car, the viewer still does not know the maker, year, price of the car, or which dealer around the neighborhood currently carries in its inventory the car in the depicted color. As another example, video content may include the clothing that certain people are wearing, electronics that they are using, and cars that they are driving. A viewer may be inclined to purchase such objects (i.e., products) or at least learn more information about them. The viewer may, however, be unable to identify the products or know where to purchase such products. The viewer may also not know price information about the products. 
     Current content delivery systems, such as Netflix, Apple TV, and Amazon Prime provide streaming video content, but do not include any recognition or identification of products that are present in the video content Thus, as discussed above, while a viewer may desire to purchase or learn more about a product shown in the video content, current content delivery systems do not offer a means for the viewer to learn any information about the product. Moreover, brands and merchants cannot use the current content delivery systems to make potential sales to such a viewer. 
     Similar issues may exist in regard to digital images that are present in digital photo galleries, which may be located on social media websites or other internet web pages. While these images may include numerous products that the viewer is interested in purchasing or learning about, a viewer may not know how or where to purchase the item, and may not know any other information about the product, such as its brand, or how much it costs. 
     In view of the shortcomings of current systems, systems and methods for automated object recognition are desired. 
     SUMMARY 
     Disclosed embodiments provide systems and methods for automated recognition of objects that are present in video and image content. 
     Consistent with a disclosed embodiment, systems for recognizing an object in a video stream are provided. A system for recognizing an object in a video stream may include a memory storing instructions and a processor configured to execute the stored instructions to perform operations. The operations may include: receiving a video stream from a video source, the video stream comprising a plurality of video frames; selecting at least one video frame from the video frames according to a frame selection rate; partitioning the selected video frame into a first plurality of image blocks; recognizing, out of the first plurality of image blocks, a second plurality of image blocks which comprise an image of an object, the recognition being based on an image recognition parameter determined by a machine-learning algorithm; determining that at least one of the second plurality of image blocks corresponds to the object based on a likelihood metric, the likelihood metric being determined by the processor based on at least the frame selection rate; and displaying, on a display, information identifying the object. 
     Consistent with disclosed embodiments, methods for recognizing an object in a video stream are provided. 
     Consistent with disclosed embodiments, non-transitory computer-readable storage media may store program instructions, which are executed by at least one processor device and perform any of the methods described herein. 
     The foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate several embodiments and, together with the description, serve to explain the disclosed principles. In the drawings: 
         FIG.  1    is a diagram of an exemplary system consistent with disclosed embodiments. 
         FIG.  2    is a diagram of recognition engine, consistent with disclosed embodiments. 
         FIG.  3    is a flowchart of an automated object recognition method, consistent with disclosed embodiments. 
         FIG.  4 A  is a schematic diagram of a video frame consistent with disclosed embodiments. 
         FIG.  4 B  is a schematic diagram of a video frame consistent with disclosed embodiments. 
         FIG.  4 C  is a schematic diagram of a video frame consistent with disclosed embodiments. 
         FIG.  5    is a schematic diagram showing a frame selection rate consistent with disclosed embodiments. 
         FIG.  6 A  is a schematic illustration of a graphical user interface, consistent with disclosed embodiments. 
         FIG.  6 B  is a schematic illustration of a graphical user interface, consistent with disclosed embodiments. 
     
    
    
     DESCRIPTION OF THE EMBODIMENTS 
     The disclosed embodiments include systems and methods for the automated recognition of objects that are present in video and/or image content. In particular, the disclosed systems and methods may be used in a visual-content delivery system and enable the visual-content delivery system to automatically recognize objects presented by the visual content and provide information related to the recognized objects. For example, in some embodiments, a video stream including a plurality of video frames may be received from a video source. At least one video frame of the plurality of video frames may be selected according to a frame selection rate. A selected video frame may be partitioned into a first plurality of image blocks. A region within the first plurality of image blocks may be recognized using at least one image recognition parameter. The region may include a second plurality of image blocks. It may be determined that the second plurality of image blocks corresponds to an object based on a likelihood metric. The likelihood metric may be determined based on at least the frame selection rate. Information identifying the object may be displayed to a viewer on a display device. 
     As used in the present disclosure, “object” refers to any thing or person that is shown in a video or image sequence and is of interest to a viewer of the video or image. For illustrative purpose only, the following description assumes the objects to be recognized are products, e.g., clothing, electronic gadgets, cars, home appliances, etc., that a viewer may be interested to purchase and learn more about. 
     Reference will now be made in detail to exemplary embodiments, examples of which are illustrated in the accompanying drawings and disclosed herein. Wherever convenient, the same reference numbers will be used throughout the drawings to refer to the same or like parts. 
       FIG.  1    is a diagram of an exemplary system  100  consistent with disclosed embodiments. System  100  may include a media device  102 , a content database  104 , a product database  106 , a merchant database  108 , a media server  110 , and a network  112 . The components and arrangement of the components included in system  100  may vary. Thus, system  100  may further include other components or devices that perform or assist in the performance of one or more processes consistent with tile disclosed embodiments. The components and arrangements shown in  FIG.  1    are not intended to limit the disclosed embodiments, as the components used to implement the disclosed processes and features may vary. For example, although one media device  102  is depicted, consistent with some embodiments, more than one media device  102  may be included in system  100 . 
     Media device  102  may be a tablet, smartphone, personal computer, laptop computer, or the like, which is capable of streaming video or image content, or receiving video or image content, and displaying such content for viewing. Media device  102  may alternatively be a set-top box, game console, media center, cable box, satellite receiver, or any other media device capable of streaming video or image content or receiving video or image content, and providing such content to a display device for viewing. A display device may be a television display, flat-panel monitor, or the like. 
     Media device  102  may receive a stream of video or image content from content database  104 . The video stream may include a plurality of video frames, and the video stream may be in any video format and definition known in the art. For example, the video stream may be coded according to the H.264 Advanced video coding (AVC) standard, or the H.265 High Efficiency video coding standard (HEVC). The video stream may be in standard definition or high definition, 4K or SK ultra high definition formats, or any other format. 
     Media device  102  may include a recognition engine  202  ( FIG.  2   ). Recognition engine  202  may analyze a video stream provided by content source database  104  to recognize a product located in a video frame of the video stream. Recognition engine  202  may analyze image and video content according to at least one machine-learning algorithm. The learning machine-algorithm may use and adjust at least one parameter or parameter set. More parameters may be added to the machine-learning algorithm as more content is analyzed and/or as different types of content are analyzed. The parameters in a parameter set may be weighted, and weightings of the parameters may be adjusted. In some embodiments, the machine-learning algorithm may be a deep-learning algorithm that provides layered neural network analysis. In some embodiments, the machine-learning algorithm may be a video and/or image recognition algorithm. The analysis provided by recognition engine  202  will be discussed in relation to  FIG.  2   . 
     Once a product is recognized, the recognized product may be automatically placed in a digital shopping cart or other kind of list. For example, once a product is recognized, information about the product may be requested and collected from product database  106 , and such information may be used to populate a digital shopping cart or list. The digital shopping cart may be displayed by media device  102 , and may include information about the recognized product, such as the product name, price, and availability (from internet merchants, and/or brick and mortar store merchants). The digital shopping cart may also display products similar to the recognized product, and recommend other products that are related to the recognized product. The digital shopping cart may enable a viewer to select items for purchase, complete a purchase, cancel a purchase, and/or save a product in the digital shopping cart. 
     Content database  104  may store video and/or image content. For example, content database  104  may be a video and image repository that includes different video and image content The content may have a variety of different formats and quality definitions. The content of content database  104  may be periodically updated. For example, the content of content database  104  may be updated by changing or removing existing content in database  104 , and/or adding new video/image content to database  104 . Alternatively, content may be added or removed, in response to a preset schedule, or on demand based on a command by a user. Content database  104  may additionally store audio content corresponding to the video and image content. The audio content and corresponding video content may be sent in a single video stream to media device  102  and/or media server  110  for streaming or for storing. 
     Product database  106  may store data about products. Such data may include, for example, price, descriptive information, brand, merchants, availability, and the like. Product database  106  may receive and/or transmit data to other databases, such as merchant database  108 , and may use data gathered from merchant database  108  to build an inventory for each product. For example, product database  106  may store data regarding the price of a product at a merchant associated with merchant database  108 , and the quantity of the product for sale at a merchant associated with merchant database  108 . Data that is stored in product database  106  may be “scraped” from websites on the Internet and/or product catalogues, and may include data that describe a product. The data may be scraped from any public data source, and may be scraped from a private data source when authorization from the private source is provided. When a product is successfully recognized by recognition analysis, data from product database  106  may be provided to the media device  102  and/or media server  110 . The data may be displayed by media device  102  and/or media server  110 , or otherwise associated with the recognized product. Consistent with the disclosed embodiments, one or more product databases  106  may be provided in system  100 . In one embodiment, product data may be aggregated from a plurality of product data servers  106  and provided to media device  102  and/or media server  110 . Media device  102  and media server  110  may receive such product data for further usage. 
     Merchant database  108  may include merchant data regarding products. For example, merchant database  108  may include data regarding merchant stock, price, and discounts regarding products. Moreover, merchant database  108  may include data indicating accepted payment methods for purchasing products, online store&#39;s uniform resource locators (URLs), and brick-and-mortar store locations. In addition to receiving data from product databases  106 , media device  102  and/or media server  110  may also receive data from merchant database  108 . 
     Media server  110  may provide analysis of image and video content according to at least one machine-learning algorithm. For example, media server  110  may include a recognition engine  111  that performs the same functions as recognition engine  202 . Thus, recognition engine  111  may, as discussed above in regard to recognition engine  202 , analyze a video stream provided by content database  104  to recognize a product shown in a video frame of the video stream. However, recognition engine  111  may also perform additional functions. For example, recognition engine  111  may collect information from media devices  102  indicating how often products are incorrectly recognized, which products are correctly recognized, and which frame selection rates are effective and/or optimal for analyzing video content. Based on the collected information, media server  110  may provide updates to the media devices  102  (i.e., recognition engines  202 ) via network  112 , such that media devices  102  may adjust their recognition analysis based on the updates. For example, the updates may adjust one or more frame selection rates, at least one parameter of at least one machine-learning algorithm, a likelihood metric, a predetermined threshold, and the like. The updates may also adjust the processes that determine whether regions of a video frame correspond to a product. In some embodiments, each update may correspond to analysis of one or more video or image content titles, kinds, formats, and any other category of content. That is, different updates may be provided for and used on analyzing different categories or types of video/image content. 
     It should be noted that recognition engine  202  of media device  102  may also perform the additional functions discussed above in regard to recognition engine  111  in some embodiments. In some embodiments, recognition engine  202  of media device  102  may collect information from other media devices and/or media servers as to how often products are incorrectly recognized, which products are correctly recognized, and which frame selection rates are effective and/or optimal for analyzing video content. Recognition engine  202  may then update its recognition analysis to adjust one or more frame selection rates, at least one parameter, a likelihood metric, a predetermined threshold, and the like. The updates may also adjust the processes that determine whether regions of a video frame correspond to a product. Each update may correspond to analysis of one or more video and image content titles, kinds, formats, and any other category of content. 
     Media server  110  may also perform the same functions that media device  102  performs. Media device  102  will be described in more detail in relation to  FIG.  2   . Network  112 , in some embodiments, may comprise one or more interconnected wired or wireless data networks that receive data from one component (e.g., content database  104 ) and send it to another device (e.g., media device  102 ). For example, network  112  may be implemented as the Internet, a wired Wide Area Network (WAN), a wired Local Area Network (LAN), a wireless LAN (e.g., IEEE 802.11, Bluetooth® (see https://www.bluetooth.com/), etc.), a wireless WAN (e.g., WiMAX), a public switched telephone network (PSTN), an Integrated Services Digital Network (ISDN), an infrared (IR) link, a radio link, such as a Universal Mobile Telecommunications System (UMTS), Global System for Mobile Communications (GSM), Code Division Multiple Access (CDMA), broadcast radio network, cable television network, a satellite link, and the like. 
     It should be noted that one or more of media devices  102 , content database  104 , product database  106 , merchant database  108 , media server  110 , and network  112  may be provided in system  100 , as well as additional components or fewer components. 
       FIG.  2    is a diagram of media device  102 , consistent with disclosed embodiments. Media device  102  may include recognition engine  202 . Recognition engine  202  may include a frame selection module  206 , a partition module  208 , an analysis module  210 , and an accuracy module  212 . Media device  102  may also include a display interface  214 , a communication interface  216 , a data interface  218 , and a shopping cart module  220 . 
     Media device  102  may receive video and/or image content, which may be in the form of a video and/or image stream that contains video and/or image frames. The frames may be provided to recognition engine  202 . Frame selection module  206  may select one or more of the frames for recognition analysis. For example, frame selection module  206  may select one or more video frames of the plurality of video frames in a video stream according to a frame selection rate. The frame selection rate dictates how often a video frame is selected from a video stream for product recognition analysis. For example, frame selection module  206  may select every video frame of the video stream for recognition analysis, every other frame for recognition analysis, one out of every three frames for recognition analysis, one out of every thousand frames for recognition analysis, and so on. 
     A likelihood metric is used to measure the probability of whether recognition of a product in a video frame is accurate. The likelihood metric may be higher when the frame selection rate is higher. For example, the likelihood metric achieved when a high number, e.g., all of the video frames, or more than a threshold amount (e.g., 90 percent) of video frames of the video stream is selected for recognition analysis may be higher than the likelihood metric achieved when only one out of every five hundred video frames is selected for recognition analysis. This is because when a higher number of video frames are selected for analysis, more processing is needed to recognize products from more frames. However, a lower frame selection rate indicates that a more economical recognition analysis takes place, which may improve computational speed and efficiency. 
     The frame selection rate may be changed, i.e., increased or decreased. In one embodiment, frame selection module  206  may change the frame selection rate according to an input provided by a viewer via an external user device. For example, a viewer may watch video content received or streamed by media device  102 , and recognition engine  202  may initially perform a recognition analysis according to a first frame selection rate. However, the viewer may determine that the recognition analysis according to the first frame selection rate is incorrect. For example, the products recognized by recognition engine  202  may not correspond to the actual products, or recognition engine  202  fails to recognize products that should be recognized, and the like. Thus, the viewer may provide an input to media device i 02 via communication interface  216 , indicating that the frame selection rate should be increased. Frame selection module  206  may then increase the frame selection rate. This way, recognition engine  202  may analyze an increased number of video frames of the video stream, such that a likelihood metric for a region in a video frame will increase. Frame selection module  206  may alternatively decrease the frame selection rate according to an input to media device  102  via communication interface  216 , for example, when the viewer determines the recognition analysis is correct and the current frame selection rate may be reduced. 
     In another embodiment, frame selection module  206  may change the frame selection rate automatically according to accuracy analysis performed by accuracy module  212 . For example, accuracy module  212  may analyze whether products are being recognized in video frames. Accuracy module  212  may determine whether video quality is too low for accurate analysis recognition, or may determine that the viewable angle or location of a product in a video frame does not allow for accurate recognition. Accuracy module  212  may also determine whether data parameter(s) that are used to recognize regions within a video frame are accurate and provide correct region recognition. As described in more detail below, accuracy module  212  may also analyze the amount of processing being performed by recognition engine  202 , and whether adjusting a frame selection rate, providing different partitioning of a video frame, and/or using adjusted or different learned data parameter(s), for example, may improve computational efficiency while maintaining accurate recognition results. Based on the determinations, accuracy module  212  may determine, for example, that the frame selection rate should be adjusted, that partitions of video frames should be changed, and/or that data parameter(s) should be changed. Adjustments provided by accuracy module  212  may be categorized according to video/image content type, content format, content quality, content definition, content title, content category, and the like. 
     Partition module  208  may be configured to partition an input video or image frame into a number of image blocks. Each of the image blocks may contain a number of pixels. For example, partition module  208  may partition a video frame into a plurality of blocks. The blocks may be sized at a variety of different sizes, such as 16×16 pixels, 32×32 pixels, 32×16 pixels, and the like. The partitions may be any appropriate size, as known in the art Alternatively, partition module  208  may not partition the video frame into any blocks, i.e., keeping the entire video frame as one image block. Partition module  208  may adjust the partitions of video frames. Partition module  208  may apply the adjustments to all video frames, a majority of video frames, certain video frames, certain types of content, certain content formats and definitions, and the like. The frame partitions are adjusted for improving the accuracy of product recognition and based on analysis by accuracy module  212 . 
     Analysis module  210  may receive a video frame from partition module  208 . Analysis module  210  may analyze the video frame to recognize one or more regions of the video frame and recognize one or more products shown in a video frame. Analysis module  210  may use at least one machine-learning algorithm that uses at least one parameter. Analysis module  210  may receive the parameter from recognition engines  202  of other media devices  102  and/or from recognition engines  111  of one or more of media servers  110 . 
     The parameter may be member of a parameter set used by the at least one machine-learning algorithm. The parameter set may include a plurality of parameters, thus forming a vector of parameters. The machine-learning algorithm using a parameter or parameter set may recognize products that are present in video content The machine-learning algorithm may detect edges, patterns, colors, features, writing, shapes, and any other kind of descriptive elements that may be exhibited by products in video content, and may be used to recognize such descriptive elements that are present in video content. 
     The parameters may also be determined via information collected from product database  106 . For example, product information from product database  106  may be used to determine characteristics about products, and the parameters may reflect these determined characteristics. 
     The parameters may be applied to video frames via at least one machine-learning algorithm. Analysis module  210  may adjust the parameters as more video frames are analyzed. Analysis module  210  may make the adjustments based on error calculations that determine whether the machine-learning algorithm using the parameter is accurately detecting products in the content. Analysis module  210  may continuously revise and update the to provide improved recognition as more varied types of descriptive elements and video/image content are analyzed. 
     For example, a machine-learning algorithm using a set of parameters may be configured to detect a shape in a video frame. Tile algorithm may analyze a video frame to detect a shape, but may encounter a shape that has not been analyzed before. As such, analysis module  210  may adjust or revise the set of parameters, or add additional parameters to the algorithm, based on analysis of the new shape, to provide improved recognition in future-received video frames. Thereafter, when this new shape is present in future-received video frames, it will be better recognized by the machine-learning algorithm with the adjusted (and/or revised and/or added) parameter set. 
     A parameter and/or set of parameters may be received from at least one other media device  102  and/or at least one media server  110 . For example, analysis module  210  may receive information from at least one other media device  102  and/or media server  110  that indicates the value that a parameter should have for optimal product recognition. Such received information may be feedback data that refines at least one parameter, and may indicate how parameters of a machine-learning algorithm should be weighted. Analysis module  210  may use such feedback to refine parameters and/or parameter sets. Analysis module  210  may also further adjust parameters in relation to analyzed content, and may provide adjusted parameters to one or more other media devices i  02  and/or medias server  110  as feedback data. Thus, analysis module  210  may both use parameters that are learned by other media devices  102  and/or media servers  110  to recognize products in a video frame, and also provide data parameters based on its own learning to other media devices  102  and/or media servers  110 . 
     Data parameters may be specific to certain video and/or image content, titles, formats, quality, definitions, standards, and the like. Data may alternatively be configured for general use for varying kinds of video and images. 
     Analysis module  210  may analyze image and video content according to at least one machine-learning algorithm to recognize regions of a video frame. A region of a video frame may include a plurality of image blocks or a single image block. As such, analysis module  210  may recognize multiple regions in a video frame, or a single region in a video frame. 
     Analysis module  210  may recognize a first region within a selected video frame by using at least one machine-learning algorithm. The first region may include a single image block or a plurality of image blocks. Analysis module  210  may recognize the first region as follows. Analysis module  210  may run the machine-learning algorithm to detect features that are present in a video frame, such as edges, colors, and shapes, for example. Analysis module  210  may determine the region(s) of the frame where these features are located. Analysis module  210  may also determine a feature metric for a region of the frame. The feature metric may correspond to the number of features that are present in the region. Analysis module  210  may also determine a feature threshold. Analysis module  210  may recognize a region as a first region by comparing the feature metric of that region to the feature threshold. If the feature metric equals or exceeds the feature threshold, analysis module  210  identifies the region as being the first region, and determines that a product may exist in the first region. If the feature metric is less than the feature threshold, analysis module  210  determines that the region is not the first region, and continues to compare feature metrics of other regions of the video frame to the feature threshold. The size of the first region may depend on features that are present inside it. For example, the first region may include features that are present within it, as well as a buffer zone of image blocks that form a perimeter around the features in the first region. In another example, the perimeter of the first region may be set as a predetermined distance from the center of the first region. In another example, the perimeter of the first region may be set as a predetermined distance from a feature of the first region. 
     Once the first region is recognized, analysis module  210  may determine whether a product is accurately recognized from the first region. Analysis module  210  may make the determination by determining a first likelihood metric of image block(s) that are present in the first region, and comparing the first likelihood metric to a predetermined threshold. Analysis module  210  may determine the first likelihood metric based on information (e.g., product information, merchant information) determined about the potential product in the first region, and an error rate of the at least one analysis algorithm. Analysis module  210  may also determine the first likelihood metric based on the frame selection rate. If the first likelihood metric is greater than or equal to a predetermined threshold, then analysis module  210  deems the product to be accurately recognized, and shopping cart module  220  may populate a digital shopping cart and/or list of recognized products of the video content. However, if the first likelihood metric is less than the predetermined threshold, then analysis module  210  may perform further analysis of the frame to recognize the product. In particular, when the first likelihood metric is less than the predetermined threshold, frame selection module  206  may adjust the frame selection rate. For example, when the first likelihood metric is less than the predetermined threshold, frame selection module  206  may increase the frame selection rate, such that more frames are analyzed by analysis module  210 . 
     Recognizing the first region may reduce the area of the video frame that is analyzed, and may thereby reduce computational power that is required in the processing performed by analysis module  210 . For example, recognition of the first region may be an initial “rough” processing of the video frame that narrows down the region(s) of the video frame where a product (or products) may be located. Thereafter, further processing and analysis of the first region may be performed to recognize a first product. 
     To further process the first region of the video frame, analysis module  210  may use at least one machine-learning algorithm to analyze the first region. The machine-learning algorithm used for analyzing the first region may be the same as that applied to the video frame to recognize the first region, or may be different. Moreover, the parameters used for analyzing the first region may be the same as those used for recognizing the first region, or may be different. By performing this further analysis, analysis module  210  may further recognize a section within the first region. The section may include one image block or a plurality of image blocks. Analysis module  210  may recognize the section of the first region in a manner similar to that described above for determining the first region. 
     Once the section is recognized, analysis module  210  may determine whether a product is accurately recognized from the section. Specifically, analysis module  210  may make the determination by determining a second likelihood metric of image block(s) that are present in the section, and comparing the second likelihood metric to a predetermined threshold. Similar to the first likelihood metric, analysis module  210  may determine the second likelihood metric based on information (e.g., product information, merchant information) determined about the potential product in the section, and an error rate of the image recognition algorithms. Analysis module  210  may also determine tile second likelihood metric based on the frame selection rate. If the second likelihood metric is greater than or equal to a predetermined threshold, then analysis module  210  may deem the product to be accurately recognized, and shopping cart module  220  may thereby use the product to populate a shopping cart and/or list of recognized products of the video content. If the second likelihood metric is less than tile predetermined threshold, then analysis module  210  will perform further analysis to recognize the product, in a manner similar to that described above. Analysis module  210  may continue the analysis in iterations until the second likelihood metric reaches or exceeds the predetermined threshold. 
     Analysis module  210  may alternatively and/or in addition use image matching to recognize a product that is present in a video frame. Image matching may include comparing at least one image block of a video frame to a stored image block, where the stored image block is representative of a product. A stored image block may be stored in product database  106  and/or merchant database  108 . 
     Analysis module  210  may also use audio content received along with image and/or video content from content database  104  to recognize products in video frames. For example, in addition to analyzing video frame data to recognize a product, analysis module  210  may also analyze audio data to determine which products are located in a video and/or image frame. 
     For example, audio content may include speech, music, and/or sound data that corresponds to one or more products that are located in an image or video frame. Analysis module  210  may use speech recognition techniques to determine from the audio content that a certain product is present in the image or video frame. Accordingly, after such detection, analysis module  210  may adjust one or more of the learned parameters to weigh in favor of recognizing such a product. For example, if audio content indicates that a basketball is present in a video frame, analysis module  210  may weigh at least one parameter to recognize round or spherical objects and/or objects that are orange in color (since basketballs are usually orange) from the image or video frame. 
     Analysis module  210  may also use such audio analysis to refine product recognition. For example, if a recognized region has an associated likelihood metric, such audio analysis may analyze the associated audio content to confirm that a product in the region is accurately recognized. Such audio content analysis helps improve a first and/or second likelihood metrics of image blocks in a recognized region. 
     For each video/image content title, analysis module  210  may generate a title profile. A title profile may include some or all of the products that are recognized from a video/image content of the content title. For example, video content for a content title may include fifteen recognized products. Each product may be populated on a title profile for that respective content title. Accordingly, when a video and/or image content title has already been analyzed by an analysis module  210  and is streamed, analysis module  210  may use title profile information associated with the title to populate a shopping cart rather than performing recognition analysis on the content. Alternatively, analysis module  210  may perform recognition analysis to further recognize products that may not have been recognized in previous analysis. Moreover, a viewer may review and browse the products that have been recognized in a title and stored in the associated title profile. A viewer may review and browse the products stored in a title profile while viewing the corresponding title, or without viewing the corresponding title. 
     Analysis module  210  may further make suggestions of video and/or image content that a viewer may be interested in. For example, based on the types of products that a viewer is interested in (as determined based on, for example, a viewer&#39;s transaction data regarding previously purchased products, internet web-browsing history, social media data, email/instant messaging conversation data, and the like), analysis module  210  may determine that a viewer may be interested in a certain genre or type of content, or content that features certain actors and characters. Analysis module  210  may therefore provide suggestions to a viewer via display interface  214  regarding such suggestions. 
     Display interface  214  may be any appropriate interface that provides video and/or image stream data, including the video/image frames analyzed by recognition engine  202 , to an external display, such as a television display, computer display, monitor, touchscreen display, or the like. Alternatively, display interface  214  may be a display itself that displays the video and/or image stream data, including the video/image frames analyzed by recognition engine  202 , and may accordingly be a touchscreen display, surface display, or any other kind of display. 
     Communication interface  216  may be an interface that allows for the reception of inputs from a viewer or user. For example, communication interface  216  may be an interface that receives input from an external user device via a wireless or wired connection. For example, communication interface  216  may be configured to communicate via WiFi, Bluetooth®, infrared connectivity, or the like with an external user device. Communication interface  216  may allow a viewer or user to provide command inputs to media device  102  from an external user device. For example, communication interface  216  may provide the interface needed to receive frame selection rate feedback from a viewer&#39;s external user device when a viewer wishes to adjust the frame selection rate, and does so by inputting a command into the external user device. Communication interface  216  may provide the interface needed to receive an input from a viewer&#39;s external user device indicating a selection of a product in a shopping cart, a selection to purchase a product from the shopping cart, and any other selections interactions that a viewer wishes to make with video/image content Communication interface  216  may also provide such features via a wired connection to an external user device. Alternatively, when display interface  214  is a touchscreen, communication interface  216  may be configured to interpret inputs received via display interface  214  and make the selections or interactions specified by such inputs. 
     An external user device may be a smart phone, mobile phone, cell phone, tablet, computer, laptop computer, personal computer, smart watch, remote control device, and tile like. 
     Communication interface  216  may allow for user input that corrects recognition provided by analysis module  210 . For example, a product may be recognized by analysis module  210 , but the recognition may be erroneous. Accordingly, communication interface  216  may allow a viewer to provide an input (from an external user device, or any kind of input device, such as a mouse, keyboard, etc.) to identify a region of a video frame that includes a product, and specify what the product is. For example, a user may use a pointer on a display showing video content to draw an outline of a specific product in a video frame or tag a specific product in a video frame, may input a description of the outlined product, and/or may link a website address (for example, a URL) to the product description. The website located at the website address may specify further details about the product, and media device  102  and/or media server  110  may retrieve the details from the website. Data reflecting such corrections to product recognition may be aggregated from one or more media devices  102  and/or media servers  110 , and may be used by media device  102  and/or media server  110  to learn about the corrected product, and to update or train a parameter or set of parameters used by the machine-learning algorithm for recognizing the product. 
     Data interface  218  may be configured to interact with other media devices  102 , media server  110 , content database  104 , product database  106 , and merchant database  108 . For example, data interface  218  may receive video content from content database  104 , updated data parameter(s) from media server  110 , and/or product information from product database  106 . Data interface  218  may also receive data related to a viewer. For example, data interface  218  may receive transaction data regarding a viewer, internet browsing data of a viewer, instant messaging and email data of a viewer, social media data of a viewer, and the like. Data interface  218  may also send data from media device  102  to other devices, servers, databases, etc. 
     Shopping cart module  220  may be configured to populate a shopping cart based on products recognized from video content. For example, shopping cart module  220  may populate a shopping cart with products that are recognized from video frames over a predetermined time period. The predetermined time period may be the entire time duration of a video stream (e.g., the entire length of a movie or television show), or a selected portion of the video stream (e.g., minutes three through twelve of the video). Shopping cart module  220  may populate the shopping cart in real-time as video content is played and products are recognized. Shopping cart module  220  may also populate the shopping cart according to a delay as video content is played and products are recognized. Tile delay may be related to a time needed to process tile video content for product recognition. Shopping cart module  220  may also pre-populate the shopping cart with products that have previously been recognized from the video content by a media device  102  or a media server  110 . 
     Shopping cart module  220  may be populated with one or more products that are recognized from video frames. For example, based on a viewer&#39;s transaction data regarding previously purchased products, internet web-browsing history, social media data, email and instant messaging data, and the like, certain recommended products that are recognized in video frames may be populated in the shopping cart by shopping cart module  220 . Such recommended products may be set for a plurality of viewers. For example, viewers may have personalized shopping cart profiles generated for them by shopping cart module  220 . Such profiles utilize data specific to individual viewers, and may be based on transaction data, internet web-browsing history, social media data, email/instant messaging conversation data, products previously recognized in other video and/or image content, and the like. Thus, shopping cart module  220  may determine that certain recognized products in video content should be populated in a first shopping cart of a first viewer, and certain other products should be populated in a second shopping cart of a second viewer. A viewer may adjust a viewer profile. For example, a viewer may adjust which products Ile is interested in regardless of transaction data, internet web-browsing history, social media data, email/instant messaging conversation data, and the like. Moreover, a viewer may adjust a price range of products he is interested in, brands a viewer is interested in, product types a viewer is interested in, and the like. 
     Shopping cart module  220  may also determine which products should be populated in a shopping cart by analyzing content viewing history of a viewer. For example, a viewer may be a fan of movies that feature characters who use futuristic electronic gadgets and wear designer clothing, and the viewer may have a content viewing history of viewing such movies. Thus, when products and items related to electronic gadgets and designer clothing are recognized in video/image content, such items may be populated in a shopping cart for tile viewer. 
     Shopping cart module  220  may prioritize products that have been recognized and populated in the shopping cart by ranking the products in certain positions on the list. The prioritization may be based on a determined interest level of the viewer in the recognized product. For example, while a viewer may be interested in multiple products that are recognized, the viewer may prioritize a first product higher than a second product for purchasing. Shopping module  220  may determine an interest level of the viewer in recognized products in a shopping cart by analyzing the viewers&#39; transaction data, internet web-browsing history, social media data, and the like. 
     Shopping cart module  220  may process data collected from product database  106  and/or merchant database  108  that is related to a recognized product. Shopping cart module may aggregate collected data from product database  106  and/or merchant database  108 , and may include a subset of tile aggregated data with the product in tile shopping cart. The subset of data may include descriptive data about the product, such as price, information, brand, merchants, availability, and the like. 
     In one example, a viewer may have made several purchases at a shoe store for a specific brand of men&#39;s sneakers. The internet web-browsing history for this viewer may indicate that the viewer has visited a number of shoe vendor websites, and the social media data for this viewer may indicate that the viewer has “liked” asocial media page of the specific brand. Thus, shopping cart module  220  may determine that a recommended product for the viewer is a men&#39;s sneaker made by the specific brand. Thus, when video content is analyzed by recognition engine  202 , and analysis module  210  recognizes a men&#39;s sneaker made by the specific brand, a shopping cart for the viewer may be populated with the sneaker by shopping cart module  220 . Shopping cart module  220  may process data collected from product database  106  and/or merchant database  108  that is related to the sneaker. For example, shopping cart module  220  may process the collected data from product database  106  and/or merchant database  108  to determine website vendors and brick and mortar stores that sell the sneakers and/or have the sneakers in stock, information about the sneakers (e.g., where they are made, reviews, how they fit, recommended sizing, etc.), and how much they cost. Shopping cart module  220  may personalize the product that is placed in the shopping cart. For example, data regarding the viewer&#39;s size, color preferences, and the like, related to the product, may be determined for the viewer from one or more of the transaction data, internet browsing history, social media data, and/or other collected data of the viewer. In the current example, one or more shoe sizes of previous shoes purchased by the viewer may be determined from previous transaction data, and color preferences of the viewer may be determined from the previous transaction data. Thus, shopping cart module  220  may recommend that the viewer purchase the shoe in the shopping cart in a specific shoe size (or shoe size range) and color from such data. 
     Shopping cart module  220  may also recommend one or more other products that a viewer may be interest in based on the viewer&#39;s transaction data regarding previously purchased products, internet web-browsing history, social media data, email/instant messaging conversation data, and the like. For example, while a certain type of shoe may be recognized from video content and populated in a shopping cart for the viewer, shopping cart module  220  may recommend similar kinds of the products or different variations of the product to the viewer. 
     Viewers may purchase items directly from the shopping cart via shopping module  220 . For example, a viewer may interact with shopping module  220  via a user interface displayed on the same display as the video content, and may confirm that they wish to purchase the product directly from the shopping cart. Alternatively, when a viewer wishes to purchase a product in the shopping cart, the viewer may be directed to a third party vendor website to purchase the product. Purchases may be made in real-time as a viewer is watching content, or a viewer may save a product in the shopping cart to purchase at a later time. A shopping cart may be accessible from a multitude of external user devices at a later time or while content is being streamed/played. Purchasing may be made via stored purchase credentials of the viewer (or somebody else), or by a user inputting payment information and credentials into a media device via communication interface  218 . User input for purchasing may be made via inputs made on an external user device. 
     Shopping cart module  220  may be configured to communicate via communication interface  216  to an external user device. For example, via communication interface  216 , shopping cart module  220  may communicate shopping cart information to an external user device. The external user device may then display the shopping cart on the external user device. The shopping cart may be displayed and populated while video content is streamed or played. The shopping cart may be pre-populated as previously discussed. Shopping cart module  220  may also interact with one or more advertisement servers that contain advertisement content. For example, based on the recognized products that populate a shopping cart, advertisements for such products that are in the shopping cart, or related products, may be provided to media device  102  for display to the viewer. The viewer&#39;s transaction data, internet web-browsing history, social media data, email/instant messaging conversation data, and the like may also be used by shopping cart module  220  to determine advertisements that a viewer may be interested in, and that should be displayed to the viewer. Advertisements that are collected may be displayed during advertisement display periods that occur before content is viewed, after content is viewed, or in advertisement segments that are determined to occur during content streaming (i.e., commercial breaks during content streaming). 
     Shopping cart module  220  may link the product to one or more merchants who sell the product. A viewer may then select the link to view the product at the merchant&#39;s website. The one or more merchants may be determined via merchant database  108 . The one or more merchants may be selected as preferred merchants who are preferentially linked to a shopping cart by shopping cart module  220 . A preferred merchant may be determined based on one or more of a revenue generation agreement that specifies how a content provider or other entity operating media device  102  or media server  110  benefits from purchases or visits made by a viewer at a certain merchant, a referral agreement between a merchant and the content provider or other entity operating media device  102  or media server  110 , an availability of the product or product inventory, and a price of the product, for example. If a product that that is placed in a shopping cart does not have any associated advertisements, then the linking to merchant website may provide a determination as to advertisement demand based on the traffic of a viewer to a merchant&#39;s website, and provide a determination that an advertisement should be created for the product because there is demand to purchase such product. 
       FIG.  3    is a flowchart of an automated object recognition method  300  consistent with disclosed embodiments. For example, method  300  may be performed by media device  102  and/or media server  110  to recognize products in video and/or image content, and thereafter add one or more recognized products to a digital shopping cart. While the following description presumes method  300  is performed by media device  102 , some or all of the steps of method  300  may also be performed by media server  110 , which then sends the result of the product recognition to a media device  102  for viewing by a viewer. 
     In step  310 , media device  102  (or media server  110 ) receives content. The content may be video content or image content received from content database  104 . For example, the content may be a video stream including one or more video frames. As another example, the content may be image content including images from a website, photo album, Internet image gallery, and the like. 
     In step  320 , frame selection module  206  selects a frame of the received content. For image content, an image frame is selected. For video content, one or more video frames of a video stream may be selected. For example, as discussed above, frame selection module  206  of a media device  102  may select one or more video frames from a plurality of video frames in a video stream according to a frame selection rate. The frame selection rate may determine how often a video frame in a video stream is selected for product recognition analysis. For example, the frame selection rate may specify that frame selection module  206  should select every video frame of the video stream for recognition analysis, every other frame for recognition analysis, one out of every three frames for recognition analysis, one out of every fifty frames for recognition analysis, one out of every one-hundred frames, and so on. Frame selection module  206  may change the frame selection rate according to viewer input or based on a determination of media device  102  and/or media server  110  about whether the product recognition is accurate. 
     In step  330 , partition module  208  partitions a frame of the received content. For example, as discussed above, partition module  208  may partition an input video or image frame into a number of image blocks that contain a number of pixels, respectively. For example, partition module  208  may partition a video frame into a plurality of image blocks. The plurality of image blocks may be sized at a variety of different sizes, such as 16×16 pixels, 32×32 pixels, 32×16 pixels, and the like. The partitions may be any size known in the art. Alternatively, partition module  208  may not partition the video frame but may treat the entire frame as one image block. Partition module  208  may adjust the partitions of video frames. The adjustments may be applied to all video frames, certain video frames, certain types of content, certain content formats and definitions, and the like. 
     In step  340 , analysis module  210  recognizes a first region of a video frame using at least one machine-learning algorithm. The first region may include a single image block or a plurality of image blocks. The first region may correspond to an area of a video frame where a product may be located. The first region may be recognized as discussed above. 
     In step  350 , analysis module  210  determines whether a product is accurately recognized from the first region. Specifically, analysis module  210  may determine a first likelihood metric of image block(s) that are present in the first region, and compare the first likelihood metric to a predetermined threshold. Analysis module  210  may determine the first likelihood metric based on information, such as product information and merchant information, determined about the potential product in the first region, and an error rate of the image recognition algorithms. Analysis module  210  may also determine the first likelihood metric based on the frame selection rate. 
     If the first likelihood metric is greater than or equal to a predetermined threshold, then analysis module  210  deem the product to be accurately recognized, and method  300  may continue to step  360 . However, if the first likelihood metric is less than the predetermined threshold, then further analysis is needed to recognize the product, and method  300  returns to step  340  for further recognition of a frame region. The further recognition of a region of the frame at step  340  may include recognizing a section within the first region of the frame and determining a second likelihood metric, or recognizing a different region of a frame that was not previously recognized during the first iteration at step  340 . 
     Alternatively, threshold analysis with the first likelihood metric may not be performed after the first region is recognized. Instead, analysis module  210  may repeat step  340  a predetermined number of times to refine accuracy of a recognized frame region. For example, a first region may be identified. Then, a section may be identified inside the first region, where the section may be a smaller region of image blocks containing a product compared to the first region. The section may not contain other products, items, or elements that are present in the video frame because the section may only include image blocks that correspond to a product in the video frame. 
     Analysis module  210  may recognize a region containing a first product in a video frame through an iterative process. For example, in step  340 , analysis module  210  may recognize a first region that includes a first product and a second product. The first product may be a wrist watch on a person&#39;s right wrist, and the second product may be a cell phone in the person&#39;s right hand. While analysis module  210  may determine that these products are located in the first region, the accuracy of recognizing the products to determine information about the products (such as brand, model, etc.) may be determined as too low for accurate product recognition in step  350 , and the locations of the products within the first region may not be accurately determined. Thus, step  340  may be repeated. In repeated step  340 , analysis module  210  may recognize one or more sections within the first region by determining refined locations of the first and second products. For example, analysis module  210  may determine that the first product wrist watch is located in a section of the first region, and is located on a person&#39;s right wrist This determination may be more accurate than the processing that determined the first region because rather than processing the entire video frame to determine the watch&#39;s location, only the first region of the video frame (which is a smaller region than the entire video frame) may be analyzed. Analysis module  210  may determine that the right wrist of the person is associated with a right hand (and vice versa) via learning of other video content and/or parameters of at least one machine-learning algorithm. For example, the learning may be provided via analysis of other video content that shows a product being held in a person&#39;s hand. Thus, analysis module  210  may then focus analysis for recognition of the second product in a region near the first product&#39;s location (e.g., in a region that corresponds to the person&#39;s right hand) because a probability of a second product being located in this section of the first region may be higher relative to probabilities of a product being in other sections of the first region. The section containing a second product may therefore be recognized based on a section containing the first product. 
     In step  360 , shopping cart module  220  may populate a list with the identified product and display information identifying the product in the list The displaying may include displaying the information in a digital shopping cart that is populated with the recognized product. For example, shopping cart module  220  may be configured to populate a digital shopping cart based on products recognized in video content. 
       FIGS.  4 A through  4 C  show an exemplary video frame  405 , and illustrate the processes that media device  102  and/or media server  110  perform to recognize a product in a video frame. 
       FIG.  4 A  is a schematic diagram of a video frame  405  consistent with disclosed embodiments. Video frame  405  may be a video frame of a video stream received by media device  102  and/or media server  110  from content database  104 . Media device  102  and/or media server  110  may partition video frame  405  into one or more image blocks  410 . As discussed above, each image blocks  410  may include a specified number of pixels. Video frame  405  may include a number of items. For example, video frame  405  may include a car  415  and a person  420 . Person  420  may be wearing a certain kind of clothing, clothing of a certain color, clothing of a certain brand, and the like. 
       FIG.  4 B  is a schematic diagram of video frame  405  consistent with disclosed embodiments where a first region  425  is recognized. A first region may include all, some, or only one of a product or item located in a video frame. In video frame  405 , first region  425  includes both car  415  and person  420 . As discussed above, media device  102  and/or media server  110  may use at least one machine-learning algorithm to recognize regions of a video frame, such as a first region  425 . Media device  102  and/or media server  110  may then determine a first likelihood metric of the images blocks  410  present in first region  425  and compare the first likelihood metric to a predetermined threshold to determine whether a product can be recognized accurately from first region  425 . As shown in  FIG.  4 B , the first region  425  is a subset region of video frame  405 . Thus, media device  102  and/or media server  110  may focus on first region  425  to recognize car  415  and clothing worn by person  420 , thereby saving the analysis on other regions of video frame  405 . As such, the analysis to recognize car  415  and clothing worn by person  420  need not to be performed on entire video frame  405 . This may help provide more efficient video processing and reduce processing overhead. 
       FIG.  4 C  is a schematic diagram of video frame  405  consistent with disclosed embodiments where a section  430  is recognized within first region  425 . As shown by  FIG.  4 C , section  430  contains car  415 , and does not include person  420 . Section  430  may be determined by further processing of first region  425 . For example, media device  102  and/or media server  110  may use at least one machine-learning algorithm utilizing at least one learned data parameter to recognize section  430  within first region  425 . The machine-learning algorithm and/or parameter may be the same as that used to recognize first region  425 , or may be different. If different, media device  102  and/or media server  110  may adjust the machine-learning algorithm and/or parameter based on one or more of the shapes, edges, colors, items, products, text, and any other characteristic of image blocks that are present in first region  425 . Media device  102  and/or media server  110  may then determine a second likelihood metric of the images blocks  410  present in second region  425  and compare the second likelihood metric to a predetermined threshold to determine whether a product can be recognized accurately from section  430 . The second likelihood metric may correspond to one or more of the image blocks that are present in section  430 . If the second likelihood metric exceeds or meets the predetermined threshold, then media device  102  and/or media server  110  determines the one or more image blocks of section  430  as corresponding to a product. The recognized product may then be available for populating in a shopping cart. 
       FIG.  5    is a schematic diagram showing a frame selection rate consistent with disclosed embodiments. Referring to  FIG.  5   , a plurality of video frames  510 - 560  are shown. Each of video frames  510 - 560  may include video content that includes at least one product, and may be part of a video stream that includes more video frames. In some embodiments, analysis module  210  is not required to process each video frame to accurately recognize a product within the video content. Instead, analysis module  210  may only need to analyze one out of every four frames, one out of every two frames, or the like, to provide accurate product recognition. Thus, frame selection module  206  may determine a frame selection rate that indicates how often a frame of a video stream is selected for analysis by analysis module  210 . Analyzing the selected frames rather than ail the video frames within the video content may reduce processing overhead and provide more efficient processing. For example, the frame selection rate may indicate that every other video frame of a video stream is analyzed by analysis module  210 . Thus, in this case, frames  510 ,  530 , and  550  may be analyzed, while frames  520 ,  540 , and  560  need not to be analyzed. It should be noted that the frame selection rate may be set to analyze each frame in a video stream. 
       FIG.  6 A  is an illustration of a graphical user interface  600 , consistent with disclosed embodiments. Interface  600  may be an example of what is seen by a viewer on a display of a media device  102  or a display connected to media device  102 . Interface  600  may include a content region  605  and a shopping cart region  610 . Content region  605  may display video and/or image content. In  FIG.  6 A , content region  605  includes car  415 , person  420 , and bicycle  615 . 
     A shopping cart  610  may be provided as an overlay graphic that overlays content  605  as content  605  is displayed and/or streamed. Shopping cart  610  may be transparent, and when shopping cart  610  overlays content  605 , content  605  displayed behind shopping cart  610  may still be viewable. Alternatively, shopping cart  610  may be opaque, and when shopping cart  610  overlays content  605 , content  605  displayed behind shopping cart  610  may be obscured from a viewer. Shopping cart  610  may fade into and out of view on interface  600 . For example, shopping cart  610  may fade into view from being non-visible. Also, when shopping cart  610  is initially visible, shopping cart  610  may fade out of view and eventually disappear. 
     Shopping cart  610  may alternatively be provided on a side of content  605  and not overlaying content  605 . For example, shopping cart  610  may be displayed to the left, right, above, or below content  605  so as to not overlay content  605 . 
     Shopping cart  610  may appear as each product in a video and/or image stream is recognized, or when certain products are recognized. Alternatively, shopping cart  610  may appear at a predetermined interval, such as every five minutes or every ten minutes, for example, during streaming or viewing of content. Alternatively, shopping cart  610  may always be visible. Alternatively, shopping cart  610  may appear when prompted by a user. For example, shopping cart  610  may appear as a result of user input into media device  102  via communication interface  216 . 
     Shopping cart  610  may include descriptions of recognized products. For example, as shown in  FIG.  6   , shopping cart  610  may include descriptions of the recognized car  415 , suit on person  420 , and bicycle  615 . The descriptions may be collected from product database  106  and/or merchant database  108 . Further descriptions other than those shown in  FIG.  6    may be displayed by shopping cart  610 . For example, vendors (including online vendors and brick and mortar vendors), product availability, and alternate sizes/colors, for example, may be displayed for each recognized product. 
     Shopping cart  610  may also include recommendations based on products that have been recognized. For example, shopping cart  610  may display a recommendation for one or more products that a viewer may be interested in. As discussed, the recommendations may also be based on a viewer&#39;s transaction data regarding previously purchased products, internet web-browsing history, social media data, email/instant messaging conversation data, and the like. For example, as shown in  FIG.  6   , shopping cart  610  includes a recommendation for a suit of the same brand as the suit recognized in content  605 , but with a different model and a different color from the suit recognized in content  605 . 
     Shopping cart  610  may also include one or more selection icons. For example, in shopping cart  610 , a selection icon  620  is provided for checking out and completing a purchase of products that are located in shopping cart  610 , and a selection icon  625  is provided for clearing all (or some) of the recognized products from shopping cart  610 . Viewer activation of selection icon  620  may direct a viewer to a third party website for purchasing one or more of the products in shopping cart  610 , or may allow a viewer to directly purchase one or more of the products in shopping cart  610 . Shopping cart  610  may allow a user to purchase products that are populated in shopping cart  610  in real time as content is streaming/playing, and may provide an option for purchasing in response to a displayed product Shopping cart  610  may be displayed on an external user device, such as via an application program on the external user device, to allow a viewer to shop in real time via the external user device. 
       FIG.  6 B  is an illustration of a graphical user interface  630 , consistent with disclosed embodiments. Interface  630  may be an example of what is seen by a viewer on a display of a media device  102  or a display connected to media device  102 . Interface  630  may include a content region  605  and a widget region  635 . Content region  605  may display video and/or image content. In  FIG.  6 B , content region  605  includes car  415 , person  420 , and bicycle  615 . Widget region  635  may display each product in a video stream in real time as the product is recognized or after the product is recognized. In  FIG.  6 B , bicycle  615  is located in a “widget” region  635 , indicating that bicycle  615  has been recognized. Widget region  635  may be located in any portion of interface  630 , and may be moveable by a viewer (via input into media device  102 ). Widget region  635  may also move automatically to areas of content region  605  that do not feature products, movement, people, or the like. Widget region may be selectable by a viewer. For example, if a viewer selects widget region  635  (for example, by a click, selection, or any other input) a shopping cart (e.g., shopping cart  610 ) may be displayed in interface  630 , a viewer may be directed to a merchant who sells bicycle  615 , or a viewer may be directed to a website that includes product information about bicycle  615 . 
     Widget region  635  may be provided as an overlay graphic that overlays content  605  as content  605  is displayed and/or streamed. Widget region  635  may be transparent, such that when Widget region  635  overlays content  605 , content  605  displayed behind Widget region  635  may still be viewed. Alternatively, widget region  635  may be opaque, such that when widget region  635  overlays content  605 , content  605  displayed behind widget region  635  may be obscured from a viewer. Widget region  635  may fade into and out of view on interface  600 . For example, widget region  635  may fade into view from being non-visible. Also, when widget region  635  is initially visible, widget region  635  may fade out of view and eventually disappear. 
     Widget region  635  may alternatively be provided on a side of content  605  and not overlay content  605 . For example, widget region  635  may be displayed to the left of, right of, above, or below content  605  so as to not overlay content  605 . 
     Widget region  635  may appear as each product in a video and/or image stream is recognized. Alternatively, widget region  635  may appear on a predetermined basis, such as when certain products are recognized in a video and/or image stream, or every five minutes or every ten minutes, for example, during streaming or viewing of content. Alternatively, Widget region  635  may always be visible. Alternatively, Widget region  635  may appear when prompted by a user. For example, Widget region  635  may appear as a result of user input into media device  102  via communication interface  216 . 
     Media device  102  and/or media server  110  may include a memory and a processor. Memory may be a volatile or non-volatile, magnetic, semiconductor, tape, optical, removable, non-removable, or other type of storage device or tangible (i.e., non-transitory) computer-readable medium that stores one or more program(s). The memory may store program instructions. 
     Program(s) consistent with one or more disclosed embodiments may include operating systems (not shown) that perform known operating system functions when executed by one or more processors. By way of example, the operating systems may include Microsoft Windows™ Unix™, Linux™, Apple™ operating systems, or other types of operating systems. Accordingly, disclosed embodiments may operate and function with computer systems running any type of operating system. Mobile device  102  and/or media server  110  may also include communication software that, when executed by a processor, provides communications with network  112 , such as Web browser software, tablet, or smart hand held device networking software, etc. In some embodiments, programs may include basic operating logic for performing functions. 
     A processor may be one or more known processing devices, such as a single- or multiple-core processor that executes parallel processes simultaneously. For example, a processor may be a single core processor configured with virtual processing technologies. In certain embodiments, a processor may use logical processors to simultaneously execute and control multiple processes. A processor may implement virtual machine technologies, or other known technologies to provide the ability to execute, control, run, manipulate, store, etc. multiple software processes, applications, programs, etc. In another embodiment, a processor may include a multiple-core processor arrangement (e.g., dual core, quad core, etc.) configured to provide parallel processing functionalities to execute multiple processes simultaneously. One of ordinary skill in the art would understand that other types of processor arrangements could be implemented that provide for the capabilities disclosed herein. 
     Media device  102  and/or media server  110  may include one or more storage devices configured to store information used by a processor (or other components) to perform certain functions related to the disclosed embodiments. In one example, media device  102  and/or media server  110  may include memory that includes instructions to enable a processor to execute one or more applications, and any other type of application or software known to be available on computer systems. Alternatively or additionally, the instructions, application programs, etc., may be stored in an internal database or external storage (not shown), such as one or more database or memory accessible over network  112 . 
     Databases discussed herein or other external storage may be a volatile or non-volatile, magnetic, semiconductor, tape, optical, removable, non-removable, or other type of storage device or tangible (i.e., non-transitory) computer-readable medium. Databases may be controlled by memory controller devices (e.g., server(s), etc.) or software, such as management systems, Microsoft SOL databases, SharePoint™databases, Oracle™ databases, Sybase™ databases, or other databases. 
     The foregoing description has been presented for purposes of illustration. It is not exhaustive and is not limited to the precise forms or embodiments disclosed. Modifications and adaptations of the embodiments will be apparent from consideration of the specification and practice of the disclosed embodiments. For example, the described implementations include hardware and software, but systems and methods consistent with the present disclosure can be implemented as hardware alone. 
     Computer programs based on the written description and methods of this specification are within the skill of a software developer. The various programs or program modules can be created using a variety of programming techniques. For example, program sections or program modules can be designed in or by means of Java™ (see https://docs.oracle.com/javase/8/docs/technotes/guides/languagei), C, C++, assembly language, or any such programming languages. One or more of such software sections or modules can be integrated into a computer system, non-transitory computer-readable media, or existing communications software. 
     Moreover, while illustrative embodiments have been described herein, the scope includes any and all embodiments having equivalent elements, modifications, omissions, combinations (e.g., of aspects across various embodiments), adaptations or alterations based on the present disclosure. The elements in the claims are to be interpreted broadly based on the language employed in the claims and not limited to examples described in the present specification or during the prosecution of the application, which examples are to be construed as non-exclusive. Further, the steps of the disclosed methods can be modified in any manner, including by reordering steps or inserting or deleting steps. It is intended, therefore, that the specification and examples be considered as exemplary only, with a true scope and spirit being indicated by the following claims and their full scope of equivalents.