Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-08-01 Thread Ronald S. Bultje
Hi Pedro,

On Tue, Jul 31, 2018 at 1:22 PM, Pedro Arthur  wrote:

> 2018-07-28 14:31 GMT-03:00 Pedro Arthur :
> > 2018-07-27 14:24 GMT-03:00 Rostislav Pehlivanov :
> >> On 27 July 2018 at 18:12, Rostislav Pehlivanov 
> wrote:
> >>
> >>>
> >>> And the coding style is just the tip, there are dozens of things I
> >>> disagree with, such as the custom float to 8 bit conversions, when
> filters
> >>> already exist which take in floats (zscale).
> >>>
> >>
> >> I should probably expand on what I mean by the custom float conversion:
> >> make the filter accept a float pixel format, such as
> AV_PIX_FMT_GBRPF32. We
> >> have one, we use it in vf_tonemap and vf_zscale. Users will need to
> specify
> >> a filter to convert to float first, which will match what they have to
> do
> >> for vf_zscale and vf_tonemap. If you need to process YUV then add a
> float
> >> YUV format, but please, don't do custom conversions in filters.
> > It seems there is a patch adding YUV float formats in the ml, I asked
> > the student to make a patch removing the conversion and supporting
> > only float formats when the yuv float format get in the tree.
> Just to update on the matter, there are currently two patches on ml,
> one which fixes the code style and one which removes a huge amount of
> stored data from the sr filter.
> We are working on removing the format conversion from sr filter,
> adding the needed floating formats to swscale.


Thanks for taking the time/effort to address some of our concerns.

Ronald
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-31 Thread Pedro Arthur
2018-07-28 14:31 GMT-03:00 Pedro Arthur :
> 2018-07-27 14:24 GMT-03:00 Rostislav Pehlivanov :
>> On 27 July 2018 at 18:12, Rostislav Pehlivanov  wrote:
>>
>>>
>>> And the coding style is just the tip, there are dozens of things I
>>> disagree with, such as the custom float to 8 bit conversions, when filters
>>> already exist which take in floats (zscale).
>>>
>>
>> I should probably expand on what I mean by the custom float conversion:
>> make the filter accept a float pixel format, such as AV_PIX_FMT_GBRPF32. We
>> have one, we use it in vf_tonemap and vf_zscale. Users will need to specify
>> a filter to convert to float first, which will match what they have to do
>> for vf_zscale and vf_tonemap. If you need to process YUV then add a float
>> YUV format, but please, don't do custom conversions in filters.
> It seems there is a patch adding YUV float formats in the ml, I asked
> the student to make a patch removing the conversion and supporting
> only float formats when the yuv float format get in the tree.
Just to update on the matter, there are currently two patches on ml,
one which fixes the code style and one which removes a huge amount of
stored data from the sr filter.
We are working on removing the format conversion from sr filter,
adding the needed floating formats to swscale.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-28 Thread Pedro Arthur
2018-07-27 14:24 GMT-03:00 Rostislav Pehlivanov :
> On 27 July 2018 at 18:12, Rostislav Pehlivanov  wrote:
>
>>
>> And the coding style is just the tip, there are dozens of things I
>> disagree with, such as the custom float to 8 bit conversions, when filters
>> already exist which take in floats (zscale).
>>
>
> I should probably expand on what I mean by the custom float conversion:
> make the filter accept a float pixel format, such as AV_PIX_FMT_GBRPF32. We
> have one, we use it in vf_tonemap and vf_zscale. Users will need to specify
> a filter to convert to float first, which will match what they have to do
> for vf_zscale and vf_tonemap. If you need to process YUV then add a float
> YUV format, but please, don't do custom conversions in filters.
It seems there is a patch adding YUV float formats in the ml, I asked
the student to make a patch removing the conversion and supporting
only float formats when the yuv float format get in the tree.


> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-27 Thread Ronald S. Bultje
Hi,

On Fri, Jul 27, 2018 at 10:59 AM, Pedro Arthur  wrote:

> 2018-07-27 11:31 GMT-03:00 Ronald S. Bultje :
> > Hi,
> >
> > On Fri, Jul 27, 2018 at 10:16 AM, Pedro Arthur 
> wrote:
> >
> >> Hi,
> >>
> >> 2018-07-27 8:12 GMT-03:00 Ronald S. Bultje :
> >> >
> >> > NN is different. The exposed software *uses* but does not *generate*
> the
> >> > coefficients. In fact, the meaning of most coefficients is completely
> >> > opaque. They are just multiplier and addition constants with no
> obvious
> >> > relationship to reality, other than that they were generated by some
> >> > magical process that tells us that statistically (??), this bears
> >> > resemblence to some trained form of reality. You want to adjust
> behaviour
> >> > for a defined different outcome? You'll have to retrain. That's all
> fine,
> >> > don't get me wrong, but we need to know how to retrain since it's not
> >> > obvious to us. Just tell us what process and what data were used to
> get
> >> the
> >> > outcome so that we can get a different outcome if we so choose (that
> *is*
> >> > freedom to modify)?
> >> >
> >> > Please document (and make available) all such information for the
> >> > re-training.
> >> We already did it [1] the repo provides all scripts to download the
> >> data and run the training and also generates the header with weights
> >> readily to use in ffmpeg.
> >> When Jean-Baptist raised this issue we worked to provide all the
> >> necessary scripts to perform training, reading the replies above, it
> >> seems no one is  aware of it (not even J-B).
> >> Isn't [1] enough? whats is missing then? why no one asked for whatever
> >> may be missing in the original email when we provided the link to the
> >> repo?
> >>
> >>
> >> [1] - https://github.com/HighVoltageRocknRoll/sr
> >
> >
> > It's probably because the documentation is not in FFmpeg, so how could we
> > be aware of it?
> >
> > $ git grep -i rocknroll .
> > $ pwd
> > /Users/ronaldbultje/Projects/ffmpeg
> > $ git log --oneline -1
> > 536bcc3 avcodec: add missing files missed in previous commits
> >
> > It sounds to me like we agree that documentation for re-training should
> be
> > provided, and the miscommunication was more about where this should be
> > and/or how to make it discoverable. I would encourage you to make it as
> > discoverable as possible by including the documentation inside the FFmpeg
> > source tree, possibly inside the filter's source code file.
> >
> > (I understand that it may not be practical for the actual retraining data
> > and scripts to be hosted on videolan/FFmpeg infrastructure.)
> A small description with a link for the repo in the header with the
> weights is enough?


If it answers the questions (after the obvious "hey, that looks cool, let
me dig deeper") "what on earth is this" and/or "how can I do that myself?",
then maybe, yes? It might also be useful to briefly refer to (or repeat)
the same in public documentation, e.g. in filters.texi, so that users who
start reading about nn filters and want to pass their own coefficients can
read easily how to generate them. Freedoms aren't just intended for
developers, they're also meant for users.

Ronald
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-27 Thread Rostislav Pehlivanov
On 27 July 2018 at 18:12, Rostislav Pehlivanov  wrote:

>
> And the coding style is just the tip, there are dozens of things I
> disagree with, such as the custom float to 8 bit conversions, when filters
> already exist which take in floats (zscale).
>

I should probably expand on what I mean by the custom float conversion:
make the filter accept a float pixel format, such as AV_PIX_FMT_GBRPF32. We
have one, we use it in vf_tonemap and vf_zscale. Users will need to specify
a filter to convert to float first, which will match what they have to do
for vf_zscale and vf_tonemap. If you need to process YUV then add a float
YUV format, but please, don't do custom conversions in filters.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-27 Thread Rostislav Pehlivanov
On 27 July 2018 at 17:48, Pedro Arthur  wrote:

> 2018-07-27 12:07 GMT-03:00 Rostislav Pehlivanov :
> > On 27 July 2018 at 15:11, James Almer  wrote:
> >
> >> On 7/27/2018 8:04 AM, Rostislav Pehlivanov wrote:
> >> > Reference - IRC and j-b's earlier email.
> >> > Coding style issues:
> >> > DNNModel* ff_dnn_load_model_native(const char* model_filename)
> >> >
> >> > We never ever do stupid things like put the asterix first. The author
> of
> >> > the patch should have known better and the patch should have been
> >> checked.
> >> > Even a glance could have told you its wrong.
> >>
> >> Tone it down. It's a style issue. New contributors don't always know
> >> things like that and we always tell them to fix it. It's the reviewer
> >> who should have pointed it out, and if they missed it then it's
> >> harmless. It's not like he used a public suffix like av_, where it can
> >> be a problem.
> >>
> >
> > It shows the code wasn't reviewed properly. These style issues are
> > propagated throughout all the DNN framework, which was many thousands of
> > lines of code and shows that not even a glimpse was spent on the actual
> > code. We don't commit such huge patches without at least some form of
> > review, even if months have passed and no one has bothered to yet.
> The style issue is my fault, I did not ensure the student were aware
> of the coding style.
> That does not mean that other aspects of the code were not properly
> reviewed, I spent a good amount of time reviewing and testing the
> code.
>
The code style issue is easily fixable, the student will already
> provide a fix, but if it is too much urgent I could fix it myself in a
> few minutes.
>

Doesn't matter how easy it is to fix, its too late, the code landed, you
pushed it and you didn't even bother to look at it. This is unacceptable,
especially for such a big patchset, and unfair to the rest of developers.
Ping the patchset, and keep pinging it until someone reviews it. Don't make
it your authority to do so especially as its new code for which no
maintainers exist.
And the coding style is just the tip, there are dozens of things I disagree
with, such as the custom float to 8 bit conversions, when filters already
exist which take in floats (zscale).


I don't see how reverting the code and asking for "proper" review,
> which no one (in almost 3 months) besides me did, will do any good.
> After reverting will you be compromised (or anyone else) to review it?
> or the code will get forgotten waiting for review until no one cares
> about it?
>

Yes, I'll review it myself.


It is not fair to propose a patch, and push it within 24h, reverting
> the student work of almost 3 months where no one has complained before
> of issues to be fixed.
>

What isn't fair is that this literal unreviewed code dump is sitting in our
repository at all, without review from any developer, but only with the
reassurance that it compiles and that it mostly does the things it should.
I don't want to keep pointing out issues upon issues with code in our
repository, a nice clean start is what's needed, which means like I said a
temporary revert. I'd rather have that than a tens of patches needed to
actually fix the whole thing, when a few well formatted emails would
suffice.


The code style issue will be addressed.
> We already provide a repo with training scripts, and it will be
> referenced in the code.
>
> Objectively, what else needs to be fixed? let me know and give the
> student at least a few days so he can provide a fix.


Remove the internal tables. All of them.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-27 Thread James Almer
On 7/27/2018 12:07 PM, Rostislav Pehlivanov wrote:
> On 27 July 2018 at 15:11, James Almer  wrote:
> 
>> On 7/27/2018 8:04 AM, Rostislav Pehlivanov wrote:
>>> Reference - IRC and j-b's earlier email.
>>> Coding style issues:
>>> DNNModel* ff_dnn_load_model_native(const char* model_filename)
>>>
>>> We never ever do stupid things like put the asterix first. The author of
>>> the patch should have known better and the patch should have been
>> checked.
>>> Even a glance could have told you its wrong.
>>
>> Tone it down. It's a style issue. New contributors don't always know
>> things like that and we always tell them to fix it. It's the reviewer
>> who should have pointed it out, and if they missed it then it's
>> harmless. It's not like he used a public suffix like av_, where it can
>> be a problem.
>>
> 
> It shows the code wasn't reviewed properly. These style issues are
> propagated throughout all the DNN framework, which was many thousands of
> lines of code and shows that not even a glimpse was spent on the actual
> code. We don't commit such huge patches without at least some form of
> review, even if months have passed and no one has bothered to yet.
> 
> 
> 
>>
>>> I described them in the sentence above.
>>> But I'm not willing to wait for a potential fix, and especially not for a
>>> whole bunch of them rewriting everything. The whole code needs to be
>> thrown
>>> out and thoroughly reviewed properly, by at least yourself and one other
>>> person, preferably before gsoc ends.
>>> You should start coordinating with your student on how to fix everything
>>> mentioned and then resend the patchsets once fixed. I'll apply the revert
>>> patch tomorrow.
>>
>> No, you wont. Not until this has been discussed.
> 
> 
> Yes I will, unless someone objects I still intend to. No one has yet.

I just objected, and Ronald is trying to find a way to solve this
without getting to the point of reverting.

You'll not apply this patch until there's a consensus, and much less
after a day just because you don't like it. This is a collaborative
project, and revert wars are not welcome.

> 
> 
> I don't know what got
>> to you but you're acting like someone pushed code that would get a cop
>> on your doorstep. Calm down for once in your life, you're seemingly
>> angry in every other email you write, and you're not helping making this
>> project a friendly place at all for new and old contributors alike.
>>
> 
> I didn't intend to sound such but nevertheless the facts I mentioned
> remain, and I can't really think of a way to present them better.
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-27 Thread Pedro Arthur
2018-07-27 12:07 GMT-03:00 Rostislav Pehlivanov :
> On 27 July 2018 at 15:11, James Almer  wrote:
>
>> On 7/27/2018 8:04 AM, Rostislav Pehlivanov wrote:
>> > Reference - IRC and j-b's earlier email.
>> > Coding style issues:
>> > DNNModel* ff_dnn_load_model_native(const char* model_filename)
>> >
>> > We never ever do stupid things like put the asterix first. The author of
>> > the patch should have known better and the patch should have been
>> checked.
>> > Even a glance could have told you its wrong.
>>
>> Tone it down. It's a style issue. New contributors don't always know
>> things like that and we always tell them to fix it. It's the reviewer
>> who should have pointed it out, and if they missed it then it's
>> harmless. It's not like he used a public suffix like av_, where it can
>> be a problem.
>>
>
> It shows the code wasn't reviewed properly. These style issues are
> propagated throughout all the DNN framework, which was many thousands of
> lines of code and shows that not even a glimpse was spent on the actual
> code. We don't commit such huge patches without at least some form of
> review, even if months have passed and no one has bothered to yet.
The style issue is my fault, I did not ensure the student were aware
of the coding style.
That does not mean that other aspects of the code were not properly
reviewed, I spent a good amount of time reviewing and testing the
code.
The code style issue is easily fixable, the student will already
provide a fix, but if it is too much urgent I could fix it myself in a
few minutes.
I don't see how reverting the code and asking for "proper" review,
which no one (in almost 3 months) besides me did, will do any good.
After reverting will you be compromised (or anyone else) to review it?
or the code will get forgotten waiting for review until no one cares
about it?

It is not fair to propose a patch, and push it within 24h, reverting
the student work of almost 3 months where no one has complained before
of issues to be fixed.

The code style issue will be addressed.
We already provide a repo with training scripts, and it will be
referenced in the code.

Objectively, what else needs to be fixed? let me know and give the
student at least a few days so he can provide a fix.

>
>
>
>>
>> > I described them in the sentence above.
>> > But I'm not willing to wait for a potential fix, and especially not for a
>> > whole bunch of them rewriting everything. The whole code needs to be
>> thrown
>> > out and thoroughly reviewed properly, by at least yourself and one other
>> > person, preferably before gsoc ends.
>> > You should start coordinating with your student on how to fix everything
>> > mentioned and then resend the patchsets once fixed. I'll apply the revert
>> > patch tomorrow.
>>
>> No, you wont. Not until this has been discussed.
>
>
> Yes I will, unless someone objects I still intend to. No one has yet.
>
>
> I don't know what got
>> to you but you're acting like someone pushed code that would get a cop
>> on your doorstep. Calm down for once in your life, you're seemingly
>> angry in every other email you write, and you're not helping making this
>> project a friendly place at all for new and old contributors alike.
>>
>
> I didn't intend to sound such but nevertheless the facts I mentioned
> remain, and I can't really think of a way to present them better.
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-27 Thread Rostislav Pehlivanov
On 27 July 2018 at 15:11, James Almer  wrote:

> On 7/27/2018 8:04 AM, Rostislav Pehlivanov wrote:
> > Reference - IRC and j-b's earlier email.
> > Coding style issues:
> > DNNModel* ff_dnn_load_model_native(const char* model_filename)
> >
> > We never ever do stupid things like put the asterix first. The author of
> > the patch should have known better and the patch should have been
> checked.
> > Even a glance could have told you its wrong.
>
> Tone it down. It's a style issue. New contributors don't always know
> things like that and we always tell them to fix it. It's the reviewer
> who should have pointed it out, and if they missed it then it's
> harmless. It's not like he used a public suffix like av_, where it can
> be a problem.
>

It shows the code wasn't reviewed properly. These style issues are
propagated throughout all the DNN framework, which was many thousands of
lines of code and shows that not even a glimpse was spent on the actual
code. We don't commit such huge patches without at least some form of
review, even if months have passed and no one has bothered to yet.



>
> > I described them in the sentence above.
> > But I'm not willing to wait for a potential fix, and especially not for a
> > whole bunch of them rewriting everything. The whole code needs to be
> thrown
> > out and thoroughly reviewed properly, by at least yourself and one other
> > person, preferably before gsoc ends.
> > You should start coordinating with your student on how to fix everything
> > mentioned and then resend the patchsets once fixed. I'll apply the revert
> > patch tomorrow.
>
> No, you wont. Not until this has been discussed.


Yes I will, unless someone objects I still intend to. No one has yet.


I don't know what got
> to you but you're acting like someone pushed code that would get a cop
> on your doorstep. Calm down for once in your life, you're seemingly
> angry in every other email you write, and you're not helping making this
> project a friendly place at all for new and old contributors alike.
>

I didn't intend to sound such but nevertheless the facts I mentioned
remain, and I can't really think of a way to present them better.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-27 Thread Jean-Baptiste Kempf


On Fri, 27 Jul 2018, at 16:59, Pedro Arthur wrote:
> 2018-07-27 11:31 GMT-03:00 Ronald S. Bultje :
> > Hi,
> >
> > On Fri, Jul 27, 2018 at 10:16 AM, Pedro Arthur  wrote:
> >
> >> Hi,
> >>
> >> 2018-07-27 8:12 GMT-03:00 Ronald S. Bultje :
> >> >
> >> > NN is different. The exposed software *uses* but does not *generate* the
> >> > coefficients. In fact, the meaning of most coefficients is completely
> >> > opaque. They are just multiplier and addition constants with no obvious
> >> > relationship to reality, other than that they were generated by some
> >> > magical process that tells us that statistically (??), this bears
> >> > resemblence to some trained form of reality. You want to adjust behaviour
> >> > for a defined different outcome? You'll have to retrain. That's all fine,
> >> > don't get me wrong, but we need to know how to retrain since it's not
> >> > obvious to us. Just tell us what process and what data were used to get
> >> the
> >> > outcome so that we can get a different outcome if we so choose (that *is*
> >> > freedom to modify)?
> >> >
> >> > Please document (and make available) all such information for the
> >> > re-training.
> >> We already did it [1] the repo provides all scripts to download the
> >> data and run the training and also generates the header with weights
> >> readily to use in ffmpeg.
> >> When Jean-Baptist raised this issue we worked to provide all the
> >> necessary scripts to perform training, reading the replies above, it
> >> seems no one is  aware of it (not even J-B).
> >> Isn't [1] enough? whats is missing then? why no one asked for whatever
> >> may be missing in the original email when we provided the link to the
> >> repo?
> >>
> >>
> >> [1] - https://github.com/HighVoltageRocknRoll/sr
> >
> >
> > It's probably because the documentation is not in FFmpeg, so how could we
> > be aware of it?
> >
> > $ git grep -i rocknroll .
> > $ pwd
> > /Users/ronaldbultje/Projects/ffmpeg
> > $ git log --oneline -1
> > 536bcc3 avcodec: add missing files missed in previous commits
> >
> > It sounds to me like we agree that documentation for re-training should be
> > provided, and the miscommunication was more about where this should be
> > and/or how to make it discoverable. I would encourage you to make it as
> > discoverable as possible by including the documentation inside the FFmpeg
> > source tree, possibly inside the filter's source code file.
> >
> > (I understand that it may not be practical for the actual retraining data
> > and scripts to be hosted on videolan/FFmpeg infrastructure.)
> A small description with a link for the repo in the header with the
> weights is enough?

And the README is empty.

-- 
Jean-Baptiste Kempf -  President
+33 672 704 734
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-27 Thread Pedro Arthur
2018-07-27 11:31 GMT-03:00 Ronald S. Bultje :
> Hi,
>
> On Fri, Jul 27, 2018 at 10:16 AM, Pedro Arthur  wrote:
>
>> Hi,
>>
>> 2018-07-27 8:12 GMT-03:00 Ronald S. Bultje :
>> >
>> > NN is different. The exposed software *uses* but does not *generate* the
>> > coefficients. In fact, the meaning of most coefficients is completely
>> > opaque. They are just multiplier and addition constants with no obvious
>> > relationship to reality, other than that they were generated by some
>> > magical process that tells us that statistically (??), this bears
>> > resemblence to some trained form of reality. You want to adjust behaviour
>> > for a defined different outcome? You'll have to retrain. That's all fine,
>> > don't get me wrong, but we need to know how to retrain since it's not
>> > obvious to us. Just tell us what process and what data were used to get
>> the
>> > outcome so that we can get a different outcome if we so choose (that *is*
>> > freedom to modify)?
>> >
>> > Please document (and make available) all such information for the
>> > re-training.
>> We already did it [1] the repo provides all scripts to download the
>> data and run the training and also generates the header with weights
>> readily to use in ffmpeg.
>> When Jean-Baptist raised this issue we worked to provide all the
>> necessary scripts to perform training, reading the replies above, it
>> seems no one is  aware of it (not even J-B).
>> Isn't [1] enough? whats is missing then? why no one asked for whatever
>> may be missing in the original email when we provided the link to the
>> repo?
>>
>>
>> [1] - https://github.com/HighVoltageRocknRoll/sr
>
>
> It's probably because the documentation is not in FFmpeg, so how could we
> be aware of it?
>
> $ git grep -i rocknroll .
> $ pwd
> /Users/ronaldbultje/Projects/ffmpeg
> $ git log --oneline -1
> 536bcc3 avcodec: add missing files missed in previous commits
>
> It sounds to me like we agree that documentation for re-training should be
> provided, and the miscommunication was more about where this should be
> and/or how to make it discoverable. I would encourage you to make it as
> discoverable as possible by including the documentation inside the FFmpeg
> source tree, possibly inside the filter's source code file.
>
> (I understand that it may not be practical for the actual retraining data
> and scripts to be hosted on videolan/FFmpeg infrastructure.)
A small description with a link for the repo in the header with the
weights is enough?

>
> Ronald
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-27 Thread Ronald S. Bultje
Hi,

On Fri, Jul 27, 2018 at 10:16 AM, Pedro Arthur  wrote:

> Hi,
>
> 2018-07-27 8:12 GMT-03:00 Ronald S. Bultje :
> >
> > NN is different. The exposed software *uses* but does not *generate* the
> > coefficients. In fact, the meaning of most coefficients is completely
> > opaque. They are just multiplier and addition constants with no obvious
> > relationship to reality, other than that they were generated by some
> > magical process that tells us that statistically (??), this bears
> > resemblence to some trained form of reality. You want to adjust behaviour
> > for a defined different outcome? You'll have to retrain. That's all fine,
> > don't get me wrong, but we need to know how to retrain since it's not
> > obvious to us. Just tell us what process and what data were used to get
> the
> > outcome so that we can get a different outcome if we so choose (that *is*
> > freedom to modify)?
> >
> > Please document (and make available) all such information for the
> > re-training.
> We already did it [1] the repo provides all scripts to download the
> data and run the training and also generates the header with weights
> readily to use in ffmpeg.
> When Jean-Baptist raised this issue we worked to provide all the
> necessary scripts to perform training, reading the replies above, it
> seems no one is  aware of it (not even J-B).
> Isn't [1] enough? whats is missing then? why no one asked for whatever
> may be missing in the original email when we provided the link to the
> repo?
>
>
> [1] - https://github.com/HighVoltageRocknRoll/sr


It's probably because the documentation is not in FFmpeg, so how could we
be aware of it?

$ git grep -i rocknroll .
$ pwd
/Users/ronaldbultje/Projects/ffmpeg
$ git log --oneline -1
536bcc3 avcodec: add missing files missed in previous commits

It sounds to me like we agree that documentation for re-training should be
provided, and the miscommunication was more about where this should be
and/or how to make it discoverable. I would encourage you to make it as
discoverable as possible by including the documentation inside the FFmpeg
source tree, possibly inside the filter's source code file.

(I understand that it may not be practical for the actual retraining data
and scripts to be hosted on videolan/FFmpeg infrastructure.)

Ronald
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-27 Thread Pedro Arthur
Hi,

2018-07-27 8:12 GMT-03:00 Ronald S. Bultje :
>
> NN is different. The exposed software *uses* but does not *generate* the
> coefficients. In fact, the meaning of most coefficients is completely
> opaque. They are just multiplier and addition constants with no obvious
> relationship to reality, other than that they were generated by some
> magical process that tells us that statistically (??), this bears
> resemblence to some trained form of reality. You want to adjust behaviour
> for a defined different outcome? You'll have to retrain. That's all fine,
> don't get me wrong, but we need to know how to retrain since it's not
> obvious to us. Just tell us what process and what data were used to get the
> outcome so that we can get a different outcome if we so choose (that *is*
> freedom to modify)?
>
> Please document (and make available) all such information for the
> re-training.
We already did it [1] the repo provides all scripts to download the
data and run the training and also generates the header with weights
readily to use in ffmpeg.
When Jean-Baptist raised this issue we worked to provide all the
necessary scripts to perform training, reading the replies above, it
seems no one is  aware of it (not even J-B).
Isn't [1] enough? whats is missing then? why no one asked for whatever
may be missing in the original email when we provided the link to the
repo?


[1] - https://github.com/HighVoltageRocknRoll/sr
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-27 Thread James Almer
On 7/27/2018 8:04 AM, Rostislav Pehlivanov wrote:
> Reference - IRC and j-b's earlier email.
> Coding style issues:
> DNNModel* ff_dnn_load_model_native(const char* model_filename)
> 
> We never ever do stupid things like put the asterix first. The author of
> the patch should have known better and the patch should have been checked.
> Even a glance could have told you its wrong.

Tone it down. It's a style issue. New contributors don't always know
things like that and we always tell them to fix it. It's the reviewer
who should have pointed it out, and if they missed it then it's
harmless. It's not like he used a public suffix like av_, where it can
be a problem.

> I described them in the sentence above.
> But I'm not willing to wait for a potential fix, and especially not for a
> whole bunch of them rewriting everything. The whole code needs to be thrown
> out and thoroughly reviewed properly, by at least yourself and one other
> person, preferably before gsoc ends.
> You should start coordinating with your student on how to fix everything
> mentioned and then resend the patchsets once fixed. I'll apply the revert
> patch tomorrow.

No, you wont. Not until this has been discussed. I don't know what got
to you but you're acting like someone pushed code that would get a cop
on your doorstep. Calm down for once in your life, you're seemingly
angry in every other email you write, and you're not helping making this
project a friendly place at all for new and old contributors alike.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-27 Thread Nicolas George
Rostislav Pehlivanov (2018-07-27):
> Reference - IRC

I think I agree with you on the issue at hand, but this point raises
again an issue I would like to emphasize:

Not everybody in the project does, or even can, participate in IRC
discussions. And while these discussions are archived, they are not
adapted for reading afterward, they are not curated by their authors
like mails.

Therefore, please remember that IRC discussions cannot be considered
consensus. You can of course discuss things on IRC, but before calling
their result consensus, somebody needs to summarize the arguments to
bring them on the mailing-list and let them be discussed here.

Regards,

-- 
  Nicolas George


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-27 Thread Ronald S. Bultje
Hi,

On Fri, Jul 27, 2018 at 7:02 AM, Ronald S. Bultje 
wrote:

> Hi,
>
> On Thu, Jul 26, 2018 at 11:49 PM, Pedro Arthur 
> wrote:
>
>> Taking the vp9 as example, sure the coeficients are obtained by the
>> 'poly3' but the real data are the polynomial coeficients, does any one
>> asks where these polynomial coeficients came from, reproducibility,
>> etc? Your comparison does not seems fair to me.
>
>
> The ~1.02 in VP9/AV1 and 6 in HEVC? They are stepsizes (in different
> units). It's exactly clear where they come from and it's obvious how to
> adjust them. You want more than 52 qps at the same range in HEVC? Increase
> the 6.
>
> How do I adjust the NN coefficients to get a defined adjustment in
> behaviour?
>

Actually, since I know you'll answer like you don't get it, let me explain
it in more detail to you: the adjustment in quantizer, derivation of the
coefficients if you will, is all defined by the process itself. The
external tools used to validate are the actual encoding software itself
(the model). You call this training? Sure, but then the software created by
the training *is* the training software in itself. But in all
reasonableness, it's clear what each value means and how its adjustments
affects the process - that is, if you are willing to understand.

NN is different. The exposed software *uses* but does not *generate* the
coefficients. In fact, the meaning of most coefficients is completely
opaque. They are just multiplier and addition constants with no obvious
relationship to reality, other than that they were generated by some
magical process that tells us that statistically (??), this bears
resemblence to some trained form of reality. You want to adjust behaviour
for a defined different outcome? You'll have to retrain. That's all fine,
don't get me wrong, but we need to know how to retrain since it's not
obvious to us. Just tell us what process and what data were used to get the
outcome so that we can get a different outcome if we so choose (that *is*
freedom to modify)?

Please document (and make available) all such information for the
re-training.

There's a second, orthogonal, concern: many of these filters that we're
seeing now are filters to convert X to Y are do process Z on data A. That's
great. I love it. I have no problem with it. I see a filter that converts
8bit RGB to 10bit HDR RGB and it's fantastic, it's a little bit like
colorspace (which I wrote) but maybe it can actually get closer to intended
(rather than artifacted) source, which would be fantastic. I hope it works.
But: how do we know that it does? For example, for the colorspace filter,
it's clear, because all coefficients come from the reference documentation.
For the NN filter version, how do I know it works? Seriously. If I were an
anonymous Russian submitting such a filter to the American elections, how
can I guarantee that it does what I say it does rather than just randomly
garbling the lower bits? How would I know the difference? Again, I need to
know how it was trained.

Lastly, if all filters do the same but with a different set of coefs, then
why not simply have one filter and loadable coefs? Maybe subclassing etc.
for better documentation - it would make SIMD a lot easier since we only
have to write it once.

Ronald
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-27 Thread Rostislav Pehlivanov
On 27 July 2018 at 03:04, Pedro Arthur  wrote:

> Hi,
>
> I'm surprised with this patch, there wasn't any concern raised in the
> patch review process.
>

It slipped through, and we (and you) should have known better.



> 2018-07-26 16:26 GMT-03:00 Rostislav Pehlivanov :
> > As discussed recently, the vf_sr filter and the DNN framework have an
> > issue: unreproducable weights and questionable license, as well as
> > overall unfitting coding style to the rest of the project.
> I think I'm not aware of these discussions could you provide a
> reference? I also don't understand why the coding style is unfitting
> (again no concern was raised).
>

Reference - IRC and j-b's earlier email.
Coding style issues:
DNNModel* ff_dnn_load_model_native(const char* model_filename)

We never ever do stupid things like put the asterix first. The author of
the patch should have known better and the patch should have been checked.
Even a glance could have told you its wrong.


>
> > The vf_sr filter in particular has weights embedded which weight the
> > libavfilter binary by a bit and cannot currently be reproduced.
> > There's an overall consensus that NN filters should accept external
> > weights only, as the nnedi filter currently does.
> >
> > So, temporarily remove both until the coding style issues have been
> > fixed with the framework and the filter has been modified to accept
> > external weights.
> What are these issues so we can fix them?
>

I described them in the sentence above.
But I'm not willing to wait for a potential fix, and especially not for a
whole bunch of them rewriting everything. The whole code needs to be thrown
out and thoroughly reviewed properly, by at least yourself and one other
person, preferably before gsoc ends.
You should start coordinating with your student on how to fix everything
mentioned and then resend the patchsets once fixed. I'll apply the revert
patch tomorrow.


>
> > Also, there's a discussion by the Debian folks as to whether to treat
> > pretrained NNs as non-free[0], hence its not just our project that's
> > affected by the questionable license of distributing pretrained NN
> > weights.
> >
> > Due to the weight of the patch (more than 1mb!) I've uploaded it to
> > https://0x0.st/sVEH.patch if anyone wants to test it. The change stat
> > is printed below.
> >
> > [0]: https://lwn.net/Articles/760142/
> I took the time to read the whole discussion and in my opinion it is
> flawed, except for the storage requirement, which Sergey already
> worked on a patch to reduce the stored data.
>
>
> I think before any discussion, it should be clear what is the ffmpeg
> policy on adding data, and what is considered data, and it should be
> consistent.
>
> I'll try to address the topics in the above discussion.
>
> First what is data? is it expected that all data stored should be
> easily reproducible?
>

Easily? No. Always? Absolutely.


I guess not, what is the point in storing data that is easily reproducible?
>

We do it for speed reasons. Large tables take time to generate on startup.


The entire humanity is built on previous stored knowledge, namely
> data, do we require each time one is going to use some form of
> knowledge to reproduce it? that is, proof everything one is using?
> The answer is no, the whole point in storing data is that you had once
> worked hard to proof it works and onwards just use it and believe it
> works. That does not mean it is imposible to proof everything.
>
> I think the above fits perfectly with NN weights as data.
>
> The next point is the reproducibility, one should be reasonable, it is
> hard to reproduce bit by bit of NN stored data but is totally doable
> to achieve similar results following the same training metodology
> used.
>

Very well, provide code and references to sources to reproduce please.



> Then there is the question what is open-source, once again one should
> be reasonable.
> The NN model is public available, everything is documented, the math
> machinery is also widely available and documented.
> There is also a repository containing everything one needs to train
> the NN and achieve similar results, the trainig data is public also.
> The training software is open-source, the user could also use any
> machine learning framework of their choice to perform the training
> since the model is documented, there is nothing locking one to a
> specific software or hardware.
> I can't see what is not open.
>

The process to replicate the weights. Provide script(s) and references to
sources.


Does we impose all requiriments imposed for NN weights on all other
> data stored in ffmpeg?
> I guess not, once more one should be consistent.
>
>
> If you compare NN weights with quantization tables they are pretty
> similar, both can be obtained from a training process over a dataset
> so it achieves better results (quality/compression). Are quantization
> tables evil? I don't think so.
> It seems people is afraid of  NN just because we give it

Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-27 Thread Ronald S. Bultje
Hi,

On Thu, Jul 26, 2018 at 11:49 PM, Pedro Arthur  wrote:

> Taking the vp9 as example, sure the coeficients are obtained by the
> 'poly3' but the real data are the polynomial coeficients, does any one
> asks where these polynomial coeficients came from, reproducibility,
> etc? Your comparison does not seems fair to me.


The ~1.02 in VP9/AV1 and 6 in HEVC? They are stepsizes (in different
units). It's exactly clear where they come from and it's obvious how to
adjust them. You want more than 52 qps at the same range in HEVC? Increase
the 6.

How do I adjust the NN coefficients to get a defined adjustment in
behaviour?

Ronald
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-27 Thread Carl Eugen Hoyos
2018-07-27 4:04 GMT+02:00, Pedro Arthur :

> Does we impose all requiriments imposed for NN weights
> on all other data stored in ffmpeg?

(As explained before:)
No, we clearly do not.

Carl Eugen
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-27 Thread Jean-Baptiste Kempf
Hello,

On Fri, 27 Jul 2018, at 05:49, Pedro Arthur wrote:
> > Are NN weights a single, one-line (10-character) expression? Please
> > elaborate. Why isn't that 10-character function documented anywhere?
> I think you missed the point, I wrote "can be obtained from a training
> process over a dataset so it achieves better results
> (quality/compression)".

Yes, but that is the point I made days ago already, and you did not address.

You MUST provide a process to produce data that is similar.
Else, it is not free software. It might be cool and fun; but that is not free 
software.

-- 
Jean-Baptiste Kempf -  President
+33 672 704 734
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-26 Thread Pedro Arthur
2018-07-26 23:19 GMT-03:00 Ronald S. Bultje :
> Hi,
>
> On Thu, Jul 26, 2018 at 10:04 PM, Pedro Arthur  wrote:
>
>> If you compare NN weights with quantization tables they are pretty
>> similar
>
>
> https://chromium.googlesource.com/webm/libvpx/+/3b9c19aaa7b8830a896c5f578a3ce6c6a7953947%5E%21/#F0
>
> So, that one tiny single function is how VP9/AV1 quant tables are generated.
>
> Or, the HEVC/H264 ones, they are even simpler: exp2(qp/6).
>
> Are NN weights a single, one-line (10-character) expression? Please
> elaborate. Why isn't that 10-character function documented anywhere?
I think you missed the point, I wrote "can be obtained from a training
process over a dataset so it achieves better results
(quality/compression)".
Taking the vp9 as example, sure the coeficients are obtained by the
'poly3' but the real data are the polynomial coeficients, does any one
asks where these polynomial coeficients came from, reproducibility,
etc? Your comparison does not seems fair to me.

>
> Ronald
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-26 Thread Ronald S. Bultje
Hi,

On Thu, Jul 26, 2018 at 10:04 PM, Pedro Arthur  wrote:

> If you compare NN weights with quantization tables they are pretty
> similar


https://chromium.googlesource.com/webm/libvpx/+/3b9c19aaa7b8830a896c5f578a3ce6c6a7953947%5E%21/#F0

So, that one tiny single function is how VP9/AV1 quant tables are generated.

Or, the HEVC/H264 ones, they are even simpler: exp2(qp/6).

Are NN weights a single, one-line (10-character) expression? Please
elaborate. Why isn't that 10-character function documented anywhere?

Ronald
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-26 Thread Pedro Arthur
Hi,

I'm surprised with this patch, there wasn't any concern raised in the
patch review process.

2018-07-26 16:26 GMT-03:00 Rostislav Pehlivanov :
> As discussed recently, the vf_sr filter and the DNN framework have an
> issue: unreproducable weights and questionable license, as well as
> overall unfitting coding style to the rest of the project.
I think I'm not aware of these discussions could you provide a
reference? I also don't understand why the coding style is unfitting
(again no concern was raised).

>
> The vf_sr filter in particular has weights embedded which weight the
> libavfilter binary by a bit and cannot currently be reproduced.
> There's an overall consensus that NN filters should accept external
> weights only, as the nnedi filter currently does.
>
> So, temporarily remove both until the coding style issues have been
> fixed with the framework and the filter has been modified to accept
> external weights.
What are these issues so we can fix them?

>
> Also, there's a discussion by the Debian folks as to whether to treat
> pretrained NNs as non-free[0], hence its not just our project that's
> affected by the questionable license of distributing pretrained NN
> weights.
>
> Due to the weight of the patch (more than 1mb!) I've uploaded it to
> https://0x0.st/sVEH.patch if anyone wants to test it. The change stat
> is printed below.
>
> [0]: https://lwn.net/Articles/760142/
I took the time to read the whole discussion and in my opinion it is
flawed, except for the storage requirement, which Sergey already
worked on a patch to reduce the stored data.


I think before any discussion, it should be clear what is the ffmpeg
policy on adding data, and what is considered data, and it should be
consistent.

I'll try to address the topics in the above discussion.

First what is data? is it expected that all data stored should be
easily reproducible?
I guess not, what is the point in storing data that is easily reproducible?
The entire humanity is built on previous stored knowledge, namely
data, do we require each time one is going to use some form of
knowledge to reproduce it? that is, proof everything one is using?
The answer is no, the whole point in storing data is that you had once
worked hard to proof it works and onwards just use it and believe it
works. That does not mean it is imposible to proof everything.

I think the above fits perfectly with NN weights as data.

The next point is the reproducibility, one should be reasonable, it is
hard to reproduce bit by bit of NN stored data but is totally doable
to achieve similar results following the same training metodology
used.


Then there is the question what is open-source, once again one should
be reasonable.
The NN model is public available, everything is documented, the math
machinery is also widely available and documented.
There is also a repository containing everything one needs to train
the NN and achieve similar results, the trainig data is public also.
The training software is open-source, the user could also use any
machine learning framework of their choice to perform the training
since the model is documented, there is nothing locking one to a
specific software or hardware.
I can't see what is not open.


Does we impose all requiriments imposed for NN weights on all other
data stored in ffmpeg?
I guess not, once more one should be consistent.


If you compare NN weights with quantization tables they are pretty
similar, both can be obtained from a training process over a dataset
so it achieves better results (quality/compression). Are quantization
tables evil? I don't think so.
It seems people is afraid of  NN just because we give it a fancy name,
while it is just tables of data as we always used in our code.

>
> Signed-off-by: Rostislav Pehlivanov 
>
> Rostislav Pehlivanov (1):
>   libavfilter: temporarily remove DNN framework and vf_sr filter
>
>  Changelog| 1 -
>  configure| 8 -
>  libavfilter/Makefile | 3 -
>  libavfilter/allfilters.c | 1 -
>  libavfilter/dnn_backend_native.c |   495 --
>  libavfilter/dnn_backend_native.h |40 -
>  libavfilter/dnn_backend_tf.c |   325 -
>  libavfilter/dnn_backend_tf.h |40 -
>  libavfilter/dnn_espcn.h  | 12637 -
>  libavfilter/dnn_interface.c  |60 -
>  libavfilter/dnn_interface.h  |63 -
>  libavfilter/dnn_srcnn.h  |  4957 ---
>  libavfilter/vf_sr.c  |   354 -
>  13 files changed, 18984 deletions(-)
>  delete mode 100644 libavfilter/dnn_backend_native.c
>  delete mode 100644 libavfilter/dnn_backend_native.h
>  delete mode 100644 libavfilter/dnn_backend_tf.c
>  delete mode 100644 libavfilter/dnn_backend_tf.h
>  delete mode 100644 libavfilter/dnn_espcn.h
>  delete mode 100644 libavfilter/dnn_interface.c
>  delete mode 100644 libavfilter/dnn_interface.h
>  delete mode 100644 libavfilter/dnn_srcnn.h
>  delete mode 100644 lib

Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-26 Thread Carl Eugen Hoyos
2018-07-26 21:26 GMT+02:00, Rostislav Pehlivanov :

> There's an overall consensus that NN filters should accept
> external weights only

Do you mean an overall consensus on irc?
I ask because the patch in question was sent several times for
review, and I don't remember a comment concerning internal
weights. When the issue was brought up on the mailing list, at
least one developer defended the internal weights iirc.
(No opinion here.)

Carl Eugen
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-26 Thread Paul B Mahol
On 7/26/18, Thilo Borgmann  wrote:
> Hi,
>
> Am 26.07.18 um 21:26 schrieb Rostislav Pehlivanov:
>> As discussed recently, the vf_sr filter and the DNN framework have an
>> issue: unreproducable weights and questionable license, as well as
>> overall unfitting coding style to the rest of the project.
>>
>> The vf_sr filter in particular has weights embedded which weight the
>> libavfilter binary by a bit and cannot currently be reproduced.
>> There's an overall consensus that NN filters should accept external
>> weights only, as the nnedi filter currently does.
>>
>> So, temporarily remove both until the coding style issues have been
>> fixed with the framework and the filter has been modified to accept
>> external weights.
>>
>> Also, there's a discussion by the Debian folks as to whether to treat
>> pretrained NNs as non-free[0], hence its not just our project that's
>> affected by the questionable license of distributing pretrained NN
>> weights.
>
> I personally don't have a good feeling with pre-trained NNs in the codebase,
> too. However, I do not care much about what solution we take, but Mina's
> GSoC project also depends on the NN code that comes with this and therefore
> I'd encourage everyone to make up their mind to find a suitable solution
> sometime soonish.
>
> Maybe for the time-being, we might only accept such code reading in
> externally provided NNs and/or the ability to train using FFmpeg itself. (Or
> ask one of our kind users with compute power to generate some for us)

IIRC mentioned filter already supports external files. It just have
internal one too.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-26 Thread Thilo Borgmann
Hi,

Am 26.07.18 um 21:26 schrieb Rostislav Pehlivanov:
> As discussed recently, the vf_sr filter and the DNN framework have an
> issue: unreproducable weights and questionable license, as well as
> overall unfitting coding style to the rest of the project.
> 
> The vf_sr filter in particular has weights embedded which weight the
> libavfilter binary by a bit and cannot currently be reproduced.
> There's an overall consensus that NN filters should accept external
> weights only, as the nnedi filter currently does.
> 
> So, temporarily remove both until the coding style issues have been
> fixed with the framework and the filter has been modified to accept
> external weights.
> 
> Also, there's a discussion by the Debian folks as to whether to treat
> pretrained NNs as non-free[0], hence its not just our project that's
> affected by the questionable license of distributing pretrained NN
> weights.

I personally don't have a good feeling with pre-trained NNs in the codebase, 
too. However, I do not care much about what solution we take, but Mina's GSoC 
project also depends on the NN code that comes with this and therefore I'd 
encourage everyone to make up their mind to find a suitable solution sometime 
soonish.

Maybe for the time-being, we might only accept such code reading in externally 
provided NNs and/or the ability to train using FFmpeg itself. (Or ask one of 
our kind users with compute power to generate some for us)


> Due to the weight of the patch (more than 1mb!) I've uploaded it to
> https://0x0.st/sVEH.patch if anyone wants to test it. The change stat
> is printed below.
> 
> [0]: https://lwn.net/Articles/760142/
> 
> Signed-off-by: Rostislav Pehlivanov 
> 
> Rostislav Pehlivanov (1):
>   libavfilter: temporarily remove DNN framework and vf_sr filter
> 
>  Changelog| 1 -
>  configure| 8 -
>  libavfilter/Makefile | 3 -
>  libavfilter/allfilters.c | 1 -
>  libavfilter/dnn_backend_native.c |   495 --
>  libavfilter/dnn_backend_native.h |40 -
>  libavfilter/dnn_backend_tf.c |   325 -
>  libavfilter/dnn_backend_tf.h |40 -
>  libavfilter/dnn_espcn.h  | 12637 -
>  libavfilter/dnn_interface.c  |60 -
>  libavfilter/dnn_interface.h  |63 -
>  libavfilter/dnn_srcnn.h  |  4957 ---
>  libavfilter/vf_sr.c  |   354 -
>  13 files changed, 18984 deletions(-)
>  delete mode 100644 libavfilter/dnn_backend_native.c
>  delete mode 100644 libavfilter/dnn_backend_native.h
>  delete mode 100644 libavfilter/dnn_backend_tf.c
>  delete mode 100644 libavfilter/dnn_backend_tf.h
>  delete mode 100644 libavfilter/dnn_espcn.h
>  delete mode 100644 libavfilter/dnn_interface.c
>  delete mode 100644 libavfilter/dnn_interface.h
>  delete mode 100644 libavfilter/dnn_srcnn.h
>  delete mode 100644 libavfilter/vf_sr.c
> 

-Thilo
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] libavfilter: temporarily remove DNN framework and vf_sr filter

2018-07-26 Thread Rostislav Pehlivanov
As discussed recently, the vf_sr filter and the DNN framework have an
issue: unreproducable weights and questionable license, as well as
overall unfitting coding style to the rest of the project.

The vf_sr filter in particular has weights embedded which weight the
libavfilter binary by a bit and cannot currently be reproduced.
There's an overall consensus that NN filters should accept external
weights only, as the nnedi filter currently does.

So, temporarily remove both until the coding style issues have been
fixed with the framework and the filter has been modified to accept
external weights.

Also, there's a discussion by the Debian folks as to whether to treat
pretrained NNs as non-free[0], hence its not just our project that's
affected by the questionable license of distributing pretrained NN
weights.

Due to the weight of the patch (more than 1mb!) I've uploaded it to
https://0x0.st/sVEH.patch if anyone wants to test it. The change stat
is printed below.

[0]: https://lwn.net/Articles/760142/

Signed-off-by: Rostislav Pehlivanov 

Rostislav Pehlivanov (1):
  libavfilter: temporarily remove DNN framework and vf_sr filter

 Changelog| 1 -
 configure| 8 -
 libavfilter/Makefile | 3 -
 libavfilter/allfilters.c | 1 -
 libavfilter/dnn_backend_native.c |   495 --
 libavfilter/dnn_backend_native.h |40 -
 libavfilter/dnn_backend_tf.c |   325 -
 libavfilter/dnn_backend_tf.h |40 -
 libavfilter/dnn_espcn.h  | 12637 -
 libavfilter/dnn_interface.c  |60 -
 libavfilter/dnn_interface.h  |63 -
 libavfilter/dnn_srcnn.h  |  4957 ---
 libavfilter/vf_sr.c  |   354 -
 13 files changed, 18984 deletions(-)
 delete mode 100644 libavfilter/dnn_backend_native.c
 delete mode 100644 libavfilter/dnn_backend_native.h
 delete mode 100644 libavfilter/dnn_backend_tf.c
 delete mode 100644 libavfilter/dnn_backend_tf.h
 delete mode 100644 libavfilter/dnn_espcn.h
 delete mode 100644 libavfilter/dnn_interface.c
 delete mode 100644 libavfilter/dnn_interface.h
 delete mode 100644 libavfilter/dnn_srcnn.h
 delete mode 100644 libavfilter/vf_sr.c

-- 
2.18.0

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel