https://blog.csdn.net/thm225679/article/details/79407619  实践

---》

argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。argparse模块的作用是用于解析命令行参数,例如python parseTest.py input.txt output.txt --user=name --port=8080。

1:import argparse

2:parser = argparse.ArgumentParser()

3:parser.add_argument()

4:parser.parse_args()

解释:首先导入该模块;然后创建一个解析对象;然后向该对象中添加你要关注的命令行参数和选项,每一个add_argument方法对应一个你要关注的参数或选项;最后调用parse_args()方法进行解析;解析成功之后即可使用

 

用tf.train.Saver() 创建一个Saver 来管理模型中的所有变量。~https://blog.csdn.net/qiqiaiairen/article/details/53184216

tf.train.Saver.restore(sess, save_path)
恢复之前保存的变量,这个方法运行构造器为恢复变量所添加的操作。它需要启动图的Session。恢复的变量不需要经过初始化,恢复作为初始化的一种方法。save_path 参数是之前调用save() 的返回值,或调用 latest_checkpoint() 的返回值。
 
使用arrange生成连续元素' print numpy.arange(6) # [0,1,2,3,4,5,] 开区间 print numpy.arange(0,6,2)
 
transpose转置:https://www.cnblogs.com/sunshinewang/p/6893503.html
cv2.rectangle(image, 左下角坐标, 右上角坐标, color) 
 
np.multiply数组/矩阵相乘:
https://blog.csdn.net/zenghaitao0128/article/details/78715140
 

对于二维数组b2,nonzero(b2)所得到的是一个长度为2的元组。它的第0个元素是数组a中值不为0的元素的第0轴的下标,第1个元素则是第1轴的下标,因此从下面的结果可知b2[0,0]、b[0,2]和b2[1,0]的值不为0:

>>> b2 = np.array([[True, False, True], [True, False, False]])
>>> np.nonzero(b2)
    (array([0, 0, 1]), array([0, 2, 0]))
 
计时:
from utils.timer import Timerdetect_timer = Timer()
detect_timer.tic()
detect_timer.toc()
print('Average detecting time: {:.3f}s'.format(
detect_timer.average_time))

 

https://blog.csdn.net/hrsstudy/article/details/70305791  论文讲解

解决方案如下:
更重视8维的坐标预测,给这些损失前面赋予更大的loss weight, 记为 λcoord ,在pascal VOC训练中取5。(上图蓝色框)
对没有object的bbox的confidence loss,赋予小的loss weight,记为 λnoobj ,在pascal VOC训练中取0.5。(上图橙色框)
有object的bbox的confidence loss (上图红色框) 和类别的loss (上图紫色框)的loss weight正常取1。

对不同大小的bbox预测中,相比于大bbox预测偏一点,小box预测偏相同的尺寸对IOU的影响更大。而sum-square error loss中对同样的偏移loss是一样。
为了缓和这个问题,作者用了一个巧妙的办法,就是将box的width和height取平方根代替原本的height和width。 如下图:small bbox的横轴值较小,发生偏移时,反应到y轴上的loss(下图绿色)比big box(下图红色)要大。