[v2,0/4] Raspberry Pi AWB using neural networks
mbox series

Message ID 20251211142824.26635-1-david.plowman@raspberrypi.com
Headers show
Series
  • Raspberry Pi AWB using neural networks
Related show

Message

David Plowman Dec. 11, 2025, 2:25 p.m. UTC
Hi again

Thanks for the various review comments, here's version 2 of the set. I
think I've applied changes for all the comments that were made:

* A few cosmetic things.

* I've removed the .tflite neural network files from these
  commits. They'll come from our software repos.

* I've added a meson option "rpi-awb-nn" to enable/disable the new
  algorithm explicitly. Default is auto, which builds it if
  libtensorflow-lite is available.

* I went with an explicit "enabled" field in our algos as per
  Barnabas' suggestion, which can be set to false to disable them.

The only other small change I made was to make the code fail if, for
example, it tries to load and run two AWB algorithms at the same
time. You just know someone will do this by mistake, and nothing good
will come of it!

Thanks again to everyone

David

Peter Bailey (4):
  ipa: rpi: controller: awb: Separate Bayesian AWB into AwbBayes
  ipa: rpi: controller: awb: Add Neural Network AWB
  ipa: rpi: controller: Ignore algorithms that are not enabled
  ipa: rpi: pisp: vc4: Update tuning files for new AWB

 meson_options.txt                            |   5 +
 src/ipa/rpi/controller/controller.cpp        |  18 +
 src/ipa/rpi/controller/meson.build           |  10 +
 src/ipa/rpi/controller/rpi/awb.cpp           | 409 ++---------------
 src/ipa/rpi/controller/rpi/awb.h             |  99 ++--
 src/ipa/rpi/controller/rpi/awb_bayes.cpp     | 444 ++++++++++++++++++
 src/ipa/rpi/controller/rpi/awb_nn.cpp        | 446 +++++++++++++++++++
 src/ipa/rpi/pisp/data/imx219.json            |  67 ++-
 src/ipa/rpi/pisp/data/imx296.json            |  66 ++-
 src/ipa/rpi/pisp/data/imx296_16mm.json       |  66 ++-
 src/ipa/rpi/pisp/data/imx296_6mm.json        |  66 ++-
 src/ipa/rpi/pisp/data/imx477.json            |  65 +++
 src/ipa/rpi/pisp/data/imx477_16mm.json       |  67 ++-
 src/ipa/rpi/pisp/data/imx477_6mm.json        |  67 ++-
 src/ipa/rpi/pisp/data/imx477_scientific.json |  81 +++-
 src/ipa/rpi/pisp/data/imx500.json            |  69 +++
 src/ipa/rpi/pisp/data/imx708.json            |  66 ++-
 src/ipa/rpi/pisp/data/imx708_wide.json       |  64 +++
 src/ipa/rpi/pisp/data/ov5647.json            |  65 +++
 src/ipa/rpi/vc4/data/imx219.json             |  66 +++
 src/ipa/rpi/vc4/data/imx296.json             |  66 +++
 src/ipa/rpi/vc4/data/imx477.json             |  71 +++
 src/ipa/rpi/vc4/data/imx500.json             |  69 +++
 src/ipa/rpi/vc4/data/imx708.json             |  74 +++
 src/ipa/rpi/vc4/data/imx708_wide.json        |  64 +++
 src/ipa/rpi/vc4/data/ov5647.json             |  66 +++
 26 files changed, 2288 insertions(+), 428 deletions(-)
 create mode 100644 src/ipa/rpi/controller/rpi/awb_bayes.cpp
 create mode 100644 src/ipa/rpi/controller/rpi/awb_nn.cpp

Comments

David Plowman Dec. 11, 2025, 2:31 p.m. UTC | #1
Ah, I notice I forgot to add Naush's "Reviewed-by" tags. Will do that for
version 3!

David

On Thu, 11 Dec 2025 at 14:28, David Plowman <david.plowman@raspberrypi.com>
wrote:

> Hi again
>
> Thanks for the various review comments, here's version 2 of the set. I
> think I've applied changes for all the comments that were made:
>
> * A few cosmetic things.
>
> * I've removed the .tflite neural network files from these
>   commits. They'll come from our software repos.
>
> * I've added a meson option "rpi-awb-nn" to enable/disable the new
>   algorithm explicitly. Default is auto, which builds it if
>   libtensorflow-lite is available.
>
> * I went with an explicit "enabled" field in our algos as per
>   Barnabas' suggestion, which can be set to false to disable them.
>
> The only other small change I made was to make the code fail if, for
> example, it tries to load and run two AWB algorithms at the same
> time. You just know someone will do this by mistake, and nothing good
> will come of it!
>
> Thanks again to everyone
>
> David
>
> Peter Bailey (4):
>   ipa: rpi: controller: awb: Separate Bayesian AWB into AwbBayes
>   ipa: rpi: controller: awb: Add Neural Network AWB
>   ipa: rpi: controller: Ignore algorithms that are not enabled
>   ipa: rpi: pisp: vc4: Update tuning files for new AWB
>
>  meson_options.txt                            |   5 +
>  src/ipa/rpi/controller/controller.cpp        |  18 +
>  src/ipa/rpi/controller/meson.build           |  10 +
>  src/ipa/rpi/controller/rpi/awb.cpp           | 409 ++---------------
>  src/ipa/rpi/controller/rpi/awb.h             |  99 ++--
>  src/ipa/rpi/controller/rpi/awb_bayes.cpp     | 444 ++++++++++++++++++
>  src/ipa/rpi/controller/rpi/awb_nn.cpp        | 446 +++++++++++++++++++
>  src/ipa/rpi/pisp/data/imx219.json            |  67 ++-
>  src/ipa/rpi/pisp/data/imx296.json            |  66 ++-
>  src/ipa/rpi/pisp/data/imx296_16mm.json       |  66 ++-
>  src/ipa/rpi/pisp/data/imx296_6mm.json        |  66 ++-
>  src/ipa/rpi/pisp/data/imx477.json            |  65 +++
>  src/ipa/rpi/pisp/data/imx477_16mm.json       |  67 ++-
>  src/ipa/rpi/pisp/data/imx477_6mm.json        |  67 ++-
>  src/ipa/rpi/pisp/data/imx477_scientific.json |  81 +++-
>  src/ipa/rpi/pisp/data/imx500.json            |  69 +++
>  src/ipa/rpi/pisp/data/imx708.json            |  66 ++-
>  src/ipa/rpi/pisp/data/imx708_wide.json       |  64 +++
>  src/ipa/rpi/pisp/data/ov5647.json            |  65 +++
>  src/ipa/rpi/vc4/data/imx219.json             |  66 +++
>  src/ipa/rpi/vc4/data/imx296.json             |  66 +++
>  src/ipa/rpi/vc4/data/imx477.json             |  71 +++
>  src/ipa/rpi/vc4/data/imx500.json             |  69 +++
>  src/ipa/rpi/vc4/data/imx708.json             |  74 +++
>  src/ipa/rpi/vc4/data/imx708_wide.json        |  64 +++
>  src/ipa/rpi/vc4/data/ov5647.json             |  66 +++
>  26 files changed, 2288 insertions(+), 428 deletions(-)
>  create mode 100644 src/ipa/rpi/controller/rpi/awb_bayes.cpp
>  create mode 100644 src/ipa/rpi/controller/rpi/awb_nn.cpp
>
> --
> 2.47.3
>
>