博文

目前显示的是 二月, 2019的博文

M3D 测试脚本内存问题

M3D 测试脚本内存问题 昨晚在测试M3D的时候,服务器的94GB内存全被占满,今天来调试发现问题就是这两行代码 q_pids.extend(pids) q_camids.extend(camids) 不知道原因是什么,改为 pids = pids.numpy().astype(np.int16) camids = camids.numpy().astype(np.int16) g_pids.append(pids) g_camids.append(camids) 就可以正常运行了。 CUDA 显存 测试的是Video-Person-ReID,models是里面的模型,在模型计算之后,要将model(img)等号左边的变量删除,才会释放内存,否则下次计算的时候就会出现CUDA显存不足 import torch import models import time img1=torch.randn(64,4,3,224,112).cuda() img2=torch.randn(20,4,3,224,112).cuda() imgs=[img1, img2] qf=[] for i,img in enumerate(imgs): model = models.init_model(name='resnet50tp', num_classes=625, loss={'xent', 'htri'}).cuda() model.eval() f = model(img) f = f.view(img.size()[0], -1) f = torch.mean(f, 0) f = f.data.cpu() qf.append(f) del f # 释放f的内存空间 #torch.cuda.empty_cache() print(torch.cuda.memory_allocated())

deep_person_reid中数据读取的方式

deep_person_reid中数据读取的方式 deep person reid中的dataset_loader之前一直没有认真读代码,并不是很容易看懂。这几天看到[1]的代码,其中数据读取的部分是[1]的作者自己写的,比较简单,我就看了下,然后与deep person reid中的dataset_loade做了对比,发现我能看懂了。原始有三种采样模式:evenly、random和all。 evenly evenly是在整个tracklet中,每隔几帧选取一帧,这个间隔是根据这样计算的:先去掉余数部分,再以等间隔取数据。比如从17帧取8帧,就是以间隔 ( 17 - 17 % 8 ) / 8 = 2取;从27帧中取8帧,就是以间隔 ( 27 - 27 % 8 ) / 8 = 3取。 random random是在tracklet中随机选取seq_len张图片,然后重新排序。在[2]中的random是不同的方式,[2]中的方式与M3D中的方法是相同的,随机选取一个开始位置,然后连续选取seq_len张图片。之前的实验证明选取连续的seq_len张图片的效果比较好。 all tracklet中的所有图片都选取进来 dense dense是[2]中的方法,与M3D的相同,都是重复最后一个序列的元素,如[0,1,2,3,0,1]。 class VideoDataset(Dataset): """Video Person ReID Dataset. Note batch data has shape (batch, seq_len, channel, height, width). """ _sample_methods = ['evenly', 'random', 'all'] def __init__(self, dataset, seq_len=15, sample_method='evenly', transform=None): self.dataset = dataset self.seq_len = seq_...

opencv图像读取与保存

opencv图像读取与保存 在处理光流图像合并的任务时,将x和y两个方向的光流合成RGB图像存储,RGB中其中一个通道的值全部设置为0,并保存。但是读取图像的时候发现数值发生了改变,原因是保存的图像格式是jpg,保存为png就完全一致,可能是jpg格式会压缩图像,导致数值发生了改变。 参考 opencv的cv2.imwrite()函数写图像之后,再次读取,其像素值不相等的bug https://blog.csdn.net/oukohou/article/details/82378552

numpy学习笔记 np.argsort()

numpy学习笔记 np.argsort() np.argsort() >>> a=np.array([[1,2],[3,4]]) >>> a array([[1, 2], [3, 4]]) >>> np.argsort(a,axis=1) array([[0, 1], [0, 1]]) >>> np.argsort(a,axis=0) array([[0, 0], [1, 1]]) >>> a=np.array([[1,2],[3,0]]) >>> np.argsort(a,axis=0) array([[0, 1], [1, 0]]) np.argsort() 对数组进行排序,返回的数字是数组的元素在排序后所在的位置 np.newaxis >>> a=np.arange(1,6) >>> a array([1, 2, 3, 4, 5]) >>> a.shape (5,) >>> b=a[:,np.newaxis] >>> b array([[1], [2], [3], [4], [5]]) >>> b.shape (5, 1) np.newaxis用来增加数组的维度,类似于pytorch的torch.unsqueeze()

numpy叠加图像通道

numpy叠加图像通道 光流法产生x和y方向两张灰度图像,目前想到的将其输入神经网络的方法是将其叠加成三通道的RGB图像,第三个通道全为0。用opencv读取图像,读取的图像以np.array形式存在,数据类型是np.uint8。 import numpy as np import cv2 x=cv2.imread('x.jpg',0) #0表示以灰度读取,若设置为1则以RGB方式读取,三个通道都是灰度图像的复制 y=cv2.imread('y.jpg',0) z=np.zeros([x.shape[0],x.shape[1]]) #构建一个同样大小的第三通道 img=np.array([y,x,z]) #合成三通道图像, 此时数组的尺寸是3*224*224,我们需要的是224*224*3 img=img.transpose(1,2,0).astype(np.uint8) #调换数组的纬度次序,注意要指定数据类型为uint8,否则转换后的图像显示不正确 cv2.imshow('1',img) cv2.waitKey(0) 参考 [1] python、PyTorch图像读取与numpy转换 https://blog.csdn.net/yskyskyer123/article/details/80707038 [2] Pytorch 保存模型生成图片 https://blog.csdn.net/wzy_zju/article/details/80778551

xfeatures2d.hpp

xfeatures2d.hpp opencv-2.4.13在使用没有包含xfeatures2d.hpp,需要通过添加opencv_contrib-3.0.0-rc1才可使用。opencv_contrib的版本并非都可以,需要与opencv的版本相匹配。重新编译opencv的时候在cmake后添加 -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules 然后编译的时候可能出错,但是发现 xfeatures2d.hpp 已经编译好了,将 xfeatures2d.hpp 和文件夹 xfeatures2d 复制到 /usr/local/include/opencv/ 即可。 在编译 https://github.com/feichtenhofer/gpu_flow 时,出现 cmake cannot find -lopencv_dep_cudart 使用如下命令可解决 cmake .. -DCUDA_USE_STATIC_CUDA_RUNTIME=false

ffmpeg分离视频中的音频

ffmpeg分离视频中的音频 从视频中提取音频 ffmpeg -i 1.MP4 -vn -y -acodec copy 1.m4a 提取视频 ffmpeg -i 1.MP4 -vcodec copy -an output.mp4

ubuntu设置静态ip

ubuntu设置静态ip 修改网络配置文件 sudo vim /etc/network/interfaces 修改为如下内容,其中enp9s0是网卡的名字,若是配置完静态ip后无法解析服务器,则需要添加最后的dns-nameserver,这样子重启后就会在/etc/resov.conf文件中添加一行nameserver #The primary network interface auto enp9s0 #iface enp9s0 inet dhcp iface enp9s0 inet static address 192.168.2.105 netmask 255.255.255.0 gateway 192.168.2.1 dns-nameservers 8.8.8.8