EP4630914A1 - Procédé de génération d'une application de traitement d'au moins un flux multimédia, dispositif et programme d'ordinateur associés - Google Patents
Procédé de génération d'une application de traitement d'au moins un flux multimédia, dispositif et programme d'ordinateur associésInfo
- Publication number
- EP4630914A1 EP4630914A1 EP23818368.5A EP23818368A EP4630914A1 EP 4630914 A1 EP4630914 A1 EP 4630914A1 EP 23818368 A EP23818368 A EP 23818368A EP 4630914 A1 EP4630914 A1 EP 4630914A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- function
- elementary
- processing
- processing function
- instantiated
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
Definitions
- the field of the invention is that of so-called computer vision applications whose aim is to process multimedia streams. More specifically, the invention relates to computer vision applications assembled in a graphical or “low code” manner.
- each elementary processing function corresponds to a functional block, for example a “facial recognition” block, an “image resizing” block, etc.
- a person wishing to generate a specific application such as for example a computer vision application, selects several functional blocks belonging to a library of elementary processing functions made available to him, and assembles them in an ordered manner in order to generate the application allowing to obtain the expected treatment.
- a disadvantage of these solutions is that the different functional blocks offered by a “low code” or “no code” application generation service provider are instantiated on the same computing node.
- the computing node on which these functional blocks are instantiated may not have the resources necessary for the proper execution of certain elementary processing functions. In such a scenario, the computer vision application does not offer satisfactory quality of service.
- the invention meets this need by proposing a method for generating an application for processing at least one multimedia stream, said application comprising an assembly of elementary processing functions.
- Such a method is particular in that it is implemented by an application generation module comprising the following steps of:
- association of a configuration file comprising at least one parameter relating to at least one first elementary processing function generating data intended to be processed by said given elementary processing function.
- a computing node can be a camera, a display device such as a screen or a smartphone, a virtual machine, a computing node of a cluster of Kubernetes type nodes, a server, a personal computer, a processor or CPU (for “Central Processing Unit”), a graphics card or GPU (for “Graphical Processing Unit”) etc.
- Such a configuration file can be automatically generated by the generation module, for example when the parameters relating to an elementary processing function are associated with the latter in the functional block library.
- the simple selection of the elementary processing functions to assemble triggers the generation of the corresponding configuration files.
- the configuration file can also be generated by a user of the generation module for each elementary processing function.
- Such an implementation allows greater flexibility in the ordering of elementary processing functions among themselves since the user has the possibility to choose which are the inputs for a given elementary processing function instead of being constrained by the information provided by the function block library.
- Such a process makes it possible to benefit from the advantages of so-called “low code” or “no code” techniques while offering the possibility of selecting elementary functions instantiated on suitable computing nodes.
- Such a method also makes it possible to pool elementary processing functions between several distinct multimedia stream processing applications.
- the parameter relating to said first elementary processing function provided by the configuration file includes, among other things: - a network address of said calculation node on which said first elementary processing function is instantiated,
- Such information allows the given elementary processing function to identify the computing node concerned and to be able to collect the appropriate data from the latter.
- This information is also easily identifiable and understandable for a user who can then easily introduce it himself into a configuration file.
- the parameter relating to said first elementary processing function constitutes an argument of said given selected elementary processing function.
- the configuration file further comprises, for said given selected elementary processing function:
- Such a supply module belongs to the group further comprising:
- the data generated by its execution are intended to be either provided as input to another elementary processing function which will apply them additional processing, or provided to display and/or storage modules.
- display and/or storage modules can be embedded in the computing node.
- the invention also relates to a method for processing at least one multimedia stream by a processing application comprising an assembly of elementary processing functions, an elementary processing function being instantiated on a computing node executing said elementary function.
- Such a processing method is particular in that it is implemented by a calculation node and that it comprises a step of: obtaining data contained in said multimedia stream to be processed, - processing, by said elementary processing function instantiated on said node, said data obtained,
- the data obtained are provided by at least one elementary processing function identified in a configuration file of said elementary processing function instantiated on said node.
- the different elementary processing functions constituting the application are provided with a configuration file comprising the information allowing a given elementary processing function to identify the calculation node from which to collect the data that she must treat. This information, being arguments of the given elementary processing function, is provided to it during generation of the application.
- each elementary processing function is able to collect the data it must process.
- the data obtained is acquired by the computing node itself.
- the data obtained may be accompanied by metadata associated with them, said metadata having also been generated by the elementary processing function identified in the configuration file of said elementary processing function instantiated on said node.
- This metadata may contain information relating to processing previously performed on images in the media stream.
- This metadata is included in a data field of said at least one stream, relating to at least one still image to be processed.
- the metadata are for example included in an AAPn or COM field in the JPEG format or in one of the iTXt, tEXt and zTXt fields in the PNG format.
- the invention also relates to a module for generating an application for processing at least one multimedia stream, said application comprising an assembly of elementary processing functions.
- Such an application generation module includes means for:
- the invention also relates to a calculation node on which at least one elementary processing function included in an application for processing a multimedia stream is instantiated.
- Such a calculation node executes said elementary function and comprises at least one processor configured to:
- the invention finally relates to computer program products comprising program code instructions for implementing the methods as described above, when executed by a processor.
- the invention also relates to a computer-readable recording medium on which computer programs are recorded comprising program code instructions for executing the steps of the methods according to the invention as described above.
- Such a recording medium can be any entity or device capable of storing the programs.
- the medium may comprise a storage means, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or even a magnetic recording means, for example a USB key or a hard disk.
- such a recording medium may be a transmissible medium such as an electrical or optical signal, which may be conveyed via an electrical or optical cable, by radio or by other means, so that the programs computer it contains can be executed remotely.
- the programs according to the invention can in particular be downloaded over a network, for example the Internet network.
- the recording medium can be an integrated circuit in which the programs are incorporated, the circuit being adapted to execute or to be used in the execution of the aforementioned methods which are the subject of the invention.
- Figure 1 this figure represents a system in which the present invention is implemented
- FIG. 2 this figure represents the different steps implemented to generate an application for processing a multimedia stream
- Figure 3 this figure represents a first example of assembly of elementary processing functions
- Figure 4 this figure represents a second example of assembly of elementary processing functions
- FIG. 5 this figure represents the different steps implemented to process a multimedia stream by means of a processing application shown in Figure 3 and obtained according to the method described with reference to Figure 2,
- FIG. 6 this figure represents a generation module according to one embodiment of the invention.
- a generation module is able to implement the method for generating an application for processing a multimedia stream according to Figure 2.
- the general principle of the invention is based on the generation of an application for processing a multimedia stream comprising an assembly of elementary processing functions, these elementary processing functions being instantiated on calculation nodes.
- a configuration file is provided to each elementary processing function in order to carry out this assembly.
- Such a system is a distributed system in which a plurality of computing nodes communicate with each other to process a multimedia stream.
- the system thus represented comprises, for example, an application generation module 10 for processing a multimedia stream.
- a generation module 10 is for example embedded in a server or in a virtual machine operated by a provider of multimedia stream processing services.
- Such a generation module 10 comprises a library 12 of FTE elementary processing functions, or functional blocks.
- Such elementary FTE processing functions are for example a function for acquiring images representative of a scene, a function for resizing an image, a colorimetry function, an object detection function, a function of displaying multimedia content or storing multimedia content, etc.
- Each of these elementary processing functions FTE is instantiated on a computing node 11-i having the resources necessary for the execution of the elementary processing function FTE instantiated.
- a single computing node can instantiate several FTE elementary processing functions.
- a calculation node can be any equipment or device having the resources necessary for the execution of an elementary processing function.
- a computing node can be a camera, a display device such as a screen or a smartphone, a virtual machine, a computing node of a cluster of Kubernetes type nodes, a server, a personal computer, a CPU, a GPU, etc.
- calculation nodes 11-1 to 11-4 are represented in Figure 1, the number of calculation nodes involved in the implementation of the present solution depends on the number of elementary processing functions FTE assembled to constitute the application for processing a multimedia stream.
- FTE elementary processing functions
- three types of FTE elementary processing functions are considered.
- a first type of elementary processing functions is qualified as an FTES source, a second type is qualified as an FTEO operation and a third type is qualified as an FTEP sink.
- An FTES source function is an elementary processing function having no input but at least one output.
- An FTES source function is for example a function for decoding images acquired by a camera or a demosaicing function.
- An FTES source function can also read the data that it must process from a memory.
- An output of an elementary processing function is for example a port of the calculation node 11-i on which it is instantiated and via which the data generated by the elementary processing function are provided (or made accessible).
- An FTEO operation function is an intermediate processing function having one or more inputs and one or more outputs. Such an FTEO operation function obtains data to be processed on each of its inputs from an output of another elementary processing function FTE source or operation and makes accessible the data that it has generated on each of its outings.
- an FTEP sink function is an elementary processing function having no output but at least one input.
- An FTEP sink function is for example a display device or a data storage module.
- a multimedia stream processing application is an assembly of at least one FTES source function and at least one FTEP sink function. Such an application may also include at least one FTEO operation function.
- Figure 2 represents the different steps implemented to generate an application for processing a multimedia stream.
- the generation module 10 selects, in the library 12, at least one FTES source function, in the example described this is the “Camera” source function, at least one FTEO operation function, in the example described two operation functions are selected: a first “Resize” operation function which resizes the size of the images and a second “YOLO” operation function (for “You Only Look Once” in English) which detects objects in an image, and at least one FTEP “Viz” sink function which allows the results of the different treatments applied to be displayed on a screen.
- FTES source function in the example described this is the “Camera” source function
- at least one FTEO operation function in the example described two operation functions are selected: a first “Resize” operation function which resizes the size of the images and a second “YOLO” operation function (for “You Only Look Once” in English) which detects objects in an image, and at least one FTEP “Viz” sink function which allows the results of the different treatments applied to be displayed on a screen
- An end user can interact with the generation module 10 by means of a man-machine interface (not shown in the figures) such as a touch screen or a screen-keyboard pair in order to transmit to the generation module 10 instructions allowing to select the different FTE elementary functions to assemble. Once the different elementary FTE processing functions have been selected, they are assembled in order to generate the processing application for a multimedia stream.
- a man-machine interface such as a touch screen or a screen-keyboard pair
- FC configuration file is provided to each of the selected FTE elementary processing functions.
- an FC configuration file is generated during a step E2.
- an FC configuration file can be automatically generated by the generation module 10, for example when the parameters relating to an elementary processing function are associated with the latter in the library 12.
- the selection and the scheduling of the FTE elementary processing functions to be assembled together triggers the generation of the corresponding configuration file(s).
- the FC configuration file can also be generated by the user of the generation module 10.
- the FC configuration file can also be generated by the user of the generation module 10.
- such an FC configuration file includes at least one identifier of at least one output or supply module on which the data processed or generated by the FTES source function is intended to be made accessible.
- Such an identifier is for example a port/path pair, or “port” corresponding to a port number of the calculation node on which the FTE function is instantiated and “path” is a parameter identifying the FTE elementary processing function having rendered the accessible data.
- the “port” parameter is particularly useful when the same computing node instantiates several FTE elementary processing functions.
- such an FC configuration file comprises at least one identifier of at least one input and at least one identifier of at least one output on which the data processed or generated by the FTEO operation function are intended to be provided.
- such an FC configuration file includes for each entry of the FTEO operation function a network address of a calculation node on which at least one FTS source function and/or at least one other operation function are instantiated. , these elementary processing functions providing data to be processed to the FTEO operation function, a port of the calculation nodes concerned on which these FTES source functions and/or these FTEO operation functions provide the generated data and an identifier of these FTES source functions and/or these FTEO operation functions.
- the FC configuration file also includes at least one identifier of at least one output on which the data processed or generated by the FTEO operation function is intended to be provided.
- such an FC configuration file includes for each entry of the FTEP sink function a network address of a calculation node on which at least one FTS source function and/or at least one operation function are instantiated, these elementary processing functions providing data to be processed to the FTEP sink function, a port of the calculation nodes concerned on which these FTES source functions and/or these FTEO operation functions provide the generated data and an identifier of these FTES source functions and/or these FTEO operation functions.
- Figure 3 represents a first example of assembly of FTE elementary processing functions.
- Such an assembly includes an FTES “Camera” source function configured to decode images acquired by a camera.
- This source function has a single output.
- Such a source function is for example instantiated on a calculation node 11-1 of CPU type.
- the assembly then includes a first “Resize” operation function which resizes the images acquired by the camera.
- the “Resize” function has an input that collects the data provided by the “Camera” function and a single output.
- Such an operation function is for example instantiated on a calculation node 11-2 of CPU type.
- the assembly includes a second “YOLO” operation function which detects and identifies objects present in the images acquired by the camera.
- the “YOLO” function has a single input that collects the data provided by the “Resize” function and a single output.
- Such an operation function is for example instantiated on a GPU type calculation node 11-3.
- the assembly includes an FTEP “Viz” well function that displays the images acquired by the camera on a screen.
- the "Viz” function has a single input that collects the data provided by the "YOLO” function and does not include any output.
- Such a sink function is for example instantiated on a calculation node 11-4 of CPU type.
- FC1 configuration file for the “Camera” function includes the following data:
- FC2 configuration file for the “Resize” function includes the following data:
- FC3 configuration file for the “YOLO” function includes the following data:
- /YOLO is the identifier of the second operation function
- 192.168.5.1 is the network address of the calculation node 11-2 on which the "Resize” function » is instantiated
- 8080/rsz the port/path pair of the calculation node on which the “Resize” function is instantiated and on which the data processed by the “Resize” function are provided
- -port 8080 the module identifier of supply on which the data processed by the “YOLO” function are made accessible.
- FC4 configuration file for the “Viz” function includes the following data:
- /Viz 192.168.10.1 8080/objs, where /Viz is the identifier of the second sink function, 192.168.10.1 is the network address of the calculation node 11-3 on which the “YOLO” function is instantiated and 8080/objs the port/path pair of the calculation node on which the “YOLO” function is instantiated and on which the data processed by the “YOLO” function is provided.
- each FTE elementary processing function knows from which computing node to obtain the data it must process and on which access module it must make its own data accessible.
- Figure 4 represents a second example of assembly of FTE elementary processing functions.
- Such an assembly includes an FTES “Camera” source function configured to decode images acquired by a camera.
- This source function has a single output.
- Such a source function is for example instantiated on a calculation node 11-1 of CPU type.
- the assembly then includes a first “Resize” operation function which resizes the images acquired by the camera.
- the “Resize” function has one input that collects the data provided by the “Camera” function and two outputs.
- Such an operation function is for example instantiated on a calculation node 11-2 of CPU type.
- the assembly includes a second “YOLO” operation function which detects and identifies objects present in the images acquired by the camera.
- the “YOLO” function has a single input that collects the data provided by the “Resize” function and a single output.
- Such an operation function is for example instantiated on a GPU type calculation node 11-3.
- the assembly includes a third “Face” operation function which detects, for example, faces present in the images acquired by the camera.
- the “Face” function has a single input that collects the data provided by the “Resize” function and a single output.
- Such an operation function is for example instantiated on a GPU type calculation node 11-5.
- the assembly includes an FTEP “Viz” well function that displays the images acquired by the camera on a screen.
- the "Viz” function has two inputs, a first input which collects the data provided by the "YOLO” function and a second input which collects the data provided by the "Face” function and contains no output.
- a sink function is for example instantiated on a calculation node 11-4 of CPU type.
- FC1 configuration file for the “Camera” function includes the following data:
- FC2 configuration file for the “Resize” function includes the following data:
- FC5 configuration file for the “Face” function includes the following data:
- FC4 configuration file for the “Viz” function includes the following data:
- /Viz 192.168.15.1:8080/fcs
- /Viz is the identifier of the second sink function
- 192.168.10.1 is the network address of the calculation node 11-3 on which the “YOLO” function is instantiated and 8080/objs the port/path pair of the calculation node on which the “YOLO” function is instantiated and on which the data processed by the “YOLO” function are provided
- 192.168.15.1 is the network address of the calculation node 11-5 on which the “Face” function is instantiated and 8080/fcs the port/path pair of the calculation node on which the “Face” function is instantiated and on which the data processed by the “Face” function is provided.
- each FTE elementary processing function knows from which computing node to obtain the data it must process and on which supply module it must make its own data accessible.
- FC configuration files are considered as arguments of the FTE elementary processing functions which are provided to them as a preamble to their execution.
- Figure 5 represents the different steps implemented to process a multimedia stream by means of the processing application represented in Figure 3 and obtained according to the method described with reference to Figure 2.
- a source function here the “Camera” function, acquires images of a scene which it decodes during a step G2.
- the “Camera” function also generates metadata relating to the decoded images.
- metadata are for example, a camera identifier, a resolution of the latter, a timestamp of the captured images, a geolocation of the captured images, etc.
- metadata are included for example in the AAPn field (for “Application Specific”) or the COM field (for “Comment”) of the JPEG format (for “Joint Photography Experts Group”) in which the images are encoded.
- Other still image processing formats and their corresponding data fields can of course be used, such as for example the PNG format with among others the fields iTXt, tEXt and zTXt, etc.
- the “Camera” function provides the decoded images and their metadata on port 8080 of the calculation node 11-1 on which the “Camera” function is instantiated in a step G3.
- the “Resize” function obtains, in accordance with the information included in its FC1 configuration file, the data provided by the “Camera” function.
- the “Resize” function processes the latter in a step G5.
- the “Resize” function also generates metadata relating to the resized images, this metadata can still include information generated by the “Camera” function, such as timestamp information for example.
- the “Resize” function provides the resized images and their metadata on port 8080 of the calculation node 11-2 on which the “Resize” function is instantiated in a G6 step.
- the “YOLO” function obtains, in accordance with the information included in its FC2 configuration file, the data provided by the “Resize” function.
- the “YOLO” function processes the latter during a step G8.
- the "YOLO” function also generates metadata relating to the objects identified in the resized images, this metadata can still include the information generated by the "Camera” function and the "Resize” function, such as timestamp information for example, as well as as information relating to the identified objects such as their name, their position in the image, etc.
- the “YOLO” function provides the resized images and their metadata on port 8080 of the calculation node 11-3 on which the “YOLO” function is instantiated in a step G9.
- the “Viz” function obtains, in accordance with the information included in its FC configuration file, the data provided by the “YOLO” function.
- the “Viz” function processes the latter in a Gll step and the images thus processed are thus displayed on a screen.
- Figure 6 represents a generation module 10 according to one embodiment of the invention.
- a generation module 10 is capable of implementing the method of generating an application for processing a multimedia stream according to Figure 2.
- a generation module 10 may comprise at least one hardware processor 61, a storage unit 62, at least one interface 63, and at least one man-machine interface 64 which are connected to each other via a bus 65.
- the constituent elements of the generation module 10 can be connected by means of a connection other than a bus.
- the processor 61 controls the operations of the generation module 10.
- the storage unit 62 stores at least one program for implementing the method according to one embodiment of the invention to be executed by the processor 61, and various data, such as parameters used for calculations carried out by the processor 61, intermediate data from calculations carried out by the processor 61, etc.
- the processor 61 can be formed by any known and suitable hardware or software, or by a combination of hardware and software.
- the processor 61 can be formed by a dedicated hardware such as a processing circuit, or by a programmable processing unit such as a Central Processing Unit which executes a program stored in a memory thereof.
- the storage unit 62 may be formed by any suitable means capable of storing the program(s) and data in a computer-readable manner.
- Examples of storage unit 62 include non-transitory computer-readable storage media such as solid-state memory devices, and magnetic, optical, or magneto-optical recording media loaded into a read and read unit. 'writing.
- the interface 63 provides a connection between the generation module 10 and all of the calculation nodes 11-i of the system.
- the man-machine interface 64 can be a touch screen or a set comprising a keyboard, a mouse and a screen.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
L'invention concerne une solution de génération d'une application de traitement d'un flux multimédia comprenant un assemblage de fonctions de traitement élémentaire, ces fonctions de traitement élémentaire étant instanciées sur des nœuds de calcul. Un fichier de configuration est fourni à chaque fonction de traitement élémentaire afin de réaliser cet assemblage. Ainsi, un tel procédé permet de bénéficier des avantages des techniques dites de « low code » ou de « no code » tout en offrant la possibilité de sélectionner des fonctions élémentaires instanciées sur des nœuds de calcul adaptés.
Description
DESCRIPTION
Procédé de génération d'une application de traitement d'au moins un flux multimédia, dispositif et programme d'ordinateur associés
Domaine de l'invention
Le domaine de l'invention est celui des applications dites de vision par ordinateur dont le but est de traiter des flux multimédias. Plus précisément, l'invention concerne des applications de vision par ordinateur assemblées de manière graphique ou « low code ».
Art antérieur et ses inconvénients
Classiquement, les applications de vision par ordinateur reposent sur un code informatique écrit par des spécialistes de langages informatiques. Ces codes permettent d'appeler des fonctions, elles aussi codées, appliquant un ou plusieurs traitements à des images constitutives du flux multimédia à traiter.
Cependant, de telles applications manquent de modularité car elles sont codées de manière monolithique, les fonctions appelées étant intégrées au sein même du code de l'application. Ainsi, toute modification apportée à l'une de ces fonctions peut nécessiter une réécriture partielle ou totale du code de l'application.
Avec le développement des technologies dites du numérique, les besoins en développement d'applications ont augmenté. Pour répondre à ce besoin grandissant, des techniques de génération d'applications nécessitant peu ou pas de compétences en codage informatique ont été développées. De telles techniques sont dite « low code » pour « peu de code » ou « no code » pour « pas de code ».
De telles techniques consistent en l'écriture de codes informatiques correspondant à des fonctions de traitement élémentaire. Ainsi, chaque fonction de traitement élémentaire correspond à un bloc fonctionnel, par exemple un bloc « reconnaissance faciale », un bloc « redimensionnement de l'image », etc.
Une personne souhaitant générer une application spécifique, telle que par exemple une application de vision par ordinateur, sélectionne plusieurs blocs fonctionnels appartenant à une bibliothèque de fonctions de traitement élémentaire mise à sa disposition, et les assemble de manière ordonnée afin de générer l'application permettant d'obtenir le traitement escompté.
Les différentes fonctions de traitement élémentaire étant développées indépendamment les unes des autres, une modification impactant l'une d'elles n'a pas de répercussion sur les autres fonctions de traitement élémentaire constitutives de l'application ce qui réduit les besoins en réécriture du code de l'application.
Un inconvénient de ces solutions est que les différents blocs fonctionnels proposés par un fournisseur de service de génération d'applications « low code » ou « no code » sont instanciés sur un même nœud de calcul. Or, selon les traitements effectués par les différents blocs fonctionnels sur les images constitutives du flux multimédia, le nœud de calcul sur lequel ces blocs fonctionnels sont instanciés peut ne pas disposer des ressources nécessaires à la bonne exécution de certaines fonctions de traitement élémentaire. Dans un tel cas de figure, l'application de vision par ordinateur n'offre pas une qualité de service satisfaisante.
Il existe donc un besoin d'une technique de génération d'application de traitement d'un flux multimédia ne présentant pas tout ou partie des inconvénients précités.
Exposé de l'invention
L'invention répond à ce besoin en proposant un procédé de génération d'une application de traitement d'au moins un flux multimédia, ladite application comprenant un assemblage de fonctions de traitement élémentaire.
Un tel procédé est particulier en ce qu'il est mis en oeuvre par un module de génération d'applications comprenant les étapes suivantes de :
- sélection de fonctions de traitement élémentaire destinées à être assemblées pour générer ladite application de traitement, une fonction de traitement élémentaire étant instanciée sur un nœud de calcul exécutant ladite fonction élémentaire,
- pour une fonction de traitement élémentaire sélectionnée donnée, association d'un fichier de configuration comprenant au moins un paramètre relatif à au moins une première fonction de traitement élémentaire générant des données destinées à être traitées par ladite fonction de traitement élémentaire donnée.
Une telle solution repose astucieusement sur la fourniture, dans un fichier de configuration, de paramètres permettant à une fonction de traitement élémentaire donnée d'identifier une ou plusieurs autres fonctions de traitement élémentaire auprès desquelles obtenir des données à traiter.
La fourniture de ces paramètres rend possible l'instanciation de ces fonctions de traitement élémentaire sur des nœuds de calculs distincts. Chaque fonction de traitement élémentaire peut être instanciée sur un nœud de calcul disposant des ressources qui répondent à ses besoins. Dans la suite du document, on entend par nœud de calcul tout équipement ou dispositif disposant des ressources nécessaires à l'exécution d'une fonction de traitement élémentaire. Ainsi, un nœud de calcul peut être une caméra, un dispositif d'affichage tel qu'un écran ou un smartphone, une machine virtuelle, un nœud de calcul d'une grappe de nœuds de type Kubernetes, un serveur, un ordinateur personnel, un processeur ou CPU (pour « Central Processing Unit »), une carte graphique ou GPU (pour « Graphical Processing Unit ») etc.
Un tel fichier de configuration peut être généré automatiquement par le module de génération, par exemple lorsque les paramètres relatifs à une fonction de traitement élémentaire sont associés à cette dernière dans la bibliothèque de blocs fonctionnels. Ainsi, la simple sélection des fonctions de traitement élémentaire à assembler déclenche la génération des fichiers de configuration correspondant.
Le fichier de configuration peut également être généré par un utilisateur du module de génération pour chaque fonction de traitement élémentaire. Une telle implémentation permet une plus grande flexibilité quant à l'ordonnancement des fonctions de traitement élémentaire entre elles puisque l'utilisateur a la possibilité de choisir quelles sont les entrées pour une fonction de traitement élémentaire donnée au lieu d'être contraint par les informations fournies par la bibliothèque de blocs fonctionnels.
Ainsi, un tel procédé permet de bénéficier des avantages des techniques dites de « low code » ou de « no code » tout en offrant la possibilité de sélectionner des fonctions élémentaires instanciées sur des nœuds de calcul adaptés. Un tel procédé permet également de mutualiser les fonctions de traitement élémentaire entre plusieurs applications de traitement de flux multimédia distinctes.
Le paramètre relatif à ladite première fonction de traitement élémentaire fourni par le fichier de configuration comprend entre autres :
- une adresse réseau dudit nœud de calcul sur lequel ladite première fonction de traitement élémentaire est instanciée,
- un port dudit nœud de calcul sur lequel ladite première fonction de traitement élémentaire est instanciée au travers duquel les données générées par ladite première fonction de traitement élémentaire sont destinées à être fournies,
- un identifiant de ladite première fonction de traitement élémentaire.
De telles informations permettent à la fonction de traitement élémentaire donnée d'identifier le nœud de calcul concerné et de pouvoir collecter les données appropriées auprès de ce dernier.
Ces informations sont également facilement identifiables et compréhensibles pour un utilisateur qui peut alors aisément les introduire lui-même dans un fichier de configuration.
Plus particulièrement, le paramètre relatif à ladite première fonction de traitement élémentaire constitue un argument de ladite fonction de traitement élémentaire sélectionnée donnée.
Le fichier de configuration comprend en outre, pour ladite fonction de traitement élémentaire sélectionnée donnée :
- un identifiant d'au moins un module de fourniture desdites données générées par ladite fonction de traitement élémentaire sélectionnée donnée.
Un tel module de fourniture appartient au groupe comprenant en outre :
- un port dudit nœud de calcul sur lequel ladite fonction de traitement élémentaire sélectionnée donnée est instanciée,
- un module d'affichage dudit flux multimédia,
- une mémoire.
Selon la position de la fonction de traitement élémentaire donnée dans l'assemblage de fonctions de traitement élémentaire constituant l'application, les données générées par son exécution sont destinées à être soit fournies en entrée d'une autre fonction de traitement élémentaire qui va leur appliquer un traitement supplémentaire, soit fournies à des modules d'affichage et/ou de stockage. De tels modules d'affichage et/ou de stockage peuvent être embarqués dans le nœud de calcul.
L'invention a également pour objet un procédé de traitement d'au moins un flux multimédia par une application de traitement comprenant un assemblage de fonctions de traitement élémentaire, une fonction de traitement élémentaire étant instanciée sur un nœud de calcul exécutant ladite fonction élémentaire.
Un tel procédé de traitement est particulier en ce qu'il est mis en œuvre par un nœud de calcul et qu'il comprenant une étape de : obtention de données contenues dans ledit flux multimédia à traiter, - traitement, par ladite fonction de traitement élémentaire instanciée sur ledit nœud, desdites données obtenues,
- génération de métadonnées associées auxdites données traitées, fourniture desdites données traitées et desdites métadonnées générées.
Plus particulièrement, les données obtenues sont fournies par au moins une fonction de traitement élémentaire identifiée dans un fichier de configuration de ladite fonction de traitement élémentaire instanciée sur ledit nœud.
En effet, comme expliqué plus haut, les différentes fonctions de traitement élémentaire constituant l'application se voient fournir un fichier de configuration comprenant les informations permettant à une fonction de traitement élémentaire donnée d'identifier le nœud de calcul auprès duquel collecter les données qu'elle doit traiter. Ces informations étant des arguments de la fonction de traitement élémentaire donnée, lui sont fournies lors de la génération de l'application. Ainsi, dès la première exécution de l'application, chaque fonction de traitement élémentaire est en capacité de collecter les données qu'elle doit traiter.
Dans certains cas, les données obtenues sont acquises par le nœud de calcul lui-même.
Cela est par exemple le cas lorsque le nœud de calcul est embarqué dans une caméra qui capte une scène.
Les données obtenues peuvent être accompagnées par des métadonnées qui leur sont associées, lesdites métadonnées ayant également été générées par la fonction de traitement élémentaire identifiée dans le fichier de configuration de ladite fonction de traitement élémentaire instanciée sur ledit nœud.
Ces métadonnées peuvent contenir des informations relatives au traitement précédemment effectué sur les images du flux multimédia.
De la même manière les métadonnées générées par ladite fonction de traitement élémentaire instanciée sur ledit nœud appartiennent au groupe comprenant en outre :
- des coordonnées d'une caméra ayant acquis le contenu du flux multimédia,
- un identifiant de ladite caméra,
- des coordonnées d'au moins un vecteur de mouvement calculé pour au moins une image constitutive du flux multimédia,
- au moins un identifiant d'au moins un objet détecté dans au moins une image constitutive du flux multimédia.
Ces métadonnées sont comprises dans un champ de données dudit au moins un flux, relatif à au moins une image fixe à traiter.
Les métadonnées sont par exemple comprises dans un champ AAPn ou COM du format JPEG ou encore dans l'un des champs iTXt, tEXt et zTXt du format PNG.
Ainsi, il n'est pas nécessaire de générer de nouveaux messages pour transmettre ces données supplémentaires. Cela facilite la mise en œuvre de la présente invention dans des systèmes déjà existants.
L'invention concerne également un module de génération d'une application de traitement d'au moins un flux multimédia, ladite application comprenant un assemblage de fonctions de traitement élémentaire.
Un tel module de génération d'applications comprend des moyens pour :
- sélectionner des fonctions de traitement élémentaire destinées à être assemblées pour générer ladite application de traitement, une fonction de traitement élémentaire étant instanciée sur un nœud de calcul exécutant ladite fonction élémentaire,
- pour une fonction de traitement élémentaire sélectionnée donnée, associer un fichier de configuration comprenant au moins un paramètre relatif à au moins une première fonction de
traitement élémentaire générant des données destinées à être traitées par ladite fonction de traitement élémentaire donnée.
L'invention a encore pour objet un nœud de calcul sur lequel est instanciée au moins une fonction de traitement élémentaire comprise dans une application de traitement d'un flux multimédia.
Un tel nœud de calcul exécute ladite fonction élémentaire et comprend au moins un processeur configuré pour :
- obtenir des données contenues dans ledit flux multimédia à traiter,
- traiter, au moyen de ladite fonction de traitement élémentaire instanciée sur ledit nœud, lesdites données obtenues,
- générer des métadonnées associées auxdites données traitées,
- fournir lesdites données traitées et lesdites métadonnées générées.
L'invention concerne enfin des produits programme d'ordinateur comprenant des instructions de code de programme pour la mise en œuvre des procédés tels que décrits précédemment, lorsqu'ils sont exécutés par un processeur.
L'invention vise également un support d'enregistrement lisible par un ordinateur sur lequel sont enregistrés des programmes d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes des procédés selon l'invention tels que décrits ci-dessus.
Un tel support d'enregistrement peut être n'importe quelle entité ou dispositif capable de stocker les programmes. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple une clé USB ou un disque dur.
D'autre part, un tel support d'enregistrement peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens, de sorte que les programmes d'ordinateur qu'il contient sont exécutables à distance. Les programmes selon l'invention peuvent être en particulier téléchargés sur un réseau, par exemple le réseau Internet.
Alternativement, le support d'enregistrement peut être un circuit intégré dans lequel les programmes sont incorporés, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution des procédés objets de l'invention précités.
Liste des figures
D'autres buts, caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante, donnée à titre de simple exemple illustratif, et non limitatif, en relation avec les figures, parmi lesquelles :
Figure 1 : cette figure représente un système dans lequel la présente invention est mise en œuvre,
Figure 2 : cette figure représente les différentes étapes mises en œuvre pour générer une application de traitement d'un flux multimédia,
Figure 3 : cette figure représente un premier exemple d'assemblage de fonctions de traitement élémentaire,
Figure 4 : cette figure représente un deuxième exemple d'assemblage de fonctions de traitement élémentaire,
Figure 5 : cette figure représente les différentes étapes mises en œuvre pour traiter un flux multimédia au moyen d'une application de traitement représentée à la figure 3 et obtenue selon le procédé décrit en référence à la figure 2,
Figure 6 : cette figure représente un module de génération selon un mode de réalisation de l'invention. Un module de génération est apte à mettre en œuvre le procédé de génération d'une application de traitement d'un flux multimédia selon la figure 2.
Description détaillée de modes de réalisation de l'invention
Le principe général de l'invention repose sur la génération d'une application de traitement d'un flux multimédia comprenant un assemblage de fonctions de traitement élémentaire, ces fonctions de traitement élémentaire étant instanciées sur des nœuds de calcul. Un fichier de configuration est fourni à chaque fonction de traitement élémentaire afin de réaliser cet assemblage.
Ainsi, un tel procédé permet de bénéficier des avantages des techniques dites de « low code » ou de « no code » tout en offrant la possibilité de sélectionner des fonctions élémentaires instanciées sur des nœuds de calcul adaptés.
On présente désormais, en relation avec la figure 1 un système dans lequel la présente invention est mise en œuvre.
Un tel système est un système distribué dans lequel une pluralité de nœuds de calculs communiquent entre eux pour traiter un flux multimédia.
Le système ainsi représenté comprend, par exemple, un module de génération 10 d'application de traitement d'un flux multimédia. Un tel module de génération 10 est par exemple embarqué dans un serveur ou dans une machine virtuelle opéré(e) par un fournisseur de services de traitements de flux multimédia.
Un tel module de génération 10 comprend une bibliothèque 12 de fonctions de traitement élémentaire FTE, ou blocs fonctionnels. De telles fonctions de traitement élémentaire FTE sont par exemple une fonction d'acquisition d'images représentatives d'une scène, une fonction de redimensionnement d'une image, une fonction de colorimétrie, une fonction de détection d'objets, une fonction d'affichage d'un contenu multimédia ou de stockage d'un contenu multimédia, etc. Chacune de ces fonctions de traitement élémentaire FTE est instanciée sur un nœud de calcul 11-i disposant des ressources nécessaires à l'exécution de la fonction de traitement élémentaire FTE instanciée. Un même nœud de calcul peut instancier plusieurs fonctions de traitement élémentaire FTE. A titre d'exemple, un nœud de calcul peut être tout équipement ou dispositif disposant des ressources nécessaires à l'exécution d'une fonction de traitement élémentaire. Ainsi, un nœud de calcul peut être une caméra, un dispositif d'affichage tel qu'un écran ou un smartphone, une machine virtuelle, un nœud de calcul d'une grappe de nœuds de type Kubernetes, un serveur, un ordinateur personnel, un CPU, un GPU, etc.
Bien que quatre nœuds de calculs 11-1 à 11-4 soient représentés à la figure 1, le nombre de nœuds de calculs impliqués dans la mise en œuvre de la présente solution dépend du nombre de fonctions de traitement élémentaire FTE assemblées pour constituer l'application de traitement d'un flux multimédia.
Dans la présente solution, trois types de fonctions de traitement élémentaire FTE sont envisagés. Un premier type de fonctions de traitement élémentaire est qualifié de source FTES, un deuxième type est qualifié d'opération FTEO et un troisième type est qualifié de puit FTEP.
Une fonction source FTES est une fonction de traitement élémentaire n'ayant pas d'entrée mais au moins une sortie.
Lorsqu'une fonction de traitement élémentaire n'a pas d'entrée, cela signifie que les données qu'elle traite ne lui sont pas fournies par une autre fonction de traitement élémentaire mais qu'elle les obtient par un autre biais. Une fonction source FTES est par exemple une fonction de décodage d'images acquises par une caméra ou une fonction de dématriçace (ou « demosaicing » en langue anglaise. Une fonction source FTES peut également lire les données qu'elle doit traiter depuis une mémoire.
Une sortie d'une fonction de traitement élémentaire est par exemple un port du nœud de calcul 11-i sur lequel elle est instanciée et via lequel les données générées par la fonction de traitement élémentaire sont fournies (ou rendues accessibles).
Une fonction d'opération FTEO est une fonction de traitement intermédiaire ayant une ou plusieurs entrées et une ou plusieurs sorties. Une telle fonction d'opération FTEO obtient des données à traiter sur chacune de ses entrées à partir d'une sortie d'une autre fonction de traitement élémentaire FTE source ou d'opération et rend accessibles les données qu’elle a générées sur chacune de ses sorties.
Enfin, une fonction puits FTEP est une fonction de traitement élémentaire n'ayant pas de sortie mais au moins une entrée.
Lorsqu'une fonction de traitement élémentaire n'a pas de sortie, cela signifie que les données qu'elle a traitées ne sont pas fournies à une autre fonction de traitement élémentaire mais qu'elles sont présentées à un utilisateur final. Une fonction puits FTEP est par exemple un dispositif d'affichage ou un module de stockage des données.
Une application de traitement d'un flux multimédia est un assemblage d'au moins une fonction source FTES et d'au moins une fonction puits FTEP. Une telle application peut également comprendre au moins une fonction d'opération FTEO.
La figure 2 représente les différentes étapes mises en œuvre pour générer une application de traitement d'un flux multimédia.
Dans une étape El, le module de génération 10 sélectionne, dans la bibliothèque 12, au moins une fonction source FTES, dans l'exemple décrit il s'agit de la fonction source « Camera », au moins une fonction d'opération FTEO, dans l'exemple décrit deux fonctions d'opérations sont sélectionnées : une première fonction d'opération « Resize » qui redimensionne la taille des images et une deuxième fonction d'opération « YOLO » (pour « You Only Look Once » en anglais) qui détecte des objets dans une image, et au moins une fonction puits FTEP « Viz » qui permet d'afficher le résultat des différents traitements appliqués sur un écran. Bien entendu, d'autres fonctions de traitement élémentaire peuvent être sélectionnées et assemblées afin de générer une application de traitement d'un flux multimédia.
Un utilisateur final peut interagir avec le module de génération 10 au moyen d'une interface homme-machine (non représenté sur les figures) telle qu'un écran tactile ou un couple écran-clavier afin de transmettre au module de génération 10 des instructions permettant de sélectionner les différentes fonctions élémentaires FTE à assembler.
Une fois les différentes fonctions de traitement élémentaires FTE sélectionnées, ces dernières sont assemblées afin de générer l'application de traitement d'un flux multimédia.
Pour cela, un fichier de configuration FC est fourni à chacune des fonctions de traitement élémentaire FTE sélectionnées.
Un tel fichier de configuration FC est généré au cours d'une étape E2. Dans un premier mode de réalisation, un fichier de configuration FC peut être généré automatiquement par le module de génération 10, par exemple lorsque les paramètres relatifs à une fonction de traitement élémentaire sont associés à cette dernière dans la bibliothèque 12. Ainsi, la sélection et l'ordonnancement entre elles des fonctions de traitement élémentaire FTE à assembler déclenche la génération du ou des fichiers de configuration correspondants.
Dans un deuxième mode de réalisation, le fichier de configuration FC peut également être généré par l'utilisateur du module de génération 10. Une telle implémentation permet une plus grande flexibilité quant à l'ordonnancement des fonctions de traitement élémentaire entre elles puisque l'utilisateur a la possibilité de choisir quelles sont les entrées pour une fonction de traitement élémentaire donnée au lieu d'être contraint par les informations fournies par la bibliothèque 12.
Pour une fonction source FTES, un tel fichier de configuration FC comprend au moins un identifiant d'au moins une sortie ou module de fourniture sur laquelle les données traitées ou générées par la fonction source FTES sont destinées à être rendues accessibles.
Un tel identifiant est par exemple un couple port/path, ou « port » correspondant à un numéro de port du nœud de calcul sur lequel la fonction FTE est instanciée et « path » est un paramètre identifiant la fonction de traitement élémentaire FTE ayant rendu les données accessibles. Le paramètre « port » est particulièrement utile lorsqu'un même nœud de calcul instancie plusieurs fonctions de traitement élémentaire FTE.
Pour une fonction d'opération FTEO, un tel fichier de configuration FC comprend au moins un identifiant d'au moins une entrée et au moins un identifiant d'au moins une sortie sur laquelle les données traitées ou générées par la fonction d'opération FTEO sont destinées à être fournies.
Plus particulièrement, un tel fichier de configuration FC comprend pour chaque entrée de la fonction d'opération FTEO une adresse réseau d'un nœud de calcul sur lequel au moins une fonction source FTS et/ou au moins une autre fonction d'opération sont instanciées, ces fonctions de traitement élémentaire fournissant des données à traiter à la fonction d'opération FTEO, un port des nœuds de calcul concernés sur lequel ces fonctions source FTES et/ou ces fonctions d'opérations FTEO fournissent les données générées et un identifiant de ces fonctions source FTES et/ou de ces fonctions d'opérations FTEO.
Le fichier de configuration FC comprend également au moins un identifiant d'au moins une sortie sur laquelle les données traitées ou générées par la fonction d'opération FTEO sont destinées à être fournies.
Enfin, pour une fonction puits FTEP, un tel fichier de configuration FC comprend pour chaque entrée de la fonction puits FTEP une adresse réseau d'un nœud de calcul sur lequel au moins une fonction source FTS et/ou au moins une fonction d'opération sont instanciées, ces fonctions de traitement élémentaire fournissant des données à traiter à la fonction puits FTEP, un port des nœuds de calcul concernés sur lequel ces fonctions source FTES et/ou ces fonctions d'opérations FTEO fournissent les données générées et un identifiant de ces fonctions source FTES et/ou de ces fonctions d'opérations FTEO.
Une fois les fichiers de configuration générés, ces derniers sont transmis dans une étape E3 aux différentes fonctions de traitement élémentaire FTE sélectionnées.
La figure 3 représente un premier exemple d'assemblage de fonctions de traitement élémentaire FTE. Un tel assemblage comprend une fonction source FTES « Camera » configurée pour décoder les images acquises par une caméra. Cette fonction source présente une unique sortie. Une telle fonction source est par exemple instanciée sur un nœud de calcul 11-1 de type CPU.
L'assemblage comprend ensuite une première fonction d’opération « Resize » qui redimensionne les images acquises par la caméra. La fonction « Resize » a une entrée qui collecte les données fournies par la fonction « Camera » et une unique sortie. Une telle fonction d'opération est par exemple instanciée sur un nœud de calcul 11-2 de type CPU.
L'assemblage comprend une deuxième fonction d'opération « YOLO » qui détecte et identifie les objets présents dans les images acquises par la caméra. La fonction « YOLO » a une unique entrée qui collecte les données fournies par la fonction « Resize » et une unique sortie. Une telle fonction d'opération est par exemple instanciée sur un nœud de calcul 11-3 de type GPU.
Enfin, l'assemblage comprend une fonction puits FTEP « Viz » qui affiche les images acquises par la caméra sur un écran. La fonction « Viz » a une unique entrée qui collecte les données fournies par la fonction « YOLO » et ne comprend aucune sortie. Une telle fonction puits est par exemple instanciée sur un nœud de calcul 11-4 de type CPU.
En référence à l'assemblage décrit à la figure 3, le fichier de configuration FC1 de la fonction « Camera » comprend les données suivantes :
/Camera -port=8080, où /Camera est l'identifiant de la fonction source, et -port=8080 l'identifiant du module de fourniture sur lequel les données traitées par la fonction puit sont rendues accessibles.
Le fichier de configuration FC2 de la fonction « Resize » comprend les données suivantes :
/Resize 192.168.0.1 : 8080/cam -port=8080, où /Resize est l'identifiant de la première fonction d'opération, 192.168.0.1 est l'adresse réseau du nœud de calcul 11-1 sur lequel la fonction « Camera » est instanciée et 8080/cam le couple port/path du nœud de calcul sur lequel la fonction « Camera » est instanciée et sur lequel les données traitées par la fonction « Camera » sont fournies, et -port=8080 l'identifiant du module de fourniture sur lequel les données traitées par la fonction « Resize » sont rendues accessibles.
Le fichier de configuration FC3 de la fonction « YOLO » comprend les données suivantes :
/YOLO 192.168.5.1 : 8080/rsz -port=8080, où /YOLO est l'identifiant de la deuxième fonction d'opération, 192.168.5.1 est l'adresse réseau du nœud de calcul 11-2 sur lequel la fonction « Resize » est instanciée et 8080/rsz le couple port/path du nœud de calcul sur lequel la fonction « Resize » est instanciée et sur lequel les données traitées par la fonction « Resize » sont fournies, et -port=8080 l'identifiant du module de fourniture sur lequel les données traitées par la fonction « YOLO » sont rendues accessibles.
Enfin, le fichier de configuration FC4 de la fonction « Viz » comprend les données suivantes :
/Viz 192.168.10.1 : 8080/objs,
où /Viz est l'identifiant de la deuxième fonction puits, 192.168.10.1 est l'adresse réseau du nœud de calcul 11-3 sur lequel la fonction « YOLO » est instanciée et 8080/objs le couple port/path du nœud de calcul sur lequel la fonction « YOLO » est instanciée et sur lequel les données traitées par la fonction « YOLO » sont fournies.
Une fois en possession de son fichier de configuration FC, chaque fonction de traitement élémentaire FTE sait auprès de quel nœud de calcul obtenir les données qu'elle doit traiter et sur quel module d'accès elle doit rendre accessible ses propres données.
La figure 4 représente un deuxième exemple d'assemblage de fonctions de traitement élémentaire FTE. Un tel assemblage comprend une fonction source FTES « Camera » configurée pour décoder les images acquises par une caméra. Cette fonction source présente une unique sortie. Une telle fonction source est par exemple instanciée sur un nœud de calcul 11-1 de type CPU.
L'assemblage comprend ensuite une première fonction d'opération « Resize » qui redimensionne les images acquises par la caméra. La fonction « Resize » a une entrée qui collecte les données fournies par la fonction « Camera » et deux sorties. Une telle fonction d'opération est par exemple instanciée sur un nœud de calcul 11-2 de type CPU.
L'assemblage comprend une deuxième fonction d'opération « YOLO » qui détecte et identifie les objets présents dans les images acquises par la caméra. La fonction « YOLO » a une unique entrée qui collecte les données fournies par la fonction « Resize » et une unique sortie. Une telle fonction d'opération est par exemple instanciée sur un nœud de calcul 11-3 de type GPU.
L'assemblage comprend une troisième fonction d'opération « Face » qui détecte par exemple les visages présents dans les images acquises par la caméra. La fonction « Face » a une unique entrée qui collecte les données fournies par la fonction « Resize » et une unique sortie. Une telle fonction d'opération est par exemple instanciée sur un nœud de calcul 11-5 de type GPU.
Enfin, l'assemblage comprend une fonction puits FTEP « Viz » qui affiche les images acquises par la caméra sur un écran. La fonction « Viz » a deux entrées, une première entrée qui collecte les données fournies par la fonction « YOLO » et une deuxième entrée qui collecte les données fournies par la fonction « Face » et ne contient aucune sortie. Une telle fonction puits est par exemple instanciée sur un nœud de calcul 11-4 de type CPU.
En référence à l'assemblage décrit à la figure 4, le fichier de configuration FC1 de la fonction « Camera » comprend les données suivantes :
/Camera -port=8080, où /Camera est l'identifiant de la fonction source, et -port=8080 l'identifiant du module de fourniture sur lequel les données traitées par la fonction puit sont rendues accessibles.
Le fichier de configuration FC2 de la fonction « Resize » comprend les données suivantes :
/Resize 192.168.0.1 : 8080/cam -port=8080, où /Resize est l'identifiant de la première fonction d'opération, 192.168.0.1 est l'adresse réseau du nœud de calcul 11-1 sur lequel la fonction « Camera » est instanciée et 8080/cam le couple port/path du nœud de calcul sur lequel la fonction « Camera » est instanciée et sur lequel les données traitées par la fonction « Camera » sont fournies, et -port=8080 l'identifiant du module de fourniture sur lequel les données traitées par la fonction « Resize » sont rendues accessibles.
Le fichier de configuration FC3 de la fonction « YOLO » comprend les données suivantes :
/YOLO 192.168.5.1 : 8080/rsz -port=8080, où /YOLO est l'identifiant de la deuxième fonction d'opération, 192.168.5.1 est l'adresse réseau du nœud de calcul 11-2 sur lequel la fonction « Resize » est instanciée et 8080/rsz le couple port/path du nœud de calcul sur lequel la fonction « Resize » est instanciée et sur lequel les données traitées par la fonction « Resize » sont fournies, et -port=8080 l'identifiant du module de fourniture sur lequel les données traitées par la fonction « YOLO » sont rendues accessibles.
Le fichier de configuration FC5 de la fonction « Face » comprend les données suivantes :
/Face 192.168.5.1 : 8080/rsz -port=8080, où /Face est l'identifiant de la deuxième fonction d’opération, 192.168.5.1 est l'adresse réseau du nœud de calcul 11-2 sur lequel la fonction « Resize » est instanciée et 8080/rsz le couple port/path du nœud de calcul sur lequel la fonction « Resize » est instanciée et sur lequel les données traitées par la fonction « Resize » sont fournies, et -port=8080 l'identifiant du module de fourniture sur lequel les données traitées par la fonction « Face » sont rendues accessibles.
Enfin, le fichier de configuration FC4 de la fonction « Viz » comprend les données suivantes :
/Viz 192.168.10.1 : 8080/objs,
/Viz 192.168.15.1 :8080/fcs où /Viz est l'identifiant de la deuxième fonction puits, 192.168.10.1 est l'adresse réseau du nœud de calcul 11-3 sur lequel la fonction « YOLO » est instanciée et 8080/objs le couple port/path du nœud de calcul sur lequel la fonction « YOLO » est instanciée et sur lequel les données traitées par la fonction « YOLO » sont fournies, et 192.168.15.1 est l'adresse réseau du nœud de calcul 11-5 sur lequel la fonction « Face » est instanciée et 8080/fcs le couple port/path du nœud de calcul sur lequel la fonction « Face » est instanciée et sur lequel les données traitées par la fonction « Face » sont fournies.
Une fois en possession de son fichier de configuration FC, chaque fonction de traitement élémentaire FTE sait auprès de quel nœud de calcul obtenir les données qu'elle doit traiter et sur quel module de fourniture elle doit rendre accessible ses propres données.
Les données comprises dans ces différents fichiers de configuration FC sont considérées comme des arguments des fonctions de traitement élémentaire FTE qui leur sont fournis en préambule de leur exécution.
La figure 5 représente les différentes étapes mises en œuvre pour traiter un flux multimédia au moyen de l'application de traitement représentée à la figure 3 et obtenue selon le procédé décrit en référence à la figure 2.
Dans une étape Gl, une fonction source, ici la fonction « Camera », acquiert des images d'une scène qu'elle décode au cours d'une étape G2.
La fonction « Camera » génère également des métadonnées relatives aux images décodées. De telles métadonnées sont par exemple, un identifiant de la caméra, une résolution de cette dernière, un horodatage des images capturées, une géolocalisation des images capturées, etc. De telles métadonnées sont comprises par exemple dans le champ AAPn (pour « Application Specific ») ou le champ COM (pour « Comment ») du format JPEG (pour « Joint Photographie Experts Group ») dans lequel les images sont codées. D'autres formats de traitement d'images fixes et leurs champs de données correspondants peuvent bien entendu être utilisés, tels que par exemple le format PNG avec entre autres les champs iTXt, tEXt et zTXt, etc.
Conformément à ce qui est indiqué dans le fichier de configuration FC, la fonction « Camera » fournit les images décodées et leurs métadonnées sur le port 8080 du nœud de calcul 11-1 sur lequel la fonction « Camera » est instanciée dans une étape G3.
Au cours d'une étape G4, la fonction « Resize » obtient, conformément aux informations comprises dans son fichier de configuration FC1, les données fournies par la fonction « Camera ».
A l'aide des informations comprises dans les métadonnées accompagnant les données obtenues, la fonction « Resize » traite ces dernières dans une étape G5. La fonction « Resize » génère également des métadonnées relatives aux images redimensionnées, ces métadonnées pouvant toujours comprendre les informations générées par la fonction « Camera », telles que les informations d'horodatage par exemple.
Conformément à ce qui est indiqué dans le fichier de configuration FC1, la fonction « Resize » fournit les images redimensionnées et leurs métadonnées sur le port 8080 du nœud de calcul 11-2 sur lequel la fonction « Resize » est instanciée dans une étape G6.
Au cours d'une étape G7, la fonction « YOLO » obtient, conformément aux informations comprises dans son fichier de configuration FC2, les données fournies par la fonction « Resize ».
A l'aide des informations comprises dans les métadonnées accompagnant les données obtenues, la fonction « YOLO » traite ces dernières au cours d'une étape G8. La fonction « YOLO » génère également des métadonnées relatives aux objets identifiés dans les images redimensionnées, ces métadonnées pouvant toujours comprendre les informations générées par la fonction « Camera » et la fonction « Resize », telle que les informations d'horodatage par exemple, ainsi que des informations relatives aux objets identifiés telles que leur nom, leur position dans l'image, etc.
Conformément à ce qui est indiqué dans le fichier de configuration FC2, la fonction « YOLO » fournit les images redimensionnées et leurs métadonnées sur le port 8080 du nœud de calcul 11-3 sur lequel la fonction « YOLO » est instanciée dans une étape G9.
Au cours d'une étape G10, la fonction « Viz » obtient, conformément aux informations comprises dans son fichier de configuration FC, les données fournies par la fonction « YOLO ».
A l'aide des informations comprises dans les métadonnées accompagnant les données obtenues, la fonction « Viz » traite ces dernières dans une étape Gll et les images ainsi traitées sont ainsi affichées sur un écran.
La figure 6 représente un module de génération 10 selon un mode de réalisation de l'invention. Un module de génération 10 est apte à mettre en œuvre le procédé de génération d'une application de traitement d'un flux multimédia selon la figure 2.
Un module de génération 10 peut comprendre au moins un processeur matériel 61, une unité de stockage 62, au moins une interface 63, et au moins une interface homme-machine 64 qui sont connectés entre eux au travers d'un bus 65. Bien entendu, les éléments constitutifs du module de génération 10 peuvent être connectés au moyen d'une connexion autre qu'un bus.
Le processeur 61 commande les opérations du module de génération 10. L'unité de stockage 62 stocke au moins un programme pour la mise en œuvre du procédé selon un mode de réalisation de l'invention à exécuter par le processeur 61, et diverses données, telles que des paramètres utilisés pour des calculs effectués par le processeur 61, des données intermédiaires de calculs effectués par le processeur 61, etc. Le processeur 61 peut être formé par tout matériel ou logiciel connu et approprié, ou par une combinaison de matériel et de logiciel. Par exemple, le processeur 61 peut être formé par un
matériel dédié tel qu'un circuit de traitement, ou par une unité de traitement programmable telle qu'une unité centrale de traitement (Central Processing Unit) qui exécute un programme stocké dans une mémoire de celui-ci.
L'unité de stockage 62 peut être formée par n'importe quel moyen approprié capable de stocker le programme ou les programmes et des données d'une manière lisible par un ordinateur. Des exemples d'unité de stockage 62 comprennent des supports de stockage non transitoires lisibles par ordinateur tels que des dispositifs de mémoire à semi-conducteurs, et des supports d'enregistrement magnétiques, optiques ou magnéto-optiques chargés dans une unité de lecture et d'écriture.
L'interface 63 fournit une connexion entre le module de génération 10 et l'ensemble des nœuds de calcul 11-i du système.
L'interface homme-machine 64 peut être un écran tactile ou un ensemble comprenant un clavier, une souris et un écran.
Claims
1. Procédé de génération d'une application de traitement d'au moins un flux multimédia, ladite application comprenant un assemblage de fonctions de traitement élémentaire, ledit procédé étant mis en œuvre par un module de génération d'application et comprenant les étapes suivantes :
- sélection de fonctions de traitement élémentaire destinées à être assemblées pour générer ladite application de traitement, une fonction de traitement élémentaire étant instanciée sur un nœud de calcul exécutant ladite fonction élémentaire,
- pour une fonction de traitement élémentaire sélectionnée donnée, association d'un fichier de configuration comprenant au moins un paramètre relatif à au moins une première fonction de traitement élémentaire générant des données destinées à être traitées par ladite fonction de traitement élémentaire donnée.
2. Procédé de génération d'une application de traitement selon la revendication 1 dans lequel ledit paramètre relatif à ladite première fonction de traitement élémentaire comprend:
- une adresse réseau dudit nœud de calcul sur lequel ladite première fonction de traitement élémentaire est instanciée,
- un port dudit nœud de calcul sur lequel ladite première fonction de traitement élémentaire est instanciée, au travers duquel les données générées par ladite première fonction de traitement élémentaire sont destinées à être fournies,
- un identifiant de ladite première fonction de traitement élémentaire.
3. Procédé de génération d'une application de traitement selon la revendication 2 dans lequel ledit paramètre relatif à ladite première fonction de traitement élémentaire est un argument de ladite fonction de traitement élémentaire sélectionnée donnée.
4. Procédé de génération d'une application de traitement selon les revendications 1 à 3 dans lequel ledit fichier de configuration comprend en outre, pour ladite fonction de traitement élémentaire sélectionnée donnée :
- un identifiant d'au moins un module de fourniture desdites données générées par ladite fonction de traitement élémentaire sélectionnée donnée.
5. Procédé de génération d'une application de traitement selon la revendication 4 dans lequel ledit identifiant est un argument de ladite fonction de traitement élémentaire sélectionnée donnée.
6. Procédé de génération d'une application de traitement selon la revendication 4 ou la revendication 5 dans lequel ledit module appartient au groupe comprenant:
- un port dudit nœud de calcul sur lequel ladite fonction de traitement élémentaire sélectionnée donnée est instanciée,
- un module d'affichage dudit flux multimédia,
- une mémoire.
7. Procédé de traitement d'au moins un flux multimédia par une application de traitement comprenant un assemblage de fonctions de traitement élémentaire, une fonction de traitement élémentaire étant instanciée sur un nœud de calcul exécutant ladite fonction élémentaire, ledit procédé étant mis en œuvre par un nœud de calcul et comprenant ce qui suit :
- obtention de données contenues dans ledit flux multimédia à traiter,
- traitement, par ladite fonction de traitement élémentaire instanciée sur ledit nœud, desdites données obtenues.
- génération de métadonnées associées auxdites données traitées.
- fourniture desdites données traitées et desdites métadonnées générées.
8. Procédé de traitement d'au moins un flux multimédia selon la revendication 7 dans lequel les données obtenues sont fournies par au moins une fonction de traitement élémentaire identifiée dans un fichier de configuration de ladite fonction de traitement élémentaire instanciée sur ledit nœud.
9. Procédé de traitement d'au moins un flux multimédia selon la revendication 8 dans lequel le nœud de calcul obtient des métadonnées associées auxdites données obtenues, lesdites métadonnées ayant également été générées par la fonction de traitement élémentaire identifiée dans le fichier de configuration de ladite fonction de traitement élémentaire instanciée sur ledit nœud.
10. Procédé de traitement d'au moins un flux multimédia selon la revendication 7 dans lequel les données obtenues sont acquises par ledit nœud de calcul.
11. Procédé de traitement d'au moins un flux multimédia selon l'une quelconque des revendications 7 à 10 dans lequel les métadonnées générées par ladite fonction de traitement élémentaire instanciée sur ledit nœud appartiennent au groupe comprenant :
- des coordonnées d'une caméra ayant acquis un contenu du flux multimédia,
- un identifiant de ladite caméra,
- des coordonnées d'au moins un vecteur de mouvement calculé pour au moins une image contenue dans le flux multimédia,
- au moins un identifiant d'au moins un objet détecté dans au moins une image contenue dans le flux multimédia.
12. Procédé de traitement d'au moins un flux multimédia selon l'une quelconque des revendications 7 à 11 dans lequel les métadonnées sont comprises dans un champ de données dudit au moins un flux, relatif à au moins une image fixe à traiter.
13. Module de génération d'une application de traitement d'au moins un flux multimédia, ladite application comprenant un assemblage de fonctions de traitement élémentaire, ledit module de génération d'applications comprenant des moyens pour :
- sélectionner des fonctions de traitement élémentaire destinées à être assemblées pour générer ladite application de traitement, une fonction de traitement élémentaire étant instanciée sur un nœud de calcul exécutant ladite fonction élémentaire,
- pour une fonction de traitement élémentaire sélectionnée donnée, associer un fichier de configuration comprenant au moins un paramètre relatif à au moins une première fonction de traitement élémentaire générant des données destinées à être traitées par ladite fonction de traitement élémentaire donnée.
14. Nœud de calcul sur lequel est instanciée au moins une fonction de traitement élémentaire comprise dans une application de traitement d'un flux multimédia, ledit nœud de calcul exécutant ladite fonction élémentaire et comprenant au moins un processeur configuré pour :
- obtenir des données contenues dans ledit flux multimédia à traiter,
- traiter, au moyen de ladite fonction de traitement élémentaire instanciée sur ledit nœud, lesdites données obtenues,
- générer des métadonnées associées auxdites données traitées,
- fournir lesdites données traitées et lesdites métadonnées générées.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR2213083A FR3143155A1 (fr) | 2022-12-09 | 2022-12-09 | Procédé de génération d’une application de traitement d’au moins un flux multimédia, dispositif et programme d'ordinateur associés |
| PCT/EP2023/084177 WO2024121075A1 (fr) | 2022-12-09 | 2023-12-04 | Procédé de génération d'une application de traitement d'au moins un flux multimédia, dispositif et programme d'ordinateur associés |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| EP4630914A1 true EP4630914A1 (fr) | 2025-10-15 |
Family
ID=85381094
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| EP23818368.5A Pending EP4630914A1 (fr) | 2022-12-09 | 2023-12-04 | Procédé de génération d'une application de traitement d'au moins un flux multimédia, dispositif et programme d'ordinateur associés |
Country Status (3)
| Country | Link |
|---|---|
| EP (1) | EP4630914A1 (fr) |
| FR (1) | FR3143155A1 (fr) |
| WO (1) | WO2024121075A1 (fr) |
Family Cites Families (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6370569B1 (en) * | 1997-11-14 | 2002-04-09 | National Instruments Corporation | Data socket system and method for accessing data sources using URLs |
| US6526566B1 (en) * | 1997-11-14 | 2003-02-25 | National Instruments Corporation | Graphical programming system and method including nodes for programmatically accessing data sources and targets |
| US7134085B2 (en) * | 2000-12-13 | 2006-11-07 | National Instruments Corporation | System and method for automatically configuring program data exchange |
| US8185840B2 (en) * | 2003-08-15 | 2012-05-22 | National Instruments Corporation | Mixed signal analysis system and method of use |
| US20080005752A1 (en) * | 2006-06-30 | 2008-01-03 | Robert Paul Morris | Methods, systems, and computer program products for generating application processes by linking applications |
| US8015546B2 (en) * | 2007-08-03 | 2011-09-06 | International Business Machines Corporation | Rapidly assembling and deploying selected software solutions |
| US10541930B2 (en) * | 2015-08-28 | 2020-01-21 | Softnas Operating Inc. | Automated data flows using flow-based data processor blocks |
| US10552124B2 (en) * | 2016-09-16 | 2020-02-04 | Oracle International Corporation | Systems and methods for building applications using building blocks linkable with metadata |
| JP2018107650A (ja) * | 2016-12-27 | 2018-07-05 | TsZ株式会社 | スティッチング処理制御装置 |
-
2022
- 2022-12-09 FR FR2213083A patent/FR3143155A1/fr active Pending
-
2023
- 2023-12-04 EP EP23818368.5A patent/EP4630914A1/fr active Pending
- 2023-12-04 WO PCT/EP2023/084177 patent/WO2024121075A1/fr not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| WO2024121075A1 (fr) | 2024-06-13 |
| FR3143155A1 (fr) | 2024-06-14 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111260545B (zh) | 生成图像的方法和装置 | |
| US10971171B2 (en) | Smartphone-based methods and systems | |
| US20200128286A1 (en) | Live streaming social interaction to trigger product search | |
| US20150163345A1 (en) | Smartphone-based methods and systems | |
| FR3067157A1 (fr) | Remplissage automatique de dossiers electroniques | |
| KR20130118897A (ko) | 스마트폰 기반 방법들 및 시스템들 | |
| US10452129B2 (en) | Dynamic augmented reality media creation | |
| FR3047579A1 (fr) | ||
| FR2933794A1 (fr) | Procede et dispositif de stockage et/ou de transmission de donnees medicales, procede et dispositif de visualisation de donnees medicales, produits programme d'ordinateur, signaux et support de donnees correspondants | |
| US10841482B1 (en) | Recommending camera settings for publishing a photograph based on identified substance | |
| CA3102192A1 (fr) | Procede mis en oeuvre par ordinateur pour la creation de contenus comprenant des images de synthese | |
| FR3055079B1 (fr) | Systeme de composition ou de modification de sequences de realite virtuelle, procede de composition et systeme de lecture desdites sequences | |
| EP3202116B1 (fr) | Procédé et dispositif d'aide à la décision | |
| EP4630914A1 (fr) | Procédé de génération d'une application de traitement d'au moins un flux multimédia, dispositif et programme d'ordinateur associés | |
| EP1952636A1 (fr) | Procede d'optimisation de rendu d'une scene multimedia, programme, signal, support de donnees, terminal et procede de reception correspondants | |
| TWI335548B (en) | Digital contents processing methods and systems, and machine readable medium thereof | |
| WO2014170482A1 (fr) | Procede de generation d'un flux video de sortie a partir d'un flux video large champ | |
| CN109923540A (zh) | 实时记录用于修改动画的手势和/或声音 | |
| FR3040576A1 (fr) | Gestion des partages d'ecran dans une application d'entreprise | |
| FR2917553A1 (fr) | Procede de diffusion d'un element complementaire, serveur et terminal correspondants | |
| WO2020128206A1 (fr) | Procédé d'interaction d'un utilisateur avec un environnement de réalité virtuelle | |
| CH721153A2 (fr) | Méthode pour mettre à disposition une pièce d'information à un utilisateur qui ouvre et/ou qui visualise, sur un écran, une image et/ou une vidéo | |
| FR3080935A1 (fr) | Procede et systeme de generation a la volee d'un contenu de realite augmentee sur un appareil utilisateur. | |
| FR3099675A1 (fr) | Interactions guidées par des règles déclenchées lors de la récupération et du stockage de contenu de webinaire | |
| WO2025046115A1 (fr) | Procédé et système pour accéder à des ressources et services distants à partir d'un contenu audiovisuel disponible sur un équipement de télévision |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: UNKNOWN |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE |
|
| 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 |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE |
|
| 17P | Request for examination filed |
Effective date: 20250515 |
|
| AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC ME MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
| DAV | Request for validation of the european patent (deleted) | ||
| DAX | Request for extension of the european patent (deleted) |