https://gitlab.com/4ndr3aR/pothole-mix-segmentation.git
Tip revision: 57c4844175b492da1085b430a35a6ccf331acc93 authored by Andrea Ranieri on 12 July 2022, 15:03:50 UTC
Updated README.md and recreate-fig-6.sh script...
Updated README.md and recreate-fig-6.sh script...
Tip revision: 57c4844
recreate-fig-6.sh
#!/bin/bash
basedir=`pwd`
img="../../pics/147.png"
baseline_code_dir='shrec-22/segmentation-inference'
baseline_model_dir='../../baseline/models/'
baseline_model_name='pothole-segmentron-deeplabv3+-resnet101-basic-data-aug-img_size-540-540-2a-2021-11-04_11.02.00-WD-0.0001-BS-4-LR-0.0001-0.001-epoch-16-valid_loss-0.0402.pth'
team1_model_dir='../submission-1/team1/models/'
team1_manet_name='weights_smp_manet_320_effb5_cecv_01_last.pt'
team1_unet_name='weights_smp_unet_320_effb0_cecv_01_metric.pt'
team1_unetpp_name='weights_smp_unetpp_320_effb5_cecv_01_loss.pt'
declare -a out_fns
git lfs pull # just in case...
test_imagemagick()
{
convert pics/147.png /tmp/147.png.jpg # ; echo $?
if [ $? -ne 0 ] ; then
echo '*******************************************'
echo '* Imagemagick\"s convert is not installed *'
echo '* Please install it with: *'
echo '* sudo apt install imagemagick *'
echo '*******************************************'
exit 1
fi
}
test_imagemagick
img_dir=`mktemp --directory --suffix=temp-147`
#img_dir='/tmp/tmp.YNh47yAimbtemp-147' # use these for testing
create_venv()
{
venvdir=`mktemp --directory --suffix=pothole-mix-segmentation-inference-venv`
#venvdir="/tmp/tmp.WqBb61LpIwpothole-mix-segmentation-inference-venv" # use these for testing
echo "Creating virtual env into: $venvdir"
python3.8 -m venv "$venvdir"
echo "Sourcing the environment with: source \"$venvdir/bin/activate\""
source "$venvdir"/bin/activate
}
part_one()
{
cd "$baseline_code_dir"
echo "Moved to directory:" `pwd`
mkdir models
echo "Installing all needed packages with: pip install -r requirements.txt"
pip install -r requirements.txt
}
baseline()
{
## Baseline
echo '****************************************'
echo '************** BASELINE ****************'
echo '****************************************'
outdir=outdir/baseline-deeplabv3+-resnet101
mkdir -p $outdir
cd models
ln -s "$baseline_model_dir"/"$baseline_model_name"
cd ..
classes='asphalt[0;0;0],pothole[0;0;255],crack[255;0;0]'
./inference_v2_seg.py --model "$baseline_model_name" --dataset-dir ./fake-dataset --classes "$classes" --img "$img"
mv *147* "$outdir"
out_fns[0]="$baseline_code_dir/$outdir/blend*147*"
}
manet()
{
echo '****************************************'
echo '**************** MANET *****************'
echo '****************************************'
outdir=outdir/manet-320-effb5
mkdir -p $outdir
cd models
ln -s "$team1_model_dir"/"$team1_manet_name"
cd ..
classes='asphalt[0;0;0],pothole[255;0;0],crack[0;0;255]'
./inference_v2_seg.py --arch create_model_manet_320_effb5 --model "$team1_model_dir"/"$team1_manet_name" --dataset-dir ./fake-dataset --classes "$classes" --img "$img"
mv *147* "$outdir"
out_fns[1]="$baseline_code_dir/$outdir/blend*147*"
}
unet()
{
echo '****************************************'
echo '***************** UNET *****************'
echo '****************************************'
outdir=outdir/unet_320_effb0
mkdir -p $outdir
cd models
ln -s "$team1_model_dir"/"$team1_unet_name"
cd ..
classes='asphalt[0;0;0],pothole[255;0;0],crack[0;0;255]'
./inference_v2_seg.py --arch create_model_unet_320_effb0 --model "$team1_model_dir"/"$team1_unet_name" --dataset-dir ./fake-dataset --classes "$classes" --img "$img"
mv *147* "$outdir"
out_fns[2]="$baseline_code_dir/$outdir/blend*147*"
}
unetpp()
{
echo '****************************************'
echo '**************** UNET++ ****************'
echo '****************************************'
outdir=outdir/unetpp_320_effb5
mkdir -p $outdir
cd models
ln -s "$team1_model_dir"/"$team1_unetpp_name"
cd ..
classes='asphalt[0;0;0],pothole[255;0;0],crack[0;0;255]'
./inference_v2_seg.py --arch create_model_unetpp_320_effb5 --model "$team1_model_dir"/"$team1_unetpp_name" --dataset-dir ./fake-dataset --classes "$classes" --img "$img"
mv *147* "$outdir"
out_fns[3]="$baseline_code_dir/$outdir/blend*147*"
}
create_venv
part_one
baseline
manet
unet
unetpp
echo
echo '***********************************************************'
echo '***********************************************************'
echo "Results for \"baseline\", \"manet\", \"unet\" and \"unetpp\" are in"
echo "shrec-22/segmentation-inference/outdir/unetpp_320_effb5"
echo '***********************************************************'
echo '***********************************************************'
echo
part_two()
{
cd "$basedir"
cd shrec-22/submission-2/team2
echo "Moved to directory:" `pwd`
echo "Installing antlr4-python3-runtime because it usually fails at the first attempt..."
pip install antlr4-python3-runtime
echo "Installing all needed Team 2 packages with: pip install -e ."
pip install -e .
echo "Copying image 147.png to $img_dir"
cp "$basedir/pics/147.png" "$img_dir"
cp "$basedir/pics/147.png" "$img_dir/147-bis.png" # don't ask me why, with just one img, it doesn't work -_-
}
segformer()
{
# ## **Run 0: SegFormer**
#
# - On images
# ``` bash
# python configs/segmentation/infer.py \
# -c ckpt/0.segformer/test.yaml \
# -o data.dataset.args.image_dir=$IMAGE_DIR
# ```
python configs/segmentation/infer.py -c ckpt/0.segformer/test.yaml -o data.dataset.args.image_dir=$img_dir
}
deeplab()
{
# ## **Run 1: Efficient DeeplabV3+**
#
# - On images
# ``` bash
# python configs/segmentation/infer.py \
# -c ckpt/1.deeplabv3plus/test.yaml \
# -o data.dataset.args.image_dir=$IMAGE_DIR
# ```
python configs/segmentation/infer.py -c ckpt/1.deeplabv3plus/test.yaml -o data.dataset.args.image_dir=$img_dir
}
maskedsoftcps()
{
# ## **Run 2: Masked Soft Cross Pseudo Supervision**
#
# - On images
# ``` bash
# python configs/cps/infer.py \
# -c ckpt/2.maskedsoftcps-dlunet/test.yaml \
# -o data.dataset.args.image_dir=$IMAGE_DIR
# ```
python configs/cps/infer.py -c ckpt/2.maskedsoftcps-dlunet/test.yaml -o data.dataset.args.image_dir=$img_dir
}
part_two
segformer
deeplab
maskedsoftcps
cd $basedir
show_outfiles()
{
outfiles=`ls shrec-22/submission-2/team2/outputs/*/images/overlays/147.png`
echo '****************************'
echo '* You can find the output in'
echo '****************************'
idx=4
for i in $outfiles
do
echo $i
out_fns[$idx]="$i"
idx=$((idx+1))
done
echo '****************************'
for fn in "${out_fns[@]}"
do
echo "fn: $fn"
done
}
overlay_gt()
{
echo "Copying GT mask for final overlaying and stitching of generated images..."
cp "$basedir/pics/147-gt-mask.png" "$img_dir"
#convert \( "$img_dir/147-gt-mask.png" -fill "#FF0000" -opaque "#00FF00" -modulate 75,100,100 -transparent black -background transparent \) "$img_dir/147-gt-mask-transparent.png"
convert \( "$img_dir/147-gt-mask.png" -fill "#FF3030" -opaque "#00FF00" -transparent black -background transparent \) "$img_dir/147-gt-mask-transparent.png"
#convert "$img_dir/147-gt-mask-transparent.png" "$img_dir/147.png" -compose dstover -composite "$img_dir/147-overlay-with-gt-mask.jpg"
convert \( "$img_dir/147-gt-mask-transparent.png" -alpha set -channel A -evaluate set 60% -fuzz 40% -transparent black -background transparent \) "$img_dir/147.png" -compose dstover -composite "$img_dir/147-overlay-with-gt-mask.jpg"
out_fns[7]="$img_dir/147-overlay-with-gt-mask.jpg"
}
composite_fig_6()
{
echo "Running: convert \"${out_fns[0]}\" \"${out_fns[1]}\" \"${out_fns[2]}\" \"${out_fns[3]}\" +append \"$img_dir/upper-half.jpg\""
convert "${out_fns[0]}" "${out_fns[1]}" "${out_fns[2]}" "${out_fns[3]}" +append "$img_dir/upper-half.jpg"
echo "Running: convert \"${out_fns[4]}\" \"${out_fns[5]}\" \"${out_fns[6]}\" \"${out_fns[7]}\" +append \"$img_dir/lower-half.jpg\""
convert "${out_fns[4]}" "${out_fns[5]}" "${out_fns[6]}" "${out_fns[7]}" +append "$img_dir/lower-half.jpg"
echo "Running: convert \"$img_dir/upper-half.jpg\" \"$img_dir/lower-half.jpg\" +append \"$img_dir/fig-6.jpg\""
convert "$img_dir/upper-half.jpg" "$img_dir/lower-half.jpg" -append "$img_dir/fig-6.jpg"
echo '*******************************************************'
echo '*******************************************************'
echo '*******************************************************'
echo "Copying $img_dir/fig-6.jpg to $basedir..."
echo '*******************************************************'
echo '*******************************************************'
echo '*******************************************************'
cp "$img_dir/fig-6.jpg" "$basedir"
}
show_outfiles
overlay_gt
composite_fig_6
echo "All done."
exit
