[FFmpeg-devel] [GSOC] [PATCH] On the fly generation of default DNN models and code style fixes

Michael Niedermayer michael at niedermayer.cc
Tue Jul 31 01:40:54 EEST 2018


On Mon, Jul 30, 2018 at 07:59:00PM +0300, Sergey Lavrushkin wrote:
> 2018-07-30 2:01 GMT+03:00 Michael Niedermayer <michael at niedermayer.cc>:
> 
> > On Sat, Jul 28, 2018 at 01:00:53PM +0300, Sergey Lavrushkin wrote:
> > > 2018-07-28 4:31 GMT+03:00 Michael Niedermayer <michael at niedermayer.cc>:
> > >
> > > > On Fri, Jul 27, 2018 at 08:06:15PM +0300, Sergey Lavrushkin wrote:
> > > > > Hello,
> > > > >
> > > > > The first patch provides on the fly generation of default DNN models,
> > > > > that eliminates data duplication for model weights. Also, files with
> > > > > internal weights
> > > > > were replaced with automatically generated one for models I trained.
> > > > > Scripts for training and generating these files can be found here:
> > > > > https://github.com/HighVoltageRocknRoll/sr
> > > > > Later, I will add a description to this repo on how to use it and
> > > > benchmark
> > > > > results for trained models.
> > > > >
> > > > > The second patch fixes some code style issues for pointers in DNN
> > module
> > > > > and sr filter. Are there any other code style fixes I should make for
> > > > this
> > > > > code?
> > > >
> > > >
> > > > It seems the code with these patches produces some warnings:
> > > >
> > > > In file included from libavfilter/dnn_backend_native.c:27:0:
> > > > libavfilter/dnn_srcnn.h:2113:21: warning: ‘srcnn_consts’ defined but
> > not
> > > > used [-Wunused-variable]
> > > >  static const float *srcnn_consts[] = {
> > > >                      ^
> > > > libavfilter/dnn_srcnn.h:2122:24: warning: ‘srcnn_consts_dims’ defined
> > but
> > > > not used [-Wunused-variable]
> > > >  static const long int *srcnn_consts_dims[] = {
> > > >                         ^
> > > > libavfilter/dnn_srcnn.h:2142:20: warning: ‘srcnn_activations’ defined
> > but
> > > > not used [-Wunused-variable]
> > > >  static const char *srcnn_activations[] = {
> > > >                     ^
> > > > In file included from libavfilter/dnn_backend_native.c:28:0:
> > > > libavfilter/dnn_espcn.h:5401:21: warning: ‘espcn_consts’ defined but
> > not
> > > > used [-Wunused-variable]
> > > >  static const float *espcn_consts[] = {
> > > >                      ^
> > > > libavfilter/dnn_espcn.h:5410:24: warning: ‘espcn_consts_dims’ defined
> > but
> > > > not used [-Wunused-variable]
> > > >  static const long int *espcn_consts_dims[] = {
> > > >                         ^
> > > > libavfilter/dnn_espcn.h:5432:20: warning: ‘espcn_activations’ defined
> > but
> > > > not used [-Wunused-variable]
> > > >  static const char *espcn_activations[] = {
> > > >                     ^
> > > >
> > >
> > > Here is the patch, that fixes these warnings.
> >
> > >  dnn_backend_tf.c |   64 ++++++++++++++++++++++++++++++
> > ++++++++++++++++++++++++-
> > >  dnn_espcn.h      |   37 -------------------------------
> > >  dnn_srcnn.h      |   35 ------------------------------
> > >  3 files changed, 63 insertions(+), 73 deletions(-)
> > > 1faef51b86165326a4693c07a203113e2c85f7fb  0003-libavfilter-Fixes-
> > warnings-for-unused-variables-in-d.patch
> > > From 37cd7bdf2610e1c3e89210a49e8f5f3832726281 Mon Sep 17 00:00:00 2001
> > > From: Sergey Lavrushkin <dualfal at gmail.com>
> > > Date: Sat, 28 Jul 2018 12:55:02 +0300
> > > Subject: [PATCH 3/3] libavfilter: Fixes warnings for unused variables in
> > >  dnn_srcnn.h, dnn_espcn.h, dnn_backend_tf.c.
> > >
> > > ---
> > >  libavfilter/dnn_backend_tf.c | 64 ++++++++++++++++++++++++++++++
> > +++++++++++++-
> > >  libavfilter/dnn_espcn.h      | 37 -------------------------
> > >  libavfilter/dnn_srcnn.h      | 35 ------------------------
> > >  3 files changed, 63 insertions(+), 73 deletions(-)
> > >
> > > diff --git a/libavfilter/dnn_backend_tf.c b/libavfilter/dnn_backend_tf.c
> > > index 6307c794a5..7a4ad72d27 100644
> > > --- a/libavfilter/dnn_backend_tf.c
> > > +++ b/libavfilter/dnn_backend_tf.c
> > > @@ -374,9 +374,71 @@ DNNModel *ff_dnn_load_default_model_tf(DNNDefaultModel
> > model_type)
> > >      TFModel *tf_model = NULL;
> > >      TF_OperationDescription *op_desc;
> > >      TF_Operation *op;
> > > -    TF_Operation *const_ops_buffer[6];
> > >      TF_Output input;
> > >      int64_t input_shape[] = {1, -1, -1, 1};
> > > +    const char tanh[] = "Tanh";
> > > +    const char sigmoid[] = "Sigmoid";
> > > +    const char relu[] = "Relu";
> > > +
> > > +    const float *srcnn_consts[] = {
> > > +        srcnn_conv1_kernel,
> > > +        srcnn_conv1_bias,
> > > +        srcnn_conv2_kernel,
> > > +        srcnn_conv2_bias,
> > > +        srcnn_conv3_kernel,
> > > +        srcnn_conv3_bias
> > > +    };
> > > +    const long int *srcnn_consts_dims[] = {
> > > +        srcnn_conv1_kernel_dims,
> > > +        srcnn_conv1_bias_dims,
> > > +        srcnn_conv2_kernel_dims,
> > > +        srcnn_conv2_bias_dims,
> > > +        srcnn_conv3_kernel_dims,
> > > +        srcnn_conv3_bias_dims
> > > +    };
> > > +    const int srcnn_consts_dims_len[] = {
> > > +        4,
> > > +        1,
> > > +        4,
> > > +        1,
> > > +        4,
> > > +        1
> > > +    };
> >
> > not important at all but, why do you remove "static" from these ?
> >
> 
> I moved it to the function where it is only used, and thought it should not
> be static in it.
> Are there some reasons to declare these consts static?

local arrays might be initialized every time the function executes.
while this probably doesnt matter speedwise here, and the compiler
might optimize it out (gcc here does not), it feels a bit "incorrect"

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

it is not once nor twice but times without number that the same ideas make
their appearance in the world. -- Aristotle
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20180731/ba0a02be/attachment.sig>


More information about the ffmpeg-devel mailing list