[FFmpeg-devel] [PATCH 3/3] dnn: export operand info in python script and load in c code

Pedro Arthur bygrandao at gmail.com
Fri Aug 30 17:49:10 EEST 2019


Em qui, 29 de ago de 2019 às 02:42, Guo, Yejun <yejun.guo at intel.com> escreveu:
>
>
>
> > -----Original Message-----
> > From: ffmpeg-devel [mailto:ffmpeg-devel-bounces at ffmpeg.org] On Behalf Of
> > Pedro Arthur
> > Sent: Tuesday, August 27, 2019 10:46 PM
> > To: FFmpeg development discussions and patches <ffmpeg-devel at ffmpeg.org>
> > Subject: Re: [FFmpeg-devel] [PATCH 3/3] dnn: export operand info in python
> > script and load in c code
> >
> > hi,
> >
> > Em ter, 20 de ago de 2019 às 05:54, Guo, Yejun <yejun.guo at intel.com>
> > escreveu:
> > >
> > > Signed-off-by: Guo, Yejun <yejun.guo at intel.com>
> > > ---
> > >  libavfilter/dnn/dnn_backend_native.c    |  49 +++++++++++---
> > >  libavfilter/dnn/dnn_backend_native.h    |   2 +-
> > >  libavfilter/dnn_interface.h             |   2 +-
> > >  tools/python/convert_from_tensorflow.py | 111
> > +++++++++++++++++++++++++++++---
> > >  4 files changed, 142 insertions(+), 22 deletions(-)
> > >
> > > diff --git a/libavfilter/dnn/dnn_backend_native.c
> > b/libavfilter/dnn/dnn_backend_native.c
> > > index 0ba4e44..eeae711 100644
> > > --- a/libavfilter/dnn/dnn_backend_native.c
> > > +++ b/libavfilter/dnn/dnn_backend_native.c
> > > @@ -72,7 +72,6 @@ DNNModel *ff_dnn_load_model_native(const char
> > *model_filename)
> > >      ConvolutionalParams *conv_params;
> > >      DepthToSpaceParams *depth_to_space_params;
> > >      LayerPadParams *pad_params;
> > > -    int32_t operand_index = 0;
> > >
> > >      model = av_malloc(sizeof(DNNModel));
> > >      if (!model){
> > > @@ -93,9 +92,10 @@ DNNModel *ff_dnn_load_model_native(const char
> > *model_filename)
> > >      }
> > >      model->model = (void *)network;
> > >
> > > -    avio_seek(model_file_context, file_size - 4, SEEK_SET);
> > > +    avio_seek(model_file_context, file_size - 8, SEEK_SET);
> > >      network->layers_num = (int32_t)avio_rl32(model_file_context);
> > > -    dnn_size = 4;
> > > +    network->operands_num = (int32_t)avio_rl32(model_file_context);
> > > +    dnn_size = 8;
> > >      avio_seek(model_file_context, 0, SEEK_SET);
> > >
> > I think it is worth adding some means to assert the input file is
> > indeed a dnn file, the code as is may alloc an undefined amout of
> > memory if the file passed is malformed or corrupted.
> > Maybe adding a magic number + the file size (or something else) at the
> > beginning of the file and early skip parsing it if it does not match?
> > however it may require two passes to generate the file which goes
> > against your previous patch.
> >
> > Otherwise I can push it as is, as this behavior was already there
> > before the patch.
>
> good point, how about add "FFMPEGDNNNATIVE" + version_number at the beginning of the file,
> or we can use another magic number instead of "FFMPEGDNNNATIVE". Once we change the model file
> format, the version_number should be increased. I can send a new patch after this patch set is pushed.
>
I was thinking of using a single dword but anything will do.


Patch pushed, thanks!
> I think it doesn't matter to put the info at the beginning or at the end of the file, avio_seek
> does not alloc memory. And the layers_num and operands_num take similar effect of file_size.
>
> >
> > >      network->layers = av_mallocz(network->layers_num * sizeof(Layer));
> > > @@ -105,11 +105,6 @@ DNNModel *ff_dnn_load_model_native(const char
> > *model_filename)
> > >          return NULL;
> > >      }
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list