• 不懂的code整理学习


     


    channel_mean = np.zeros((3,227,227))
    for channel_index, mean_val in enumerate(image_mean):
        channel_mean[channel_index, ...] = mean_val

    我一直不是很理解这个array[ i , ... ]后面的 ‘ ... ’ 是什么意思,单独执行这段代码,发现是把每个channel里227*227的空间用mean_val填充了。



    pycaffe: io.py

    主要定义一个transformer、preprocess和deprocess操作,完成caffe和python之间数据格式的转换。

    ps. caffe:BGR,0-255,CxHxW                      python:RGB,0-1,HxWxC

    caffe.io.Transformer数据预处理部分

        shape = (self.N, self.channels, self.height, self.width)
        # caffe.io.Transformer 是用于预处理的类。事先填写进行预处理的要求。    
        self.transformer = caffe.io.Transformer({'data_in': shape})
        self.transformer.set_raw_scale('data_in', 255) #(0~255像素之间)
    image_mean = [103.939, 116.779, 128.68] channel_mean = np.zeros((3,227,227)) for channel_index, mean_val in enumerate(image_mean): channel_mean[channel_index, ...] = mean_val
    self.transformer.set_mean(
    'data_in', channel_mean) #前提是data_in[1]对应的是channel通道,完成RGB->BGR(caffe输入的数据格式) self.transformer.set_channel_swap('data_in', (2, 1, 0)) self.transformer.set_transpose('data_in', (2, 0, 1))

    之后才是caffe.io.load_image('')读取图像,并按照之前的设置进行转换:

    img=caffe.io.load_image('图片路径') #读取图像  HxWxC
    newImg=transformer.preprocess('data_in',img) #设置data层的数据,这里以单张图像为例。将读取的图像传入,获得按之前设置的预处理方式处理好的新图像(通道x高x宽)。 


    Python中,只要定义类型的时候,实现__call__函数,这个类型就成为可调用的。换句话说,我们可以把这个类型的对象当作函数来使用

    class g_dpm(object):
        def __init__(self, g):
            self.g = g
        def __call__(self, t):
            return (self.g*t**2)/2
    
    x=g_dpm(9.8)
    weight=x(3)

    这里定义了一个类,然后创建对象x,并对其初始化(x.g=9.8)。

    之后,对x传入参数(x(3)),返回的是9.8x3^2/2



     关于线程thread

    import threading
    import time
    
    def T1():
        print('T1 start 
    ')
        for i in range(10):
            time.sleep(0.1)
        print('T1 finish 
    ')
        
    def main():
        T1_thread = threading.Thread(target=T1,name='T1')
        T1_thread.start()  #线程开始执行
        T1_thread.join()    #等待线程结束在执行下一条语句
        print('ALL DONE 
    ')
        
    if __name__ == '__main__':
        main()


    Numpy 切片(slicing)和python的省略(ellipsis)

    Numpy 切片(slicing)和python的省略(ellipsis)

    a[...] #这个选择所有的元素,与a一样
    a[1,...] # 等同于a[1]一样
    a[...,1]
    #array([[ 1,  5,  9],
    #       [13, 17, 21]])
    # 前面的元素不变,选择最后一维的第2个元素,组成新的数组
    a[1,...,1]
    # array([13, 17, 21])
    #因为就三维所以没有效果,如果维度再多一些就好理解了
    b=np.arange(120).reshape(2,3,4,5)
    b[1,...,1]
    #array([[ 61,  66,  71,  76],
    #       [ 81,  86,  91,  96],
    #       [101, 106, 111, 116]])
    #这样就很好理解了


    Python 参数变量


    以这个名为 argv_show.py 的程序为例:

    #!/usr/bin/python
    # Filename: using_sys.py
    
    import sys
    
    print 'The command line arguments are:'
    for i in sys.argv:
        print i
    
    print '
    
    The PYTHONPATH is', sys.path, '
    '

    sys是Python的一个标准库,也就是官方出的“模块”,是’System‘的缩写,封装了一些系统的信息和接口。

    其他sys.argv 就保存的命令行里的参数 。eg. python argv_show.py hello world

    那么就得到  sys.argv = argv = ["argv_show.py", "hello", "world"] ,即argv[0]中默认存的是文件名,参数变量默认以空格区分。当变量内部有空格时,可以在变量整体上+“ ”   

    MATLAB    

    1. distance between predicted and GT joints

    dist = inf(length(pred(imgidx).annorect),length(annolist_gt(imgidx).annorect),nJoints);
  • 相关阅读:
    css font-family(字体样式)
    360浏览器兼容模式,页面不能正常渲染
    SVN 如何更换IP地址
    Update 出现在的问题
    安装node-sass
    vue 里面输出带标签的html
    css 内容超出宽度自动换行
    js 判断各种数据类型
    Java_面向对象三大特征
    Java_基础(二)
  • 原文地址:https://www.cnblogs.com/caffeaoto/p/8021683.html
Copyright © 2020-2023  润新知