Skip to content

Commit 8c9fca3

Browse files
committed
op and param counting
1 parent 1b5cf8a commit 8c9fca3

10 files changed

+34
-5
lines changed

.run/DGCNN seg train [master].run.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<option name="ADD_SOURCE_ROOTS" value="true" />
1414
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
1515
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/train.py" />
16-
<option name="PARAMETERS" value="--data fissures --ds ts --pts 2048 --k 40 --static --coords --batch 32 --gpu 1 --output results/DGCNN_seg_cnn_image --kp_mode cnn --patch image --speed --offline" />
16+
<option name="PARAMETERS" value="--data fissures --ds ts --pts 2048 --k 40 --static --coords --batch 32 --gpu 1 --output results/PointNet_seg_cnn_image --kp_mode cnn --patch image --test_only" />
1717
<option name="SHOW_COMMAND_LINE" value="false" />
1818
<option name="EMULATE_TERMINAL" value="false" />
1919
<option name="MODULE_MODE" value="false" />

.run/test DSEG-AE [master].run.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<option name="ADD_SOURCE_ROOTS" value="true" />
1414
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
1515
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/test_ae_regularization.py" />
16-
<option name="PARAMETERS" value="--ds ts --gpu 3 --output results/DSEGAE_reg_aug_1024_foerstner_mind_ssc --seg_dir results/DGCNN_seg_foerstner_mind_ssc --ae_dir results/PC_AE_regularized_augment_1024 --offline" />
16+
<option name="PARAMETERS" value="--ds ts --gpu 3 --output results/DSEGAE_reg_aug_1024_foerstner_mind_ssc --seg_dir results/DGCNN_seg_foerstner_mind_ssc --ae_dir results/PC_AE_regularized_augment_1024_folding --show" />
1717
<option name="SHOW_COMMAND_LINE" value="false" />
1818
<option name="EMULATE_TERMINAL" value="false" />
1919
<option name="MODULE_MODE" value="false" />

.run/train DG-SSM.run.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<option name="ADD_SOURCE_ROOTS" value="true" />
1414
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
1515
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/train_dgcnn_ssm.py" />
16-
<option name="PARAMETERS" value="--data fissures --ds ts --pts 2048 --k 40 --batch 8 --static --coords --gpu 1 --output results/DG-SSM_cnn_image --epochs 1000 --kp_mode cnn --patch image --predict_affine --scheduler cosine --head_schedule {\&quot;main\&quot;:90,\&quot;translation\&quot;:0,\&quot;rotation\&quot;:60,\&quot;scaling\&quot;:30} --offline" />
16+
<option name="PARAMETERS" value="--data fissures --ds ts --pts 2048 --k 40 --batch 8 --static --coords --gpu 1 --output results/DG-SSM_cnn_image --epochs 1000 --kp_mode cnn --patch image --predict_affine --scheduler cosine --head_schedule {\&quot;main\&quot;:90,\&quot;translation\&quot;:0,\&quot;rotation\&quot;:60,\&quot;scaling\&quot;:30} --test_only" />
1717
<option name="SHOW_COMMAND_LINE" value="false" />
1818
<option name="EMULATE_TERMINAL" value="false" />
1919
<option name="MODULE_MODE" value="false" />

.run/train_pc_ae.run.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<option name="ADD_SOURCE_ROOTS" value="true" />
1414
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
1515
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/train_pc_ae.py" />
16-
<option name="PARAMETERS" value="--ds ts --k 20 --pts 1024 --batch 8 --output results/PC_AE_noreg_augment_1024 --loss_weights 1. 0. 0. 0. --shape plane --latent 512 --epochs 333 --deform --scheduler cosine --mesh --gpu 3 --offline" />
16+
<option name="PARAMETERS" value="--ds ts --k 20 --pts 1024 --batch 8 --output results/PC_AE_regularized_augment_1024 --shape plane --latent 512 --epochs 333 --deform --scheduler cosine --mesh --gpu 3 --test_only" />
1717
<option name="SHOW_COMMAND_LINE" value="false" />
1818
<option name="EMULATE_TERMINAL" value="false" />
1919
<option name="MODULE_MODE" value="false" />

.run/train_segmentation_net.run.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<option name="ADD_SOURCE_ROOTS" value="true" />
1414
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
1515
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/train_segmentation_net.py" />
16-
<option name="PARAMETERS" value="--data fissures --ds ts --batch 8 --gpu 1 --output results/lraspp_recall_loss --split ../nnUNet_baseline/nnu_preprocessed/Task503_FissuresTotalSeg/splits_final.pkl --epochs 50 --loss recall --patch_size 128 --model v3 --offline" />
16+
<option name="PARAMETERS" value="--data fissures --ds ts --batch 8 --gpu 1 --output results/lraspp_recall_loss --split ../nnUNet_baseline/nnu_preprocessed/Task503_FissuresTotalSeg/splits_final.pkl --epochs 50 --loss recall --patch_size 128 --model v3 --test_only" />
1717
<option name="SHOW_COMMAND_LINE" value="false" />
1818
<option name="EMULATE_TERMINAL" value="false" />
1919
<option name="MODULE_MODE" value="false" />

thesis/utils.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1+
import csv
12
import os.path
23

4+
import torch
5+
from thop import profile, clever_format
6+
37
import matplotlib.pyplot as plt
48
from matplotlib.patches import Patch
59

@@ -10,6 +14,19 @@
1014
plt.style.use('seaborn-paper')
1115

1216

17+
def param_and_op_count(model, input_shape, out_dir=None):
18+
input = torch.zeros(input_shape)
19+
macs, params = profile(model, (input, ))
20+
if out_dir is not None:
21+
with open(os.path.join(out_dir, 'op_count.csv'), 'w') as csv_file:
22+
writer = csv.writer(csv_file)
23+
writer.writerow(['Parameters', 'FLOPs'])
24+
writer.writerow([params, macs])
25+
macs, params = clever_format([macs, params], "%.3f")
26+
print(macs, params)
27+
return macs, params
28+
29+
1330
def save_fig(fig, outdir, basename_without_extension, dpi=300, show=True, pdf=True, padding=False):
1431
if not os.path.isdir(outdir):
1532
os.makedirs(outdir, exist_ok=True)

train.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from metrics import assd, label_mesh_assd, batch_dice
2121
from models.dgcnn import DGCNNSeg
2222
from models.point_net import PointNetSeg
23+
from thesis.utils import param_and_op_count
2324
from utils.detached_run import maybe_run_detached_cli
2425
from utils.fissure_utils import binary_to_fissure_segmentation
2526
from utils.general_utils import kpts_to_world, mask_out_verts_from_mesh, remove_all_but_biggest_component, mask_to_points, \
@@ -616,6 +617,8 @@ def wrapped_fn(*args, **kwargs):
616617
net = model_class(in_features=in_features, num_classes=ds.num_classes, k=args.k,
617618
spatial_transformer=args.transformer, dynamic=not args.static)
618619

620+
param_and_op_count(net, (1, *ds[0][0].shape), out_dir=args.output)
621+
619622
if not args.test_only:
620623
store_args(args=args, out_dir=args.output)
621624

train_dgcnn_ssm.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from models.dg_ssm import DGSSM
1414
from shape_model.qualitative_evaluation import mode_plot
1515
from shape_model.ssm import vector2shape
16+
from thesis.utils import param_and_op_count
1617
from train import run, write_results, write_speed_results
1718
from utils.detached_run import maybe_run_detached_cli
1819
from utils.general_utils import no_print, get_device
@@ -202,6 +203,8 @@ def speed_test(ds, device, out_dir):
202203
ssm_alpha=args.alpha, ssm_targ_var=args.target_variance, lssm=args.lssm,
203204
predict_affine_params=args.predict_affine, only_affine=args.only_affine)
204205

206+
# param_and_op_count(DGSSM.load(args.output+'/fold0/model.pth', 'cpu'), (1, *ds[0][0].shape), out_dir=args.output)
207+
205208
if not args.predict_affine:
206209
# set the loss weight for affine params to zero
207210
if args.loss_weights is None:

train_pc_ae.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from data import CustomDataset
1515
from metrics import pseudo_symmetric_point_to_mesh_distance, assd
1616
from models.folding_net import DGCNNFoldingNet
17+
from thesis.utils import param_and_op_count
1718
from train import run, write_results
1819
from utils.detached_run import maybe_run_detached_cli
1920
from utils.image_ops import load_image_metadata
@@ -277,6 +278,8 @@ def test(ds: SampleFromMeshDS, device, out_dir, show):
277278
model = DGCNNFoldingNet(k=args.k, n_embedding=args.latent, shape_type=args.shape, decode_mesh=args.mesh,
278279
deform=args.deform)
279280

281+
param_and_op_count(model, (ds.num_objects, *ds[0][0].shape), out_dir=args.output)
282+
280283
# store config
281284
if not args.test_only:
282285
store_args(args=args, out_dir=args.output)

train_segmentation_net.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from metrics import batch_dice, binary_recall, binary_precision
1414
from models.lraspp_3d import LRASPP_MobileNetv3_large_3d
1515
from models.seg_cnn import MobileNetASPP
16+
from thesis.utils import param_and_op_count
1617
from train import run, write_results, compute_mesh_metrics
1718
from utils.detached_run import maybe_run_detached_cli
1819
from utils.fissure_utils import binary_to_fissure_segmentation
@@ -213,6 +214,8 @@ def test(ds: ImageDataset, device, out_dir, show):
213214
model_class = get_model_class(args)
214215
model = model_class(num_classes=ds.num_classes, patch_size=(args.patch_size,)*3)
215216

217+
param_and_op_count(model, (1, 1, *ds[0][0].shape), out_dir=args.output)
218+
216219
# save setup
217220
if not args.test_only:
218221
store_args(args=args, out_dir=args.output)

0 commit comments

Comments
 (0)