-
Notifications
You must be signed in to change notification settings - Fork 86
/
2_activate_output_placesCNN.sh
executable file
·102 lines (81 loc) · 2.47 KB
/
2_activate_output_placesCNN.sh
1
2
3
4
5
6
7
8
9
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#/bin/bash
# if [ "$#" -ne "1" ]; then
# echo "Provide 1 output unit number e.g. 8 for art gallery (MIT Places 205)."
# exit 1
# fi
# Get label for each unit
path_labels="misc/categoryIndex_places205.txt"
IFS=$'\n' read -d '' -r -a labels < ${path_labels}
opt_layer=fc6
act_layer=fc8
units="2 7 8 12 71" #"${1}"
xy=0
# Net
net_weights="nets/placesCNN/places205CNN_iter_300000.caffemodel"
net_definition="nets/placesCNN/places205CNN_deploy_updated.prototxt"
# Hyperparam settings for visualizing AlexNet
iters="200"
weights="99"
rates="8.0"
end_lr=1e-10
# Clipping
clip=0
multiplier=3
bound_file=act_range/${multiplier}x/${opt_layer}.txt
init_file="None" #"images/cat.jpg"
# Debug
debug=0
if [ "${debug}" -eq "1" ]; then
rm -rf debug
mkdir debug
fi
# Output dir
output_dir="output"
# rm -rf ${output_dir}
mkdir -p ${output_dir}
list_files=""
# Running optimization across a sweep of hyperparams
for unit in ${units}; do
label=`echo ${labels[unit]} | cut -d " " -f 1`
label=${label/_/ }
for seed in {0..0}; do
#for seed in {0..8}; do
for n_iters in ${iters}; do
for w in ${weights}; do
for lr in ${rates}; do
L2="0.${w}"
# Optimize images maximizing fc8 unit
python ./act_max.py \
--act_layer ${act_layer} \
--opt_layer ${opt_layer} \
--unit ${unit} \
--xy ${xy} \
--n_iters ${n_iters} \
--start_lr ${lr} \
--end_lr ${end_lr} \
--L2 ${L2} \
--seed ${seed} \
--clip ${clip} \
--bound ${bound_file} \
--debug ${debug} \
--output_dir ${output_dir} \
--init_file ${init_file} \
--net_weights ${net_weights} \
--net_definition ${net_definition}
# Add a category label to each image
unit_pad=`printf "%04d" ${unit}`
f=${output_dir}/${act_layer}_${unit_pad}_${n_iters}_${L2}_${lr}__${seed}.jpg
convert $f -gravity south -splice 0x10 $f
convert $f -append -gravity Center -pointsize 30 label:"$label" -bordercolor white -border 0x0 -append $f
list_files="${list_files} ${f}"
done
done
done
done
done
# Make a collage
output_file=${output_dir}/example2.jpg
montage ${list_files} -tile 5x1 -geometry +1+1 ${output_file}
convert ${output_file} -trim ${output_file}
echo "=============================="
echo "Result of example 2: [ ${output_file} ]"