easydict
1 | >>> from easydict import EasyDict as edict |
https://github.com/makinacorpus/easydict
argparse
1 | def parse_args(): |
os.path
获得当前路径
1 | import os.path as osp |
yml使用
语法
大小写敏感
缩进时不允许使用Tab键,只允许使用空格。
python
数组操作
1 | for k, v in zip(cfg_list[0::2], cfg_list[1::2]): |
文件不存在
1 | if not os.path.isfile(caffemodel): |
format
用 {} .format 代替 %s %
1 | print '\n\nLoaded network {:s}'.format(caffemodel) |
读文件
1 | cv2.imread(im_file) |
1维度添加一个维度
1 | cls_scores |
排序和反排序
1 | order = scores.argsort() |
transpose
1 | im = im[:, :, (2, 1, 0)] |
copy=true
1 | im_orig = im.astype(np.float32, copy=True) |
resize
1 | im = cv2.resize(im_orig, None, None, fx=im_scale, fy=im_scale,interpolation=cv2.INTER_LINEAR) |
每一个维度取最大
1 | max_shape = np.array([im.shape for im in ims]).max(axis=0) # 每一位取最大的 |
os.path.join
solvers = [[net_name, n, ‘stage1_rpn_solver60k80k.pt’],
[net_name, n, ‘stage1_fast_rcnn_solver30k40k.pt’]]
solvers = [os.path.join(cfg.MODELS_DIR, *s) for s in solvers]
随机数
1 | # fix the random seeds (numpy and caffe) for reproducibility |
split
1 | for year in ['2007', '2012']: |
_class_to_ind
1 | self._class_to_ind = dict(zip(self.classes, xrange(self.num_classes))) |
path.exists
1 | assert os.path.exists(image_set_file), \ |
readline
1 | with open(image_set_file) as f: |
caffe
1 | net = caffe.Net(prototxt, caffemodel, caffe.TEST) |
blob
Blob是Caffe的基本数据结构,具有CPU和GPU之间同步的能力,它是4维的数组(Num, Channels, Height, Width)
访问data或diff有两种方法:
1 | const Dtype* cpu_data() const; //不修改值 |
dump
1 | with open(cache_file, 'wb') as fid: |
pretrained model
1 | self.solver = caffe.SGDSolver(solver_prototxt) |
bash
1 | set -x 输出执行的命令 |