Detailed Description
Example embodiments will now be described more fully with reference to the accompanying drawings. Example embodiments may, however, be embodied in many different forms and should not be construed as limited to the examples set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the concept of example embodiments to those skilled in the art. The described features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.
Furthermore, the drawings are merely schematic illustrations of the present disclosure and are not necessarily drawn to scale. The same reference numerals in the drawings denote the same or similar parts, and thus their repetitive description will be omitted. Some of the block diagrams shown in the figures are functional entities and do not necessarily correspond to physically or logically separate entities. These functional entities may be implemented in the form of software, or in one or more hardware modules or integrated circuits, or in different networks and/or processor devices and/or microcontroller devices.
Fig. 1 is a schematic diagram illustrating a system architecture of an exemplary application environment to which a video anti-shake method and apparatus according to an embodiment of the present disclosure may be applied.
As shown in fig. 1, thesystem architecture 100 may include one or more ofterminal devices 101, 102, 103, anetwork 104, and aserver 105. Thenetwork 104 serves as a medium for providing communication links between theterminal devices 101, 102, 103 and theserver 105.Network 104 may include various connection types, such as wired, wireless communication links, or fiber optic cables, to name a few. Theterminal devices 101, 102, 103 may be various electronic devices having an Artificial Intelligence (AI) processing function, including but not limited to smart phones, portable computing devices (e.g., smart glasses, smart watches, etc.), autonomous vehicles, and the like. It should be understood that the number of terminal devices, networks, and servers in fig. 1 is merely illustrative. There may be any number of terminal devices, networks, and servers, as desired for implementation. For example,server 105 may be a server cluster comprised of multiple servers, or the like.
The video anti-shake method provided by the embodiment of the present disclosure is generally executed by theterminal devices 101, 102, 103, and accordingly, the video anti-shake apparatus is generally disposed in theterminal devices 101, 102, 103. However, it is easily understood by those skilled in the art that the video anti-shake method provided by the embodiment of the present disclosure may also be executed by theserver 105, and accordingly, the video anti-shake apparatus may also be disposed in theserver 105, which is not particularly limited in the exemplary embodiment. For example, in an exemplary embodiment, it may be that the user collects a sequence of video frames through an image sensor for capturing an image included in theterminal device 101, 102, 103, and then uploads the sequence of video frames to theserver 105, and after the server generates a sequence of anti-shake video frames through the video anti-shake method provided by the embodiment of the present disclosure, the server transmits the sequence of anti-shake video frames to theterminal device 101, 102, 103, and so on.
In a related technical scheme, a first original image is obtained at a first moment, if the shaking amplitude of a second moment is within a first shaking range, portrait anti-shaking processing is performed on the first original image to obtain a first image, and if the shaking amplitude of the second moment is within a second shaking range, background anti-shaking processing is performed on the first original image to obtain a first image, and a first frame of video is generated. Wherein the difference between the second time and the first time is less than or equal to a first preset threshold. However, the technical scheme generally only performs global processing on the image, and cannot give consideration to the anti-shake effect of the whole human image and the whole picture. Because the anti-shake algorithm can re-render the picture through the rotational deformation of the image, the human face area can deform to a certain extent along with the change of the picture under the integral better anti-shake effect, so that the human face is suddenly reduced or distorted; and if the change of the face area is protected to be natural, the integral anti-shake effect of the picture can be lost under the condition of avoiding the face distortion.
Based on one or more problems in the related art, the present disclosure first proposes a video anti-shake method, and the following takes the terminal device to execute the method as an example to specifically describe the video anti-shake method in the exemplary embodiment of the present disclosure.
Fig. 2 shows a flowchart of a video anti-shake method in the present exemplary embodiment, which may include the following steps S210 to S240:
in step S210, a video frame to be processed is acquired.
In an exemplary embodiment, the video frame refers to a temporally continuous image sequence acquired by an image acquisition module, and the video frame may be acquired in real time, for example, a video frame captured in real time by a smart phone or a smart drone, or may be acquired in non-real time, for example, a video frame stored in a storage device, which is not limited in this exemplary embodiment.
In step S220, feature key points of the video frame are extracted.
In an exemplary embodiment, the feature key point refers to a point capable of characterizing an image feature of valid content in a video frame, for example, if the video frame includes a face image, the feature key point may be a face key point obtained in the video frame, and if the video frame includes a landscape image, the feature key point may be an environmental key point in the video frame, which is not limited in this exemplary embodiment.
Feature extraction may be performed on the entire video frame to determine feature key points in the video frame, for example, feature extraction may be performed on the video frame through an orb (organized Fast and Rotated brief) feature extraction algorithm, or feature extraction may be performed on the video frame through an LBP (Local Binary Patterns) feature extraction algorithm, which is not limited in this example embodiment.
Those skilled in the art will readily understand that the image segmentation may also be performed on the video frame to obtain different image regions corresponding to the video frame, and different feature extraction algorithms are applied to the different image regions to improve the accuracy of the feature key points, for example, the semantic segmentation algorithm may be used to segment the video frame including the face image to obtain a region including the face image and a region not including the face image, the face feature extraction algorithm is used to extract the feature key points from the region including the face image, and the environmental feature extraction algorithm is used to extract the feature key points from the region not including the face image. Of course, the above is merely an illustrative example, and other ways of extracting feature key points of video frames should also be included in the scope of the present disclosure.
In step S230, the feature key points of consecutive frames are input into a video anti-shake model, and anti-shake displacement data corresponding to each feature key point is output.
In an exemplary embodiment, the video anti-shake model refers to a deep learning model capable of achieving anti-shake displacement estimation of a video frame, for example, the video anti-shake model may be a transform matrix-based video stabilizer DUT or a StabNet network, which is not particularly limited in this exemplary embodiment.
The anti-shake displacement data may be data for smoothing the displacement of the feature key points between the video frames output by the video anti-shake model, for example, assuming that the content in the video frames is shaken up and down, the coordinates of the feature key point a at time T are (1, 4), and the coordinates of the feature key point a at time T +1 are (1, 2), that is, the feature key points a of the two video frames are displaced downward by 2 distances; then, the coordinates of the feature key point a of the two frames are input into the video anti-shake model, and the anti-shake displacement data of the feature key point a is obtained as a distance of +1, that is, the estimated coordinates of the feature key point a at the time T +1 should be (1, 3) in order to smooth the inter-frame shake of the video anti-shake model. Of course, this is only an exemplary illustration, and this exemplary embodiment is not limited to this specifically.
Specifically, the feature key points of consecutive frames may be input into the video anti-shake model for estimating anti-shake displacement data corresponding to the feature key points after motion smoothing, for example, the feature key points in the video frames at time T,time T +1, and time T-1 may be input into the video anti-shake model, or the feature key points in the video frames at time T,time T +1,time T +2, time T-1, and time T-2 may be input into the video anti-shake model, and of course, the setting may be specifically performed according to the actual situation, for example, if the computing capability of the terminal device is higher, the feature key points of the preceding and following frames may be input to further improve the anti-shake effect, and if the computing capability of the terminal device is lower, the feature key points of at least one of the preceding and following frames may be input to reduce the computing pressure and improve the performance, this exemplary embodiment is not particularly limited thereto.
In step S240, the video frame is re-rendered according to the anti-shake displacement data, so as to generate an anti-shake video frame.
In an exemplary embodiment, the re-rendering processing refers to a processing procedure of performing position adjustment on feature key points in a video frame according to anti-shake displacement data output by a video anti-shake model, and performing corresponding adjustment on other image contents.
The video frame is re-rendered through the anti-shake displacement data, the problem that image content is deformed due to the fact that anti-shake processing such as rotary deformation is directly carried out on the video frame in the related technology can be effectively avoided, and the anti-shake display effect of the video frame is improved.
The following describes steps S210 to S240 in detail.
In an exemplary embodiment, the extracting of the feature key points in the video frame may be implemented by the steps in fig. 3, and as shown in fig. 3, the extracting may specifically include:
step S310, carrying out image segmentation on the video frame, and determining a foreground image area and a background image area corresponding to the video frame;
step S320, extracting foreground characteristic key points in the foreground image area and extracting background characteristic key points in the background image area;
step S330, the foreground characteristic key points and the background characteristic key points are used as the characteristic key points of the video frame.
The image segmentation refers to a process of dividing an image into a plurality of specific regions with unique properties and proposing an object of interest, for example, the image segmentation may be performed on a video frame by a region-based segmentation method, or the image segmentation may be performed on the video frame by an edge-based segmentation method, which is not particularly limited in this exemplary embodiment.
The foreground image area refers to an image area containing an interested target in the video frame, for example, if the video frame can contain a face image, the obtained foreground image area is the face image area after the video frame is subjected to image segmentation; assuming that the video frame may contain a vehicle image, after image segmentation is performed on the video frame, the obtained foreground image area is a vehicle image area. As will be readily understood by those skilled in the art, the background image area refers to the remaining image area of the video frame excluding the foreground image area, and will not be described herein again.
The foreground feature key points refer to feature key points extracted in a foreground image region by using a feature extraction algorithm conforming to specific image content, for example, the foreground image region may be a Face image, and then a Face key point extraction algorithm such as a Dense 3D Face Alignment algorithm (3D Dense Face Alignment, 3DDFA) may be used to extract features of the foreground image region to obtain foreground feature key points, that is, the Face feature key points; the foreground image region may be a vehicle image, and then, a vehicle feature extraction algorithm such as Histogram of Oriented Gradient (HOG) feature extraction may be selected to perform feature extraction on the foreground image region to obtain foreground feature key points, that is, vehicle feature key points, and the like.
Similarly, the background feature key points refer to feature key points extracted from the background image area by using a feature extraction algorithm conforming to the content of the background image, for example, the feature key points may be extracted from the background image area by using a background image key point extraction algorithm such as an optical flow tracking algorithm (Kanade-Lucas-Tomasi, KLT), so as to obtain the background feature key points.
By segmenting foreground and background image areas of a video frame and respectively extracting the features of the foreground image area and the background image area by adopting different feature extraction algorithms, the extracted feature key points can accurately represent the effective content of the corresponding image area, the problem of inaccurate expression of the feature key points caused by indiscriminate feature extraction of the whole content of the video frame is avoided, the accuracy of the feature key points on the effective content expression of the video frame is improved, and the anti-shake display effect of the video frame is further ensured.
In an exemplary embodiment, the foreground image region may include a portrait region, and correspondingly, the foreground feature key points may include face feature key points.
Specifically, a dense 3D face alignment algorithm may be used to extract face feature key points from the face region. Firstly, a virtual three-dimensional face model may be constructed, for example, a three-dimensional face shape may be represented by a face 3D deformation statistical model (3DMM) to obtain a virtual three-dimensional face model, and of course, the three-dimensional face shape may also be represented by other manners, which is not limited in this example embodiment; then, the face image in the face region and the virtual three-dimensional face model can be fitted through a pre-trained Convolutional Neural Network (CNN) to determine the key points of the face features in the face region. The task of the pre-trained convolutional neural network is to regard the marks of the key points of the face features as regression operation from image pixels to the positions of the feature points.
The face feature key points in the face region can be accurately extracted through the dense 3D face alignment algorithm, and compared with a general feature extraction mode, the expression of the face feature key points on effective contents in the face region can be effectively improved, and the accuracy of the face feature key points is improved.
In an exemplary embodiment, the extraction of the key points of the background features can be performed on the background image area by an optical flow tracking algorithm KLT. Firstly, the brightness value of each pixel in the background image region of the adjacent video frame can be traversed, then the motion vector can be determined according to the brightness value, generally, because the brightness of the pixel value in the adjacent video frame is constant, and the pixel points in the adjacent video frame have the same motion, after the brightness value of each pixel in the background image region of the adjacent video frame is traversed, the pixel points with the same brightness value in the adjacent video frame can be connected to obtain the motion vector, and the starting point (or the end point) corresponding to the motion vector can be used as the background feature key point of the background image region.
The background feature key points in the background image area can be accurately extracted through the optical flow tracking algorithm KLT, and compared with a general feature extraction mode, the expression of the background feature key points on effective contents in the background image area can be effectively improved, and the accuracy of the background feature key points is improved.
In an exemplary embodiment, semantic segmentation may be performed on a video frame through a pre-trained full Convolutional neural network (FCN), and a foreground image area and a background image area corresponding to the video frame are determined.
Because only the foreground image area and the background image area need to be distinguished in the embodiment, and the high requirement is not required for the segmentation precision of the image edge, the video frames can be rapidly subjected to secondary classification through the pre-trained full convolution neural network, so that the segmentation efficiency can be effectively improved, and the system performance is improved.
In an exemplary embodiment, the training of the video anti-shake model may be implemented through the steps in fig. 4, and as shown in fig. 4, the method specifically includes:
step S410, constructing an initial video anti-shake model, wherein the initial video anti-shake model comprises a target loss function, and the target loss function comprises a foreground loss function and a background loss function;
and step S420, performing unsupervised learning training on the initial video anti-shake model to obtain a trained video anti-shake model.
The target loss function is a loss function which is designed in advance and used for unsupervised learning and training of the video anti-shake model, extra label samples do not need to be created through the target loss function, training of the initial video anti-shake model is completed, and generalization capability of the video anti-shake model is effectively improved.
The foreground loss function is a loss function for performing smooth motion estimation on foreground characteristic key points in a foreground image region, and the background loss function is a loss function for performing smooth motion estimation on background characteristic key points in a background image region. The total loss function of the video anti-shake model can be formed by the foreground loss function and the background loss function.
For example, the foreground loss function may be represented by the relation (1):
wherein L isbCan represent the foreground loss function, PtCan represent the foreground characteristic key point, P, in the video frame at the moment tt+1Foreground feature keypoints in the video frame at time t +1 may be represented.
The background loss function can be represented by the relation (2):
wherein L isfCan represent the background loss function, FtCan represent the key point of the background feature in the video frame at the moment t, Ft+1Can represent the video at the moment of t +1Background feature keypoints in the frame.
The objective loss function can be represented by the relation (3):
L=(1-λ)Lb+λLf (3)
where L may represent an objective loss function, LbThe foreground loss function, L, can be expressedfThe background loss function can be represented, the lambda can represent a weight coefficient with the value range of 0 to 1, and the foreground loss and the background loss are combined through the lambda to form the total loss L of the video anti-shake model.
Fig. 5 schematically illustrates a structural diagram of a video anti-shake model in an exemplary embodiment of the present disclosure.
Referring to fig. 5, after a video frame to be processed is acquired (assuming that the duration is 0 to T-1), image segmentation is performed on the video frame to obtain a foreground image region and a background image region, and feature key point extraction is performed on the foreground image region and the background image region respectively by using different feature extraction algorithms to obtain a background featurekey point 501 and a foreground featurekey point 502.
Background featurekey points 501 and foreground featurekey points 502 in at least three frames of video frames (such as video frames at time t-1, time t and time t + 1) are used as input of a videoanti-shake model 503, and the background featurekey points 501 and the foreground featurekey points 502 are respectively encoded by using one-dimensional convolution to obtainbackground feature vectors 504 andforeground feature vectors 505.
Coding thebackground feature vector 504 by processing the multilayer one-dimensional convolution of the background feature to obtain anintermediate coding result 506, and coding theforeground feature vector 505 by processing the multilayer one-dimensional convolution of the foreground feature to obtain anintermediate coding result 507; and fusing theintermediate coding result 506 and theintermediate coding result 507 to obtain a feature vector S1, a feature vector S2, a feature vector S3 and a feature vector S4, wherein for the formic acid process fusing the intermediate coding results, reference may be made to alegend 508, where λ may represent a weight coefficient for fusing foreground features and background features, and S may represent a feature vector after image feature coding.
The feature vector S1, the feature vector S2, the feature vector S3, and the feature vector S4 are input into themulti-layer decoding network 509 for decoding the feature vector, and finally, theanti-shake displacement data 510 corresponding to the feature key points in the video frame at time t is output. Of course, fig. 5 is only a schematic illustration, and the exemplary embodiment is not limited thereto.
In an exemplary embodiment, displacement weight data of image content around the feature key point may be determined according to the anti-shake displacement data, and then the feature key point may be re-rendered through the anti-shake displacement data, and the image content around the feature key point may be re-rendered through the determined displacement weight data. For example, when the foreground image area is the portrait area, the obtained anti-shake displacement data of the portrait feature key point a in the portrait area is 1, and in order to avoid deformation of the face area, the displacement weight data of the image content near the portrait feature key point a may be set to be 100%, that is, the anti-shake displacement data of the portrait feature key point a is 1, then the anti-shake displacement data of the image content near the portrait feature key point a is also 1, and the moving direction is consistent with the portrait feature key point a; for the background image area, the displacement weight data of the nearby image content may be set according to the distance from the background feature key point, that is, the image content closer to the background feature key point is, the displacement weight data is larger, if the anti-shake displacement data of the background feature key point is 3, the anti-shake displacement data of the image content within the range of 0-1 from the background feature key point is 3, and the anti-shake displacement data of the image content within the range of 1-2 from the background feature key point is 2.7, and so on, of course, the displacement weight data of the image content around the feature key point may be set in other setting manners, and may be specifically set by self-definition according to the actual situation, which is only an illustrative example here, and should not cause any special limitation to this example embodiment.
Fig. 6 schematically illustrates a schematic diagram of implementing video frame anti-shake processing by anti-shake displacement data in an exemplary embodiment of the disclosure.
Referring to fig. 6, feature key points a and B in avideo frame 601 at a time t-1 and feature key points a and B in avideo frame 602 at a time t are input into a video anti-shake model, so as to obtainanti-shake displacement data 603 corresponding to the feature key points in the video frame at the time t. The characteristic key points a and B in the video frame and the image content around the characteristic key points a and B may be re-rendered according to theanti-shake displacement data 603 and the displacement weight data determined by theanti-shake displacement data 603, so as to obtain theanti-shake video frame 604 at time t.
Optionally, the image content in the video frame may be divided into regions in a grid form, and then the feature key points and the image content around the feature key points are re-rendered in a grid unit, so that the rendering efficiency can be effectively accelerated, and the deformation phenomenon of the image content can be reduced.
Fig. 7 schematically illustrates a flow chart of anti-shaking of a video frame in an exemplary embodiment of the disclosure.
Referring to fig. 7, in step S710, an input video frame is acquired;
step S720, performing foreground and background segmentation on the video frame; performing semantic segmentation on the video frame through a full convolution network to obtain a foreground image area and a background image area;
step S730, detecting key points of the face features in the foreground image area through a dense 3D face alignment algorithm, and determining key points of the foreground features;
step S740, detecting the key points of the background features of the background image area through an optical flow tracking algorithm, and determining the key points of the background features;
step S750, inputting feature key points (namely foreground feature key points and background feature key points) in at least three adjacent frames of video frames (such as video frames at the time t-1, the time t and the time t + 1) into a video anti-shake model, and outputting anti-shake displacement data corresponding to the feature key points in the video frames at the time t through the video anti-shake model;
and step S760, performing re-rendering processing on the video frame through the anti-shake displacement data to obtain the anti-shake video frame.
In summary, in the exemplary embodiment, a video frame to be processed may be obtained, feature key points of the video frame are extracted, feature key points of consecutive frames are input into a video anti-shake model, anti-shake displacement data corresponding to each feature key point is output, and finally, re-rendering processing may be performed on picture contents of different portions in the video frame according to the output anti-shake displacement data, so as to generate an anti-shake video frame. On one hand, the motion of a portrait on a video sequence is tracked by extracting characteristic key points in a video frame, then anti-shake displacement data of the characteristic key points after anti-shake is output through a video anti-shake model, and then different characteristic key points in the video frame are adjusted to different degrees through the anti-shake displacement data, so that the problem that partial images are deformed due to the fact that anti-shake processing is carried out on the whole video frame in the related technology is avoided, and the display effect of the video frame after anti-shake is improved; on the other hand, by means of a deep learning mode, effective contents, namely feature key points, of video frames are fully utilized, a video anti-shake model is trained, the anti-shake model is insensitive to environmental factors such as shake degree of video pictures and size of human images in the video frames, has strong robustness, and is suitable for human image video anti-shake in various motion scenes.
It is noted that the above-mentioned figures are merely schematic illustrations of processes involved in methods according to exemplary embodiments of the present disclosure, and are not intended to be limiting. It will be readily understood that the processes shown in the above figures are not intended to indicate or limit the chronological order of the processes. In addition, it is also readily understood that these processes may be performed synchronously or asynchronously, e.g., in multiple modules.
Further, referring to fig. 8, a videoanti-shake apparatus 800 is further provided in the present example, and may include a videoframe obtaining module 810, a feature keypoint extracting module 820, an anti-shake displacementdata determining module 830, and a video frameanti-shake processing module 840. Wherein:
the videoframe acquiring module 810 is configured to acquire a video frame to be processed;
the feature keypoint extraction module 820 is configured to extract feature key points of the video frames;
the anti-shake displacementdata determination module 830 is configured to input the feature key points of consecutive multiple frames into a video anti-shake model, and output anti-shake displacement data corresponding to each feature key point;
the video frameanti-shake processing module 840 is configured to perform re-rendering processing on the video frame according to the anti-shake displacement data, and generate an anti-shake video frame.
In an exemplary embodiment, the featurekeypoint extraction module 820 may be configured to:
performing image segmentation on the video frame, and determining a foreground image area and a background image area corresponding to the video frame;
extracting foreground characteristic key points in the foreground image area and extracting background characteristic key points in the background image area;
and taking the foreground characteristic key points and the background characteristic key points as the characteristic key points of the video frame.
In an exemplary embodiment, the foreground image region may include a portrait region, and the foreground feature key points may include face feature key points; the featurekeypoint extraction module 820 may be configured to:
constructing a virtual three-dimensional face model;
fitting the portrait area and the virtual three-dimensional face model through a pre-trained convolutional neural network, and determining key points of face features in the portrait area.
In an exemplary embodiment, the featurekeypoint extraction module 820 may be configured to:
traversing luminance values in the background image region of adjacent video frames;
and determining a motion vector according to the brightness value, and taking a starting point corresponding to the motion vector as a background feature key point of the background image area.
In an exemplary embodiment, the featurekeypoint extraction module 820 may be configured to:
and performing semantic segmentation on the video frame through a pre-trained full convolution neural network, and determining a foreground image area and a background image area corresponding to the video frame.
In an exemplary embodiment, the videoanti-shake apparatus 800 may further include a video anti-shake model training module, and the video anti-shake model training module may be configured to:
constructing an initial video anti-shake model, wherein the initial video anti-shake model comprises a target loss function, and the target loss function comprises a foreground loss function and a background loss function;
and carrying out unsupervised learning training on the initial video anti-shake model to obtain a trained video anti-shake model.
In an exemplary embodiment, the video frameanti-shake processing module 840 may be further configured to:
determining displacement weight data of image contents around the characteristic key points according to the anti-shake displacement data;
and re-rendering the characteristic key points through the anti-shake displacement data, and re-rendering the image content around the characteristic key points through the displacement weight data.
The specific details of each module in the above apparatus have been described in detail in the method section, and details that are not disclosed may refer to the method section, and thus are not described again.
As will be appreciated by one skilled in the art, aspects of the present disclosure may be embodied as a system, method or program product. Accordingly, various aspects of the present disclosure may be embodied in the form of: an entirely hardware embodiment, an entirely software embodiment (including firmware, microcode, etc.) or an embodiment combining hardware and software aspects that may all generally be referred to herein as a "circuit," module "or" system.
An exemplary embodiment of the present disclosure provides an electronic device for implementing a convolutional neural network pruning method, which may be aterminal device 101, 102, 103 or aserver 105 in fig. 1. The electronic device comprises at least a processor and a memory for storing executable instructions of the processor, the processor being configured to perform the video anti-shake method via execution of the executable instructions.
The following takes the electronic apparatus 900 in fig. 9 as an example, and exemplifies the configuration of the electronic apparatus in the present disclosure. The electronic device 900 shown in fig. 9 is only an example and should not bring any limitations to the functionality or scope of use of the embodiments of the present disclosure.
As shown in fig. 9, the electronic device 900 is embodied in the form of a general purpose computing device. Components of electronic device 900 may include, but are not limited to: at least oneprocessing unit 910, at least onememory unit 920, abus 930 connecting different system components (including thememory unit 920 and the processing unit 910), adisplay unit 940.
In which thestorage unit 920 stores program codes that can be executed by theprocessing unit 910 so that theprocessing unit 910 performs the motion posture determination method in this specification.
Thestorage unit 920 may include readable media in the form of volatile memory units, such as a random access memory unit (RAM)921 and/or acache memory unit 922, and may further include a read only memory unit (ROM) 923.
Storage unit 920 may also include a program/utility 924 having a set (at least one) ofprogram modules 925,such program modules 925 including, but not limited to: an operating system, one or more application programs, other program modules, and program data, each of which, or some combination thereof, may comprise an implementation of a network environment.
Bus 930 can be any of several types of bus structures including a memory unit bus or memory unit controller, a peripheral bus, an accelerated graphics port, a processing unit, or a local bus using any of a variety of bus architectures.
The electronic device 900 may also communicate with one or more external devices 970 (e.g., sensor devices, bluetooth devices, etc.), with one or more devices that enable a user to interact with the electronic device 900, and/or with any devices (e.g., routers, modems, etc.) that enable the electronic device 900 to communicate with one or more other computing devices. Such communication may occur via input/output (I/O)interface 950. Also, the electronic device 900 may communicate with one or more networks (e.g., a Local Area Network (LAN), a Wide Area Network (WAN) and/or a public network, such as the Internet) via thenetwork adapter 960. As shown, thenetwork adapter 960 communicates with the other modules of the electronic device 900 via thebus 930. It should be appreciated that although not shown, other hardware and/or software modules may be used in conjunction with the electronic device 900, including but not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, data backup storage systems, and sensor modules (e.g., gyroscope sensors, magnetic sensors, acceleration sensors, distance sensors, proximity light sensors, etc.).
Through the above description of the embodiments, those skilled in the art will readily understand that the exemplary embodiments described herein may be implemented by software, or by software in combination with necessary hardware. Therefore, the technical solution according to the embodiments of the present disclosure may be embodied in the form of a software product, which may be stored in a non-volatile storage medium (which may be a CD-ROM, a usb disk, a removable hard disk, etc.) or on a network, and includes several instructions to enable a computing device (which may be a personal computer, a server, a terminal device, or a network device, etc.) to execute the method according to the embodiments of the present disclosure.
Exemplary embodiments of the present disclosure also provide a computer-readable storage medium having stored thereon a program product capable of implementing the above-described method of the present specification. In some possible embodiments, various aspects of the disclosure may also be implemented in the form of a program product comprising program code for causing a terminal device to perform the steps according to various exemplary embodiments of the disclosure described in the above-mentioned "exemplary methods" section of this specification, when the program product is run on the terminal device.
It should be noted that the computer readable media shown in the present disclosure may be computer readable signal media or computer readable storage media or any combination of the two. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any combination of the foregoing. More specific examples of the computer readable storage medium may include, but are not limited to: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a Random Access Memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.
In the present disclosure, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. In contrast, in the present disclosure, a computer readable signal medium may comprise a propagated data signal with computer readable program code embodied therein, either in baseband or as part of a carrier wave. Such a propagated data signal may take many forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may also be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to: wireless, wire, fiber optic cable, RF, etc., or any suitable combination of the foregoing.
Furthermore, program code for carrying out operations of the present disclosure may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, C + + or the like and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The program code may execute entirely on the user's computing device, partly on the user's device, as a stand-alone software package, partly on the user's computing device and partly on a remote computing device, or entirely on the remote computing device or server. In the case of a remote computing device, the remote computing device may be connected to the user computing device through any kind of network, including a Local Area Network (LAN) or a Wide Area Network (WAN), or may be connected to an external computing device (e.g., through the internet using an internet service provider).
Other embodiments of the disclosure will be apparent to those skilled in the art from consideration of the specification and practice of the disclosure disclosed herein. This application is intended to cover any variations, uses, or adaptations of the disclosure following, in general, the principles of the disclosure and including such departures from the present disclosure as come within known or customary practice within the art to which the disclosure pertains. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit of the disclosure being indicated by the following claims.
It will be understood that the present disclosure is not limited to the precise arrangements described above and shown in the drawings and that various modifications and changes may be made without departing from the scope thereof. The scope of the present disclosure is to be limited only by the terms of the appended claims.