List of commits:
Subject Hash Author Date (UTC)
add comet ml a9d4b89ce594f5e241168ccafdcdf0f150ea0ebb Thai Thien 2019-09-23 17:07:58
fix pacnn avg schema c2140a96886195782e5689c24aeeb4fe7a2db7ad Thai Thien 2019-09-22 17:35:01
debug number not divisible by 8 a568fd7f294a8bd31b3db78437b4b6b51b5b41b9 Thai Thien 2019-09-22 04:36:06
pacnn 967074890d14ab0eefc277801860270a468e8f9f Thai Thien 2019-09-22 03:54:48
wip: pacnn 2192d7c7b449fecf3868877d9cfbc09bb6f7ae98 Thai Thien 2019-09-22 03:44:56
wip: pacnn 37620e5a9bc0f9516ea964ec58d9bdaa1c40ff36 Thai Thien 2019-09-22 03:14:42
fix training flow 2b87b1b26c7296b64493fdc49fedb421b249dfa3 Thai Thien 2019-09-17 18:00:35
dataset script bc5c052f5f956510ab95ef9a45434fd486c57fae Thai Thien 2019-09-16 17:21:13
evaluator ffc5bf8290ae0c469a9a18a2d061cfd1bfeee822 Thai Thien 2019-09-14 04:56:35
some more test for data loader 25173578cde7d4e9fe6c6140d1ee01caa4fcfc32 Thai Thien 2019-09-14 02:51:58
some visualize to debug data loader e4f52007616acf307bddbde79c0fb4f8c649c785 Thai Thien 2019-09-13 17:35:45
wip d7d44cad6774355bdfa45414258763f6c6a0c299 Thai Thien 2019-08-31 16:58:16
commit all 6dad7a58f7dbf9fc288ce9dd3e92be538851c2a7 Thai Thien 2019-08-29 19:10:44
input d1,d2,d3 match fc2a809241f8b6356d964c63d40cbebd55ca5f6c Thai Thien 2019-08-28 17:57:05
WIP 39eab26d061e61dfffbf164dbd5fd878299b7250 thient 2019-08-28 11:09:12
output of de is ok dd770386674df3e0fbebafdfc48a9352bc28967d thient 2019-08-28 10:54:09
code pacnn c49537b5cc91e96e4e35c9338d2c95b9bb41c672 Thai Thien 2019-08-27 16:35:27
crowd counting stuff da9f27a39cba9bdd021b6b5c562f5f7c2be50190 Thai Thien 2019-08-24 18:27:44
seem ok 53fa176c31669a0e89b04adf290cb398f0316c45 Thai Thien 2019-08-24 18:26:31
flow ok ad849681000818dfbcd0c1715c2858aed7236041 Thai Thien 2019-08-24 17:00:02
Commit a9d4b89ce594f5e241168ccafdcdf0f150ea0ebb - add comet ml
Author: Thai Thien
Author date (UTC): 2019-09-23 17:07
Committer name: Thai Thien
Committer date (UTC): 2019-09-23 17:07
Parent(s): c2140a96886195782e5689c24aeeb4fe7a2db7ad
Signing key:
Tree: 55eb23934aac7a2c7bc3bb97432ec9de64634781
File Lines added Lines deleted
README.md 2 0
main_pacnn.py 35 8
train_script/train_pacnn_shanghaitechA.sh 2 0
File README.md changed (mode: 100644) (index 7065abe..929964f)
3 3 conda create -n env python=3.7 anaconda conda create -n env python=3.7 anaconda
4 4 conda install pytorch torchvision cpuonly -c pytorch conda install pytorch torchvision cpuonly -c pytorch
5 5 conda install -c conda-forge opencv conda install -c conda-forge opencv
6 pip install comet_ml
7
6 8 ``` ```
File main_pacnn.py changed (mode: 100644) (index 9024f16..a21c0f5)
1 from comet_ml import Experiment
1 2 from args_util import real_args_parse from args_util import real_args_parse
2 3 from data_flow import get_train_val_list, get_dataloader, create_training_image_list from data_flow import get_train_val_list, get_dataloader, create_training_image_list
3 4 from ignite.engine import Events, create_supervised_trainer, create_supervised_evaluator from ignite.engine import Events, create_supervised_trainer, create_supervised_evaluator
 
... ... from evaluator import MAECalculator
18 19 from model_util import save_checkpoint from model_util import save_checkpoint
19 20
20 21 if __name__ == "__main__": if __name__ == "__main__":
22 # import comet_ml in the top of your file
23
24
25 MODEL_SAVE_NAME = "dev4"
26 # Add the following code anywhere in your machine learning file
27 experiment = Experiment(api_key="S3mM1eMq6NumMxk2QJAXASkUM",
28 project_name="pacnn-dev", workspace="ttpro1995")
29 experiment.set_name(MODEL_SAVE_NAME)
30
21 31 device = torch.device("cuda" if torch.cuda.is_available() else "cpu") device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
22 32
23 33 # device = "cpu" # device = "cpu"
 
... ... if __name__ == "__main__":
28 38 DATASET_NAME = "shanghaitech" DATASET_NAME = "shanghaitech"
29 39 PACNN_PERSPECTIVE_AWARE_MODEL = False PACNN_PERSPECTIVE_AWARE_MODEL = False
30 40
41
42
31 43 # create list # create list
32 44 if DATASET_NAME is "shanghaitech": if DATASET_NAME is "shanghaitech":
33 45 TRAIN_PATH = os.path.join(DATA_PATH, "train_data") TRAIN_PATH = os.path.join(DATA_PATH, "train_data")
 
... ... if __name__ == "__main__":
72 84 optimizer = torch.optim.SGD(net.parameters(), args.lr, optimizer = torch.optim.SGD(net.parameters(), args.lr,
73 85 momentum=args.momentum, momentum=args.momentum,
74 86 weight_decay=args.decay) weight_decay=args.decay)
75 for e in range(1):
87 for e in range(10):
76 88 print("start epoch ", e) print("start epoch ", e)
77 89 loss_sum = 0 loss_sum = 0
78 90 sample = 0 sample = 0
 
... ... if __name__ == "__main__":
107 119 sample += 1 sample += 1
108 120 optimizer.zero_grad() optimizer.zero_grad()
109 121 counting += 1 counting += 1
122
110 123 if counting%10 ==0: if counting%10 ==0:
111 print("counting ", counting, " -- avg loss", loss_sum/sample)
124 avg_loss_ministep = loss_sum/sample
125 print("counting ", counting, " -- avg loss ", avg_loss_ministep)
126 experiment.log_metric("avg_loss_ministep", avg_loss_ministep)
112 127 # if counting == 100: # if counting == 100:
113 128 # break # break
114
115 129 end_time = time() end_time = time()
116 130 avg_loss = loss_sum/sample avg_loss = loss_sum/sample
117 131 epoch_time = end_time - start_time epoch_time = end_time - start_time
132 print("==END epoch ", e, " =============================================")
118 133 print(epoch_time, avg_loss, sample) print(epoch_time, avg_loss, sample)
119
134 experiment.log_metric("avg_loss_epoch", avg_loss)
135 print("=================================================================")
120 136
121 137 save_checkpoint({ save_checkpoint({
122 138 'state_dict': net.state_dict(), 'state_dict': net.state_dict(),
123 }, False, "test2")
139 }, False, MODEL_SAVE_NAME)
124 140
125 141
126 142
 
... ... if __name__ == "__main__":
130 146 net = PACNNWithPerspectiveMap(PACNN_PERSPECTIVE_AWARE_MODEL).to(device) net = PACNNWithPerspectiveMap(PACNN_PERSPECTIVE_AWARE_MODEL).to(device)
131 147 print(net) print(net)
132 148
133 # best_checkpoint = torch.load("test2checkpoint.pth.tar")
134 # net.load_state_dict(best_checkpoint['state_dict'])
149 best_checkpoint = torch.load(MODEL_SAVE_NAME + "checkpoint.pth.tar")
150 net.load_state_dict(best_checkpoint['state_dict'])
135 151
136 152 # device = "cpu" # device = "cpu"
153 # TODO d1_val 155.97279205322266
154 # d2_val 35.46327234903971
155 # d3_val 23.07176342010498
156 # why d2 and d3 mse too low
137 157 mae_calculator_d1 = MAECalculator() mae_calculator_d1 = MAECalculator()
138 158 mae_calculator_d2 = MAECalculator() mae_calculator_d2 = MAECalculator()
139 159 mae_calculator_d3 = MAECalculator() mae_calculator_d3 = MAECalculator()
160 mae_calculator_final = MAECalculator()
140 161 with torch.no_grad(): with torch.no_grad():
141 162 for val_img, label in val_loader_pacnn: for val_img, label in val_loader_pacnn:
142 163 net.eval() net.eval()
 
... ... if __name__ == "__main__":
144 165 d1_label, d2_label, d3_label = label d1_label, d2_label, d3_label = label
145 166
146 167 # forward pass # forward pass
147 d1, d2, d3 = net(val_img.to(device))
168 d1, d2, d3, p_s, p, d = net(val_img.to(device))
148 169
149 170 d1_label = d1_label.to(device) d1_label = d1_label.to(device)
150 171 d2_label = d2_label.to(device) d2_label = d2_label.to(device)
 
... ... if __name__ == "__main__":
154 175 mae_calculator_d1.eval(d1.cpu().detach().numpy(), d1_label.cpu().detach().numpy()) mae_calculator_d1.eval(d1.cpu().detach().numpy(), d1_label.cpu().detach().numpy())
155 176 mae_calculator_d2.eval(d2.cpu().detach().numpy(), d2_label.cpu().detach().numpy()) mae_calculator_d2.eval(d2.cpu().detach().numpy(), d2_label.cpu().detach().numpy())
156 177 mae_calculator_d3.eval(d3.cpu().detach().numpy(), d3_label.cpu().detach().numpy()) mae_calculator_d3.eval(d3.cpu().detach().numpy(), d3_label.cpu().detach().numpy())
178 mae_calculator_final.eval(d.cpu().detach().numpy(), d1_label.cpu().detach().numpy())
157 179 print("count ", mae_calculator_d1.count) print("count ", mae_calculator_d1.count)
158 180 print("d1_val ", mae_calculator_d1.get_mae()) print("d1_val ", mae_calculator_d1.get_mae())
159 181 print("d2_val ", mae_calculator_d2.get_mae()) print("d2_val ", mae_calculator_d2.get_mae())
160 182 print("d3_val ", mae_calculator_d3.get_mae()) print("d3_val ", mae_calculator_d3.get_mae())
183 print("dfinal_val ", mae_calculator_final.get_mae())
184 experiment.log_metric("d1_val", mae_calculator_d1.get_mae())
185 experiment.log_metric("d2_val", mae_calculator_d2.get_mae())
186 experiment.log_metric("d3_val", mae_calculator_d3.get_mae())
187 experiment.log_metric("dfinal_val", mae_calculator_final.get_mae())
161 188
162 189
File train_script/train_pacnn_shanghaitechA.sh changed (mode: 100644) (index d90895d..34be054)
1 #python /home/tt/project/crowd_counting_framework/main_pacnn.py --input /home/tt/project/crowd_counting_framework/data/ShanghaiTech/part_A
2
1 3 python /home/tt/project/crowd_counting_framework/main_pacnn.py --input /home/tt/project/crowd_counting_framework/data/ShanghaiTech/part_A python /home/tt/project/crowd_counting_framework/main_pacnn.py --input /home/tt/project/crowd_counting_framework/data/ShanghaiTech/part_A
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/hahattpro/crowd_counting_framework

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/hahattpro/crowd_counting_framework

Clone this repository using git:
git clone git://git.rocketgit.com/user/hahattpro/crowd_counting_framework

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main