EP2364490A1 - Dispositif a architecture pipeline de flot de donnees pour la reconnaissance et la localisation d'objets dans une image par balayage de fenetres de detection - Google Patents
Dispositif a architecture pipeline de flot de donnees pour la reconnaissance et la localisation d'objets dans une image par balayage de fenetres de detectionInfo
- Publication number
- EP2364490A1 EP2364490A1 EP09756740A EP09756740A EP2364490A1 EP 2364490 A1 EP2364490 A1 EP 2364490A1 EP 09756740 A EP09756740 A EP 09756740A EP 09756740 A EP09756740 A EP 09756740A EP 2364490 A1 EP2364490 A1 EP 2364490A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- descriptor
- detection window
- unit
- histogram
- detection
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/269—Analysis of motion using gradient-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
- G06F18/2148—Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the process organisation or structure, e.g. boosting cascade
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/77—Determining position or orientation of objects or cameras using statistical methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/255—Detecting or recognising potential candidate objects based on visual cues, e.g. shapes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/44—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
- G06V10/443—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
- G06V10/446—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering using Haar-like filters, e.g. using integral image techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/77—Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
- G06V10/774—Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
- G06V10/7747—Organisation of the process, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/955—Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20021—Dividing image into blocks, subimages or windows
Definitions
- Pipeline data flow architecture device for recognizing and locating objects in an image by scanning detection windows
- the invention relates to a device for recognizing and locating objects in a digital image. It applies in particular to the fields of on-board electronics requiring a detection / classification function such as video surveillance, mobile video processing and driver assistance systems.
- Motion detection is possible by simply subtracting successive images.
- this method has the disadvantage of not being able to discriminate between the different types of moving objects.
- it is not possible to discriminate a movement of tree leaves under the effect of wind movement of a person.
- the entire image may be subject to movement, for example due to the displacement of the vehicle on which the camera is fixed.
- the image is scanned by a detection window whose size varies to identify objects of different sizes.
- Object identification is based on the use of Haar wavelet type one-variable descriptors, which are relatively simple form descriptors. These descriptors are determined during the learning phase and make it possible to test characteristics representative of the object to be recognized. These characteristics are often referred to as the signature of the object.
- a detection window is analyzed by several descriptors to test characteristics on different areas of the detection window and thus obtain a relatively reliable result.
- multivachable descriptors have been proposed. These multivariable descriptors are for example composed on the one hand, of a histogram of the orientation of the intensity gradients and, on the other hand, of a density component of the magnitude of the gradient in the area of calculation.
- the descriptors are grouped into classifiers successively tested in a cascade or floor loop.
- Each stage of the cascade performs more complex and selective tests than the previous stage in order to quickly eliminate areas of the image without interest like the sky.
- the method of P. Viola and Mr. Jones is implemented either in a hardware way on completely dedicated circuits, or in a software way on processors.
- the hardware implementation is very powerful but very inflexible. Indeed, a dedicated circuit is wired to detect a given type of object with a given accuracy.
- the software implementation is very flexible because of the presence of a program, but the performances are often insufficient insofar as the general processors lack computing power and the digital signal processors ( DSP processors) have a very low efficiency in the conditional branching instructions.
- the software solutions can hardly be integrated into an embedded system such as a vehicle or a mobile phone because they consume a lot of energy and they have a large footprint.
- Li ZHANG et al "Efficient Scan-Window Based Object Detection Using GPGPU", 2008, describes a first example of software implementation applied to pedestrian detection. This implementation is based on a generic unit of graphic processing, called General-Purpose computation on Graphics Processing Unit (GPGPU) in the Anglo-Saxon literature.
- the graphics processing unit needs to be coupled to a processor via a memory controller and a bus of the PCI Express type.
- An object of the invention is in particular to overcome all or part of the aforementioned drawbacks by proposing a device dedicated to the recognition and location of objects that is not programmable while being configurable so as to allow the detection of different objects with a variable degree of accuracy, especially in terms of false alarms.
- the subject of the invention is a device for recognizing and locating objects in a digital image by scanning detection windows, characterized in that it comprises a pipelined flow data architecture of hardware tasks. concurrent, the architecture comprising:
- a histogram determination unit determining, for each descriptor, a histogram representative of characteristics of the part of the digital image delimited by the descriptor under consideration
- N parallel processing units a detection window being allocated to each processing unit, each processing unit being able to analyze the histogram of the descriptor under consideration as a function of parameters associated with each descriptor to provide a partial score representative of the probability that said descriptor contains at least part of the object to be recognized, the sum of the partial scores of each detection window providing an overall score representative of the probability that said detection window contains the object to be recognized.
- the invention has the particular advantage that it can be realized by a specific application integrated circuit, well known as the Anglo-Saxon ASIC for "Application Specified Integrated Circuit", or by a gate array programmable by the user , better known as the Anglo-Saxon FPGA for "Programmable Field Gâte Array”. Therefore, the device according to the invention has a reduced silicon area and power consumption, in a ratio of one to one hundred compared to a programmed solution. It can thus be integrated into an embedded system. The device also makes it possible to perform several classification tests in parallel, thus offering a high computing power.
- the device is completely configurable. Therefore, the type of detection, the accuracy of the detection and the number of descriptors and classifiers used can be adjusted to optimize the relationship between the quality of the result and the calculation time.
- the device parallels the tasks by its pipeline architecture. All modules work concurrently (at the same time).
- the processing units analyze the histograms associated with descriptors of rank p
- the histogram determination unit determines the histograms associated with the descriptors of rank p + 1
- the means for generating descriptors determine the descriptors of rank p + 2 in the same time interval.
- the descriptor and histogram determination time is masked by the time allocated to the detection, that is to say the analysis time of the histograms.
- the device therefore has a high computing power.
- FIG. 1 possible steps for the operation of a device according to the invention, FIG. 2, possible sub-steps in the operation of the device represented in FIG.
- FIG. 3 by a block diagram, an exemplary embodiment of a device according to the invention, FIG. 4, an exemplary embodiment of a processing unit of the device of FIG. 3,
- FIG. 5 an illustration of the different coordinate systems used for the implementation of the invention
- FIG. 6 an exemplary embodiment of a cascade unit of the device of FIG. 3,
- FIG. 7 an embodiment of a descriptor loop unit of the device of FIG. 3,
- FIG. 8 an exemplary embodiment of a histogram determination unit of the device of FIG. 3;
- FIG. 9 an exemplary embodiment of a score analysis unit of the device of FIG. 3.
- Figure 1 describes possible steps for the operation of the device according to the invention.
- digital images formed of a matrix of Nc columns by NI rows of pixels.
- Each pixel contains a value, called weight, representative of the amplitude of a signal, for example representative of a luminous intensity.
- the operation of a device according to the invention is based on a method adapted from the method of P. Viola and M. Jones. This method is for example described in the patent application WO2008 / 104453A.
- This detection method is based on double-precision floating-point number calculations. These calculations require complex floating arithmetic units which are expensive in execution speed, silicon area and consumption.
- the method has been modified to use operations on fixed point type data.
- a first step E 1 the signature of the gradient of the amplitude of the signal is calculated for the image in which objects are searched, called the original image I 0Mg -
- This signature is for example that of the luminous intensity gradient. It generates a new image called a derived image l d e ⁇ v- From this derived image l d e ⁇ v, M images of orientation l m with m an index varying from 1 to M can be determined in a second step E 2 , each image with orientation l m being of the same size as the original image U g and containing, for each pixel, the luminous intensity gradient over a certain range of angle values.
- 9 images of orientation I m can be obtained for ranges of values of angles of 20 °.
- the first orientation image I 1 contains, for example, light intensity gradients whose direction is between 0 and 20 °
- the second orientation image I 2 containing the luminous intensity gradients whose direction is between 20 ° and 20 °. and 40 °
- the ninth orientation image I 9 containing the light intensity gradients whose direction is between 160 and 180 °.
- an M + 1 ⁇ m ⁇ , ie a tenth, image of orientation I M + i corresponding to the magnitude of the luminous intensity gradient can be determined, M being equal to 9 in the example of FIG.
- each image of orientation I m is transformed into an integral image l int, m with m varying from 1 to M.
- An integral image is an image of the same size as the original image where the weight w i ( m, n) of each pixel p (m, n) is determined by the sum of the weights wo (x, y) of all the pixels p (x, y) located in the rectangular surface delimited by the origin O of the image and the pixel p (m, n) considered.
- the weight wi (m, n) of the pixels p (m, n) of an integral image l int, m can be modeled by the relation:
- a fourth step E 4 the M + 1 integral images l int, m thus obtained are scanned by detection windows of different sizes each comprising one or more descriptors.
- the M + 1 integral images l int, m are scanned simultaneously, so that the scanning of these integral images li nt .
- m is a scan of the original image l orig .
- a descriptor delimits an image portion belonging to the detection window. It is in these parts of image that the signature of the object is sought.
- a first loop called a scale loop
- a second loop called a floor loop
- the level of complexity also called stage, depends mainly on the number of descriptors used for a detection window.
- the number of descriptors is relatively limited. It is for example one or two descriptors per detection window. The number of descriptors usually increases with the stages.
- the set of descriptors used for a floor is called a classifier.
- a third loop called the position loop, performs the actual scanning, that is to say a loopback on the position of the detection windows in the integral images l in t, ⁇ v
- a fourth loop called descriptor loop, performs a loopback on the descriptors used for the current stage. At each iteration of this loop, one of the descriptors of the classifier is analyzed to determine if it contains a part of the signature of the object to be recognized.
- FIG. 2 illustrates more precisely the four levels of loops nested by possible sub-steps for the fourth step E 4 of FIG. 1.
- a first step E 41 the scale loop is initialized.
- the initialization of the scale loop comprises, for example, the generation of an initial detection window size and an initial displacement step.
- a second step E 42 the floor loop is initialized.
- the initialization of this loop includes, for example, the determination of the descriptors used for the first stage. These descriptors can be determined by their relative coordinates in the detection window.
- the position loop is initialized. This initialization comprises for example the generation of detection windows and the allocation of each detection window to a processing unit of the device according to the invention.
- Detection windows can be generated as a list, called a window list.
- a separate list is associated with each iteration of the scale loop.
- the detection windows are generally generated exhaustively, that is to say, to cover all the zones of the integral images l in t, m- Several iterations of the loop Positions are needed when the number of detection windows is greater than the number of processing units.
- the detection windows can be determined by their position in the integral images in t, m it is these positions that are stored in the window list.
- the descriptor loop is initialized.
- This initialization comprises, for example, the determination, for each detection window allocated to a processing unit, of the absolute coordinates of a first descriptor among the descriptors of the classifier associated with the stage considered.
- a histogram is generated for each descriptor.
- a histogram comprises for example M + 1 components C m with m varying from 1 to M + 1.
- Each component C m contains the sum of the weights wo (x, y) of the pixels p (x, y) of one of the orientation images I m contained in the descriptor under consideration. The sum of these weights wo (x, y) can be obtained in a simple way by the weight of four pixels of the corresponding integral image, as we will see later.
- a sixth step E 46 the histograms are analyzed.
- the result of each analysis is provided in the form of a score, called a partial score, representative of the probability that the descriptor associated with the analyzed histogram contains a part of the signature of the object to be recognized.
- a seventh step E 47 it is determined whether the descriptor loop is terminated, that is, if all the descriptors have been generated for the current stage. If this is not the case, the descriptor loop is advanced in a step E 48 and loops back from the step E 45 .
- the progress in the descriptor loop includes determining, for each detection window allocated to a processing unit of the device, absolute coordinates of a new descriptor among the descriptors of the classifier associated with the floor considered. A new histogram is then generated for each new descriptor and provides a new partial score. The partial scores are added to each iteration of the descriptor loop in order to provide for each detection window, during the last iteration, an overall score S for the classifier. These global scores S are then representative of the probability that the detection windows contain the object to be recognized, this probability being relative to the current stage. If it is determined in step E 47 that the descriptor loop is terminated, it is determined in a step E 49 whether the global scores S are greater than a predetermined threshold threshold S ⁇ .
- This stage threshold S ⁇ is for example determined in a learning phase.
- the detection windows for which the overall scores S are greater than the threshold stage S ⁇ are stored in a new list of windows in order to be analyzed again by the classifier of the next stage.
- the other detection windows are definitively considered as not containing the object to be recognized. They are therefore not stored and will no longer be analyzed in the rest of the process.
- the advance in the position loop includes the allocation of the detection windows included in the window list of the current stage but not yet analyzed to the processing units.
- the position loop is terminated, it is determined in a step E 53 whether the stage loop is over, in other words if the current stage is the last stage of the loop.
- the current stage is for example identified by a floor counter. If the floor loop is not completed, it changes stage in a step E 54 .
- the floor change consists of incrementing the floor counter. It may also include determining the relative coordinates of the descriptors used for the current floor.
- the position loop is initialized according to the list of windows generated during the previous stage. Detection windows of this list are then allocated to the processing units of the device.
- step E 55 loops back from step E 44 .
- the steps E 51 and E 52 allow, if necessary, a loopback so that all the detection windows to be analyzed are finally allocated to a processing unit.
- step E 53 it is determined in a step E 56 whether the scale loop is complete. If this is not the case, scale is changed in a step E 57 and loops back from step E 42 .
- the change of scale includes for example the determination of a new size of detection windows and a new movement step for these windows. The objects are then searched in these new detection windows by the implementation of floor loops, position and descriptor.
- FIG. 3 represents an exemplary embodiment of a device 1 according to the invention executing the scanning step E 4 previously described with reference to FIG. 2.
- the device 1 is for example made on a specific integrated circuit of reduced size or , according to the Anglo-Saxon name, an ASIC for Application-Specific Integrated Circuit.
- this circuit is configurable.
- the device 1 is dedicated to an application for recognizing and locating objects, but parameters can be modified so as to detect different types of objects.
- the device 1 comprises a memory 2 containing M + 1 integral images l in t, m-
- the M + 1 integral images l in t, m correspond to the integral images of M orientation images and to an integral image of the magnitude of the gradient of light intensity, as defined above.
- the device 1 further comprises a memory controller 3, a ladder loop unit 4, a cascade unit 5, a descriptor loop unit 6, a histogram determination unit 7, N UT processing units 1 , UT 2 , ..., UT N in parallel, UT generically noted, a score analysis unit 8 and a control unit 9.
- the memory controller 3 makes it possible to manage the accesses to the memory 2 by the unit 7 for determining histograms.
- the unit 4 scale loop is controlled by the control unit 9. It executes the scale loop described above. In other words, it generates during step E 41 of initialization of the scale loop and during the step E 57 of scale change, a detection window size and a step of movement of these windows.
- the size of the detection windows and the movement pitch can be set.
- the ladder loop unit 4 sends the detection window size data and no move data to the cascade unit 5.
- This unit 5 executes the floor and position loops. In particular, it generates for each detection window coordinates (X FA .V FA ) and (X FC Y FC ) as a function of the size of the windows and the pitch of displacement. These coordinates (X FA , Y FA ) and (X FC Y FC ) are sent to the descriptor loop unit 6.
- the cascade unit 5 allocates each detection window to a processing unit UT.
- the descriptor loop unit 6 performs the descriptor loop.
- the unit 7 determines successively, from the coordinates (X DA , Y DA ) and (X DC Y DC ) and M + 1 integral images int, m , a histogram for each descriptor.
- each histogram comprises M + 1 components C m , each component C m containing the sum of the weights wo (x, y) of the pixels p (x, y) of one of the orientation images 1 m contained in the descriptor under consideration.
- the histograms are sent to the processing units UT 1 , UT 2 , ..., UT N.
- the N processing units UT 1 , UT 2 ,..., UT N are in parallel.
- Each processing unit UT performs an analysis on the histogram of one of the descriptors contained in the detection window allocated to it. For example, a histogram analysis is performed according to four parameters named attribute, descriptor threshold S d , ⁇ and ⁇ .
- These settings can be changed. They depend in particular on the type of object to be recognized and the stage considered. They are for example determined during a learning step.
- the parameters being dependent on the stage iteration, they are sent to the processing units UT 1 , UT 2 ,..., UT N at each iteration of the stage loop during steps E 42 and E 54 .
- a histogram analysis generates a partial score for this histogram as well as an overall score for the classifier of the detection window allocated to it.
- the UT processing units can simultaneously run up to N histogram analyzes. But not all the processing units UT are necessarily used during an iteration of the descriptor loop.
- the number of UT processing units used depends on the number of histograms to be analyzed and therefore the number of detection windows contained in the list of windows for the current stage. Thus, the power consumption of the device 1 can be optimized according to the number of treatments to be performed.
- the partial scores of the histograms are added so as to obtain an overall score S for the classifier of each detection window.
- These global scores S are sent to the score analysis unit 8. From these global scores S, the unit 8 generates the list of windows for the next stage of the floor loop.
- the device 1 is based on a pipeline architecture.
- the different process steps are performed in parallel for different descriptors.
- the different modules constituting the device 1 operate simultaneously.
- the descriptor loop unit 6, the histogram determination unit 7, the N processing units UT 1 , UT 2 ,..., UT N , and the score analysis unit 8. constitute respectively a first, a second, a third and a fourth stage of the pipeline architecture.
- FIG. 4 represents an exemplary embodiment of a processing unit UT making it possible to analyze a histogram with M + 1 components C m .
- the processing unit UT comprises a first logic block 21 comprising M + 1 inputs and an output.
- logic block is meant a controlled circuit having one or more inputs and one or more outputs, each output being in connection with one of the inputs as a function of a command applied to the logic block, for example by a general controller or by logic internal to the logical block.
- the term logical block is understood in a broad sense.
- a logic block having several inputs and / or outputs can be realized by a set of multiplexers and / or demultiplexers and logic gates each having one or more inputs and one or more outputs.
- the logic block 21 makes it possible to select one of the M + 1 components C m as a function of the attribute parameter.
- the processing unit UT furthermore comprises a comparator 22 whose first input 221 receives the component C m selected by the logic block 21 and a second input 222 receives the threshold parameter of descriptor S d .
- the result of the comparison between the selected component C m and the threshold parameter S d is sent to a second logic block 23 comprising two inputs and one output.
- the first input 231 of this logic block 23 receives the parameter ⁇ and the second input 232 receives the parameter ⁇ .
- the output of the logic block 23 delivers either the parameter ⁇ or the parameter ⁇ .
- the parameter ⁇ is output. Conversely, if the component C m selected is smaller than the threshold parameter S d , the parameter ⁇ is output.
- the output of the logic block 23 is added to the value contained in an accumulator 24. If several components C m of a histogram must be compared, the logic block 21 selects them successively. The selected components C m are then compared one by one with respect to the threshold parameter S d , and the parameters ⁇ and / or ⁇ are added to the accumulator 24 in order to obtain a partial score for the histogram.
- a processing unit UT successively analyzes the different histograms of the descriptors forming a classifier. Therefore, the parameters ⁇ and / or ⁇ can be added in the accumulator 24 for all the descriptors of the classifier considered in order to obtain the overall score S for this classifier in the detection window.
- the first M components C m are divided by the M + 1 ⁇ m ⁇ component C M + i before being compared with the threshold parameter S d while the M + 1 ⁇ m ⁇ component C M + i is divided by the the descriptor surface considered before being compared with the threshold parameter S d .
- the threshold parameter S d can be multiplied either by the M + 1 th component C M + i of the analyzed histogram, or by the surface of the descriptor according to the component C m considered, as represented in FIG.
- processing UT then comprises a third logic block 25 receiving on a first input 251 the M + 1 ⁇ m ⁇ component C M + i of the histogram and on a second input 252 the surface of the descriptor.
- An output of the logic block 25 connects one of the two inputs 251 or 252 to a first input 261 of a multiplier 26 according to the multiplication chosen.
- a second input 262 of the multiplier 26 receives the threshold parameter S d and an output of the multiplier 26 is then connected to the second input 222 of the comparator 22.
- a processing unit UT may also comprise two buffers 27 and 28 in series.
- the first buffer memory 27 can receive from the histogram determination unit 7 the M + 1 components C m of a first histogram at a given time step.
- the components C m of the first histogram can be transferred to the second buffer memory 28, this memory being connected to the inputs of the logic block 21, while the components C m of a second histogram can be loaded into the first buffer memory 27.
- the use of two buffers makes it possible to compensate for the calculation time of the histograms.
- FIG. 5 illustrates the different coordinate systems used for the present invention.
- a cartesian coordinate system (OJJ) is associated with an image 41, in this case an integral image l in t, m.
- the origin O is for example fixed at the upper left corner of the image 41.
- a detection window F can thus be identified in this image 41 by the coordinates (XFA.VFA) and (XFCYFC) of two of its opposite corners F A and F c .
- a second Cartesian coordinate system (O F JJ) may be associated with the detection window F.
- the origin 0 F is for example fixed at the upper left corner of the detection window F.
- the position of a descriptor D is determined by two of its opposite corners D A and D c , either in the reference (O F JJ) by the relative coordinates (X'DA, Y'DA) and (X'DCY'DC), or in the reference (OJJ) by the absolute coordinates (XDA, YDA) and (XDCYDC) -
- FIG. 6 represents an exemplary embodiment of a cascade unit 5.
- the unit 5 comprises a finite state machine 51, four logic blocks 521, 522, 523 and 524 each comprising one input and N outputs and four blocks of registers 531, 532, 533 and 534, each block of registers being associated with one logic block 521, 522, 523 or 524.
- a block of registers 531, 532, 533 or 534 has N data registers, each data register being connected to one of the outputs of the associated logic block 521, 522, 523 or 524.
- the finite state machine 51 receives the detection window size and displacement step information and generates up to N detection windows F which it allocates to the processing units UT 1 , UT 2 , ..., UT N .
- the generation of the detection windows includes the determination of the coordinates (XFA, YFA) and (XFCYFC) of their corners F A and F c .
- the coordinates (XFA, YFA) and (XFCYFC) of the detection windows F are generated exhaustively during the first iteration of the floor loop. For the following iterations, only the detection windows F that are part of the list of positions are analyzed.
- the coordinates (XFA, YFA) and (XFCYFC) attack an input of the first logic block 521, an input of the second logic block 522, an input of the third logic block 523 and an input of the fourth logic block 524.
- Each logic block 521, 522 , 523, 524 connects its input to one of its outputs according to the processing unit UT considered.
- the register blocks 531, 532, 533 and 534 respectively contain the coordinates XFA, YFA, XFC and y F c for all the UT processing units used.
- FIG. 7 represents an exemplary embodiment of a descriptor loop unit 6.
- the unit 6 comprises a first logic block 61 receiving as input the data of the first and second blocks of registers 531 and 532, in other words the coordinates X F A and V F A for the different processing units UT used, as well as a second logic block 62 receiving as input the data of the third and fourth blocks of registers 533 and 534, in other words the coordinates x Fc and y F c-
- the unit 6 also comprises a memory 63 containing the relative coordinates (XOA 1 Y 1 DA) and (X'DCY'DC) of the different descriptors D, the latter varying according to the current stage.
- the relative coordinates (X'DA, Y'DA) and (X'DCY'DC) of the descriptors D forming the classifier associated with the current stage successively attack a first input 641 of a calculation block 64.
- This calculation block 64 also receives on a second and a third input 642 and 643 the coordinates (XFA, YFA) and (XFCYFC) of the detection windows F via outputs of the logic blocks 61 and 62.
- the calculation block 64 can thus calculate absolute coordinates (XDA, YDA) and (XDCYDC) corners D A and Descriptors D.
- the absolute coordinates (XDA, YDA) and (XDCYDC) are then sent to a block of registers 65 by means of a logic block 66 comprising for example an input and four outputs, each output being connected to one of the four data registers of the register block 65.
- the descriptor loop unit 6 further comprises a finite state machine 67 controlling the logic blocks 61, 62 and 66 as well as the read accesses to the memory 63 by control means 671, 672, 673 and 674.
- the finite state machine 67 receives the iteration numbers in the ladder loop and in the floor loop by connecting means 675 and 676 so that successively generating the descriptors D for each detection window F allocated to a processing unit UT.
- the unit 6 can also comprise a calculation block 68 calculating, from the absolute coordinates (XDA ⁇ DA) and (XDCVDC), the surface of the descriptors. The value of this surface can be stored in a data register 69.
- FIG. 8 represents an exemplary embodiment of a unit 7 for determining histograms.
- Unit 7 is partitioned into three parts.
- a first part 71 generates the memory addresses of the pixels D A , D B , D c and D 0 corresponding to the four corners of the descriptors D from the absolute coordinates (XDA.VDA) and (XDC, VDC) of the corners D A and D c .
- a second part 72 calculates the components C m of histograms according to the method of P. Viola and M. Jones, and a third part 73 filters the components C m of histogram.
- the first part 71 comprises an address generator 71 1 receiving as input the absolute coordinates (XDA.VDA) and (XDCVDC) and the surface of the descriptor D considered.
- the surface of the descriptor D can thus be transmitted to the processing units UT via the histogram determination unit 7 at the same time as the components C m of histograms.
- the address generator 71 1 finds the absolute coordinates (X DB .V DB ) and (X DD .V DD ) of the other two corners D B and D 0 descriptor D, respectively (XDCVDA) and (XDA.VDC) -
- the address generator 71 1 thus generates the memory addresses of the four corners D A , D B , D c and D 0 of the descriptor D for each integral image 1 in t, m
- the weights wo (x D A, YDA), wo (x DB, YDB), wo (x D c, YDC) and wo (D x D, YDD) of these pixels D A, D B, D c and D 0 are loaded from the memory 2 to a block of registers 712 having 4x (M + 1) data registers, for example via a logic block 713.
- the second part 72 comprises an assembly 721 of adders and subtractors connected at the input to the register block 712 and at the output to a block of registers 722 comprising M +1 data registers.
- This second part 72 and in particular the set 721 of adders and subtracters, is arranged to generate M + 1 components C m of histogram in a clock cycle.
- Each component C m is calculated from the wo weight (x D A, YDA), wo (x D B, YDES), wo (x D c, YDC) and wo (x D D, YDD) pixel D A, D B , D C and D 0 of an integral image l in t, m and stored in one of the data registers of the register block 722.
- m and a descriptor D as represented in FIG. FIG. 5, the computation of the component C m , with m an integer between 1 and M + 1, can be modeled by the following relation:
- each component C m contains the sum of the weights wo (x, y) of the pixels p (x, y) of an orientation image l m
- the third portion 73 includes a filter 731 eliminating histograms whose luminous intensity gradient is very low, because these are considered as noise. In other words, if the component C M + i is less than a predetermined threshold, called the histogram threshold S h , all the components C m are set to zero.
- the components C m are then stored in a block of registers 732 so that they can be used by the processing units UT.
- the unit 7 for determining histograms is an important element of the device 1.
- FIG. 9 illustrates an exemplary embodiment of a score analysis unit 8.
- the unit 8 comprises a FIFO 81, in other words a stack whose first input data is the first output.
- the FIFO stack 81 makes it possible to manage the list of positions. In particular, it can store the coordinates (XFA.VFA) and (XFCYFC) of the detection windows F whose overall score S of the classifier is greater than the threshold S ⁇ current stage, this threshold S ⁇ may vary depending on the 'floor.
- the FIFO stack 81 can also store the global scores S associated with these coordinates (XFA.VFA) and (XFCYFC). Since the current iteration of the scale loop is known, only the coordinates (X FA , Y FA ) detection windows F can be stored in order to determine the position and the size of the detection windows F.
- the FIFO stack 81 successively receives the coordinates X FA of the register block 531 via a logic block 82 and the coordinates y FA of the register block 532 via a logic block 83.
- the global scores S calculated by the N processing units UT are stored in a block of registers 84 and sent together with the coordinates X FA and y F A to the FIFO stack 81 via a logic block 85.
- the coordinates (X FA ⁇ FA ) are ec rites or not in the FIFO 81.
- the score S is for example compared to the current stage threshold S ⁇ .
- the different stage thresholds S ⁇ can be stored in a block of registers 86.
- the selection of the stage threshold S ⁇ is for example carried out by a logic block 87 whose inputs are connected to the block of registers 86 and whose output is connected to a comparator 88.
- the comparator 88 compares each of the scores S with the threshold S ⁇ of current stage. If the score S is greater than the threshold S ⁇ , the coordinates (X FA ⁇ FA ) are written in the FIFO stack 81.
- the control of the logic blocks 82, 83, 85 and 87 can be performed by a finite state machine 89.
- the unit 8 may also include an address generator 801 controlling the reading of the FIFO stack 81 and the export of its data to the cascade unit 5 in order to analyze the detection windows F having passed the current stage. on the next floor.
- the FIFO stack contains the list of positions having passed all the stages successfully, that is to say the positions containing the object to be recognized. The contents of the pile FIFO 81 can thus be transferred to the memory 2 via the memory controller 3.
- the device 1 comprises a parameter extraction unit 10, as shown in FIG. 1.
- the unit 10 comprises a memory in which the attribute parameters, descriptor threshold S d , ⁇ and ⁇ for each floor. These parameters are determined during a learning step performed prior to the use of the device 1. At each iteration of the stage loop during steps E 42 and E 54 , the corresponding parameters are sent to the processing units UT used.
- the device 1 comprises a unit 1 1 for cutting the images, as represented in FIG. 1.
- This unit 11 makes it possible to cut images, in this case the M + 1 integral images, into several images. . It is particularly useful when the images to be analyzed, because of their resolution, occupy a memory space greater than the capacity of the memory 2.
- the thumbnails corresponding to a given area of the integral images are successively loaded into the memory. memory 2.
- the device 1 can then process the thumbnails in the same way as the integral images by repeating the step E 4 as many times as there are thumbnails, the analysis of the image being completed when all thumbnails have been analyzed.
- the image-splitting unit 11 comprises a finite-state machine generating the boundaries of the thumbnails according to the resolution of the images and the capacity of the memory 2.
- the boundaries of the thumbnails are sent to the cascade unit 5 so to adapt the size and the displacement pitch of the detection windows to the thumbnails.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Biology (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Probability & Statistics with Applications (AREA)
- General Engineering & Computer Science (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
L'invention concerne un dispositif de reconnaissance et de localisation d'objets dans une image par balayage de fenêtres de détection. Selon l'invention, le dispositif (1) comprend une architecture flot de données organisée en pipeline de tâches matérielles concurrentes et comportant : des moyens (4, 5, 6, 9) aptes à générer un descripteur (D) pour chaque fenêtre de détection, une unité (7) de détermination d'histogrammes déterminant un histogramme de gradients d'orientation pour chaque descripteur, N unités de traitement (UT) en parallèle aptes à analyser les histogrammes en fonction de paramètres associés aux descripteurs pour fournir un score partiel représentatif de la probabilité que ledit descripteur contienne au moins une partie de l'objet à reconnaître, la somme des scores partiels de chaque fenêtre de détection fournissant un score global (S1, S2,..., SN) représentatif de la probabilité que ladite fenêtre de détection (F1, F2,..., FN) contienne l'objet à reconnaître.
Description
Dispositif à architecture pipeline de flot de données pour la reconnaissance et la localisation d'objets dans une image par balayage de fenêtres de détection
L'invention concerne un dispositif de reconnaissance et de localisation d'objets dans une image numérique. Elle s'applique notamment aux domaines de l'électronique embarquée nécessitant une fonction de détection/classification tels que la vidéosurveillance, le traitement vidéo mobile et les systèmes d'aide à la conduite.
La détection de mouvement est possible par simple soustraction d'images successives. Cependant, cette méthode présente l'inconvénient de ne pas pouvoir faire de discrimination entre les différents types d'objets en mouvement. En particulier, il n'est pas possible de discriminer un mouvement de feuilles d'arbres sous l'effet du vent du déplacement d'une personne. Par ailleurs, dans les applications embarquées, l'image entière peut être soumise à un mouvement, par exemple dû au déplacement du véhicule sur lequel est fixée la caméra.
La détection d'un objet complexe, comme une personne ou un visage humain, est en outre très difficile dans la mesure où la forme apparente de l'objet dépend non seulement de sa morphologie, mais aussi de sa posture, de l'angle de vue et de la distance entre l'objet et la caméra. En plus de ces difficultés s'ajoutent les problèmes de variations d'éclairage, d'expositions et d'occultation des objets. P. Viola et M. Jones ont développé un procédé permettant de détecter de façon fiable un objet dans une image. Ce procédé est notamment décrit dans P. VIOLA and M. JONES. Robust Real-time Object Détection, 2nd international workshop on statistical and computational théories of vision - modelling, learning, Computing and sampling, Vancouver, Canada, JuIy 2001 . Il comprend une phase d'apprentissage et une phase de reconnaissance. Lors de la phase de reconnaissance, on effectue un balayage de l'image par une fenêtre de détection dont la taille varie afin d'identifier des objets de différentes tailles. L'identification des objets est basée sur l'utilisation de descripteurs mono-variables de type ondelettes de Haar, qui sont des descripteurs de forme relativement simple. Ces descripteurs sont déterminés lors de la phase d'apprentissage et permettent de tester des caractéristiques représentatives de l'objet à reconnaître. Ces
caractéristiques sont souvent désignées sous le terme de signature de l'objet. Pour une même position dans l'image, une fenêtre de détection est analysée par plusieurs descripteurs afin de tester des caractéristiques sur différentes zones de la fenêtre de détection et ainsi obtenir un résultat relativement fiable.
Pour améliorer l'efficacité des descripteurs, on a proposé des descripteurs multivahables. Ces descripteurs multivahables sont par exemple composés d'une part, d'un histogramme de l'orientation des gradients d'intensité et, d'autre part, d'une composante de densité de la magnitude du gradient dans la zone de calcul.
Par ailleurs, afin d'accélérer la méthode de détection, les descripteurs sont regroupés dans des classifieurs testés successivement dans une cascade ou boucle d'étage. Chaque étage de la cascade effectue des tests plus complexes et plus sélectifs que l'étage précédent afin d'éliminer rapidement les zones de l'image sans intérêt comme le ciel.
Actuellement, la méthode de P. Viola et M. Jones est implantée soit de façon matérielle sur des circuits complètement dédiés, soit de façon logicielle sur des processeurs. L'implantation matérielle est très performante mais très peu flexible. En effet, un circuit dédié est câblé pour détecter un type d'objet donné avec une précision donnée. A l'inverse, l'implantation logicielle est très flexible du fait de la présence d'un programme, mais les performances s'avèrent souvent insuffisantes dans la mesure où les processeurs généralistes manquent de puissance de calcul et où les processeurs de signaux numériques (processeurs DSP) ont une efficacité très réduite dans les instructions de branchement conditionnel. En outre, les solutions logicielles peuvent difficilement être intégrées dans un système embarqué tel qu'un véhicule ou un téléphone mobile du fait qu'elles consomment énormément d'énergie et qu'elles présentent un encombrement important. Enfin, dans la plupart des cas, la mémoire interne et/ou la bande passante sont insuffisantes pour effectuer une détection rapide. Le document Li ZHANG et al: "Efficient Scan-Window Based Object Détection using GPGPU", 2008, décrit un premier exemple d'implantation logicielle appliqué à la détection de piétons. Cette implantation est basée sur une unité générique de traitement graphique, appelée General-Purpose computation on Graphics Processing Unit (GPGPU) dans la littérature anglo-saxonne.
L'unité de traitement graphique nécessite d'être couplée à un processeur par l'intermédiaire d'un contrôleur de mémoire et d'un bus du type PCI Express. Par conséquent, cette implantation consomme beaucoup d'énergie à la fois pour l'unité de traitement graphique et pour le processeur, de l'ordre de 300 à 500 W en tout, et présente un encombrement de l'ordre de quelques dizaines de centimètres carrés la rendant inadaptée pour des solutions embarquées. Le document Christian WOJEK et al: "Sliding-Windows for Rapid Object Class Localization: A Parallel Technique", 2008 décrit un deuxième exemple d'implantation logicielle également basée sur une unité générique de traitement graphique. Cet exemple souffre des mêmes problèmes pour des applications embarquées.
Un but de l'invention est notamment de pallier tout ou partie des inconvénients précités en proposant un dispositif dédié à la reconnaissance et la localisation d'objets qui ne soit pas programmable tout en étant paramétrable de manière à permettre la détection de différents objets avec un degré variable de précision, notamment en termes de fausses alarmes. A cet effet, l'invention a pour objet un dispositif pour la reconnaissance et la localisation d'objets dans une image numérique par balayage de fenêtres de détection, caractérisé en ce qu'il comprend une architecture flot de données organisée en pipeline de tâches matérielles concurrentes, l'architecture comportant :
- des moyens aptes à générer un descripteur pour chaque fenêtre de détection, chaque descripteur délimitant une partie de l'image numérique appartenant à la fenêtre de détection considérée,
- une unité de détermination d'histogrammes déterminant, pour chaque descripteur, un histogramme représentatif de caractéristiques de la partie de l'image numérique délimitée par le descripteur considéré,
- N unités de traitement en parallèle, une fenêtre de détection étant allouée à chaque unité de traitement, chaque unité de traitement étant apte à analyser l'histogramme du descripteur considéré en fonction de paramètres associés à chaque descripteur pour fournir un score partiel représentatif de la probabilité que ledit descripteur contienne au moins une partie de l'objet à reconnaître, la somme des scores partiels de chaque
fenêtre de détection fournissant un score global représentatif de la probabilité que ladite fenêtre de détection contienne l'objet à reconnaître.
L'invention a notamment pour avantage qu'elle peut être réalisée par un circuit intégré à application spécifique, bien connu sous le terme anglo-saxon de circuit ASIC pour "Application Spécifie Integrated Circuit", ou par un réseau prédiffusé programmable par l'utilisateur, mieux connu sous le terme anglo-saxon de FPGA pour "field programmable gâte array". Par conséquent, le dispositif selon l'invention présente une surface silicium et une consommation électrique réduites, dans un rapport de un à cent par rapport à une solution programmée. Il peut ainsi être intégré dans un système embarqué. Le dispositif permet en outre d'effectuer plusieurs tests de classification en parallèle, offrant ainsi une forte puissance de calcul. Le dispositif est complètement paramétrable. Par conséquent, le type de détection, la précision de la détection ainsi que le nombre de descripteurs et de classifieurs utilisés peuvent être ajustés afin d'optimiser le rapport entre la qualité du résultat et le temps de calcul.
Un autre avantage du dispositif est qu'il parallélise les tâches par son architecture pipeline. Tous les modules fonctionnent de façon concurrente (en même temps). En l'occurrence, en considérant une suite d'ensembles de descripteurs donnés, les unités de traitement analysent les histogrammes associés aux descripteurs de rang p, l'unité de détermination d'histogramme détermine les histogrammes associés aux descripteurs de rang p+1 , et les moyens pour générer des descripteurs déterminent les descripteurs de rang p+2 dans un même intervalle de temps. Ainsi, le temps de détermination des descripteurs et des histogrammes est masqué par le temps alloué à la détection, c'est-à-dire le temps d'analyse des histogrammes. Le dispositif présente donc une forte puissance de calcul.
L'invention sera mieux comprise et d'autres avantages apparaîtront à la lecture de la description détaillée d'un mode de réalisation donné à titre d'exemple, description faite en regard de dessins annexés qui représentent :
- la figure 1 , des étapes possibles pour le fonctionnement d'un dispositif selon l'invention,
- la figure 2, des sous-étapes possibles du fonctionnement du dispositif représenté à la figure 1 ,
- la figure 3, par un synoptique, un exemple de réalisation d'un dispositif selon l'invention, - la figure 4, un exemple de réalisation d'une unité de traitement du dispositif de la figure 3,
- la figure 5, une illustration des différents systèmes de coordonnées utilisés pour la mise en œuvre de l'invention,
- la figure 6, un exemple de réalisation d'une unité de cascade du dispositif de la figure 3,
- la figure 7, une forme de réalisation d'une unité de boucle de descripteur du dispositif de la figure 3,
- la figure 8, un exemple de réalisation d'une unité de détermination d'histogrammes du dispositif de la figure 3, - la figure 9, un exemple de réalisation d'une unité d'analyse de scores du dispositif de la figure 3.
La figure 1 décrit des étapes possibles pour le fonctionnement du dispositif selon l'invention. Pour la suite de la description, on considère des images numériques formées d'une matrice de Nc colonnes par NI lignes de pixels. Chaque pixel contient une valeur, appelée poids, représentative de l'amplitude d'un signal, par exemple représentative d'une intensité lumineuse. Le fonctionnement d'un dispositif selon l'invention est fondé sur un procédé adapté de la méthode de P. Viola et M. Jones. Ce procédé est par exemple décrit dans la demande de brevet WO2008/104453 A. Ce procédé de détection repose sur des calculs de nombres en virgule flottante à précision double. Ces calculs nécessitent des unités arithmétiques flottantes complexes qui sont coûteuses en vitesse d'exécution, surface silicium et consommation. Le procédé a été modifié pour utiliser des opérations sur des données de type virgule fixe. Ces opérations ne nécessitent que des opérateurs de type entier qui sont plus simples et plus rapides. Le procédé a aussi été modifié pour éviter d'utiliser des opérations de divisions dans le calcul de la détection des unités de traitement. Ainsi en n'utilisant que des opérations de type entier (additions et multiplications), les calculs sont plus rapides, le dispositif est plus petit et sa consommation est
réduite. Cependant, les calculs de type virgule fixe sont moins précis et le procédé a dû être modifié pour prendre en compte cette erreur dans les calculs.
Dans une première étape E1, la signature du gradient de l'amplitude du signal, est calculée pour l'image dans laquelle sont recherchés des objets, appelée image originale I0Mg- Cette signature est par exemple celle du gradient d'intensité lumineuse. Elle génère une nouvelle image appelée image dérivée ldéπv- A partir de cette image dérivée ldéπv, M images d'orientation lm avec m un indice variant de 1 à M peuvent être déterminées dans une deuxième étape E2, chaque image d'orientation lm étant de la même taille que l'image originale Ug et contenant, pour chaque pixel, le gradient d'intensité lumineuse sur une certaine plage de valeurs d'angles. A titre d'exemple, 9 images d'orientation lm peuvent être obtenues pour des plages de valeurs d'angles de 20°. La première image d'orientation I1 contient par exemple les gradients d'intensité lumineuse dont la direction est comprise entre 0 et 20°, la deuxième image d'orientation I2 contenant les gradients d'intensité lumineuse dont la direction est comprise entre 20 et 40°, et ainsi de suite jusqu'à la neuvième image d'orientation I9 contenant les gradients d'intensité lumineuse dont la direction est comprise entre 160 et 180°. En outre une M+1 θmθ, soit une dixième, image d'orientation lM+i correspondant à la magnitude du gradient d'intensité lumineuse peut être déterminée, M étant égal à 9 dans l'exemple de la figure 1. Cette M+1 θmθ image d'orientation lM+i permet notamment de renseigner sur la présence de contours. Dans une troisième étape E3, chaque image d'orientation lm est transformée en image intégrale lint,m avec m variant de 1 à M. Une image intégrale est une image de même taille que l'image originale où le poids wi(m,n) de chaque pixel p(m,n) est déterminé par la somme des poids wo(x,y) de tous les pixels p(x,y) situés dans la surface rectangulaire délimitée par l'origine O de l'image et le pixel p(m,n) considéré. Autrement dit, le poids wi(m,n) des pixels p(m,n) d'une image intégrale lint,m peut être modélisé par la relation :
V(m,n)e [l, Nl]x[l, Nc] , wi(m,n) = ∑ ∑wo(x, y) (1 ) x=l y=l
Dans une quatrième étape E4, les M+1 images intégrales lint,m ainsi obtenues sont balayées par des fenêtres de détection de différentes tailles comprenant chacune un ou plusieurs descripteurs. Les M+1 images intégrales lint,m sont balayées simultanément, de sorte que le balayage de ces images intégrales lint.m correspond à un balayage de l'image originale lorig. Un descripteur délimite une partie d'image appartenant à la fenêtre de détection. C'est dans ces parties d'image qu'est recherchée la signature de l'objet. Le balayage des images intégrales lint,m par les fenêtres est réalisé par quatre niveaux de boucles imbriquées. Une première boucle, appelée boucle d'échelle, effectue un bouclage sur la taille des fenêtres de détection. La taille diminue par exemple au fur et à mesure que l'on avance dans la boucle d'échelle afin d'analyser des zones de plus en plus petites. Une deuxième boucle, appelée boucle d'étage, effectue un bouclage sur le niveau de complexité de l'analyse. Le niveau de complexité, également appelé étage, dépend principalement du nombre de descripteurs utilisés pour une fenêtre de détection. Pour le premier étage, le nombre de descripteurs est relativement limité. Il est par exemple de un ou deux descripteurs par fenêtre de détection. Le nombre de descripteurs augmente généralement avec les étages. L'ensemble des descripteurs utilisés pour un étage est appelé un classifieur. Une troisième boucle, appelée boucle de position, effectue le balayage proprement dit, c'est-à-dire un bouclage sur la position des fenêtres de détection dans les images intégrales lint,πv Une quatrième boucle, appelée boucle de descripteur, effectue un bouclage sur les descripteurs utilisés pour l'étage courant. A chaque itération de cette boucle, un des descripteurs du classifieur est analysé afin de déterminer s'il contient une partie de la signature de l'objet à reconnaître.
La figure 2 illustre plus précisément les quatre niveaux de boucles imbriquées par des sous-étapes possibles pour la quatrième étape E4 de la figure 1. Dans une première étape E41, la boucle d'échelle est initialisée. L'initialisation de la boucle d'échelle comporte par exemple la génération d'une taille initiale de fenêtre de détection et d'un pas de déplacement initial. Dans une deuxième étape E42, la boucle d'étage est initialisée. L'initialisation de cette boucle comprend par exemple la détermination des descripteurs utilisés pour le premier étage. Ces descripteurs peuvent être déterminés par
leurs coordonnées relatives dans la fenêtre de détection. Dans une troisième étape E43, la boucle de position est initialisée. Cette initialisation comporte par exemple la génération des fenêtres de détection et l'allocation de chaque fenêtre de détection à une unité de traitement du dispositif selon l'invention. Les fenêtres de détection peuvent être générées sous forme d'une liste, appelée liste de fenêtres. Une liste distincte est associée à chaque itération de la boucle d'échelle. Pour la première itération de la boucle d'étage, les fenêtres de détection sont généralement générées de manière exhaustive, c'est-à-dire de manière à couvrir toutes les zones des images intégrales lint,m- Plusieurs itérations de la boucle de position sont nécessaires lorsque le nombre de fenêtres de détection est supérieur au nombre d'unités de traitement. Les fenêtres de détection peuvent être déterminées par leur position dans les images intégrales lint,m- Ce sont alors ces positions qui sont stockées dans la liste de fenêtres. Dans une quatrième étape E44, la boucle de descripteur est initialisée. Cette initialisation comprend par exemple la détermination, pour chaque fenêtre de détection allouée à une unité de traitement, des coordonnées absolues d'un premier descripteur parmi les descripteurs du classifieur associé à l'étage considéré. Dans une cinquième étape E45, un histogramme est généré pour chaque descripteur. Un histogramme comporte par exemple M+1 composantes Cm avec m variant de 1 à M+1. Chaque composante Cm contient la somme des poids wo(x,y) des pixels p(x,y) de l'une des images d'orientation lm contenus dans le descripteur considéré. La somme de ces poids wo(x,y) peut notamment être obtenue de façon simple par le poids de quatre pixels de l'image intégrale correspondante, comme nous le verrons plus loin. Dans une sixième étape E46, les histogrammes sont analysés. Le résultat de chaque analyse est fourni sous la forme d'un score, appelé score partiel, représentatif de la probabilité que le descripteur associé à l'histogramme analysé contienne une partie de la signature de l'objet à reconnaître. Dans une septième étape E47, on détermine si la boucle de descripteur est terminée, autrement dit si tous les descripteurs ont été générés pour l'étage courant. Si tel n'est pas le cas, on avance dans la boucle de descripteur dans une étape E48 et on reboucle à partir de l'étape E45. L'avancée dans la boucle de descripteur comprend la détermination, pour chaque fenêtre de détection allouée à une unité de traitement du dispositif, des coordonnées absolues d'un nouveau descripteur
parmi les descripteurs du classifieur associé à l'étage considéré. Un nouvel histogramme est alors généré pour chaque nouveau descripteur et fournit un nouveau score partiel. Les scores partiels sont additionnés à chaque itération de la boucle de descripteur afin de fournir pour chaque fenêtre de détection, lors de la dernière itération, un score global S pour le classifieur. Ces scores globaux S sont alors représentatifs de la probabilité que les fenêtres de détection contiennent l'objet à reconnaître, cette probabilité étant relative à l'étage courant. S'il est déterminé à l'étape E47 que la boucle de descripteur est terminée, on détermine dans une étape E49 si les scores globaux S sont supérieurs à un seuil d'étage Sθ prédéterminé. Ce seuil d'étage Sθ est par exemple déterminé dans une phase d'apprentissage. Dans une étape E50, les fenêtres de détection pour lesquelles les scores globaux S sont supérieurs au seuil d'étage Sθ sont stockées dans une nouvelle liste de fenêtres afin d'être analysées à nouveau par le classifieur de l'étage suivant. Les autres fenêtres de détection sont définitivement considérées comme ne contenant pas l'objet à reconnaître. Elles ne sont donc pas stockées et ne seront plus analysées dans la suite du procédé. Dans une étape E51, on détermine si la boucle de position est terminée, c'est-à-dire si toutes les fenêtres de détection pour l'échelle et l'étage considérés ont été allouées à une unité de traitement. Si tel n'est pas le cas, on avance dans la boucle de position dans une étape E52 et on reboucle à partir de l'étape E44. L'avancée dans la boucle de position comprend l'allocation des fenêtres de détection comprises dans la liste de fenêtres de l'étage courant mais non encore analysées aux unités de traitement. En revanche, si la boucle de position est terminée, on détermine dans une étape E53 si la boucle d'étage est terminée, autrement dit si l'étage courant est le dernier étage de la boucle. L'étage courant est par exemple repéré par un compteur d'étage. Si la boucle d'étage n'est pas terminée, on change d'étage dans une étape E54. Le changement d'étage consiste par exemple à incrémenter le compteur d'étage. Il peut également comporter la détermination des coordonnées relatives des descripteurs utilisés pour l'étage courant. Dans une étape E55, la boucle de position est initialisée en fonction de la liste de fenêtres générée lors de l'étage précédent. Des fenêtres de détection de cette liste sont alors allouées aux unités de traitement du dispositif. A l'issue de l'étape E55, on reboucle à partir de l'étape E44. De même que pour la première itération de la boucle
d'étage, les étapes E51 et E52 permettent le cas échéant un rebouclage pour que toutes les fenêtres de détection à analyser soient finalement allouées à une unité de traitement. S'il est déterminé à l'étape E53 que la boucle d'étage est terminée, on détermine dans une étape E56 si la boucle d'échelle est terminée. Si tel n'est pas le cas, on change d'échelle dans une étape E57 et on reboucle à partir de l'étape E42. Le changement d'échelle comprend par exemple la détermination d'une nouvelle taille de fenêtres de détection et d'un nouveau pas de déplacement pour ces fenêtres. Les objets sont alors recherchés dans ces nouvelles fenêtres de détection par la mise en œuvre des boucles d'étage, de position et de descripteur. Si la boucle d'échelle est terminée, autrement dit si toutes les tailles de fenêtres de détection ont été analysées, on met fin au procédé dans une étape E58. Les fenêtres de détection ayant passé tous les étages avec succès, c'est-à-dire celles stockées dans les différentes listes de fenêtres lors des dernières itérations de la boucle d'étage, sont considérées comme contenant les objets à reconnaître.
La figure 3 représente un exemple de réalisation d'un dispositif 1 selon l'invention exécutant l'étape E4 de balayage précédemment décrite en référence à la figure 2. Le dispositif 1 est par exemple réalisé sur un circuit intégré spécifique de taille réduite ou, selon la dénomination anglo-saxonne, un ASIC pour Application-Specific Integrated Circuit. Avantageusement, ce circuit est paramétrable. Ainsi, le dispositif 1 est dédié à une application de reconnaissance et de localisation d'objets, mais des paramètres peuvent être modifiés de façon à détecter différents types d'objets. Le dispositif 1 comprend une mémoire 2 contenant M+1 images intégrales lint,m- Les M+1 images intégrales lint,m correspondent aux images intégrales de M images d'orientation et à une image intégrale de la magnitude du gradient d'intensité lumineuse, comme définies précédemment. Le dispositif 1 comprend en outre un contrôleur 3 de mémoire, une unité 4 de boucle d'échelle, une unité 5 de cascade, une unité 6 de boucle de descripteur, une unité 7 de détermination d'histogrammes, N unités de traitement UT1, UT2, ..., UTN en parallèle, notées de façon générique UT, une unité 8 d'analyse de scores et une unité 9 de contrôle. Le contrôleur 3 de mémoire permet de gérer les accès à la mémoire 2 par l'unité 7 de détermination d'histogrammes. L'unité
4 de boucle d'échelle est contrôlée par l'unité de contrôle 9. Elle exécute la boucle d'échelle décrite précédemment. Autrement dit, elle génère lors de l'étape E41 d'initialisation de la boucle d'échelle ainsi que lors de l'étape E57 de changement d'échelle, une taille de fenêtre de détection et un pas de déplacement de ces fenêtres dans les images intégrales lint,m- La taille des fenêtres de détection et le pas de déplacement sont paramétrables. L'unité 4 de boucle d'échelle envoie les données de taille de fenêtres de détection et de pas de déplacement vers l'unité 5 de cascade. Cette unité 5 exécute les boucles d'étage et de position. En particulier, elle génère pour chaque fenêtre de détection des coordonnées (XFA.VFA) et (XFCYFC) en fonction de la taille des fenêtres et du pas de déplacement. Ces coordonnées (XFA,YFA) et (XFCYFC) sont envoyées vers l'unité 6 de boucle de descripteur. De plus, l'unité 5 de cascade alloue chaque fenêtre de détection à une unité de traitement UT. L'unité 6 de boucle de descripteur réalise la boucle de descripteur. En particulier, elle génère successivement pour chaque fenêtre de détection allouée à une unité de traitement UT les coordonnées (XDA,YDA) et (XDCYDC) des différents descripteurs du classifieur associé à l'étage courant. Ces coordonnées (XDA,YDA) et (XDCYDC) sont envoyées au fur et à mesure vers l'unité 7 de détermination d'histogrammes. L'unité 7 détermine successivement, à partir des coordonnées (XDA,YDA) et (XDCYDC) et des M+1 images intégrales lint,m, un histogramme pour chaque descripteur. Dans un mode de réalisation, chaque histogramme comporte M+1 composantes Cm, chaque composante Cm contenant la somme des poids wo(x,y) des pixels p(x,y) de l'une des images d'orientation lm contenus dans le descripteur considéré. Les histogrammes sont envoyés vers les unités de traitement UT1, UT2, ..., UTN. Selon l'invention, les N unités de traitement UT1, UT2, ..., UTN sont en parallèle. Chaque unité de traitement UT exécute une analyse sur l'histogramme de l'un des descripteurs contenus dans la fenêtre de détection qui lui est allouée. Une analyse d'histogramme est par exemple réalisée en fonction de quatre paramètres nommés attribut, seuil de descripteur Sd, α et β. Ces paramètres peuvent être modifiés. Ils dépendent notamment du type d'objet à reconnaître et de l'étage considéré. Ils sont par exemple déterminés lors d'une étape d'apprentissage. Les paramètres étant dépendants de l'itération d'étage, ils sont envoyés vers les unités de traitement UT1, UT2, ..., UTN à chaque itération de la boucle d'étage lors des
étapes E42 et E54. Une analyse d'histogramme génère un score partiel pour cet histogramme ainsi qu'un score global pour le classifieur de la fenêtre de détection qui lui est allouée. Les unités de traitement UT permettent d'exécuter simultanément jusqu'à N analyses d'histogrammes. Mais toutes les unités de traitement UT ne sont pas nécessairement utilisées lors d'une itération de la boucle de descripteur. Le nombre d'unités de traitement UT utilisées dépend du nombre d'histogrammes devant être analysés et donc du nombre de fenêtres de détection contenues dans la liste de fenêtres pour l'étage courant. Ainsi, la consommation électrique du dispositif 1 peut être optimisée en fonction du nombre de traitements à réaliser. A l'issue de la boucle de descripteur, les scores partiels des histogrammes sont additionnés de manière à obtenir un score global S pour le classifieur de chaque fenêtre de détection. Ces scores globaux S sont envoyés vers l'unité 8 d'analyse de scores. A partir de ces scores globaux S, l'unité 8 génère la liste de fenêtres pour l'étage suivant de la boucle d'étage.
La description ci-dessus du dispositif 1 est faite en référence à celle du procédé de la figure 2. Toutefois, il convient de noter que le dispositif 1 est basé sur une architecture pipeline. Ainsi, les différentes étapes du procédé sont effectuées en parallèle pour différents descripteurs. Autrement dit, les différents modules constituant le dispositif 1 fonctionnent simultanément. En particulier, l'unité 6 de boucle de descripteur, l'unité 7 de détermination d'histogrammes, les N unités de traitement UT1, UT2, ..., UTN, et l'unité 8 d'analyse de scores constituent respectivement un premier, un deuxième, un troisième et un quatrième étage de l'architecture pipeline.
La figure 4 représente un exemple de réalisation d'une unité de traitement UT permettant d'analyser un histogramme à M+1 composantes Cm. L'unité de traitement UT comprend un premier bloc logique 21 comportant M+1 entrées et une sortie. Par bloc logique, on entend un circuit commandé possédant une ou plusieurs entrées et une ou plusieurs sorties, chaque sortie pouvant être en liaison avec l'une des entrées en fonction d'une commande appliquée au bloc logique, par exemple par un contrôleur général ou par une logique interne au bloc logique. Le terme bloc logique est entendu au sens large. Un bloc logique possédant plusieurs entrées et/ou sorties peut être réalisé par un ensemble de multiplexeurs et/ou
démultiplexeurs et de portes logiques possédant chacun une ou plusieurs entrées et une ou plusieurs sorties. Le bloc logique 21 permet de sélectionner l'une des M+1 composantes Cm en fonction du paramètre attribut. L'unité de traitement UT comprend en outre un comparateur 22 dont une première entrée 221 reçoit la composante Cm sélectionnée par le bloc logique 21 et une deuxième entrée 222 reçoit le paramètre seuil de descripteur Sd. Le résultat de la comparaison entre la composante Cm sélectionnée et le paramètre seuil Sd est envoyé vers un deuxième bloc logique 23 comportant deux entrées et une sortie. La première entrée 231 de ce bloc logique 23 reçoit le paramètre α et la deuxième entrée 232 reçoit le paramètre β. En fonction du résultat de la comparaison, la sortie du bloc logique 23 délivre soit le paramètre α, soit le paramètre β. En particulier, si la composante Cm sélectionnée par le bloc logique 21 est supérieure au paramètre seuil Sd, le paramètre α est délivré en sortie. A l'inverse, si la composante Cm sélectionnée est inférieure au paramètre seuil Sd, le paramètre β est délivré en sortie. La sortie du bloc logique 23 est additionnée à la valeur contenue dans un accumulateur 24. Si plusieurs composantes Cm d'un histogramme doivent être comparées, le bloc logique 21 les sélectionne successivement. Les composantes Cm sélectionnées sont alors comparées une à une par rapport au paramètre seuil Sd, et les paramètres α et/ou β sont additionnés dans l'accumulateur 24 afin d'obtenir un score partiel pour l'histogramme. Une unité de traitement UT analyse successivement les différents histogrammes des descripteurs formant un classifieur. Par conséquent, les paramètres α et/ou β peuvent être additionnés dans l'accumulateur 24 pour tous les descripteurs du classifieur considéré afin d'obtenir le score global S pour ce classifieur dans la fenêtre de détection.
Selon une forme particulière de réalisation, les M premières composantes Cm sont divisées par la M+1 θmθ composante CM+i avant d'être comparées au paramètre seuil Sd tandis que la M+1 θmθ composante CM+i est divisée par la surface du descripteur considéré avant d'être comparée au paramètre seuil Sd. Alternativement, le paramètre seuil Sd peut être multiplié soit par la M+1 ème composante CM+i de l'histogramme analysé, soit par la surface du descripteur selon la composante Cm considérée, comme représenté à la figure 4. L'unité de traitement UT comprend alors un troisième bloc logique 25 recevant sur une première entrée 251 la M+1 θmθ
composante CM+i de l'histogramme et sur une deuxième entrée 252 la surface du descripteur. Une sortie du bloc logique 25 relie l'une des deux entrées 251 ou 252 à une première entrée 261 d'un multiplieur 26 selon la multiplication choisie. Une deuxième entrée 262 du multiplieur 26 reçoit le paramètre seuil Sd et une sortie du multiplieur 26 est alors reliée à la deuxième entrée 222 du comparateur 22.
Une unité de traitement UT peut également comporter deux mémoires tampons 27 et 28 en série. La première mémoire tampon 27 peut recevoir de l'unité 7 de détermination d'histogrammes les M+1 composantes Cm d'un premier histogramme à un pas de temps donné. Au pas de temps suivant, les composantes Cm du premier histogramme peuvent être transférées sur la deuxième mémoire tampon 28, cette mémoire étant reliée aux entrées du bloc logique 21 , tandis que les composantes Cm d'un deuxième histogramme peuvent être chargées dans la première mémoire tampon 27. L'utilisation de deux mémoires tampons permet de compenser le temps de calcul des histogrammes.
La figure 5 illustre les différents systèmes de coordonnées utilisés pour la présente invention. Un repère cartésien (OJJ) est associé à une image 41 , en l'occurrence une image intégrale lint,m- L'origine O est par exemple fixée au coin supérieur gauche de l'image 41. Une fenêtre de détection F peut ainsi être repérée dans cette image 41 par les coordonnées (XFA.VFA) et (XFCYFC) de deux de ses coins opposés FA et Fc. Un deuxième repère cartésien (OFJJ) peut être associé à la fenêtre de détection F. L'origine 0F est par exemple fixée au coin supérieur gauche de la fenêtre de détection F. La position d'un descripteur D est déterminée par deux de ses coins opposés DA et Dc, soit dans le repère (OFJJ) par les coordonnées relatives (X'DA,Y'DA) et (X'DCY'DC), soit dans le repère (OJJ) par les coordonnées absolues (XDA,YDA) et (XDCYDC)-
La figure 6 représente un exemple de réalisation d'une unité 5 de cascade. L'unité 5 comprend une machine à états finis 51 , quatre blocs logiques 521 , 522, 523 et 524 comprenant chacun une entrée et N sorties et quatre blocs de registres 531 , 532, 533 et 534, chaque bloc de registres étant associé à un bloc logique 521 , 522, 523 ou 524. Un bloc de registres
531 , 532, 533 ou 534 comporte N registres de données, chaque registre de données étant relié à l'une des sorties du bloc logique 521 , 522, 523 ou 524 associé. La machine à états finis 51 reçoit les informations de taille de fenêtres de détection et de pas de déplacement et génère jusqu'à N fenêtres de détection F qu'elle alloue aux unités de traitements UT1 , UT2, ..., UTN. La génération des fenêtres de détection comprend la détermination des coordonnées (XFA,YFA) et (XFCYFC) de leurs coins FA et Fc. Comme nous l'avons vu précédemment, les coordonnées (XFA,YFA) et (XFCYFC) des fenêtres de détection F sont générées de façon exhaustive lors de la première itération de la boucle d'étage. Pour les itérations suivantes, seules les fenêtres de détection F faisant partie de la liste de positions sont analysées. Les coordonnées (XFA,YFA) et (XFCYFC) attaquent une entrée du premier bloc logique 521 , une entrée du deuxième bloc logique 522, une entrée du troisième bloc logique 523 et une entrée du quatrième bloc logique 524. Chaque bloc logique 521 , 522, 523, 524 relie son entrée à l'une de ses sorties en fonction de l'unité de traitement UT considérée. Ainsi, les blocs de registres 531 , 532, 533 et 534 contiennent respectivement les coordonnées XFA, YFA, XFC et yFc pour toutes les unités de traitement UT utilisées.
La figure 7 représente un exemple de réalisation d'une unité 6 de boucle de descripteur. L'unité 6 comprend un premier bloc logique 61 recevant en entrée les données des premier et deuxième blocs de registres 531 et 532, autrement dit les coordonnées XFA et VFA pour les différentes unités de traitement UT utilisées, ainsi qu'un deuxième bloc logique 62 recevant en entrée les données des troisième et quatrième blocs de registres 533 et 534, autrement dit les coordonnées xFc et yFc- L'unité 6 comprend également une mémoire 63 contenant les coordonnées relatives (XOA1Y1DA) et (X'DCY'DC) des différents descripteurs D, ces derniers variant en fonction de l'étage courant. Les coordonnées relatives (X'DA,Y'DA) et (X'DCY'DC) des descripteurs D formant le classifieur associé à l'étage courant attaquent successivement une première entrée 641 d'un bloc de calcul 64. Ce bloc de calcul 64 reçoit également sur une deuxième et une troisième entrées 642 et 643 les coordonnées (XFA,YFA) et (XFCYFC) des fenêtres de détection F par l'intermédiaire de sorties des blocs logiques 61 et 62. Le bloc de calcul 64 peut ainsi calculer les coordonnées absolues (XDA,YDA) et (XDCYDC) des coins
DA et De des descripteurs D. Les coordonnées absolues (XDA,YDA) et (XDCYDC) sont alors envoyées vers un bloc de registres 65 par l'intermédiaire d'un bloc logique 66 comportant par exemple une entrée et quatre sorties, chaque sortie étant reliée à l'un des quatre registres de données du bloc de registres 65. L'unité 6 de boucle de descripteur comporte en outre une machine à états finis 67 contrôlant les blocs logiques 61 , 62 et 66 ainsi que les accès en lecture à la mémoire 63 par des moyens de commande 671 , 672, 673 et 674. La machine à états finis 67 reçoit les numéros d'itération dans la boucle d'échelle et dans la boucle d'étage par des moyens de liaison 675 et 676 afin de générer successivement les descripteurs D pour chaque fenêtre de détection F allouée à une unité de traitement UT. L'unité 6 peut également comporter un bloc de calcul 68 calculant, à partir des coordonnées absolues (XDA^DA) et (XDCVDC), la surface des descripteurs. La valeur de cette surface peut être stockée dans un registre de données 69.
La figure 8 représente un exemple de réalisation d'une unité 7 de détermination d'histogrammes. L'unité 7 est partitionnée en trois parties. Une première partie 71 génère les adresses mémoire des pixels DA, DB, Dc et D0 correspondant aux quatre coins des descripteurs D à partir des coordonnées absolues (XDA.VDA) et (XDC,VDC) des coins DA et Dc. Une deuxième partie 72 calcule les composantes Cm d'histogrammes selon la méthode de P. Viola et M. Jones, et une troisième partie 73 filtre les composantes Cm d'histogramme. La première partie 71 comprend un générateur d'adresses 71 1 recevant en entrée les coordonnées absolues (XDA.VDA) et (XDCVDC) et la surface du descripteur D considéré. La surface du descripteur D peut ainsi être transmise aux unités de traitement UT par l'intermédiaire de l'unité 7 de détermination d'histogrammes en même temps que les composantes Cm d'histogrammes. A partir des coordonnées absolues (XDA.VDA) et (XDCVDC), le générateur d'adresses 71 1 retrouve les coordonnées absolues (XDB.VDB) et (XDD.VDD) des deux autres coins DB et D0 du descripteur D, soit respectivement (XDCVDA) et (XDA.VDC)- Le générateur d'adresses 71 1 génère ainsi les adresses mémoire des quatre coins DA, DB, Dc et D0 du descripteur D pour chaque image intégrale lint,m- Les poids wo(xDA,yDA), wo(xDB,yDB), wo(xDc,yDc) et wo(xDD,yDD) de ces pixels DA, DB, Dc et D0 sont chargés depuis la mémoire 2 vers un bloc de registres 712 comportant 4x(M+1 )
registres de données, par exemple par l'intermédiaire d'un bloc logique 713. La deuxième partie 72 comprend un ensemble 721 d'additionneurs et de soustracteurs reliés en entrée au bloc de registres 712 et en sortie à un bloc de registres 722 comportant M+1 registres de données. Cette deuxième partie 72, et en particulier l'ensemble 721 d'additionneurs et de soustracteurs, est agencée de manière à générer M+1 composantes Cm d'histogramme en un cycle d'horloge. Chaque composante Cm est calculée à partir des poids wo(xDA,yDA), wo(xDB,yDEs), wo(xDc,yDc) et wo(xDD,yDD) des pixels DA, DB, DC et D0 d'une image intégrale lint,m et stockée dans l'un des registres de données du bloc de registres 722. Pour une image intégrale lint,m et un descripteur D tels que représentés à la figure 5, le calcul de la composante Cm, avec m un entier compris entre 1 et M+1 , peut être modélisé par la relation suivante :
Cm = Dc - DB - DD + DA (2) Ainsi, chaque composante Cm contient la somme des poids wo(x,y) des pixels p(x,y) d'une image d'orientation lm contenus dans le descripteur D. La troisième partie 73 comprend un filtre 731 éliminant les histogrammes dont le gradient d'intensité lumineuse est très faible, car ceux-ci sont considérés comme du bruit. Autrement dit, si la composante CM+i est inférieure à un seuil prédéterminé, appelée seuil d'histogramme Sh, toutes les composantes Cm sont mises à zéro. Les composantes Cm sont ensuite stockées dans un bloc de registres 732 afin de pouvoir être utilisées par les unités de traitement UT. L'unité 7 de détermination d'histogrammes est un élément important du dispositif 1. Ses performances sont directement liées à la bande passante de la mémoire 2. En effet, pour calculer un histogramme, il faut accéder à 4x(M+1 ) données. Si la mémoire 2 peut accéder à k données par cycle, un histogram
Avantageusement, la mémoire 2 possède une forte bande passante afin que le facteur k soit proche de 4x(M+1 ). En tout état de cause, le facteur k est préférentiellement choisi de sorte que le nombre Nc de cycles soit inférieur à dix. Ce nombre Nc correspond au temps de calcul d'un histogramme. Ce temps peut être masqué dans l'analyse d'un histogramme par la mémoire tampon 27 des unités de traitement UT.
La figure 9 illustre un exemple de réalisation d'une unité 8 d'analyse de scores. L'unité 8 comprend une pile FIFO 81 , autrement dit une pile dont la première donnée entrée est la première sortie. La pile FIFO 81 permet de gérer la liste de positions. En particulier, elle peut stocker les coordonnées (XFA.VFA) et (XFCYFC) des fenêtres de détection F dont le score global S du classifieur est supérieur au seuil Sθ d'étage courant, ce seuil Sθ pouvant varier en fonction de l'étage. La pile FIFO 81 peut également stocker les scores globaux S associés à ces coordonnées (XFA.VFA) et (XFCYFC)- Etant donné que l'itération courante de la boucle d'échelle est connue, seules les coordonnées (XFA,YFA) des fenêtres de détection F peuvent être stockées afin de déterminer la position et la taille des fenêtres de détection F. Selon une forme particulière de réalisation, représentée à la figure 9, la pile FIFO 81 reçoit successivement les coordonnées XFA du bloc de registres 531 par l'intermédiaire d'un bloc logique 82 et les coordonnées yFA du bloc de registres 532 par l'intermédiaire d'un bloc logique 83. Les scores globaux S calculés par les N unités de traitement UT sont stockés dans un bloc de registres 84 et envoyés conjointement avec les coordonnées XFA et yFA vers la pile FIFO 81 par l'intermédiaire d'un bloc logique 85. En fonction du score global S associé à une fenêtre de détection F, les coordonnées (XFA^FA) sont écrites ou non dans la pile FIFO 81. Le score S est par exemple comparé au seuil Sθ d'étage courant. Les différents seuils d'étage Sθ peuvent être stockés dans un bloc de registres 86. La sélection du seuil d'étage Sθ est par exemple réalisée par un bloc logique 87 dont les entrées sont reliées au bloc de registres 86 et dont la sortie est reliée à un comparateur 88. Le comparateur 88 compare chacun des scores S avec le seuil Sθ d'étage courant. Si le score S est supérieur au seuil Sθ, les coordonnées (XFA^FA) sont écrites dans la pile FIFO 81. Le contrôle des blocs logiques 82, 83, 85 et 87 peut être réalisé par une machine à états finis 89. L'unité 8 peut également comporter un générateur d'adresses 801 contrôlant la lecture de la pile FIFO 81 et l'exportation de ses données vers l'unité 5 de cascade afin d'analyser les fenêtres de détection F ayant passé l'étage courant lors de l'étage suivant. A la fin de chaque itération de la boucle d'échelle, la pile FIFO contient la liste des positions ayant passé tous les étages avec succès, c'est-à-dire les positions contenant l'objet à reconnaître. Le contenu de la pile
FIFO 81 peut ainsi être transféré dans la mémoire 2 par l'intermédiaire du contrôleur 3 de mémoire.
Selon une forme particulière de réalisation, le dispositif 1 comprend une unité 10 d'extraction de paramètres, comme représenté à la figure 1. L'unité 10 comprend une mémoire dans laquelle sont stockés les paramètres attribut, seuil de descripteur Sd, α et β pour chaque étage. Ces paramètres sont déterminés lors d'une étape d'apprentissage réalisée préalablement à l'utilisation du dispositif 1. A chaque itération de la boucle d'étage lors des étapes E42 et E54, les paramètres correspondants sont envoyés vers les unités de traitement UT utilisées.
Selon une forme particulière de réalisation, le dispositif 1 comprend une unité 1 1 de découpage des images, comme représenté à la figure 1. Cette unité 11 permet de découper des images, en l'occurrence les M+1 images intégrales, en plusieurs imagettes. Elle s'avère particulièrement utile lorsque les images à analyser, du fait de leur résolution, occupent un espace mémoire supérieur à la capacité de la mémoire 2. Dans ce cas, les imagettes correspondant à une zone donnée des images intégrales sont chargées successivement dans la mémoire 2. Le dispositif 1 peut alors traiter les imagettes de la même manière que les images intégrales en répétant l'étape E4 autant de fois qu'il y a d'imagettes, l'analyse de l'image étant terminée lorsque toutes les imagettes ont été analysées. L'unité 1 1 de découpage des images comprend une machine à états finis générant les frontières des imagettes en fonction de la résolution des images et de la capacité de la mémoire 2. Les frontières des imagettes sont envoyées vers l'unité 5 de cascade afin d'adapter la taille et le pas de déplacement des fenêtres de détection aux imagettes.
Claims
1. Dispositif pour la reconnaissance et la localisation d'objets dans une image numérique (lOπg) par balayage de fenêtres de détection (F1, F2, ..., FN), caractérisé en ce qu'il comprend une architecture flot de données organisée en pipeline de tâches matérielles concurrentes, l'architecture comportant :
- des moyens (4, 5, 6, 9) aptes à générer un descripteur (D) pour chaque fenêtre de détection (F1, F2, ..., FN), chaque descripteur (D) délimitant une partie de l'image numérique appartenant à la fenêtre de détection considérée, - une unité (7) de détermination d'histogrammes déterminant, pour chaque descripteur, un histogramme représentatif de caractéristiques de la partie de l'image numérique délimitée par le descripteur (D) considéré,
- N unités de traitement (UT1, UT2, ..., UTN) en parallèle, une fenêtre de détection (F1, F2, ..., FN) étant allouée à chaque unité de traitement (UT1, UT2, ..., UTN), chaque unité de traitement étant apte à analyser l'histogramme du descripteur (D) considéré en fonction de paramètres (attribut, Sd, α, β) associés à chaque descripteur (D) pour fournir un score partiel représentatif de la probabilité que ledit descripteur contienne au moins une partie de l'objet à reconnaître, la somme des scores partiels de chaque fenêtre de détection fournissant un score global (S1, S2, ..., SN) représentatif de la probabilité que ladite fenêtre de détection (F1, F2, ..., FN) contienne l'objet à reconnaître.
2. Dispositif selon la revendication 1 , caractérisé en ce qu'il est réalisé sur un circuit intégré spécifique, par exemple du type ASIC.
3. Dispositif selon l'une des revendications 1 ou 2, caractérisé en ce que les moyens (4, 5, 6, 9) aptes à générer un descripteur (D) pour chaque fenêtre de détection, l'unité (7) de détermination d'histogrammes et l'ensemble des N unités de traitement (UT1, UT2, ..., UTN) forment chacun un étage de l'architecture pipeline.
4. Dispositif selon l'une des revendications précédentes, caractérisé en ce que l'image numérique (lOπg) est transformée en M+1 images d'orientation (lm), les M premières images d'orientation (lm) contenant chacune, pour chaque pixel (p(x,y)), le gradient de l'amplitude d'un signal sur une plage de valeurs d'angles, la dernière image d'orientation (lm) contenant, pour chaque pixel (p(x,y)), la magnitude du gradient de l'amplitude du signal, chaque histogramme comportant M+1 composantes (Cm), chaque composante (Cm) contenant la somme des poids (wo(x,y)) des pixels (p(x,y)) de l'une des images d'orientation (lm) contenus dans le descripteur (D) considéré.
5. Dispositif selon la revendication 4, caractérisé en ce que chaque unité de traitement (UT1, UT2, ..., UTN) comprend :
- un premier bloc logique (21 ) comprenant M+1 entrées et une sortie et permettant de sélectionner successivement l'une des composantes (Cm) d'un histogramme en fonction du premier paramètre (attribut), - un comparateur (22) comparant la composante (Cm) sélectionnée avec le deuxième paramètre (Sd),
- un deuxième bloc logique (23) comprenant deux entrées (231 , 232) et une sortie, la première entrée (231 ) recevant le troisième paramètre (α), la deuxième entrée (232) recevant le quatrième paramètre (β) et la sortie délivrant soit le troisième paramètre (α), soit le quatrième paramètre (β) en fonction du résultat de la comparaison,
- un accumulateur (24) relié à la sortie du deuxième bloc logique (23) additionnant les troisièmes et/ou quatrièmes paramètres (α, β) afin de fournir d'une part les scores partiels associés aux différents descripteurs (D) de la fenêtre de détection (F1, F2, ..., FN) considérée et, d'autre part, le score global (S1, S2, ..., SN) associé à ladite fenêtre de détection (F1, F2, ..., FN).
6. Dispositif selon la revendication 5, caractérisé en ce que chaque unité de traitement (UT1, UT2, ..., UTN) comprend un troisième bloc logique (25) et un multiplieur (26), le bloc logique (25) recevant la M+1 θmθ composante (CM+i) de l'histogramme considéré sur une première entrée
(251 ) et une surface du descripteur (D) considéré sur une deuxième entrée
(252) et reliant à une première entrée (261 ) du multiplieur (26), soit la première entrée (251 ) du bloc logique (25) lorsque l'une des M premières composantes est comparée au deuxième paramètre (Sd), soit la deuxième entrée (252) du bloc logique (25) lorsque la M+1 θmθ composante (CM+i) est comparée au deuxième paramètre (Sd), une deuxième entrée (262) du multiplieur (26) recevant le deuxième paramètre (Sd), une sortie du multiplieur (26) reliant une entrée (222) du comparateur (22) de manière à comparer la composante (Cm) sélectionnée avec le deuxième paramètre (Sd) pondéré soit par la M+1 θmθ composante (CM+i) soit par la surface du descripteur.
7. Dispositif selon l'une quelconque des revendications 4, 5 ou 6, caractérisé en ce que l'unité (7) de détermination d'histogrammes est apte à déterminer un histogramme à partir de M+1 images intégrales (lim.m), chaque image intégrale (lint,m) étant une image où le poids (wi(m,n)) de chaque pixel (p(m,n)) est égal à la somme des poids (wo(x,y)) de tous les pixels (p(x,y)) de l'une des images d'orientation (lm) situés dans la surface rectangulaire délimitée par l'origine (O) et le pixel (p(m,n)) considéré.
8. Dispositif selon la revendication 7, caractérisé en ce qu'il comprend une mémoire (2) contenant les M+1 images intégrales (lint,m) et un contrôleur (3) de mémoire permettant de gérer des accès à la mémoire (2), une bande passante de la mémoire (2) étant déterminée de telle sorte que chaque histogramme soit déterminé à partir de 4x(M+1 ) données en un nombre Nc de cycles inférieur ou égal à dix, le nombre Nc étant défini par la relation : M + 1 , où k est le nombre de données auxquelles la mémoire (2) peut accéder en un cycle.
9. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce que les moyens aptes à générer un descripteur (D) pour chaque fenêtre de détection comprennent une unité (4) de boucle d'échelle permettant de déterminer de façon itérative une taille de fenêtres de détection (F1, F2, ..., FN) et un pas de déplacement de ces fenêtres (F1, F2, ..., FN) dans l'image numérique (long)-
10. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce que les moyens aptes à générer un descripteur (D) pour chaque fenêtre de détection comprennent une unité (5) de cascade permettant de générer des coordonnées (XFA.VFA) et (XFCYFC) de fenêtres de détection (F1, F2, ..., FN) en fonction d'une taille de ces fenêtres et d'un pas de déplacement et d'allouer chaque fenêtre de détection (F1, F2, ..., FN) à une unité de traitement (UT1, UT2, ..., UTN).
1 1. Dispositif selon la revendication 10, caractérisé en ce que les moyens aptes à générer un descripteur (D) pour chaque fenêtre de détection comprennent une unité (6) de boucle de descripteur permettant de générer de façon itérative, pour chaque fenêtre de détection (F1, F2, ..., FN), des coordonnées (XDA,YDA) et (XDCYDC) de descripteurs (D) en fonction des coordonnées (XFA^FA) et (XFCYFC) de ces fenêtres de détection (F1, F2, ..., FN) et de l'objet à reconnaître.
12. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comprend une unité (8) d'analyse de scores permettant de générer une liste de scores globaux (S1, S2, ..., SN) et de positions ((XFA^FA), (XFCYFC)) de fenêtres de détection (F1, F2, ..., FN) en fonction d'un seuil d'étage (Sθ).
13. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comprend une unité (10) d'extraction de paramètres permettant d'envoyer les paramètres (attribut, Sd, α, β) aux N unités de traitement (UT1, UT2, ..., UTN) simultanément.
14. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce que les paramètres (attribut, Sd, α, β) sont déterminés lors d'une étape d'apprentissage, l'apprentissage dépendant de l'objet à reconnaître.
15. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce que toutes les opérations arithmétiques pour réaliser la reconnaissance et la localisation d'un objet sont faites à l'aide de données de type virgule fixe sur des dispositifs d'opérateurs d'addition, soustraction et multiplication de type entier.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0806905A FR2939547B1 (fr) | 2008-12-09 | 2008-12-09 | Dispositif et procede pour le reconnaissance et la localisation d'objets dans une image par balayage de fenetres de detection |
PCT/EP2009/065626 WO2010066563A1 (fr) | 2008-12-09 | 2009-11-23 | Dispositif a architecture pipeline de flot de donnees pour la reconnaissance et la localisation d'objets dans une image par balayage de fenetres de detection |
Publications (1)
Publication Number | Publication Date |
---|---|
EP2364490A1 true EP2364490A1 (fr) | 2011-09-14 |
Family
ID=40863560
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP09756740A Withdrawn EP2364490A1 (fr) | 2008-12-09 | 2009-11-23 | Dispositif a architecture pipeline de flot de donnees pour la reconnaissance et la localisation d'objets dans une image par balayage de fenetres de detection |
Country Status (5)
Country | Link |
---|---|
US (1) | US20120134586A1 (fr) |
EP (1) | EP2364490A1 (fr) |
JP (1) | JP2012511756A (fr) |
FR (1) | FR2939547B1 (fr) |
WO (1) | WO2010066563A1 (fr) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101522985B1 (ko) * | 2008-10-31 | 2015-05-27 | 삼성전자주식회사 | 영상처리 장치 및 방법 |
US9342483B2 (en) | 2010-08-19 | 2016-05-17 | Bae Systems Plc | Sensor data processing |
CN102467088A (zh) * | 2010-11-16 | 2012-05-23 | 深圳富泰宏精密工业有限公司 | 人脸识别闹钟及其闹醒用户的方法 |
JP2013161126A (ja) * | 2012-02-01 | 2013-08-19 | Honda Elesys Co Ltd | 画像認識装置、画像認識方法および画像認識プログラム |
US10262462B2 (en) | 2014-04-18 | 2019-04-16 | Magic Leap, Inc. | Systems and methods for augmented and virtual reality |
EP3050029B1 (fr) * | 2013-09-27 | 2018-07-04 | Koninklijke Philips N.V. | Reconstruction itérative compensée de mouvement |
JP6512938B2 (ja) * | 2015-05-25 | 2019-05-15 | キヤノン株式会社 | 撮像装置及び画像処理方法 |
US9633283B1 (en) | 2015-12-28 | 2017-04-25 | Automotive Research & Test Center | Adaptive device and adaptive method for classifying objects with parallel architecture |
US10248876B2 (en) * | 2016-06-27 | 2019-04-02 | Texas Instruments Incorporated | Method and apparatus for avoiding non-aligned loads using multiple copies of input data |
US10157441B2 (en) * | 2016-12-27 | 2018-12-18 | Automotive Research & Testing Center | Hierarchical system for detecting object with parallel architecture and hierarchical method thereof |
US11004205B2 (en) * | 2017-04-18 | 2021-05-11 | Texas Instruments Incorporated | Hardware accelerator for histogram of oriented gradients computation |
FR3069087B1 (fr) * | 2017-07-11 | 2019-08-23 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Procede de traitement d'une image |
CN112102280B (zh) * | 2020-09-11 | 2021-03-23 | 哈尔滨市科佳通用机电股份有限公司 | 铁路货车小部件承挡键螺母松动和丢失故障检测方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7548258B2 (en) * | 2003-11-21 | 2009-06-16 | Arecont Vision Llc. | High resolution network video camera with massively parallel implementation of image processing, compression and network server |
WO2008104453A1 (fr) * | 2007-02-16 | 2008-09-04 | Commissariat A L'energie Atomique | Procède de reconnaissance et de localisation automatique d'entités dans des images numériques |
-
2008
- 2008-12-09 FR FR0806905A patent/FR2939547B1/fr not_active Expired - Fee Related
-
2009
- 2009-11-23 US US13/133,617 patent/US20120134586A1/en not_active Abandoned
- 2009-11-23 WO PCT/EP2009/065626 patent/WO2010066563A1/fr active Application Filing
- 2009-11-23 JP JP2011539995A patent/JP2012511756A/ja active Pending
- 2009-11-23 EP EP09756740A patent/EP2364490A1/fr not_active Withdrawn
Non-Patent Citations (1)
Title |
---|
See references of WO2010066563A1 * |
Also Published As
Publication number | Publication date |
---|---|
WO2010066563A1 (fr) | 2010-06-17 |
US20120134586A1 (en) | 2012-05-31 |
FR2939547B1 (fr) | 2011-06-10 |
FR2939547A1 (fr) | 2010-06-11 |
JP2012511756A (ja) | 2012-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2010066563A1 (fr) | Dispositif a architecture pipeline de flot de donnees pour la reconnaissance et la localisation d'objets dans une image par balayage de fenetres de detection | |
EP2491532B1 (fr) | Procede, programme d'ordinateur et dispositif de suivi hybride de representations d'objets, en temps reel, dans une sequence d'images | |
EP2786314B1 (fr) | Procede et dispositif de suivi d'un objet dans une sequence d'au moins deux images | |
EP1864242A1 (fr) | Procede d'identification de visages a partir d'images de visage, dispositif et programme d'ordinateur correspondants | |
FR2746530A1 (fr) | Procede et systeme pour selectionner des vecteurs d'adaptation pour la reconnaissance de formes | |
WO2012175888A1 (fr) | Génération de données de carte | |
EP1746486B1 (fr) | Procédé de détection de déplacement d'une entité pourvue d'un capteur d'images et dispositif pour le mettre en oeuvre | |
EP3857512A1 (fr) | Procede, programme d'ordinateur et systeme de detection et localisation d'objet dans une scene tridimensionnelle | |
EP3674741A1 (fr) | Système et procédé d'identification de source radar | |
EP0681270A1 (fr) | Procédé de trajectographie d'objets et dispositif de mise en oeuvre de ce procédé | |
EP3032463A1 (fr) | Procédé et dispositif de suivi de caractères figurant sur une pluralité d'images d'un flux vidéo d'un texte | |
EP1035493A1 (fr) | Procédé de reconnaissance de formes | |
FR3026526A1 (fr) | Procede et systeme de detection d'evenements de nature connue | |
EP0410826B1 (fr) | Procédé itératif d'estimation de mouvement, entre une image de référence et une image courante, et dispositif pour la mise en oeuvre de ce procédé | |
US20230029163A1 (en) | Wafer map analysis system using neural network and method of analyzing wafer map using the same | |
FR3050300A1 (fr) | Procede et dispositif de detection automatique de zones de pollution sur une surface d'eau | |
EP2943935B1 (fr) | Estimation de mouvement d'une image | |
EP2825995B1 (fr) | Système pour déterminer l'identification d'un appareil photographique a partir d'une photographie et procédé mis en oeuvre dans un tel système | |
FR2685842A1 (fr) | Procede de recalage d'images. | |
EP1746487A1 (fr) | Procede et dispositif de detection de deplacement d'une entite pourvue d'un capteur d'images | |
FR3094815A1 (fr) | Procédé, programme d’ordinateur et système pour l’identification d’une instance d’objet dans une scène tridimensionnelle | |
CN116311077B (zh) | 一种基于显著性图的多光谱融合的行人检测方法及装置 | |
FR3093817A1 (fr) | Systeme de traitement radar et procede de debruitage associe | |
FR3042292A1 (fr) | Procede d'optimisation de decomposition d'un signal asynchrone | |
FR2692059A1 (fr) | Procédé de comparaison de flots de données et dispositif de mise en Óoeuvre. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 20110601 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO SE SI SK SM TR |
|
DAX | Request for extension of the european patent (deleted) | ||
17Q | First examination report despatched |
Effective date: 20140509 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN |
|
18D | Application deemed to be withdrawn |
Effective date: 20140603 |