* WIP: preparation for JPEG XL support
* jxl: add loading support
* update jxl abstract
* add support for saving jxl (lossless not working)
* everything works except setting lossless explicitly
* remove unused header
* fix wrong quality logic
* remove debugging statements
* fix lossless encoding
* improve support for grayscale images
* use JXL instead of JPEGXL everywhere
* oops do not make libjxl a requirement
* update years
* silence some warnings
* simplify loader fast path logic
* allow python to save jxl and webp
* update error message with supported formats
* Allow setting image quality in Python
The setting is ignored where it does not make sense.
* round quality in JPEG saver
* improve error message in CMake
* add jxl support to imglab
* add Davis's suggestion
Co-authored-by: Davis E. King <davis685@gmail.com>
* Apply suggestions from code review
Co-authored-by: Davis E. King <davis685@gmail.com>
* make sure grayscale is 8 bit
* update abstract: JPEG XL can store grayscale images
* add more methods to query basic info from JXL
* documentation formatting
* Apply Davis' suggestions
---------
Co-authored-by: Davis E. King <davis685@gmail.com>
* Return shortcut in disturb_colors
No need to do anything if both gamma and color magnitudes are set to 0.
* Fix typo
This happens for being lazy and making the change directly from GitHub...
This allows us to greatly simplify the self supervised learning example:
- the computation in user code was a bit too distracting
- avoids duplicated computation/allocation of this matrix
- avoids edge case where net outputs are zero due to trainer synchronization
* save_png() works with buffers and streams
* optimization for bgr_pixel
* explicit overloads for matrix<> and matrix_exp<>. Added docs for new savers
* refactored loading implementations details. In my view, easier to read, mirrors saving implementations details, and supports iostreams. We could make the callback API public, and we could support a ton of APIs...
* test for iostreams
* oops
* - reduced code size by templating byte type
- docs
* spelling
* i hope i haven't made a pig's breakfast out of this
---------
Co-authored-by: pf <pf@me>
* initial commit
* is this enough?
* is this enough docs? I'm not great at writing docs
---------
Co-authored-by: pf <pf@me>
Co-authored-by: pf <pf@pf>
* Add fuse layers for conv+affine+relu and conv+relu
* Add relu to tensor_conv for cpu
* Update convolution serialization
* Move disable_duplicative_biases documentation from layers_abstract to visitors_abstract
* Fix convolution copy
* Update dlib/dnn/layers_abstract.h
---------
Co-authored-by: Facundo Galan <fgalan@danaide.com.ar>
Co-authored-by: Davis E. King <davis685@gmail.com>
When I created the issue template, I was expecting that we would get fewer people opening bugs when they can't build dlib, so I added the bug label to all submitted bugs.
However, that is not the case, and we still get bug reports which are not really bugs, and this label prevents the @dlib-issue-bot from closing them if there's no activity.
I think the bug label should only be added manually after verifying that the bug report is actually a bug.
* Fix convolution backward filter cache when using cudnn
* Apply suggestions from code review
---------
Co-authored-by: Davis E. King <davis685@gmail.com>
* backport of std::optional for c++11. WIP
* wip
* whoops
* wip
* wip
* holy shit this is tiring
* type traits
* more traits
* more traits
* wip
* delimiters
* bad header include
* noexcept correctness
* fixed has_value()
more tests
* started adding monadic intefaces
* compile time contract
* added transform
* added or_else
* according to the standard, swap also empties objects when necessary
* noexcept tests
* beginning monad tests
* bug fix
* contexpr monads
* added docs
* more tests and bug fixes
* - bug fix
- test inplace constructors and emplace()
* test value_or()
* more tests
---------
Co-authored-by: pf <pf@me>
Co-authored-by: Your Name <you@example.com>