The present disclosure generally relates to the field of information technology. In some embodiments, the disclosure relates to identifying and analyzing a customer queue.
Tracking subjects through a real world space offers benefits in a variety of areas and applications, including commercial, business, corporate, security, government, science, and other environments. For example, brick and mortar businesses have long desired to gather data that would allow the businesses to better understand customer behavior. Such data may be used to make decisions with regard to merchandising, advertising, pricing, staffing, designing of new in-store concepts, and understanding how customers interact within a store. For example, the data may be used to understand how customers stand in a queue, interact with store displays, make correlations with sales data, calculate conversion rates, identify good locations for merchandise, identify poor performing products and locations, improve store layout, provide targeted promotions, and much more.
Providing traditional brick and mortar business retailers with a data-driven approach can help the businesses provide the best possible shopping experience, stay ahead of constantly evolving customer needs, reduce cost, and significantly increase revenue per square foot. For example, businesses may seek to improve their customers' shopping experience by optimizing an amount of time a customer waits in a customer queue to make a purchase at a point of sale location (e.g., a cash register, store employee, self checkout kiosk, etc.). As such, a system and method to identify a customer queue and then analyze data associated with the identified customer queue would facilitate businesses seeking to improve the shopping experience for their customers.
In some embodiments, customers in a queue may be identified. For example, a first customer and a second customer may be identified in the queue in at least one image. Location coordinates corresponding to locations of the first customer and the second customer in the at least one image may be determined. A line based on the location coordinates of the first customer and the second customer may be calculated. Furthermore, a join zone may be defined at a location coordinate that is on the calculated line. In some embodiments, a third customer may be detected to have entered a location of at least one additional image corresponding to the location coordinate of the join zone and a determination may be made that the third customer has joined the queue in response to the third customer entering into the location corresponding to the join zone.
In some embodiments, a second line is calculated in response to the determination that the third customer has joined the queue, the second line is based on location coordinates of the first customer, second customer, and third customer. The line may be calculated based on a first equation while the second line is calculated based on a second equation. As such, the first equation may be different than the second equation. Furthermore, the second equation may be based on an ordinary least squares linear regression.
In some embodiments, a second join zone may be defined at location coordinates that are on the calculated second line. For example, the location coordinates for the second join zone may be placed beyond the location coordinates of the third customer. Additionally, an amount of space between the location coordinates for the second join zone and the third customer may be based on an amount of space between location coordinates of the first, second, and third customers. The boundaries of the second join zone may be based on an amount of distance the location coordinates of the first, second, and third customers are from the second line.
In some embodiments, the determination of the third customer joining the queue may further be in response to the third customer being in the location corresponding to the join zone for at least a threshold amount of time.
Communication network 124 may itself be comprised of many interconnected computer systems and communication links. Communication links 128 may be hardwire links, optical links, satellite or other wireless communications links, wave propagation links, or any other mechanisms for communication of information. Various communication protocols may be used to facilitate communication between the various systems shown in
Distributed computer network 100 in
Client systems 113, 116, and 119 enable users to access and query information stored by server system 122. In a specific embodiment, a “Web browser” application executing on a client system enables users to select, access, retrieve, or query information stored by server system 122. Examples of web browsers include the Internet Explorer® browser program provided by Microsoft® Corporation, and the Firefox® browser provided by Mozilla® Foundation, and others.
Mass storage devices 217 may include mass disk drives, floppy disks, magnetic disks, optical disks, magneto-optical disks, fixed disks, hard disks, CD-ROMs, recordable CDs, DVDs, recordable DVDs (e.g., DVD-R, DVD+R, DVD-RW, DVD+RW, HD-DVD, or Blu-ray Disc®), flash and other nonvolatile solid-state storage (e.g., USB flash drive), battery-backed-up volatile memory, tape storage, reader, and other similar media, and combinations of these.
A computer-implemented or computer-executable version of the disclosure may be embodied using, stored on, or associated with computer-readable medium or non-transitory computer-readable medium. A computer-readable medium may include any medium that participates in providing instructions to one or more processors for execution. Such a medium may take many forms including, but not limited to, nonvolatile, volatile, and transmission media. Nonvolatile media includes, for example, flash memory, or optical or magnetic disks. Volatile media includes static or dynamic memory, such as cache memory or RAM. Transmission media includes coaxial cables, copper wire, fiber optic lines, and wires arranged in a bus. Transmission media can also take the form of electromagnetic, radio frequency, acoustic, or light waves, such as those generated during radio wave and infrared data communications.
For example, a binary, machine-executable version, of the software of the present invention may be stored or reside in RAM or cache memory, or on mass storage device 217. The source code of the software may also be stored or reside on mass storage device 217 (e.g., hard disk, magnetic disk, tape, or CD-ROM). As a further example, code may be transmitted via wires, radio waves, or through a network such as the Internet.
Arrows such as 322 represent the system bus architecture of computer system 201. However, these arrows are illustrative of any interconnection scheme serving to link the subsystems. For example, speaker 320 could be connected to the other subsystems through a port or have an internal direct connection to central processor 302. The processor may include multiple processors or a multicore processor, which may permit parallel processing of information. Computer system 201 shown in
Computer software products may be written in any of various suitable programming languages, such as C, C++, C#, Pascal, Fortran, Peri, Matlab®, SAS, SPSS, JavaScript®, AJAX, Java®, SQL, and XQuery (a query language that is designed to process data from XML files or any data source that can be viewed as XML, HTML, or both). The computer software product may be an independent application with data input and data display modules. Alternatively, the computer software products may be classes that may be instantiated as distributed objects. The computer software products may also be component software such as Java Beans® (from Oracle Corporation) or Enterprise Java Beans® (EJB from Oracle Corporation). In a specific embodiment, the present disclosure provides a computer program product which stores instructions such as computer code to program a computer to perform any of the processes or techniques described.
An operating system for the system may be one of the Microsoft Windows® family of operating systems (e.g., Windows 95®, 98, Me, Windows NT®, Windows 2000®, Windows XP®, Windows XP® x64 Edition, Windows Vista®, Windows 7®, Windows CEO, Windows Mobile®), Linux, HP-UX, UNIX, Sun OS®, Solaris®, Mac OS X®, Alpha OS®, AIX, IRIX32, or IRIX64. Other operating systems may be used. Microsoft Windows® is a trademark of Microsoft® Corporation.
Furthermore, the computer may be connected to a network and may interface to other computers using this network. The network may be an intranet, internet, or the Internet, among others. The network may be a wired network (e.g., using copper), telephone network, packet network, an optical network (e.g., using optical fiber), or a wireless network, or any combination of these. For example, data and other information may be passed between the computer and components (or steps) of the system using a wireless network using a protocol such as Wi-Fi (IEEE standards 802.11, 802.11a, 802.11b, 802.11e, 802.11g, 802.11i, and 802.11n, just to name a few examples). For example, signals from a computer may be transferred, at least in part, wirelessly to components or other computers.
In an embodiment, with a Web browser executing on a computer workstation system, a user accesses a system on the World Wide Web (WWW) through a network such as the Internet. The Web browser is used to download web pages or other content in various formats including HTML, XML, text, PDF, and postscript, and may be used to upload information to other parts of the system. The Web browser may use uniform resource identifiers (URLs) to identify resources on the Web and hypertext transfer protocol (HTTP) in transferring files on the Web.
The network is as shown in
In some embodiments, the store may be a retail space (e.g., “brick and mortar” store) and the subjects are people or human beings. For example, the subjects can include, but are not limited to, customers, consumers, or shoppers, salespersons, adults, children, toddlers, teenagers, females, males, etc. The retail space may be, but is not limited to, a grocery store, supermarket, clothing store, jewelry store, department store, discount store, warehouse store, variety store, mom-and-pop, specialty store, general store, convenience store, hardware store, pet store, toy store, mall, etc.
A feature of the system provides, given a set of movement traces (i.e., locations over time) for customers in a retail environment, analyzing movement patterns in several ways. The system can use the analysis to identify customer queues and to perform statistical analysis on the customers and/or customer queues. In some embodiments, the movement or tracking data is placed into various data structures (e.g., a spatial histogram or star graph). The system derives a set of metrics related to the data structures. Each metric can be a single numerical result that quantifies movement patterns in some unique way. Taken together, these metrics help to describe the movement pattern under examination and to identify a customer queue.
A specific implementation of the system is referred to as RetailNext from RetailNext, Inc. of San Jose, Calif. This system provides a comprehensive in-store analytics platform that pulls together a comprehensive set of information for retailers to make intelligent business decisions about their retail locations and visualizes it in a variety of automatic, intuitive views to help retailers find those key lessons to improve the stores. The system provides the ability to connect traffic, dwell times, and other shopper behaviors to actual sales at the register. Users can view heat maps of visitor traffic, measure traffic over time in the stores or areas of the stores, and connect visitors and sales to specific outside events. The system can provide micro-level conversion information for areas like departments, aisles, and specific displays, to make directly actionable in-store measurement and analysis.
The tracking server may be responsible for tracking customers as they move throughout the store. The tracking server can track a particular customer as the customer moves across the different camera views of each camera. A track is a path that a customer followed during the customer's visit to the store. Tracking data is collected and stored in tracking database 450.
The analysis server includes a conversion engine 470, a comparison module 475, and statistical tools 480. The conversion engine is responsible for converting a track stored database 450 into a node sequence for storage in database 455. A node sequence represents an abstraction of the path that the customer followed while in the store. The node sequence includes an ordered set of node indices. Each node index corresponds to a node that is placed at a location on a floor plan of the space.
The comparison module can compare one node sequence to another node sequence. The comparison can be used to identify common movement patterns, different movement patterns, frequent movement patterns, outlier movement patterns, facilitate machine learning, or combinations of these. The statistical tools include a package of statistical tools to help quantify and analyze movement patterns. In a specific implementation, a statistical analysis performed by the system includes calculating a Kullback-Leibler (KL) divergence, entropy, Ripely's K, a string edit or Levenshtein distance, or combinations of these.
Database 460 stores correlations between sales data, key performance indicators (KPI)s, and other retail metrics to customer movement patterns. Retail metrics or sales data may be imported from an external system such as point of sales (POS) device, an inventory management system, customer relationship management (CRM) system, financials system, warehousing system, or combinations of these. In some embodiments, a retail metric includes conversion data or a conversion rate. A conversion can be expressed as a percentage of customers that enter the store and purchase a good, service, or both. The conversion can be calculated by dividing a number of sales transactions by a number of customers who enter the store. Conversion measures the amount of people who enter store versus the number of customers who make a purchase. Conversion helps to provide an indication of how effective the sales staff is at selling products and the number of customers visiting the store.
Conversions can be for any time period such as an hour, day, week, month, quarter (e.g., fall, winter, spring, or summer), year, and so forth. A conversion may be calculated for a particular day such as a weekday (e.g., Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, or Sunday), a weekend (e.g., Friday, Saturday, or Sunday), a holiday (e.g., Columbus Day, Veterans Day, or Labor Day), the day following Thanksgiving (e.g., Black Friday), and so forth.
Some other examples of metrics include, but is not limited to, traffic to a particular location in the store (e.g., traffic past a particular display), engagement (e.g., measurement of how well sales staff is engaging customers), sales per square foot, comparable-store sales (e.g., year-over-year sales performance), average sale per customer or transaction, cost of goods sold, markup percentage, inventory to sales ratio, average age of inventory, wages paid to actual sales, customer retention (e.g., number of repeat purchases divided by number of first time purchases), product performance (e.g., ranked listing of products by sales revenue), sales growth (e.g., previous period sales revenue divided by current period sales revenue), demographic metrics (e.g., total revenue per age, sex, or location), sales per sales associate (e.g., actual sales per associate per time period), average purchase value (e.g., total sales divided by number of sales), or customer queue analysis statistics as further discussed below.
The reporting and notification server is responsible for displaying reports and results from the data analysis, and generating and sending notifications and alerts. Results from the analysis may be displayed on graphical user interface (GUI), printed on paper, or both. The displayed results may include graphs (e.g., line graphs), charts (e.g., pie chart, bar chart, or area graphs), tables, text, or combinations of these. A notification or alert may include a text message (e.g., simple message service (SMS) message, or multimedia message service (MMS) message), email, phone call (e.g., recorded voice call), instant message (IM), or combinations of these.
Database 465 stores correlations between customer movement patterns and consumer behavior or actions. Actions that a customer may take inside the store include making a purchase, not making a purchase, shoplifting, talking to a salesperson, not talking to a salesperson, using a fitting room, not using a fitting room, pausing in front of display, walking past a display, and the like.
Further details with regard to a system utilizing cameras to generate customer tracks are discussed in U.S. patent application Ser. No. 13/603,832 (the '832 application), filed Sep. 5, 2012, which is herein incorporated by reference in its entirety. As discussed in the '832 application, a method to obtain the track includes projecting track data from each camera into a single unified coordinate space (e.g., “real space”), and matching and joining tracks belonging to a single tracked customer. In an implementation, tracking data includes a set of time-stamped points, each point being mapped to a position or location on a floor of the store. A point may be specified in a Cartesian coordinate system. For example, a point can include a pair of coordinates (e.g., an X-coordinate and a Y-coordinate). In an implementation, a track is defined by a set of points. Each point includes an X-coordinate value and a Y-coordinate value. The X-coordinate value represents a customer's position with respect to an X-axis. The Y-coordinate value represents the customer's position with respect to a Y-axis. Further discussion is provided in the '832 application. In some embodiments, the customer tracks may be used to identify customer locations and if a customer is standing in a join zone as discussed in further detail below.
As shown in
As such, one or more cameras in a retail location may monitor a particular portion of the retail location. For example, at least one camera may monitor a queue zone and identify any customers who have entered the queue zone. The camera image or video may be used to determine the number of customers who are currently in the queue zone.
As previously discussed, images or videos from the one or more cameras may be used to determine a number of customers in the queue zone 510. For example, customers 511, 512, 513, 514, and 515 may be identified as being in the queue zone 510. However, a customer 610 may pass through the queue zone 510 in a path 611. For example, the customer 610 may not intend to stand in the queue zone 510 and instead may cut through the queue zone 510 to reach another part of the retail location associated with the environment 600. As such, the customer 610 may follow the path 611, involving the customer 610 entering the queue zone 510 at a first location and exiting the queue zone 510 at a second location. However, in the approach using cameras to monitor the queue zone 510, the cameras or system may identify the customer 610 as being in the queue zone 510 and may thus incorrectly identify that the customer 610 is also standing in line in the queue zone 510 along with the customers 511, 512, 513, 514, and 515. As such, in such an environment and approach, the images for the one or more cameras monitoring the queue zone 510 may be used to incorrectly determine that there are currently six customers standing in line in the queue zone 510 as opposed to five customers standing in line in the queue zone 510.
As previously discussed, images or video from the one or more cameras may be used to determine a number of customers in the queue zone 510 (e.g., by identifying customer tracks). For example, as shown, the images may be used to identify customers that are currently in the queue zone 510 (e.g., customers 511, 512, 513, 514, and 515). However, in certain cases, the number of customers in a customer queue for a point of sale location at a retail store may exceed the capacity or boundaries of the queue zone 510. For example, as shown, the customer 710 may be in the customer queue along with customers 511, 512, 513, 514, and 515 for the point of sale location 520. However, the customer 710 may be standing outside of the queue zone 510. As such, images from cameras monitoring the queue zone 510 may not identify the customer 710 as standing in the customer queue along with the other customers in the queue zone 510.
As such, the example environments 500, 600, and 700 may present several challenges upon which an additional approach may improve the tracking and identifying of customers in a customer queue or line. Such an approach may be used to identify customers beyond a predefined area of a queue zone as well as to identify when a customer passes through a customer queue or line of customers without erroneously determining that the passing customer has joined a customer queue of customers.
As shown in
y=Xβ+ε
In some embodiments, ε is the amount of error in the regression and β is the regression coefficients that may be computed by the following equation:
In some embodiments, E is the standard error that may be based on how far each customer in the customer queue is from the center of the generated line. For example, the distance of the center location of each customer from the generated line may be identified and the standard error may be based on the distances. In some embodiments, the standard error may be based on an average distance of the center location of each customer to the generated line.
As such, a line may be calculated based on the locations of customers waiting in a queue. As additional customers are detected to join the queue, the line may be updated or generated again based on the additional customer who has joined the queue. Furthermore, in some embodiments, the error may be determined based on the orderliness of the customers standing in the queue. Furthermore, the line may be calculated based on location coordinates of the customers as identified in a two dimensional image that represents the floor of a retail store. For example, the two dimensional image may be an overhead view of a floor location in the retail store. The line may thus be calculated based on location coordinates of the image that correspond to locations of the customers.
As such, a line may be generated based on locations of one or more customers waiting in a queue. In some embodiments, the line may be dynamically generated each time an additional customer joins the queue. Furthermore, the line may be extended beyond the last customer waiting in the queue.
As shown in
As such, a join zone may be generated on the previously generated line. In some embodiment, the spacing of the join zone may be based on spacing between customers who have been identified as joining a customer queue for which the line has been generated. Furthermore, the join zone may be placed beyond the last customer that has been identified as having joined the customer queue. The size of the join zone may be based on an amount of error in the line that has been generated. Furthermore, in some embodiments, a customer entering the join zone may be determined to have joined the queue, as discussed in further detail below.
As shown in
As shown in
As such, a line and a join zone may be re-calculated in response to a new customer having joined the customer queue. The line may be re-calculated based on locations of all of the customers who have joined the customer queue and the spacing between the customers in the customer queue and an amount of error (e.g., spacing from the line of the customers) may be calculated in response to the new customer having joined the customer queue. Furthermore, the prior join zone may be removed and a new join zone may be re-calculated or redefined in response to the determination that the new customer has joined the customer queue. In some embodiments, the new join zone may be placed beyond the new customer that has joined the customer queue and may be spaced from the new customer based on the spacing between multiple customers in the customer queue and the size of the new join zone may be based on or proportional to an amount of error that has been recalculated with the new customer having joined the customer queue.
As shown in
In some embodiments, a second equation may be used to generate the line when three or more customers are identified as joining the customer queue. An example of such a second equation is the ordinary least squares linear regression as previously discussed, but any other type of equation may also be used. As such, in some embodiments, the first equation and the second equation may be different so that different equations are used to generate the line when two customers are identified as standing in the customer queue and when three or more customers are identified as standing in the customer queue. Furthermore, the line may be re-generated or re-calculated whenever a new customer is identified as standing in the customer queue. For example, if a fourth customer is identified as joining the customer queue, then the second equation (e.g., the ordinary least squares linear regression) may be used based to generate a new line associated with the customer queue such that the new line is based on the locations of the first customer, second customer, third customer, and fourth customer.
As shown in
In some embodiments, the new line may be a regression line based on an ordinary least squares linear regression as previously discussed. Furthermore, at step 1370, a new join zone may be generated. For example, the join zone generated at step 1320 may be removed and new join zone may be generated and placed beyond the new customer that has just joined the customer queue.
As such, in some embodiments, a line and a join zone may be generated to identify one or more customers in a customer queue. For example, a first join zone may be generated at a predefined location associated with a point of sale location. In some embodiments, the predefined location may be a location of a floor in a retail store where a first customer may be expected to stand in a customer queue to wait for the availability of the point of sale location. The first join zone may be monitored and when the first customer is determined to have stood or waited in the first join zone for an amount of time that meets or exceeds a threshold amount of time, the first customer may be identified as joining a customer queue for the point of sale location. In response to the first customer joining the customer queue, a second join zone may be generated beyond the current location of the first customer. The second join zone may be monitored such that when a second customer is determined to have stood or waited in the second join zone for an amount of time that meets or exceeds the threshold amount of time, the second customer may also be identified as joining the customer queue for the point of sale location.
In response to the second customer joining the customer queue, a line may be generated based on the location of the first customer and the location of the second customer. The line may be based on a first equation using coordinate locations of the first and second customer. Furthermore, the spacing between the first customer and the second customer may be determined. In some embodiments, the distance each of the first customer and second customer are from the generated line may also be determined or calculated. A second join zone may also be generated in response to the second customer joining the customer queue. In some embodiments, the second join zone may be placed at a location beyond the location of the second customer and at a spacing based on the spacing between the first customer and the second customer. Furthermore, the boundaries or dimensions of the second join zone may be based on a standard error that is based on the distance each of the first customer and the second customer are from the generated line.
In some embodiments, the second join zone may be monitored such that when a third customer enters the second join zone, the amount of time that the third customer is in the second join zone may be identified. If the third customer is determined to have stood or waited in the second join zone for an amount of time that meets or exceeds the threshold amount of time, the third customer may also be identified as joining the customer queue for the point of sale location. In response to the third customer joining the customer queue, a new line may be generated based on the location of the first customer, the location of the second customer, and the location of the third customer. The line may be based on a second equation using an ordinary least squares linear regression based on coordinate locations of the first, second, and third customers. Furthermore, the spacing between the first customer and the second customer and between the second customer and the third customer may be determined. Furthermore, the distance each of the first customer, second customer, and third customer are from the generated new line may also be determined or calculated.
A third join zone may also be generated in response to the third customer joining the customer queue. The third join zone may be placed at a location beyond the location of the third customer and at a spacing based on the spacing between the first customer and the second customer and the spacing between the second customer and the third customer. Furthermore, the boundaries or dimensions of the third join zone may be based on a standard error that is based on the distance each of the first customer, second customer, and third customer are from the generated line.
The above examples disclose that the new line may be generated in response to a new customer joining the customer queue. However, in some embodiments, the new line may be dynamically generated at particular time intervals. For example, the new line may be periodically generated. Furthermore, the generated line is based on location coordinates of a camera image or video. For example, customers in the image or video are identified and location coordinates are determined. The line and join zone may then be generated. In some embodiments, the join zone may be defined to be at a particular location coordinate relative to the location coordinates of the camera image and a location of the image or video corresponding to the location coordinate of the join zone may then be monitored.
The example approaches and methods of
In some embodiments, once the customers in a customer queue have been identified, an analysis may be performed on the customers in the customer queue. For example, various statistics regarding the customer queue in a retail store may be generated. Examples of such statistics include, but are not limited to, the number of customers in the customer queue, the length and/or number of customers of the customer queue (e.g., a minimum number of customers, maximum number of customers, average number of customers, etc. over a period of time), the length or number of customers of the customer queue at various points in time (e.g., at each time interval that the new line is generated), individual tracking of customers in the customer queue and how long each of the customers were in the customer queue (e.g., a join time and an exit time for each customer), and an abandonment rate for the customer queue. In some embodiments, the abandonment rate may be based on a percentage of customers who have been identified as joining the customer queue, but have left the customer queue before reaching the point of sale location. The afore-mentioned statistics are merely examples and any type of analysis of the customer queue may be performed to determine characteristics of the customer queue and/or characteristics of each individual customer that has joined the customer queue.
In the description above and throughout, numerous specific details are set forth in order to provide a thorough understanding of an embodiment of this disclosure. It will be evident, however, to one of ordinary skill in the art, that an embodiment may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form to facilitate explanation. The description of the preferred embodiments is not intended to limit the scope of the claims appended hereto. Further, in the methods disclosed herein, various steps are disclosed illustrating some of the functions of an embodiment. These steps are merely examples, and are not meant to be limiting in any way. Other steps and functions may be contemplated without departing from this disclosure or the scope of an embodiment.