mirror of
https://github.com/storytold/storyteller-ml.git
synced 2026-10-15 00:03:06 +00:00
Add MocapNET
This commit is contained in:
@@ -0,0 +1,410 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
# Ansi color code variables
|
||||
red="\e[0;91m"
|
||||
blue="\e[0;94m"
|
||||
expand_bg="\e[K"
|
||||
blue_bg="\e[0;104m${expand_bg}"
|
||||
red_bg="\e[0;101m${expand_bg}"
|
||||
green_bg="\e[0;102m${expand_bg}"
|
||||
green="\e[0;92m"
|
||||
white="\e[0;97m"
|
||||
bold="\e[1m"
|
||||
uline="\e[4m"
|
||||
reset="\e[0m"
|
||||
|
||||
|
||||
function checkForError
|
||||
{
|
||||
RESULT=$?
|
||||
if [ $RESULT -eq 0 ]; then
|
||||
echo "Successfully ran the hand pose estimation"
|
||||
else
|
||||
echo -e "${red_bg}TERMINATING SCRIPT${reset}"
|
||||
echo -e "${red}Failed running $1${reset}"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#We move to the correct directory..
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR"
|
||||
cd ..
|
||||
|
||||
|
||||
if [ $# -eq 0 ]
|
||||
then
|
||||
echo "No arguments supplied, please run with --quaternions or --euler"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
#Setting this to qbvh will activate
|
||||
#quaternion code..!
|
||||
BVH_TYPE="bvh"
|
||||
|
||||
if [ "$1" == "--quaternions" ]; then
|
||||
BVH_TYPE="qbvh"
|
||||
elif [ "$1" == "--euler" ]; then
|
||||
BVH_TYPE="bvh"
|
||||
else
|
||||
echo "You gave arguments but where not what we expected.."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
#FULL SIZE EXPERIMENT
|
||||
echo "Doing full size experiment"
|
||||
FULL_RANDOM_POSES="1999999"
|
||||
ZERO_POSES="199999"
|
||||
BASE_POSES="599999"
|
||||
FINGER_POSES="399999"
|
||||
|
||||
#SMALL SIZE (1/2) EXPERIMENT
|
||||
#echo "Doing small (1/2) size experiment"
|
||||
#FULL_RANDOM_POSES="1000000"
|
||||
#ZERO_POSES="100000"
|
||||
#BASE_POSES="300000"
|
||||
#FINGER_POSES="200000"
|
||||
|
||||
|
||||
#SMALL SIZE (1/10) EXPERIMENT
|
||||
#echo "Doing small (1/10) size experiment"
|
||||
#FULL_RANDOM_POSES="199999"
|
||||
#ZERO_POSES="19999"
|
||||
#BASE_POSES="59999"
|
||||
#FINGER_POSES="39999"
|
||||
|
||||
|
||||
|
||||
#BASE_POSES="99999"
|
||||
#FINGER_POSES="19999"
|
||||
|
||||
USE_OCCLUSIONS="" # Set to "--occlusions" for occlusions #deactivated @ 2021-03-05
|
||||
|
||||
USE_END_JOINTS="1" # We need end joints since they are our fingertips..
|
||||
|
||||
#Where is our output located
|
||||
outputDir="dataset/"
|
||||
|
||||
# Use --printparams in view commands to view the commands that are given to the utility at stderr
|
||||
VIEW_COMMANDS=" --printparams "
|
||||
|
||||
HIDEBODY=" $DONT_USE_END_JOINTS 8 abdomen chest eye.r eye.l toe1-2.r toe5-3.r toe1-2.l toe5-3.l"
|
||||
|
||||
SELECT_RHAND="--selectJoints $USE_END_JOINTS 17 rHand finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumbBase rthumb finger1-2.r finger1-3.r --hide2DLocationOfJoints 0 1 rthumbBase"
|
||||
#Note on --hide2DLocationOfJoints: We want to contain these joints in the BVH file and solve them, but they do not correspond to the BODY25 format so we hide them as 2D points..
|
||||
|
||||
SELECT_LHAND="--selectJoints $USE_END_JOINTS 17 lHand finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumbBase lthumb finger1-2.l finger1-3.l --hide2DLocationOfJoints 0 1 lthumbBase"
|
||||
#Note on --hide2DLocationOfJoints: We want to contain these joints in the BVH file and solve them, but they do not correspond to the BODY25 format so we hide them as 2D points..
|
||||
|
||||
# LEFT RIGHT
|
||||
MID_THUMBBASE_Y="63" #Thumb Left/Right -56->48 -48->56
|
||||
MID_FINGER5_1_Y="54" #Pinky Left/Right -10->22 -22->10
|
||||
MID_FINGER4_1_Y="39" #Ring Left/Right -12->12 -12->12
|
||||
MID_FINGER3_1_Y="24" #Mid Left/Right -12->12 -12->12
|
||||
MID_FINGER2_1_Y="24" #Pointer Left/Right -12->12 -12->12
|
||||
|
||||
NATURAL_LHAND="--set 12 -5.0 --set 39 5.0 --set 54 10.5 --set 63 -18"
|
||||
|
||||
NATURAL_RHAND="--set 12 5.0 --set 39 -5.0 --set 54 -10.5 --set 63 18"
|
||||
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
function generateRightHandDataset
|
||||
{
|
||||
OUTBASE="$1"
|
||||
|
||||
#Make sure file is wiped before
|
||||
#adding new poses..
|
||||
#-------------------------
|
||||
rm $outputDir/2d_$OUTBASE
|
||||
rm $outputDir/bvh_$OUTBASE
|
||||
#-------------------------
|
||||
|
||||
MIN_HAND_DEPTH="$2"
|
||||
MAX_HAND_DEPTH="$3" #1500
|
||||
MIN_RHAND_RZ="$4"
|
||||
MAX_RHAND_RZ="$7"
|
||||
|
||||
MIN_RHAND_RY="$5"
|
||||
MAX_RHAND_RY="$8"
|
||||
|
||||
MIN_RHAND_RX="$6"
|
||||
MAX_RHAND_RX="$9"
|
||||
|
||||
FROM="--haltonerror $VIEW_COMMANDS --from dataset/rhand.$BVH_TYPE"
|
||||
|
||||
RANDOM_POSITION_ROTATION="--randomize2D $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_RHAND_RZ $MIN_RHAND_RY $MIN_RHAND_RX $MAX_RHAND_RZ $MAX_RHAND_RY $MAX_RHAND_RX $USE_OCCLUSIONS"
|
||||
|
||||
OUT="--csv $outputDir $OUTBASE 2d+bvh "
|
||||
|
||||
#RHAND
|
||||
#./BVHGUI2 --from dataset/rhand.qbvh --set 2 -25 --set 3 0.5 --set 4 -0.5 --set 5 0.5 --set 6 -0.5 --set 12 5.0 --set 39 -5.0 --set 54 -10.5 --set 63 18
|
||||
|
||||
echo "TEST?"
|
||||
#New automatic pose generation based on IK Problem..
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FULL_RANDOM_POSES $SELECT_RHAND --randomizeBasedOnIKConstrains rhand $RANDOM_POSITION_ROTATION $OUT
|
||||
checkForError "rhand full random"
|
||||
|
||||
#Default BVH poses with everything at zero but hand is naturally open
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $BASE_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $OUT
|
||||
checkForError "rhand naturally open"
|
||||
|
||||
#Default BVH poses with everything at zero but hand is not naturally open, it is has fingers touching
|
||||
./GroundTruthDumper $FROM --repeat $ZERO_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $OUT
|
||||
checkForError "rhand to zero"
|
||||
|
||||
#Default BVH poses with hand naturally open but thumb in the middle
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --set 63 -6.5 --set 64 28.7 --set 65 -8.5 --set 66 -37 --set 67 13 --set 68 -7.6 --set 69 22 --set 70 5 --set 71 -43 --set 72 0 --repeat $ZERO_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $OUT
|
||||
checkForError "rhand naturally open thumb in the middle"
|
||||
|
||||
#Right hand Thumb Movement on default pose
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION --randomizeMID $MID_THUMBBASE_Y -48.0 56.0 $OUT
|
||||
checkForError "Right hand Thumb Movement on default pose"
|
||||
|
||||
#All hand open naturally, only finger 5 (pinky) moving
|
||||
RANDOMIZE_RIGHT_HAND="--/randomizeJointAngles 3 0 65 1 finger5-1.r finger5-2.r finger5-3.r"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "All hand open naturally, only finger 5 (pinky) moving"
|
||||
|
||||
#All hand open naturally, only finger 4 (ring) moving
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 3 0 65 1 finger4-1.r finger4-2.r finger4-3.r"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "All hand open naturally, only finger 4 (ring) moving"
|
||||
|
||||
#All hand open naturally, only finger 3 (middle) moving
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 3 0 65 1 finger3-1.r finger3-2.r finger3-3.r"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "All hand open naturally, only finger 3 (middle) moving"
|
||||
|
||||
#All hand open naturally, only finger 2 (pointer) moving
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 3 0 65 1 finger2-1.r finger2-2.r finger2-3.r"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "All hand open naturally, only finger 2 (pointer) moving"
|
||||
|
||||
#All hand open naturally, only finger 1 (thumb) moving
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 2 -75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 0 45 3 rthumb"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "All hand open naturally, only finger 1 (thumb) moving"
|
||||
|
||||
#All fingers closed only thumb moving!
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 90 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 -75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 0 45 3 rthumb"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "RHand - All fingers closed only thumb moving!"
|
||||
|
||||
#All fingers closed except Finger 5 ( pinky )
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 90 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 45 45 3 rthumb --randomizeJointAngles 3 0 65 1 finger5-1.r finger5-2.r finger5-3.r"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "RHand - All fingers closed except Finger 5 ( pinky )"
|
||||
|
||||
#All fingers closed except Finger 4 ( ring )
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 90 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 45 45 3 rthumb --randomizeJointAngles 3 0 65 1 finger4-1.r finger4-2.r finger4-3.r"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "RHand - All fingers closed except Finger 4 ( ring )"
|
||||
|
||||
#All fingers closed except Finger 3 ( middle )
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 90 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 45 45 3 rthumb --randomizeJointAngles 3 0 65 1 finger3-1.r finger3-2.r finger3-3.r"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "RHand - All fingers closed except Finger 3 ( middle )"
|
||||
|
||||
#All fingers closed except Finger 2 ( pointer )
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 90 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 45 45 3 rthumb --randomizeJointAngles 3 0 65 1 finger2-1.r finger2-2.r finger2-3.r"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "RHand - All fingers closed except Finger 2 ( pointer )"
|
||||
|
||||
#Done
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
function generateLeftHandDataset
|
||||
{
|
||||
OUTBASE="$1"
|
||||
|
||||
|
||||
#Make sure file is wiped before
|
||||
#adding new poses..
|
||||
#-------------------------
|
||||
rm $outputDir/2d_$OUTBASE
|
||||
rm $outputDir/bvh_$OUTBASE
|
||||
#-------------------------
|
||||
|
||||
MIN_HAND_DEPTH="$2"
|
||||
MAX_HAND_DEPTH="$3" #1500
|
||||
MIN_LHAND_RZ="$4"
|
||||
MAX_LHAND_RZ="$7"
|
||||
|
||||
MIN_LHAND_RY="$5"
|
||||
MAX_LHAND_RY="$8"
|
||||
|
||||
MIN_LHAND_RX="$6"
|
||||
MAX_LHAND_RX="$9"
|
||||
|
||||
FROM="--haltonerror $VIEW_COMMANDS --from dataset/lhand.$BVH_TYPE"
|
||||
|
||||
RANDOM_POSITION_ROTATION="--randomize2D $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_LHAND_RZ $MIN_LHAND_RY $MIN_LHAND_RX $MAX_LHAND_RZ $MAX_LHAND_RY $MAX_LHAND_RX $USE_OCCLUSIONS"
|
||||
|
||||
OUT="--csv $outputDir $OUTBASE 2d+bvh "
|
||||
|
||||
# ./BVHGUI2 --from dataset/lhand.qbvh --set 2 -25 --set 3 0.5 --set 4 -0.5 --set 5 -0.5 --set 6 0.5 --set 12 -5.0 --set 39 5.0 --set 54 10.5 --set 63 -18
|
||||
|
||||
#New automatic pose generation based on IK Problem..
|
||||
./GroundTruthDumper $FROM --repeat $FULL_RANDOM_POSES $SELECT_LHAND --randomizeBasedOnIKConstrains lhand $RANDOM_POSITION_ROTATION $OUT
|
||||
checkForError "lhand full random"
|
||||
|
||||
#Default BVH poses with everything at zero but hand is naturally open
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $BASE_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $OUT
|
||||
checkForError "lhand naturally open"
|
||||
|
||||
#Default BVH poses with everything at zero but hand is not naturally open, it is has fingers touching
|
||||
./GroundTruthDumper $FROM --repeat $ZERO_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $OUT
|
||||
checkForError "lhand to zero"
|
||||
|
||||
#Default BVH poses with hand naturally open but thumb in the middle
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --set 63 6.5 --set 64 -28.7 --set 65 8.5 --set 66 37 --set 67 -13 --set 68 7.6 --set 69 -22 --set 70 -5 --set 71 43 --set 72 0 --repeat $ZERO_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $OUT
|
||||
checkForError "lhand naturally open thumb in the middle"
|
||||
|
||||
#Left hand Thumb Movement on default pose
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION --randomizeMID $MID_THUMBBASE_Y -56.0 48.0 $OUT
|
||||
checkForError "LHand - Left hand Thumb Movement on default pose"
|
||||
|
||||
#All hand open naturally, only finger 5 (pinky) moving
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 3 0 65 1 finger5-1.l finger5-2.l finger5-3.l"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All hand open naturally, only finger 5 (pinky) moving"
|
||||
|
||||
#All hand open naturally, only finger 4 (ring) moving
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 3 0 65 1 finger4-1.l finger4-2.l finger4-3.l"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All hand open naturally, only finger 4 (ring) moving"
|
||||
|
||||
#All hand open naturally, only finger 3 (middle) moving
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 3 0 65 1 finger3-1.l finger3-2.l finger3-3.l"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All hand open naturally, only finger 3 (middle) moving"
|
||||
|
||||
#All hand open naturally, only finger 2 (pointer) moving
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 3 0 65 1 finger2-1.l finger2-2.l finger2-3.l"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All hand open naturally, only finger 2 (pointer) moving"
|
||||
|
||||
#All hand open naturally, only finger 1 (thumb) moving
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 2 -75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 0 45 3 lthumb"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All hand open naturally, only finger 1 (thumb) moving"
|
||||
|
||||
#All fingers closed only thumb Open!
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 90 90 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 -75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 0 45 3 lthumb"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All fingers closed only thumb Open!"
|
||||
|
||||
#All fingers closed except Finger 5 ( pinky )
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 90 90 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 45 45 3 lthumb --randomizeJointAngles 3 0 65 1 finger5-1.l finger5-2.l finger5-3.l"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All fingers closed except Finger 5 ( pinky )"
|
||||
|
||||
#All fingers closed except Finger 4 ( ring )
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 90 90 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 45 45 3 lthumb --randomizeJointAngles 3 0 65 1 finger4-1.l finger4-2.l finger4-3.l"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All fingers closed except Finger 4 ( ring )"
|
||||
|
||||
#All fingers closed except Finger 3 ( middle )
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 90 90 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 45 45 3 lthumb --randomizeJointAngles 3 0 65 1 finger3-1.l finger3-2.l finger3-3.l"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All fingers closed except Finger 3 ( middle )"
|
||||
|
||||
#All fingers closed except Finger 2 ( pointer )
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 90 90 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 45 45 3 lthumb --randomizeJointAngles 3 0 65 1 finger2-1.l finger2-2.l finger2-3.l"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All fingers closed except Finger 2 ( pointer )"
|
||||
|
||||
#Done
|
||||
|
||||
#Let's count it and store the numbers so we don't have to spam disk reads on every training..
|
||||
wc -l $outputDir/2d_$1 > $outputDir/count_$1
|
||||
#wc -l $outputDir/3d_$1 > $outputDir/count_$1
|
||||
wc -l $outputDir/bvh_$1 > $outputDir/count_$1
|
||||
}
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
# ./BVHGUI2 --from dataset/lhand.$BVH_TYPE --set 3 -90 --set 4 0 --set 5 -135
|
||||
|
||||
|
||||
|
||||
MIN_HAND_DEPTH="200"
|
||||
MAX_HAND_DEPTH="2000" #1500
|
||||
|
||||
|
||||
MIN_HAND_RZ="-90"
|
||||
MAX_HAND_RZ="-90"
|
||||
|
||||
MIN_HAND_RY="-50"
|
||||
MAX_HAND_RY="50"
|
||||
|
||||
#If we have a quaternion we can handle all orientations!
|
||||
if [ "$1" == "--quaternions" ]; then
|
||||
MIN_HAND_RZ="-179.9"
|
||||
MAX_HAND_RZ="179.9"
|
||||
|
||||
MIN_HAND_RY="-179.9"
|
||||
MAX_HAND_RY="179.9"
|
||||
fi
|
||||
|
||||
|
||||
MIN_HAND_RX="-179.9"
|
||||
MAX_HAND_RX="179.9"
|
||||
|
||||
|
||||
generateLeftHandDataset lhand_all.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
#./ReshapeCSV --from dataset/bvh_lhand_all.csv --faces 20 > dataset/category_lhand_all.csv
|
||||
|
||||
generateRightHandDataset rhand_all.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
#./ReshapeCSV --from dataset/bvh_rhand_all.csv --faces 20 > dataset/category_rhand_all.csv
|
||||
|
||||
echo "Done Generating Hands.."
|
||||
|
||||
exit 0
|
||||
|
||||
MIN_HAND_RX="-135"
|
||||
MAX_HAND_RX="-45"
|
||||
generateRightHandDataset rhand_front.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
generateLeftHandDataset lhand_front.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
|
||||
MIN_HAND_RX="45"
|
||||
MAX_HAND_RX="135"
|
||||
generateRightHandDataset rhand_back.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
generateLeftHandDataset lhand_back.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
|
||||
MIN_HAND_RX="-45"
|
||||
MAX_HAND_RX="45"
|
||||
generateRightHandDataset rhand_left.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
generateLeftHandDataset lhand_left.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
|
||||
MIN_HAND_RX="135"
|
||||
MAX_HAND_RX="225"
|
||||
generateRightHandDataset rhand_right.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
generateLeftHandDataset lhand_right.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
#--svg tmp/ --bvh randomRHand.$BVH_TYPE
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,320 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Colors for easier output
|
||||
red=$(printf "\033[31m")
|
||||
green=$(printf "\033[32m")
|
||||
yellow=$(printf "\033[33m")
|
||||
blue=$(printf "\033[34m")
|
||||
magenta=$(printf "\033[35m")
|
||||
cyan=$(printf "\033[36m")
|
||||
white=$(printf "\033[37m")
|
||||
normal=$(printf "\033[m")
|
||||
|
||||
#We can use R to gather statistics about the generated ground truth..
|
||||
if ! [ -x "$(command -v R)" ]; then
|
||||
echo 'Warning: R is not installed.' >&2
|
||||
sudo apt-get install r-base
|
||||
fi
|
||||
|
||||
function getStatistics
|
||||
{
|
||||
#use R to generate statistics
|
||||
#sudo apt-get install r-base
|
||||
R -q -e "x <- read.csv('$1', header = T); summary(x); sd(x[ , 1])" > $2
|
||||
cat $1 | wc -l >> $2
|
||||
}
|
||||
|
||||
|
||||
#We move to the correct directory..
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR"
|
||||
cd ..
|
||||
|
||||
|
||||
|
||||
#Where is our datasets located, compared to the current directory..
|
||||
datasetDir="dataset/MotionCapture"
|
||||
#MocapNET1 -> datasetSubDir="01 02 03 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19"
|
||||
datasetSubDir="h36 01 02 03 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 49 54 55 56 60 61 62 63 64 69 70 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 93 94 102 103 104 105 106 107 108 111 113 114 115 117 118 120 121 122 123 124 125 126 127 128 131 132 133 134 135 136 137 138 139 140 141 142 143 144"
|
||||
#datasetSubDir="h36"
|
||||
|
||||
#Where is our output located
|
||||
outputDir="dataset/"
|
||||
|
||||
|
||||
# Use --printparams in view commands to view the commands that are given to the utility at stderr
|
||||
VIEW_COMMANDS=" "
|
||||
|
||||
RAND_UPPER_BODY="--perturbJointAngles 2 30.0 rshoulder lshoulder --perturbJointAngles 2 16.0 relbow lelbow --perturbJointAngles 2 10.0 abdomen chest"
|
||||
RAND_LOWER_BODY="--perturbJointAngles 2 30.0 rhip lhip --perturbJointAngles 4 10.0 lknee rknee lfoot rfoot --perturbJointAngles 2 10.0 abdomen chest"
|
||||
|
||||
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 -65 0 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 -90 0 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 -75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 -45 0 3 lthumb"
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 0 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 0 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 -75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 0 45 3 rthumb"
|
||||
|
||||
FILTER_OUT_POSES_WITH_HANDS_IN_SIDE="--filterout 0 0 -130.0 0 90 0 1920 1080 570.7 570.3 6 rhand lhip 0 120 rhand rhip 0 120 rhand lhand 0 150 lhand rhip 0 120 lhand lhip 0 120 lhand rhand 0 150"
|
||||
#FILTER_OUT_POSES_WITH_HANDS_IN_SIDE=" "
|
||||
|
||||
DONT_USE_END_JOINTS="0"
|
||||
USE_END_JOINTS="1"
|
||||
|
||||
HIDEBODY="--hide2DLocationOfJoints $DONT_USE_END_JOINTS 8 abdomen chest eye.r eye.l toe1-2.r toe5-3.r toe1-2.l toe5-3.l" #We want to contain these joints in the BVH file and solve them, but they do not correspond to the BODY25 format so we hide them as 2D points..
|
||||
SELECTBODY="--selectJoints $USE_END_JOINTS 23 hip eye.r eye.l abdomen chest neck head rshoulder relbow rhand lshoulder lelbow lhand rhip rknee rfoot lhip lknee lfoot toe1-2.r toe5-3.r toe1-2.l toe5-3.l $HIDEBODY"
|
||||
|
||||
|
||||
HIDEUPPERBODY="--hide2DLocationOfJoints $DONT_USE_END_JOINTS 4 abdomen chest eye.r eye.l" #We want to contain these joints in the BVH file and solve them, but they do not correspond to the BODY25 format so we hide them as 2D points..
|
||||
SELECTUPPERBODY="--selectJoints $USE_END_JOINTS 13 hip eye.r eye.l abdomen chest neck head rshoulder relbow rhand lshoulder lelbow lhand $HIDEUPPERBODY"
|
||||
|
||||
HIDELOWERBODY="--hide2DLocationOfJoints $DONT_USE_END_JOINTS 6 abdomen chest toe1-2.r toe5-3.r toe1-2.l toe5-3.l"
|
||||
SELECTLOWERBODY="--selectJoints $USE_END_JOINTS 14 hip abdomen chest neck rhip rknee rfoot lhip lknee lfoot toe1-2.r toe5-3.r toe1-2.l toe5-3.l $HIDELOWERBODY"
|
||||
|
||||
|
||||
|
||||
SELECT_RHAND="--selectJoints $USE_END_JOINTS 16 rhand finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r"
|
||||
|
||||
SELECT_LHAND="--selectJoints $USE_END_JOINTS 16 lhand finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l"
|
||||
|
||||
#FAR
|
||||
MIN_DEPTH="900" #1000 original
|
||||
MAX_DEPTH="4500" #3000 is too small
|
||||
|
||||
|
||||
ITERATIONS="1" #Smallest size..
|
||||
#ITERATIONS="2" #float32 targeting 16GB RAM
|
||||
#ITERATIONS="8" #float16 targeting 16GB RAM
|
||||
|
||||
|
||||
|
||||
#Get number of bytes in RAM
|
||||
RAM=`free | grep Mem | tr -s ' '| cut -f2 -d ' '`
|
||||
|
||||
if [ "$RAM" -gt "11286464" ]; then
|
||||
echo "More than 12GB";
|
||||
ITERATIONS="0"
|
||||
fi
|
||||
if [ "$RAM" -gt "15297500" ]; then
|
||||
echo "More than 16GB";
|
||||
ITERATIONS="1"
|
||||
fi
|
||||
if [ "$RAM" -gt "31861780" ]; then
|
||||
echo "More than 32GB";
|
||||
ITERATIONS="2"
|
||||
fi
|
||||
|
||||
#Uncomment next line to override settings and make the
|
||||
#minimum training set for development
|
||||
#ITERATIONS="0"
|
||||
|
||||
|
||||
totaldatasetsToGo=`echo "$datasetSubDir" | awk '{print NF}'`
|
||||
|
||||
|
||||
function generateDataset
|
||||
{
|
||||
datasetsProcessed=0
|
||||
rm $outputDir/$1
|
||||
rm $outputDir/count_$1
|
||||
rm $outputDir/2d_$1
|
||||
#rm $outputDir/3d_$1
|
||||
rm $outputDir/bvh_$1
|
||||
for d in $datasetSubDir
|
||||
do
|
||||
if [ -d $datasetDir/$d ]
|
||||
then
|
||||
echo "Generating $1 - $green Found $d directory $normal"
|
||||
datasetFile=`ls $datasetDir/$d | grep bvh`
|
||||
((datasetsProcessed++))
|
||||
#-------------------------------------------------------
|
||||
|
||||
for f in $datasetFile
|
||||
do
|
||||
echo "$green Generating $1 - $datasetsProcessed/$totaldatasetsToGo - $datasetDir/$d/$f file $normal"
|
||||
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
BVHFILE="$datasetDir/$d/$f" # --svg $outputDir
|
||||
./GroundTruthDumper $VIEW_COMMANDS --haltonerror --from $BVHFILE --filtergimballocks 4 $3 --repeat $ITERATIONS $2 --occlusions --csv $outputDir $1 2d+bvh # --bvh $outputDir/$f-random.bvh
|
||||
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
done
|
||||
|
||||
#-------------------------------------------------------
|
||||
else
|
||||
echo "$red Could not find $d directory $normal"
|
||||
fi
|
||||
done
|
||||
|
||||
#Let's count it and store the numbers so we don't have to spam disk reads on every training..
|
||||
wc -l $outputDir/2d_$1 > $outputDir/count_$1
|
||||
#wc -l $outputDir/3d_$1 >> $outputDir/count_$1
|
||||
wc -l $outputDir/bvh_$1 >> $outputDir/count_$1
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------------------------------------
|
||||
# MocapNET 1
|
||||
# \ /
|
||||
# \ BACK /
|
||||
# \ /
|
||||
# BACK \ / BACK
|
||||
# \/
|
||||
#-----------/\-------------
|
||||
# / \
|
||||
# FRONT / \ FRONT
|
||||
# / FRONT \
|
||||
# / \
|
||||
|
||||
#Old way to do that ( works if you don't go very far in depth )
|
||||
#------------------------------------------------------------------------------------------------------------
|
||||
#MINIMUM_POSITION="-1400 -300 $MIN_DEPTH"
|
||||
#MINIMUM_ROTATION="-25 -178 -35"
|
||||
#MAXIMUM_POSITION="1400 300 $MAX_DEPTH"
|
||||
#MAXIMUM_ROTATION="25 178 35"
|
||||
#generateDataset dataBack.csv "--flipRandomizationOrientation --randomizeranges $MINIMUM_POSITION -35 -179.999999 -35 $MAXIMUM_POSITION 35 -90 35 $MINIMUM_POSITION -35 90 -35 $MAXIMUM_POSITION 35 180 35"
|
||||
#generateDataset dataAll.csv "--randomize $MINIMUM_POSITION -35 -179.999999 -35 $MAXIMUM_POSITION 35 180 35"
|
||||
#generateDataset dataFront.csv "--randomize $MINIMUM_POSITION -35 -90 -35 $MAXIMUM_POSITION 35 90 35"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------------------------------------
|
||||
#New extra extra fine detail rotated by 45 degrees
|
||||
# \ /
|
||||
# \ BACK /
|
||||
# \ /
|
||||
# \ /
|
||||
# \/
|
||||
# LEFT /\ RIGHT
|
||||
# / \
|
||||
# / \
|
||||
# / FRONT \
|
||||
# / \
|
||||
#------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
MIN_LIM="-45"
|
||||
MAX_LIM="45"
|
||||
|
||||
|
||||
#I have added 20 degrees on every limit more than the default
|
||||
#to have some overlap and redundancy when switching between datasets
|
||||
#---------------------------
|
||||
FRONT_MIN_ORIENTATION="-55" #-45 default , -55 with 10 deg safety
|
||||
FRONT_MAX_ORIENTATION="55" # 45 default , 55 with 10 deg safety
|
||||
#---------------------------
|
||||
BACK_MIN_ORIENTATION="125" # 135 default , 125 with 10 deg safety
|
||||
BACK_MAX_ORIENTATION="235" # 225 default , 235 with 10 deg safety
|
||||
#---------------------------
|
||||
LEFT_MIN_ORIENTATION="-145" #-135 default
|
||||
LEFT_MAX_ORIENTATION="-35" #-45 default
|
||||
#---------------------------
|
||||
RIGHT_MIN_ORIENTATION="35" # 45 default
|
||||
RIGHT_MAX_ORIENTATION="145" # 135 default
|
||||
|
||||
# $FILTER_OUT_POSES_WITH_HANDS_IN_SIDE
|
||||
#rm $outputDir/2d_filteredPosesRHand.csv
|
||||
#rm $outputDir/bvh_filteredPosesRHand.csv
|
||||
#./GroundTruthDumper --haltonerror --filtergimballocks --from filteredPosesRHand.bvh $SELECTUPPERBODY $RAND_UPPER_BODY --csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH -10 -45 -0 10 45 10 $SELECTUPPERBODY --occlusions --csv $outputDir #filteredPosesRHand.csv 2d+bvh
|
||||
#exit 0
|
||||
|
||||
FILTER_OUT="$FILTER_OUT_POSES_WITH_HANDS_IN_SIDE"
|
||||
|
||||
#UPPER BODY
|
||||
generateDataset upperbody_all.csv "$FILTER_OUT --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM -179.999999 $MIN_LIM $MAX_LIM 180 $MAX_LIM" "$SELECTUPPERBODY"
|
||||
./ReshapeCSV dataset/bvh_upperbody_all.csv > dataset/category_upperbody_all.csv
|
||||
echo "Category size = "#cat dataset/category_upperbody_all.csv | wc -c
|
||||
#-----------------------------------------------
|
||||
generateDataset upperbody_front.csv "$FILTER_OUT --csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $FRONT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $FRONT_MAX_ORIENTATION $MAX_LIM" "$SELECTUPPERBODY $RAND_UPPER_BODY"
|
||||
generateDataset upperbody_back.csv "$FILTER_OUT --csvOrientation back --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $BACK_MIN_ORIENTATION $MIN_LIM $MAX_LIM $BACK_MAX_ORIENTATION $MAX_LIM" "$SELECTUPPERBODY $RAND_UPPER_BODY"
|
||||
generateDataset upperbody_left.csv "$FILTER_OUT --csvOrientation left --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $LEFT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $LEFT_MAX_ORIENTATION $MAX_LIM" "$SELECTUPPERBODY $RAND_UPPER_BODY"
|
||||
generateDataset upperbody_right.csv "$FILTER_OUT --csvOrientation right --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $RIGHT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $RIGHT_MAX_ORIENTATION $MAX_LIM" "$SELECTUPPERBODY $RAND_UPPER_BODY"
|
||||
|
||||
|
||||
#LOWER BODY
|
||||
generateDataset lowerbody_all.csv "--randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM -179.999999 $MIN_LIM $MAX_LIM 180 $MAX_LIM" "$SELECTLOWERBODY"
|
||||
./ReshapeCSV dataset/bvh_lowerbody_all.csv > dataset/category_lowerbody_all.csv
|
||||
echo "Category size = "
|
||||
cat dataset/category_lowerbody_all.csv | wc -c
|
||||
#-----------------------------------------------
|
||||
generateDataset lowerbody_front.csv "--csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $FRONT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $FRONT_MAX_ORIENTATION $MAX_LIM" "$SELECTLOWERBODY $RAND_LOWER_BODY"
|
||||
generateDataset lowerbody_back.csv "--csvOrientation back --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $BACK_MIN_ORIENTATION $MIN_LIM $MAX_LIM $BACK_MAX_ORIENTATION $MAX_LIM" "$SELECTLOWERBODY $RAND_LOWER_BODY"
|
||||
generateDataset lowerbody_left.csv "--csvOrientation left --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $LEFT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $LEFT_MAX_ORIENTATION $MAX_LIM" "$SELECTLOWERBODY $RAND_LOWER_BODY"
|
||||
generateDataset lowerbody_right.csv "--csvOrientation right --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $RIGHT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $RIGHT_MAX_ORIENTATION $MAX_LIM" "$SELECTLOWERBODY $RAND_LOWER_BODY"
|
||||
|
||||
|
||||
exit 0 # <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
|
||||
|
||||
#This is a better hand dataset generator that ignores poses
|
||||
./createRandomHandDataset.sh
|
||||
|
||||
exit 0 # <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
|
||||
|
||||
#This hand is just based on CMU poses
|
||||
#LEFT HAND
|
||||
generateDataset lhand_front.csv "--csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $FRONT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $FRONT_MAX_ORIENTATION $MAX_LIM" "$SELECT_LHAND $RANDOMIZE_LEFT_HAND"
|
||||
generateDataset lhand_back.csv "--csvOrientation back --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $BACK_MIN_ORIENTATION $MIN_LIM $MAX_LIM $BACK_MAX_ORIENTATION $MAX_LIM" "$SELECT_LHAND $RANDOMIZE_LEFT_HAND"
|
||||
generateDataset lhand_left.csv "--csvOrientation left --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $LEFT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $LEFT_MAX_ORIENTATION $MAX_LIM" "$SELECT_LHAND $RANDOMIZE_LEFT_HAND"
|
||||
generateDataset lhand_right.csv "--csvOrientation right --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $RIGHT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $RIGHT_MAX_ORIENTATION $MAX_LIM" "$SELECT_LHAND $RANDOMIZE_LEFT_HAND"
|
||||
|
||||
#RIGHT HAND
|
||||
generateDataset rhand_front.csv "--csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $FRONT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $FRONT_MAX_ORIENTATION $MAX_LIM" "$SELECT_RHAND $RANDOMIZE_RIGHT_HAND"
|
||||
generateDataset rhand_back.csv "--csvOrientation back --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $BACK_MIN_ORIENTATION $MIN_LIM $MAX_LIM $BACK_MAX_ORIENTATION $MAX_LIM" "$SELECT_RHAND $RANDOMIZE_RIGHT_HAND"
|
||||
generateDataset rhand_left.csv "--csvOrientation left --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $LEFT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $LEFT_MAX_ORIENTATION $MAX_LIM" "$SELECT_RHAND $RANDOMIZE_RIGHT_HAND"
|
||||
generateDataset rhand_right.csv "--csvOrientation right --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $RIGHT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $RIGHT_MAX_ORIENTATION $MAX_LIM" "$SELECT_RHAND $RANDOMIZE_RIGHT_HAND"
|
||||
|
||||
|
||||
exit 0 # <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
|
||||
|
||||
|
||||
#WHOLE BODY AT ONCE
|
||||
generateDataset body_all.csv "$FILTER_OUT --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM -179.999999 $MIN_LIM $MAX_LIM 180 $MAX_LIM" "$SELECTBODY"
|
||||
./ReshapeCSV dataset/bvh_body_all.csv > dataset/category_body_all.csv
|
||||
echo "Category size = "
|
||||
cat dataset/category_body_all.csv | wc -c
|
||||
#-----------------------------------------------
|
||||
generateDataset body_front.csv "$FILTER_OUT --csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $FRONT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $FRONT_MAX_ORIENTATION $MAX_LIM" "$SELECTBODY"
|
||||
generateDataset body_back.csv "$FILTER_OUT --csvOrientation back --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $BACK_MIN_ORIENTATION $MIN_LIM $MAX_LIM $BACK_MAX_ORIENTATION $MAX_LIM" "$SELECTBODY"
|
||||
generateDataset body_left.csv "$FILTER_OUT --csvOrientation left --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $LEFT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $LEFT_MAX_ORIENTATION $MAX_LIM" "$SELECTBODY"
|
||||
generateDataset body_right.csv "$FILTER_OUT --csvOrientation right --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $RIGHT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $RIGHT_MAX_ORIENTATION $MAX_LIM" "$SELECTBODY"
|
||||
|
||||
exit 0 # <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
|
||||
|
||||
|
||||
echo "Getting statistics for front view.."
|
||||
cat dataset/bvh_body_front.csv | cut -d',' -f 5 > frontOrientations
|
||||
getStatistics frontOrientations dataset/bvh_body_front_statistics.txt
|
||||
cat dataset/bvh_body_front_statistics.txt
|
||||
rm frontOrientations
|
||||
|
||||
echo "Getting statistics for back view.."
|
||||
cat dataset/bvh_body_back.csv | cut -d',' -f 5 > backOrientations
|
||||
getStatistics backOrientations dataset/bvh_body_back_statistics.txt
|
||||
cat dataset/bvh_body_back_statistics.txt
|
||||
rm backOrientations
|
||||
|
||||
echo "Getting statistics for left view.."
|
||||
cat dataset/bvh_body_left.csv | cut -d',' -f 5 > leftOrientations
|
||||
getStatistics leftOrientations dataset/bvh_body_left_statistics.txt
|
||||
cat dataset/bvh_body_left_statistics.txt
|
||||
rm leftOrientations
|
||||
|
||||
echo "Getting statistics for right view.."
|
||||
cat dataset/bvh_body_right.csv | cut -d',' -f 5 > rightOrientations
|
||||
getStatistics rightOrientations dataset/bvh_body_right_statistics.txt
|
||||
cat dataset/bvh_body_right_statistics.txt
|
||||
rm rightOrientations
|
||||
|
||||
echo "Getting statistics for all view.."
|
||||
cat dataset/bvh_body_all.csv | cut -d',' -f 5 > allOrientations
|
||||
getStatistics allOrientations dataset/bvh_body_all_statistics.txt
|
||||
cat dataset/bvh_body_all_statistics.txt
|
||||
rm allOrientations
|
||||
|
||||
|
||||
|
||||
|
||||
echo "Done.."
|
||||
exit 0
|
||||
@@ -0,0 +1,67 @@
|
||||
#!/bin/bash
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR"
|
||||
cd ..
|
||||
|
||||
red=$(printf "\033[31m")
|
||||
green=$(printf "\033[32m")
|
||||
yellow=$(printf "\033[33m")
|
||||
blue=$(printf "\033[34m")
|
||||
magenta=$(printf "\033[35m")
|
||||
cyan=$(printf "\033[36m")
|
||||
white=$(printf "\033[37m")
|
||||
normal=$(printf "\033[m")
|
||||
|
||||
SELECTBODY="--selectJoints 21 hip abdomen chest neck head rcollar rshoulder relbow rhand lcollar lshoulder lelbow lhand rhip rknee rfoot lhip lknee lfoot toe3-2.r toe3-2.l"
|
||||
SELECTRHAND="--selectJoints 11 rhand rthumb1 rthumb2 rindex1 rindex2 rmid1 rmid2 rring1 rring2 rpinky1 rpinky2"
|
||||
SELECTLHAND="--selectJoints 11 lhand lthumb1 lthumb2 lindex1 lindex2 lmid1 lmid2 lring1 lring2 lpinky1 lpinky2"
|
||||
|
||||
datasetDir="dataset/MotionCapture"
|
||||
datasetSubDir="01 02 03 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19"
|
||||
outputDir="dataset/"
|
||||
|
||||
rm $outputDir/2d_body_test.csv
|
||||
rm $outputDir/3d_body_test.csv
|
||||
rm $outputDir/bvh_body_test.csv
|
||||
|
||||
#create a small test file with one example
|
||||
#rm $outputDir/testSMALL.csv
|
||||
# ./GroundTruthDumper --from MotionCapture/01/01_01.bvh --offsetPositionRotation 0 750 2500 0 0 0 --maxFrames 1 --csv $outputDir testSMALL.csv
|
||||
|
||||
#PRODUCESVG="--svg $outputDir/svg"
|
||||
PRODUCESVG=" "
|
||||
|
||||
|
||||
datasetsProcessed=0
|
||||
totaldatasetsToGo=`echo "$datasetSubDir" | awk '{print NF}'`
|
||||
|
||||
rm $outputDir/test.csv
|
||||
for d in $datasetSubDir
|
||||
do
|
||||
if [ -d $datasetDir/$d ]
|
||||
then
|
||||
echo "$green Found $d directory $normal"
|
||||
datasetFile=`ls $datasetDir/$d | grep bvh`
|
||||
((datasetsProcessed++))
|
||||
#-------------------------------------------------------
|
||||
|
||||
for f in $datasetFile
|
||||
do
|
||||
echo "$green Generating Test - $datasetsProcessed/$totaldatasetsToGo - $datasetDir/$d/$f file $normal"
|
||||
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
BVHFILE="$datasetDir/$d/$f" # --svg $outputDir
|
||||
#./GroundTruthDumper --from $BVHFILE --csv $outputDir test.csv# --bvh $outputDir/$f-random.bvh
|
||||
./GroundTruthDumper --from $BVHFILE $SELECTBODY --offsetPositionRotation 0 750 2000 0 0 0 --occlusions --csv $outputDir body_test.csv 2d+bvh $PRODUCESVG #--to ~/Documents/Programming/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/Scenes/testBVH.conf --bvh $outputDir/$f-random.bvh --svg $outputDir/svg
|
||||
#exit 0
|
||||
#./GroundTruthDumper --from $BVHFILE --setPositionRotation 0 400 0 0 0 0 --csv $outputDir test.csv# --bvh $outputDir/$f-random.bvh
|
||||
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
done
|
||||
|
||||
#-------------------------------------------------------
|
||||
else
|
||||
echo "$red Could not find $d directory $normal"
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR"
|
||||
cd ..
|
||||
|
||||
|
||||
#Valgrind can also be downloaded..
|
||||
#https://www.valgrind.org/downloads/current.html
|
||||
|
||||
#Simple dependency checker that will apt-get stuff if something is missing
|
||||
SYSTEM_DEPENDENCIES="valgrind"
|
||||
|
||||
for REQUIRED_PKG in $SYSTEM_DEPENDENCIES
|
||||
do
|
||||
PKG_OK=$(dpkg-query -W --showformat='${Status}\n' $REQUIRED_PKG|grep "install ok installed")
|
||||
echo "Checking for $REQUIRED_PKG: $PKG_OK"
|
||||
if [ "" = "$PKG_OK" ]; then
|
||||
|
||||
echo "No $REQUIRED_PKG. Setting up $REQUIRED_PKG."
|
||||
|
||||
#If this is uncommented then only packages that are missing will get prompted..
|
||||
#sudo apt-get --yes install $REQUIRED_PKG
|
||||
|
||||
#if this is uncommented then if one package is missing then all missing packages are immediately installed..
|
||||
sudo apt-get install $SYSTEM_DEPENDENCIES
|
||||
break
|
||||
fi
|
||||
done
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --track-origins=yes --num-callers=20 --track-fds=yes ./MocapNETLiveWebcamDemo --from shuffle $@ 2>error.txt
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,93 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
DATASET=""
|
||||
if (( $#<1 ))
|
||||
then
|
||||
echo "Please provide arguments first argument is dataset "
|
||||
exit 1
|
||||
else
|
||||
DATASET=$1-data
|
||||
fi
|
||||
# $1 holds the video file we want to process ( it should be something like path/to/videofile.mp4 )
|
||||
#DATASET now holds the output directory we will create ( it should be something like path/to/videofile.mp4-data/ )
|
||||
|
||||
|
||||
#Remember the directory where user started
|
||||
STARTDIR=`pwd`
|
||||
|
||||
#Remember the directory where the script is ( and where MocapNET is :) )
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
#Please give the path to openpose here..
|
||||
OPENPOSE_DIR="/home/ammar/Documents/3dParty/openpose/"
|
||||
OPENPOSE_BINARY_DIR="/home/ammar/Documents/3dParty/openpose/build/examples/openpose/"
|
||||
|
||||
#Dataset dumping using ffmpeg
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#Create the new dataset directory
|
||||
mkdir $DATASET
|
||||
|
||||
#Dump the video files using our naming scheme
|
||||
ffmpeg -i $1 -r 30 -q:v 1 $DATASET/colorFrame_0_%05d.jpg
|
||||
|
||||
#Make sure we start at frame 0
|
||||
cp $DATASET/colorFrame_0_00001.jpg $DATASET/colorFrame_0_00000.jpg
|
||||
|
||||
#We now want to grab an absolute path to our dataset
|
||||
cd $DATASET
|
||||
FULL_PATH_TO_DATASET=`pwd`
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
#2D pose estimation using OpenPose
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
cd $OPENPOSE_DIR
|
||||
LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64 $OPENPOSE_BINARY_DIR/openpose.bin -number_people_max 1 --hand --face --write_json $FULL_PATH_TO_DATASET -image_dir $FULL_PATH_TO_DATASET $@
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
#2D pose conversion to CSV using our tool
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
cd "$DIR"
|
||||
cd ..
|
||||
|
||||
./convertOpenPoseJSONToCSV --from $DATASET
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
#3D pose estimation using MocapNET2
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
cd "$DIR"
|
||||
cd ..
|
||||
|
||||
./MocapNET2CSV --from $FULL_PATH_TO_DATASET/2dJoints_v1.4.csv --mt --show 3 --save
|
||||
cp out.bvh $FULL_PATH_TO_DATASET/predicted.bvh
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
cd $STARTDIR
|
||||
exit 0
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
|
||||
#This is a script to dump a video file to JPG files
|
||||
#it uses ffmpeg so make sure you have sudo apt-get install ffmpeg
|
||||
#If you do ./dump_video.sh yourvideo.mp4
|
||||
#There should be an output folder yourvideo.mp4-data that has all the frames of the video
|
||||
#you can then point OpenPose to this directory to convert them to JSON 2D detections
|
||||
|
||||
STARTDIR=`pwd`
|
||||
#Switch to this directory
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR"
|
||||
|
||||
DATASET=""
|
||||
|
||||
if (( $#<1 ))
|
||||
then
|
||||
echo "Please provide arguments first argument is dataset "
|
||||
exit 1
|
||||
else
|
||||
DATASET=$1-data
|
||||
fi
|
||||
|
||||
THEDATETAG=`date +"%y-%m-%d_%H-%M-%S"`
|
||||
|
||||
mkdir $DATASET
|
||||
|
||||
ffmpeg -i $1 -r 30 -q:v 1 $DATASET/colorFrame_0_%05d.jpg
|
||||
|
||||
cp $DATASET/colorFrame_0_00001.jpg $DATASET/colorFrame_0_00000.jpg
|
||||
|
||||
cd $DATASET
|
||||
cd ..
|
||||
|
||||
cd $STARTDIR
|
||||
exit 0
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
#Simple dependency checker that will apt-get stuff if something is missing
|
||||
# sudo apt-get install gnuplot
|
||||
SYSTEM_DEPENDENCIES="gnuplot"
|
||||
|
||||
for REQUIRED_PKG in $SYSTEM_DEPENDENCIES
|
||||
do
|
||||
PKG_OK=$(dpkg-query -W --showformat='${Status}\n' $REQUIRED_PKG|grep "install ok installed")
|
||||
echo "Checking for $REQUIRED_PKG: $PKG_OK"
|
||||
if [ "" = "$PKG_OK" ]; then
|
||||
|
||||
echo "No $REQUIRED_PKG. Setting up $REQUIRED_PKG."
|
||||
|
||||
#If this is uncommented then only packages that are missing will get prompted..
|
||||
#sudo apt-get --yes install $REQUIRED_PKG
|
||||
|
||||
#if this is uncommented then if one package is missing then all missing packages are immediately installed..
|
||||
sudo apt-get install $SYSTEM_DEPENDENCIES
|
||||
break
|
||||
fi
|
||||
done
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR"
|
||||
|
||||
cd ..
|
||||
|
||||
|
||||
./GroundTruthDumper --from dataset/CMU_Sample_05_01.bvh --selectJoints 0 23 hip eye.r eye.l abdomen chest neck head rshoulder relbow rhand lshoulder lelbow lhand rhip rknee rfoot lhip lknee lfoot toe1-2.r toe5-3.r toe1-2.l toe5-3.l --tuneIterations 130 100 130 0.01 5 30 20 > tuneIterations.dat
|
||||
|
||||
|
||||
#set view 45,45; set view map; set yrange [9:90]; set zrange [30:90];
|
||||
# set dgrid3d 25,25 qnorm 4;
|
||||
#splot \"tuneIterations.dat\" using 1:3:2 with points pointsize 3 pointtype 7;
|
||||
#HCD tuning iteration hyperparameter
|
||||
GNUPLOT_CMD="set terminal png size 1000,800 font \"Helvetica,34\"; set output \"tuneIterations.png\"; set isosample 160; set pm3d at b; set palette defined (65 \"black\", 70 \"red\", 80 \"yellow\", 90 \"yellow\", 100 \"white\"); set view 30,45; set hidden3d; set xrange [1:25]; set yrange [9:90]; set zrange [30:90]; set style fill solid; set xlabel \"HCD Iterations\" rotate parallel; set ylabel \"Frames per second\" rotate parallel; set zlabel \"Mean average error in mm\" rotate parallel; set ztics 30; set title \"Mean average error in mm\"; set ytics 30; set multiplot; splot \"tuneIterations.dat\" using 1:3:2 with lines palette lw 2 title \" \"; splot \"tuneIterations.dat\" using 1:3:2 with points palette pointsize 1 pointtype 7 title \" \"; "
|
||||
|
||||
gnuplot -e "$GNUPLOT_CMD"
|
||||
|
||||
echo "Result of experiment is now ready @ tuneIterations.png"
|
||||
timeout 10 gpicview tuneIterations.png
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,54 @@
|
||||
#/bin/bash
|
||||
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR/../dependencies"
|
||||
|
||||
DEPENDENCIES_PATH=`pwd`
|
||||
|
||||
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config ffmpeg libavcodec-dev libavformat-dev libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev libeigen3-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev sphinx-common libtbb-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libopenexr-dev libgstreamer-plugins-base1.0-dev libavutil-dev libavfilter-dev libavresample-dev libpython3-all-dev python3-numpy python3-dev
|
||||
|
||||
#cd "$1"
|
||||
echo "Will Install @ `pwd`"
|
||||
|
||||
|
||||
#Want a different version?
|
||||
#Check https://opencv.org/releases/ for versions and
|
||||
#change the OPENCV_VERSION in the next line..
|
||||
OPENCV_VERSION="3.2.0"
|
||||
echo "Downloading"
|
||||
|
||||
wget http://ammar.gr/programs/opencv-$OPENCV_VERSION.zip
|
||||
wget http://ammar.gr/programs/opencv_contrib-$OPENCV_VERSION.tar.gz
|
||||
|
||||
#wget https://codeload.github.com/opencv/opencv/zip/$OPENCV_VERSION -O opencv-$OPENCV_VERSION.zip
|
||||
#wget https://codeload.github.com/opencv/opencv_contrib/zip/$OPENCV_VERSION -O opencv_contrib-$OPENCV_VERSION.tar.gz
|
||||
|
||||
echo "Extracting"
|
||||
|
||||
#tar xvzf opencv_contrib-$OPENCV_VERSION.tar.gz
|
||||
unzip opencv_contrib-$OPENCV_VERSION.zip
|
||||
unzip opencv-$OPENCV_VERSION.zip
|
||||
|
||||
echo "Building"
|
||||
|
||||
cd opencv-$OPENCV_VERSION
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DOPENCV_ENABLE_NONFREE=ON -DOPENCV_EXTRA_MODULES_PATH=$DEPENDENCIES_PATH/opencv_contrib-$OPENCV_VERSION/modules ..
|
||||
make -j5
|
||||
|
||||
echo "Do you want to install OpenCV to your system ? "
|
||||
echo
|
||||
echo -n " (Y/N)?"
|
||||
read answer
|
||||
if test "$answer" != "N" -a "$answer" != "n";
|
||||
then
|
||||
sudo make install
|
||||
fi
|
||||
|
||||
cd "$DIR"
|
||||
|
||||
echo "Done"
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
|
||||
#This script should be run after you have dumped a video to a directory using the dump_video.sh utility
|
||||
#You should give a full path to this utility i.e. ./processDatasetWithOpenpose.sh "~/myDatasets/yourvideo.mp4-data/"
|
||||
#and also dont forget to change the PATH_TO_OPENPOSE to the directory that has your openpose.bin!
|
||||
PATH_TO_OPENPOSE="PLEASE/CHANGE/THIS/"
|
||||
|
||||
|
||||
STARTDIR=`pwd`
|
||||
#Switch to this directory
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
|
||||
DATASET=""
|
||||
|
||||
if (( $#<1 ))
|
||||
then
|
||||
echo "Please provide arguments first argument is dataset "
|
||||
exit 1
|
||||
else
|
||||
DATASET=$1
|
||||
|
||||
$PATH_TO_OPENPOSE/openpose.bin -number_people_max 1 --hand --face --write_json $DATASET -image_dir $DATASET $@
|
||||
|
||||
|
||||
cd "$DIR"
|
||||
echo "Went back to $DIR"
|
||||
echo "Hopefully the path you have given is an absolute path.."
|
||||
./convertBody25JSONToCSV -i $DATASET
|
||||
|
||||
exit 0
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
#!/bin/bash
|
||||
|
||||
FROMDATASET="$1"
|
||||
X=0
|
||||
|
||||
# sudo apt-get install imagemagick
|
||||
|
||||
if (( $# != 1 )); then
|
||||
echo "Please run giving the path to download and build"
|
||||
echo "$0 \"DatasetNameSource\" "
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
TOTAL_FRAMES=100000
|
||||
|
||||
cd $FROMDATASET
|
||||
|
||||
echo "Spliting Dataset $FROMDATASET "
|
||||
echo "Please wait .. "
|
||||
for (( i=$X; i<=$TOTAL_FRAMES; i++ ))
|
||||
do
|
||||
XNUM=`printf %05u $i`
|
||||
|
||||
if [ -f "colorFrame_0_$XNUM.jpg" ]
|
||||
then
|
||||
width=$(identify -format "%w" "colorFrame_0_$XNUM.jpg")> /dev/null
|
||||
height=$(identify -format "%h" "colorFrame_0_$XNUM.jpg")> /dev/null
|
||||
halfWidth=$((width / 2))
|
||||
echo "$width x $height -> 2x $halfWidth x $height"
|
||||
|
||||
|
||||
#First crop second half ( before source file gets rewritten )
|
||||
convert colorFrame_0_$XNUM.jpg -crop "$halfWidth"x$height+$halfWidth+0 colorFrame_1_$XNUM.jpg
|
||||
convert colorFrame_0_$XNUM.jpg -crop "$halfWidth"x$height+0+0 colorFrame_0_$XNUM.jpg
|
||||
else
|
||||
break
|
||||
fi
|
||||
|
||||
echo -n "."
|
||||
done
|
||||
|
||||
echo "Passed TOTAL_FRAMES (!) this is a bug! :S"
|
||||
|
||||
cd ..
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,135 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Script last updated 25-03-2022
|
||||
|
||||
#Script that seems to be able to build bazel/tf2 on Ubuntu 20.04
|
||||
#I really deeply dislike the bazel build system which is bloated and obfuscated for no reason, just Google "NIH syndrome"
|
||||
#However Tensorflow2 is a great NN framework
|
||||
# See this video "How To Make Package Managers Cry" -> https://www.youtube.com/watch?v=NSemlYagjIU#t=19m0s
|
||||
|
||||
echo "Check CUDA"
|
||||
ls /usr/local/cuda/extras/CUPTI/lib64
|
||||
ls /usr/local/cuda
|
||||
ls /usr/local/cuda/lib64/ | grep libcudnn.so
|
||||
nvcc -V
|
||||
|
||||
|
||||
VERSION="2.8"
|
||||
|
||||
#Get number of bytes in RAM
|
||||
RAM=`free | grep Mem | tr -s ' '| cut -f2 -d ' '`
|
||||
|
||||
|
||||
BazelPleaseSlowDown="--local_resources 2048,.5,1.0"
|
||||
|
||||
if [ "$RAM" -gt "11286464" ]; then
|
||||
echo "More than 12GB";
|
||||
BazelPleaseSlowDown=" "
|
||||
fi
|
||||
if [ "$RAM" -gt "15297500" ]; then
|
||||
echo "More than 16GB";
|
||||
BazelPleaseSlowDown=" "
|
||||
fi
|
||||
if [ "$RAM" -gt "31861780" ]; then
|
||||
echo "More than 32GB";
|
||||
BazelPleaseSlowDown=" "
|
||||
fi
|
||||
|
||||
|
||||
#Tensorflow is a great Neural network library that unfortunately is coupled to the terrible Bazel build system
|
||||
#This is a download and build script for Ubuntu 20.04, that should work building release 2.8
|
||||
|
||||
sudo apt-get install python3-dev python3-pip python3-venv python3-tk
|
||||
|
||||
pip3 install -U --user pip numpy wheel packaging
|
||||
pip3 install -U --user keras_preprocessing --no-deps
|
||||
|
||||
cd ~/Documents
|
||||
mkdir 3dParty
|
||||
cd 3dParty
|
||||
|
||||
#wget https://github.com/bazelbuild/bazel/releases/download/4.2.1/bazel-4.2.1-installer-linux-x86_64.sh
|
||||
#chmod +x bazel-4.2.1-installer-linux-x86_64.sh
|
||||
#./bazel-4.2.1-installer-linux-x86_64.sh --user
|
||||
|
||||
#r2.8
|
||||
mkdir -p "$HOME/.bazel/bin" && cd "$HOME/.bazel/bin" && curl -fLO https://releases.bazel.build/4.2.1/release/bazel-4.2.1-linux-x86_64 && chmod +x bazel-4.2.1-linux-x86_64
|
||||
|
||||
#Create shared directory
|
||||
if [ -f ~/.bashrc ]
|
||||
then
|
||||
if cat ~/.bashrc | grep -q "BAZEL_CANCER"
|
||||
then
|
||||
echo "Bazel includes seem to be set-up.."
|
||||
else
|
||||
USER=`whoami`
|
||||
echo "#BAZEL_CANCER" >> ~/.bashrc
|
||||
echo "source $HOME/.bazel/bin/bazel-complete.bash" >> ~/.bashrc
|
||||
echo "export PATH=\"\$PATH:\$HOME/bin\"" >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -d tensorflow ]
|
||||
then
|
||||
git clone https://github.com/tensorflow/tensorflow.git
|
||||
fi
|
||||
|
||||
cd tensorflow
|
||||
git pull
|
||||
git checkout r$VERSION
|
||||
|
||||
|
||||
#Make sure to check your target CPU and when asked used the correct -march= / -mtune=
|
||||
# for example for an old intel i7 -march=nehalem is used..
|
||||
#https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
|
||||
|
||||
|
||||
echo "Answers to configure questions :"
|
||||
echo "/usr/bin/python3"
|
||||
echo "/usr/lib/python3/dist-packages"
|
||||
echo "cuda Y"
|
||||
echo "tensorrt Y"
|
||||
echo "CUDA 11.2"
|
||||
echo "CuDNN 8"
|
||||
echo "TensorRT 8"
|
||||
echo "/usr/local/cuda/,/usr/local/cuda/include/,/usr/local/cuda/bin/,/usr/local/cuda/lib64/,/usr/local/cuda/lib64/,/usr/local/tensorrt-8.2.3/,/usr/local/tensorrt-8.2.3/include/,/usr/local/tensorrt-8.2.3/lib/,"
|
||||
echo "Compute capability 6.1 ( for GTX 1050 + cards )"
|
||||
|
||||
#Attempt to inform the configure script on how to find the CUDA stuff..
|
||||
export CUDNN_INSTALL_PATH=/usr/local/cuda/,/usr/local/cuda/include/,/usr/local/cuda/bin/,/usr/local/cuda/lib64/,/usr/local/cuda/lib64/,/usr/local/tensorrt-8.2.3/,/usr/local/tensorrt-8.2.3/include/,/usr/local/tensorrt-8.2.3/lib/
|
||||
|
||||
|
||||
./configure
|
||||
|
||||
bazel clean --expunge
|
||||
|
||||
|
||||
|
||||
#You should use CUDA 11.2 and cudnn-11.2-linux-x64-v8.1.1.33 and TensorRT 8.2.3
|
||||
|
||||
bazel build --config=opt --config=cuda --config=mkl --config=monolithic $BazelPleaseSlowDown //tensorflow/tools/pip_package:build_pip_package
|
||||
./bazel-bin/tensorflow/tools/pip_package/build_pip_package ~/Documents/3dParty/
|
||||
#To install
|
||||
#pip3 --user install ~/Documents/3dParty/tensorflow-2.4.0-cp36-cp36m-linux_x86_64.whl
|
||||
|
||||
|
||||
|
||||
bazel build --config opt --config=cuda --config=monolithic //tensorflow/tools/lib_package:libtensorflow
|
||||
cp bazel-bin/tensorflow/tools/lib_package/libtensorflow.tar.gz ~/Documents/3dParty/libtensorflow-r$VERSION.tar.gz
|
||||
|
||||
|
||||
#Build tensorflow lite
|
||||
#https://www.tensorflow.org/lite/guide/build_cmake
|
||||
mkdir tflite_buld
|
||||
cd tflite_buld/
|
||||
cmake ../tensorflow/lite
|
||||
cmake --build . -j
|
||||
|
||||
|
||||
echo "Please visit ~/Documents/3dParty/ to collect your tensorflow python3 wheel, and C Library.."
|
||||
echo "Will now use : python -c 'import tensorflow as tf;' to test your tensorflow"
|
||||
|
||||
python -c 'import tensorflow as tf;'
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,93 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Script source repository https://github.com/AmmarkoV/MyScripts/blob/master/Tensorflow/tensorflowBuild.sh
|
||||
#Script last updated 23-06-2020
|
||||
|
||||
#Script that seems to be able to build bazel/tf2 on Ubuntu 20.04
|
||||
#I really deeply dislike the bazel build system which is bloated and obfuscated for no reason, just Google "NIH syndrome"
|
||||
#However Tensorflow2 is a great NN framework
|
||||
# See this video "How To Make Package Managers Cry" -> https://www.youtube.com/watch?v=NSemlYagjIU#t=19m0s
|
||||
|
||||
|
||||
#Get number of bytes in RAM
|
||||
RAM=`free | grep Mem | tr -s ' '| cut -f2 -d ' '`
|
||||
|
||||
|
||||
BazelPleaseSlowDown="--local_resources 2048,.5,1.0"
|
||||
|
||||
if [ "$RAM" -gt "11286464" ]; then
|
||||
echo "More than 12GB";
|
||||
BazelPleaseSlowDown=" "
|
||||
fi
|
||||
if [ "$RAM" -gt "15297500" ]; then
|
||||
echo "More than 16GB";
|
||||
BazelPleaseSlowDown=" "
|
||||
fi
|
||||
if [ "$RAM" -gt "31861780" ]; then
|
||||
echo "More than 32GB";
|
||||
BazelPleaseSlowDown=" "
|
||||
fi
|
||||
|
||||
|
||||
#Tensorflow is a great Neural network library that unfortunately is coupled to the terrible Bazel build system
|
||||
#This is a download and build script for Ubuntu 18.04, that should work building release 1.15
|
||||
|
||||
sudo apt-get install python3-dev python3-pip python3-venv python3-tk
|
||||
|
||||
pip install -U --user pip six numpy wheel setuptools mock 'future>=0.17.1'
|
||||
pip install -U --user keras_applications --no-deps
|
||||
pip install -U --user keras_preprocessing --no-deps
|
||||
|
||||
|
||||
cd ~/Documents
|
||||
mkdir 3dParty
|
||||
cd 3dParty
|
||||
|
||||
wget http://ammar.gr/mocapnet/bazel-0.24.1-installer-linux-x86_64-for-tensorflow-r1.15.sh
|
||||
chmod +x bazel-0.24.1-installer-linux-x86_64-for-tensorflow-r1.15.sh
|
||||
./bazel-0.24.1-installer-linux-x86_64-for-tensorflow-r1.15.sh --user
|
||||
|
||||
#Create shared directory
|
||||
if [ -f ~/.bashrc ]
|
||||
then
|
||||
if cat ~/.bashrc | grep -q "BAZEL_CANCER"
|
||||
then
|
||||
echo "Bazel includes seem to be set-up.."
|
||||
else
|
||||
USER=`whoami`
|
||||
echo "#BAZEL_CANCER" >> ~/.bashrc
|
||||
echo "source ~/.bazel/bin/bazel-complete.bash" >> ~/.bashrc
|
||||
echo "export PATH=\"\$PATH:\$HOME/bin\"" >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -d tensorflow ]
|
||||
then
|
||||
git clone https://github.com/tensorflow/tensorflow.git
|
||||
fi
|
||||
|
||||
cd tensorflow
|
||||
git pull
|
||||
git checkout r1.15
|
||||
|
||||
|
||||
./configure
|
||||
|
||||
bazel clean --expunge
|
||||
|
||||
#Flags for bazel if you have gcc<5.0
|
||||
#--cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0"
|
||||
#--noincompatible_do_not_split_linking_cmdline
|
||||
|
||||
bazel build --config=opt --config=cuda --config=mkl --config=monolithic $BazelPleaseSlowDown //tensorflow/tools/pip_package:build_pip_package
|
||||
./bazel-bin/tensorflow/tools/pip_package/build_pip_package ~/Documents/3dParty/
|
||||
|
||||
|
||||
bazel build --config opt --config=cuda --config=monolithic //tensorflow/tools/lib_package:libtensorflow
|
||||
cp bazel-bin/tensorflow/tools/lib_package/libtensorflow.tar.gz ~/Documents/3dParty/libtensorflow-r1.15.tar.gz
|
||||
|
||||
echo "Please visit ~/Documents/3dParty/ to collect your tensorflow python3 wheel, and C Library.."
|
||||
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user