CV-基础
CV-基础
城俊BLOG
从此好好码代码。。
展开
-
anchor base和anchor free, 小物体检测, YOLO V1-3 9000 V4 V5 的区别,yolov5-8, yolox创新点
把卷积最后一层输出的feature map上不同大小的候选框(对应原图上的候选框),转换为相同大小的特征,作为下一层全连接的输入。使用双线性内插的方法获得坐标为浮点数的像素点上的图像数值,从而将整个特征聚集过程转化为一个连续的操作。将主流目标检测器分为:input,backbone, neck,head。ROI Pooling和ROI Align:都是把特征图上不同大小的ROI转换成相同大小的输出特征。ROI Align (Mask RCNN中提出):是对ROI Pooling的改进,主要区别是。原创 2023-03-06 22:40:02 · 2333 阅读 · 1 评论 -
mmcv NCCL 报错 mmcv/_ext.cpython-37m-x86_64-linux-gnu.so: undefined symbol, RuntimeError: NCCL error i
【代码】mmcv报错 mmcv/_ext.cpython-37m-x86_64-linux-gnu.so: undefined symbol。原创 2023-01-12 02:05:22 · 1471 阅读 · 0 评论 -
opencv cv2 ffmpeg生成h264视频报错:Could not find encoder for codec_id=27, error: Encoder not found
【代码】opencv cv2 ffmpeg生成h264视频报错:Could not find encoder for codec_id=27, error: Encoder not found。原创 2022-12-27 17:30:25 · 4164 阅读 · 0 评论 -
cv2画多边形报错Overload resolution failed:> - Can‘t parse ‘pts‘. Sequence item with index 0 has a wrong t
报错:cv2.error: OpenCV(4.5.4-dev) :-1: error: (-5:Bad argument) in function 'polylines'> Overload resolution failed:> - Can't parse 'pts'. Sequence item with index 0 has a wrong type> - Can't parse 'pts'. Sequence item with index 0 has a wrong原创 2022-04-18 13:58:36 · 11534 阅读 · 0 评论 -
KeyError: “NuScenesDataset: ‘NormalizeMultiviewImage is not in the pipeline registry‘“
KeyError: “NuScenesDataset: ‘NormalizeMultiviewImage is not in the pipeline registry’”原创 2022-02-24 17:03:10 · 1594 阅读 · 0 评论 -
yolo运行报错:IndexError: invalid index to scalar variable.
代码:yolo_layers = [layers[i[0] - 1] for i in network.getUnconnectedOutLayers()]报错:Traceback (most recent call last): File "Run.py", line 201, in <module> main() File "Run.py", line 137, in main detections = yolo.detect(yolo_img) File翻译 2022-01-13 17:21:30 · 2199 阅读 · 3 评论 -
python cv2.cornerSubPix报错 OpenCV(4.5.3) :-1: error: (-5:Bad argument) in function ‘cornerSubPix‘
功能:根据图片和点的坐标去精修点的坐标代码:import cv2img = cv2.imread('xxx.jpg')subpix_criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.1)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)pts = [[852, 698], [1122, 702]]corners = corners.reshape((len(pts),原创 2021-09-13 19:09:26 · 2132 阅读 · 0 评论 -
模型转换:tensorflow2 模型转pb,pb转tflite
def img_to_batch(): img = cv2.imread('xxxx.jpg') img = cv2.resize(img, (112,112)).astype(np.float32) / 255. img_batch = np.expand_dims(img,0)def tf2_to_pb(): # load tf2 model = AAA(xxx) ckpt_path = tf.train.latest_checkpoint('./xx原创 2021-08-13 09:57:45 · 1328 阅读 · 2 评论 -
cv2.imshow报错 window.cpp:1274: error: (-2:Unspecified error) The function is not implemented.
Traceback (most recent call last):File “/home/data/PJS/test_bed/img_show.py”, line 18, in cv2.imshow(‘img’, img)cv2.error: OpenCV(4.5.3) /tmp/pip-req-build-9gwtlx3c/opencv/modules/highgui/src/window.cpp:1274: error: (-2:Unspecified error) The function i原创 2021-08-08 11:14:03 · 4862 阅读 · 2 评论 -
相机标定、相机校准、内参、外参、单应变换、3D
内参(intrinsic params):从像素坐标系到图像坐标系的参数外参 (extrinsic params):从世界坐标系到相机坐标系的参数像素坐标系:物体成像后,描述像素的点在数字图像中的坐标图像坐标系:为了得到像素坐标系下的坐标相机坐标系(x y z):相机坐标系 -> 像平面 (u, v) -> 焦平面世界坐标系(X Y Z):用户定义的三维世界坐标系,目标物体在真实世界的位置从像素坐标系到世界坐标系:像素坐标系中的坐标[uv1]=s∗[fxγu00fyv0001].原创 2021-07-12 11:03:27 · 2410 阅读 · 0 评论 -
人脸检测问题
问题:检测的位置完全不对。可能的原因:1)人脸检测模型精度不好,导致SFD检测的结果输入到Onet关键点预测,结果也不好2)人脸太大,需要进一步resize到较小的尺寸解决方法:1)重新训练,提高人脸检测模型的精度2)首先通过检测的置信度分数(score)过滤出来这些检测得不好的人脸样本。然后有下面几种方法可供选择:2.1)进一步resize到较小尺寸 ,然后再检测,看是否能检测正确2.2)级联其他检测模型(如MTCNN,retinaFace等等),进一步检测2.3)通过中心点crop.原创 2021-06-25 11:40:26 · 413 阅读 · 3 评论 -
数据增强
pass原创 2021-06-22 19:40:38 · 196 阅读 · 0 评论 -
Python 图片resize 不改变宽高比,加黑边,图片无损旋转
# 编写适用于lfwa两级目录的图片文件列表提取def get_imgs(imgDir): subdirs = os.listdir(imgDir) subdirs = [os.path.join(imgDir, i) for i in subdirs] imgs = [] for subdir in subdirs: imgss = os.listdir(subdir) imgs.extend([os.path.join(subdir, i翻译 2021-06-18 09:34:39 · 2646 阅读 · 1 评论 -
不同操作系统图片显示发生颠倒,linux ubuntu win7 win10
很奇怪的现象:一些手机、相机拍照的高清的图片,分辨率在:3456*5184在不同windows操作系统下显示的时候,是不同的。影响后续处理,比如做人脸裁剪的时候,得到的人脸就是颠倒的,或者裁剪出的人脸位置不对。猜测原因:不同OS对应的图片显示程序不同,Win7用的系统默认的Windows图片查看器,Win10使用的IrfanView。在ubuntu中使用feh查看的时候也是颠倒的,使用firefox浏览器、Image viewer,shotwell viewer打开时都是正常的。win7显示(异常)原创 2021-06-16 13:03:20 · 1207 阅读 · 0 评论 -
[双目测距原理] 双目摄像头如何估计深度
相机焦距f,相机之间距离(基线)b,右上角为目标位置,相机离目标垂直距离(所求目标距离相机的深度)为z,目标的水平坐标为x于是按照三角形的原理有:zf=xxl=x−bxr\frac{z}{f}=\frac{x}{x_{l}}=\frac{x-b}{x_{r}}fz=xlx=xrx−b化简得到深度:z=f∗bxl−xrz=\frac{f*b}{x_{l}-x_{r}}z=xl−xrf∗b相应地,还能得到目标的横坐标x和纵坐标y的值。https://zhuanlan.zhihu.c.原创 2021-06-14 21:46:26 · 2285 阅读 · 0 评论 -
图片输入数据检查: nan inf和不存在
import osimport cv2import numpy as npfrom tqdm import tqdm# read txt file content to listdef ReadTxt_to_list(rootdir): lines = [] with open(rootdir, 'r') as file_to_read: while True: line = file_to_read.readline()原创 2021-06-11 14:28:55 · 213 阅读 · 1 评论 -
NMS Python实现
NMS(非极大值抑制)作用:候选框很多的时候,根据阈值,去掉重叠度高的候选框Python实现:pass原创 2021-05-26 14:32:10 · 122 阅读 · 0 评论 -
Hinge loss和Focal loss
Hinge loss:用途:减少类内差异,增大类间差异思想:Loss=max(0,1−y∗y^)Loss = max(0,1-y*\hat{y})Loss=max(0,1−y∗y^)yyy和y^\hat{y}y^一个是真实值(0或1),一个是预测值(0-1之间的概率)。这个loss最小值为0,最大值为1。Focal loss:用途:解决难样本与容易样本的不平衡问题(不是正负样本的不平衡问题)思想:减少置信度高的样本的loss(这些样本分类概率p很高,用1-p和它的loss相乘),因为觉原创 2021-05-26 13:35:57 · 373 阅读 · 0 评论 -
连通域分割,求矩阵中的连通域个数
4邻域:一个像素的上下左右相邻的 4个像素8邻域:一个像素的上下左右和对角线相邻的 8个像素4邻接:像素和它的4邻域的4个像素是4邻接的8邻接:像素和它的8邻域的8个像素是8邻接的满足4邻接或者8邻接的像素之间具有邻接性。m邻接的定义:V={1}是定义邻接性的集合,即如果两个像素都为1,且满足4/8邻接要求的话,那么它们是邻接的两个像素(p,q)满足以下两个条件之一则认为是m邻接:p q是4邻接的p q 的4邻域交集为空(交集中的元素不在V中)采用m邻接(不是4邻接、也不是8邻接)的原创 2021-05-20 10:16:52 · 2863 阅读 · 0 评论 -
Ubuntu查看图片分辨率信息
命令:查看分辨率等信息:$ identify xxx.jpg翻译 2021-05-19 08:57:12 · 2668 阅读 · 0 评论 -
权重衰减
为什么权重衰减能抑制过拟合?(道理听起来没有drop out直观)较小的权重,网络复杂度更低(这个不懂)过拟合的时候,一般系数比较大。因为要拟合每一个点,函数在小的区间会发生剧烈波动,也就是导数大,而导数大要求自变量系数大。所以控制系数大小,能抑制过拟合。(这个听起来有点道理)在深层网络中,权重衰减没有drop out管用?梯度裁切更管用?High-Performance Large-Scale Image Recognition Without Normalization前向传播中的裁剪特征翻译 2021-04-18 16:20:17 · 123 阅读 · 0 评论 -
模型使用python2和python3的测试结果不同
可能的原因:python3测试代码中没有对输入图像进行以下处理:img = ((img / 255) - 0.5) / 0.5原创 2021-04-09 01:02:27 · 217 阅读 · 0 评论 -
python多点外接多边形(Delaunay三角网),凸多边形、非凸多边形
计算Delaunay三角网,通过调整阈值,得到不同的外接多边形(凸、非凸)这里的凸的意思是外接凸多边形,非凸指的是按照最外面的点相互连接得到的多边形。如这里白色区域为非凸,外面绿色连线围成的区域为凸。以下代码生成的为非凸。points = [(319, 320), (125, 198), (250, 366), (129, 182), (262, 375), (235, 344), (248, 369), (367, 261), (196, 307), (163, 286)]pts = np.a翻译 2021-02-08 21:45:57 · 4515 阅读 · 2 评论 -
linux ubuntu 18.04 opencv降级、安装opencv3.1
https://gist.github.com/denti/7205065c8f0ce67cf368b9a2d5f76b00原创 2021-01-02 23:05:25 · 2193 阅读 · 0 评论 -
ubuntu18.04 TITAN RTX安装驱动、cuda10 cudnn神报错: ERROR: Unable to load the kernel module ‘nvidia.ko‘
官网下载runfile和patch:cuda_10.0.130_410.48_linux.runcuda_10.0.130.1_linux.run下载cudnncudnn-10.0-linux-x64-v7.6.5.32.tgz关闭xservermoba-xterm右上角关闭x-server$ sudo /etc/init.d/gdm stop$ sudo /etc/init.d/gdm status$ sudo /etc/init.d/lightdm stop$ sudo /etc/.原创 2020-12-31 11:23:55 · 19624 阅读 · 1 评论 -
人脸姿态角度 yaw(偏航) pitch(俯仰)roll(滚转)
至于是角度是按顺时针转动算还是逆时针转动,没有看到统一说法pitch 俯仰角:绕X轴(指向脸右侧)转动的角度,表现为俯、仰yaw 偏航角:绕Y轴(指向脸下方)转动的角度,表现为向左侧或右侧水平转动roll 滚动角:绕Z轴(指向脸正前)转动的角度,表现为人脸照片旋转https://blog.csdn.net/leilei18a/article/details/108467268...原创 2020-12-25 18:16:27 · 8454 阅读 · 2 评论 -
代码不能复现,性能bug排查
python版本原因:py2和py3差别,如除法路径没有修改,如用的对齐之前的原始图片原创 2020-12-21 18:26:27 · 302 阅读 · 0 评论 -
python cv2图片处理:透明、叠加、画点、外接矩形、掩模操作(抠图,黑色背景变透明白色)、去背景、显示在线图片,加文字-中文汉字
xxx原创 2020-12-16 13:09:53 · 6357 阅读 · 1 评论 -
人脸检测和对齐,关键点坐标仿射变换
https://docs.opencv.org/3.4/d4/d61/tutorial_warp_affine.html原创 2020-12-16 02:21:45 · 3686 阅读 · 0 评论 -
pytorch AttributeError: ‘_IncompatibleKeys’ object has no attribute ‘eval’
哥们,你这个模型load_state_dict加载参数之后是不会将模型作为返回值的。所以你不要去接收返回参数。只是load_state_dict就可以了。错误的代码:# 这里你用列表接收了load_state_dict的返回值,但它其实不是load_state_dict之后得到的模型,而是一个_IncompatibleKeys的什么鬼models = [m.load_state_dict(ckpts[i]['state_dict']) for i,m in enumerate(models)]正确原创 2020-12-02 11:35:31 · 3719 阅读 · 0 评论 -
CV基础MX recall map
MAP每个类别的 平均precisionAP:PR曲线下的面积precision和recall公式 含义precision:所有实际预测为正的结果里面(TP+FP),真正正确的有多少(TP)recall:所有应该预测为正的结果里面(TP+FN),真正正确有多少(TP)为什么只关注TP,难道负样本不重要吗??目标检测不关注负样本,负样本是背景实现random crop不超过边界R50结构详细Alexnet结构详细如何解决快慢动作适应,漏帧、漏动作ROCTAR TPR F..原创 2020-11-26 00:02:15 · 478 阅读 · 1 评论 -
denseNet思想
和ResNet的区别:ResNet是求和,而DenseNet是做一个拼接。**每一层网络的输入为:当前输入+前面所有层网络的输出。**第L层的输入等于K x (L-1) + k0,其中k是生长率,表示每一层的通道数。提升信息和梯度在网络中的传输效率:每层都能直接从损失函数拿到梯度,并且直接得到输入信号。目的:训练更深的网络,有正则化的效果。其他网络致力于从深度和宽度来提升网络性能,而DenseNet从特征重用的角度来提升网络性能细节:一个完整的dense net,包括3个dense block.翻译 2020-11-03 02:01:03 · 520 阅读 · 0 评论 -
inception v1 v1加强版 v2 v3 v4区别
inception v1把googleNet的某一些大的卷积层换成11, 33, 5*5的小卷积,减少权重参数量以上三种卷积并列,3x3池化并列为什么不直接使用11的,而还需要33和5*5?是为了适应更多的尺度,不受输入图像被缩放的影响(相当于金字塔)inception v1加强版网络结构没有太大变化。输入增加BN (训练收敛更快,学习更高效,可以减少dropout的使用)。具体步骤:求batch均值,求batch方差,对输入进行归一化,归一化之后再进行缩放和平移(输入x乘以伽马、加上贝塔翻译 2020-11-03 01:43:02 · 745 阅读 · 0 评论 -
mobilenet v1 v2 v3区别、深度可分离(depthwise)卷积和1x1点卷积
mobilenet v1将标准卷积改为3x3的深度分离卷积(depthwise) 和 1x1点卷积(pointwise)mobilenet v2根据流形学习得出结论:ReLU导致的较多的信息损耗。但是不能直接用线性激活代替RELU,所以:在输出通道较少的时候用线性激活函数,其他时候ReLU6relu6: y= min(max(0,x), 6), 通过实验发现用6最好。图像:根据流形学习得出结论:如果增加通道数量能够减少信息损失就使用更多通道。所以:使用ReLU6的时候,增加通道数为输翻译 2020-11-03 01:27:21 · 33249 阅读 · 0 评论 -
YOLO与SSD的区别
YOLO将物体检测这个问题定义为bounding box和分类置信度的回归问题。将整张图像作为输入,划分成SxS grid,每个cell预测B个bounding box(x, y, w, h)及对应的分类置信度(class-specific confidence score)。分类置信度是bounding box是物体的概率及其与真实值IOU相乘的结果。SSD将物体检测这个问题的解空间,抽象为一组预先设定好(尺度,长宽比)的bounding box。在每个bounding bo翻译 2020-11-03 00:35:27 · 5737 阅读 · 1 评论 -
c++循环读取图片/文件路径
如果要显示图片的话,需要装opencv#include <opencv2\opencv.hpp>#include <string>std::string folder_path = "C:\\Users\\usr1\\Desktop\\tmp\\tmp\\images\\*.*"; //path of folder, you can replace "*.*" by "*.jpg" or "*.png"std::vector<cv::String> file_n翻译 2020-10-29 11:06:06 · 4489 阅读 · 1 评论 -
ubuntu 18.04安装caffe
先安装conda然后$ conda install caffe-gpu原创 2020-10-23 12:57:26 · 227 阅读 · 2 评论 -
python pytorch 安装accimage
https://github.com/pytorch/accimage翻译 2020-10-15 14:05:25 · 6675 阅读 · 4 评论 -
ValueError: Object arrays cannot be loaded when allow_pickle=False
完整报错:Traceback (most recent call last): File "face_detection_alignment_save_as_bmp.py", line 193, in <module> main(parse_arguments(sys.argv[1:])) File "face_detection_alignment_save_as_bmp.py", line 84, in main pnet, rnet, onet = detect_翻译 2020-09-23 13:18:18 · 546 阅读 · 0 评论 -
AttributeError: module ‘scipy.misc‘ has no attribute ‘imread‘
两种方法:1,更换scipy版本$ pip install scipy==1.2.12,更换APIimport imageioimg = imageio.imread(image_path)https://blog.csdn.net/TeFuirnever/article/details/90760179翻译 2020-09-17 16:58:44 · 698 阅读 · 0 评论