Paddle
Requirements#
Paddle support requires the image-dataset-converter-paddle library.
Image classification#
With the following command, a sub-dir structured is converted into Paddle
format. The integer ID/label text mapping is stored in ./paddle/labels.map
,
the label ID/file mapping in files.txt
and the images are stored relatively
to the output directory in the jpg
sub-directory:
idc-convert -l INFO \
from-subdir-ic \
-l INFO \
-i ./subdir \
to-paddle-ic \
-l INFO \
-o ./paddle \
--id_label_map ./paddle/labels.map \
--file_label_map files.txt \
--relative_path jpg
The following converts all Paddle .txt
files with image/label definitions
back into sub-directory format:
idc-convert -l INFO \
from-paddle-ic \
-l INFO \
-i ./paddle/*.txt \
-m ./paddle/label_list.map \
to-subdir-ic \
-l INFO \
-o ./subdir/
Image segmentation#
The following converts indexed PNGs into Paddle's image segmentation format:
idc-convert -l INFO \
from-indexed-png-is \
-l INFO \
-i ./indexed/*.png \
--labels l1 l2 l3 l4 \
to-paddle-is \
-l INFO \
-o ./paddle
And this command converts the Paddle format into indexed PNGs again:
idc-convert -l INFO \
from-paddle-is \
-l INFO \
-i ./paddle/*_list.txt \
--labels_file ./paddle/labels.txt \
to-indexed-png-is \
-l INFO \
-o ./indexed
Plotting VisualDL log files#
When building, e.g., image segmentation models, Paddle can output the progress
in VisualDL log files. Typically,
these are visualized with the visualdl
binary and viewed in the browser.
When this is not an option, e.g., when in a headless environment on a server,
then you can still generate simple text-based plots in the terminal via
the to-terminal-plot
writer of the kasperl-plots
library.
The example pipeline below monitors the ./logs/
directory for any
modifications to .log
files. It then reads the modified file using the
from-visualdl
reader, generating a plot for the Evaluate/mIoU
scalar
(use the idc-visualdl-info
tool to inspect VisualDL log files) and
displays it using to-terminal-plot
:
idc-convert \
watch-dir \
-i "./logs/" \
-e ".log" \
-E modified \
-a nothing \
-p never \
-b "from-visualdl -l INFO -c scalar -t Evaluate/mIoU" \
to-terminal-plot
Below is a screenshot with two terminal sessions, one training a PaddleSeg model, and the other one monitoring/plotting the log file of the training run:
If you have a terminal that supports sixel
(check www.arewesixelyet.com for compatibility),
like KDE's Konsole, then you can use the to-sixel-plot
writer to generate nice-looking graphs like this one: