![](https://img-blog.csdnimg.cn/2020051016374319.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Python
文章平均质量分 75
Python相关
TracelessLe
BetterLife,BetterWorld.
展开
-
通过调整图像hue值并结合ImageEnhance库以实现色调增强
PIL库中的ImageEnhance类可用于图像增强,可以调节图像的亮度、对比度、色度和锐度。通过RGB到HSV的变换加调整可以对图像的色调进行调整。两种方法结合可以达到更大程度的图像色调增强。原创 2023-06-22 23:13:39 · 984 阅读 · 0 评论 -
无CUDA支持的dlib库的安装与使用
Dlib 是一个 C++ 工具包,被广泛应用于工业和学术界。Dlib 的开源许可允许在任何应用程序中免费使用它。Dlib支持导出其他编程语言如Python的binding。在Python环境下一般安装dlib很方便,直接使用pip安装即可。但是某些时候由于CUDA支持的问题导致部分模型使用dlib库进行推理会出现异常。本文简要介绍无CUDA支持的dlib库的安装与使用。原创 2022-11-08 19:45:00 · 1287 阅读 · 0 评论 -
基于libjpeg-turbo库的jpeg4py安装与使用记录
jpeg4py是Python cffi (C Foreign Function Interface) libjpeg-turbo 绑定和辅助类工具包,是为 libjpeg-turbo 提供线程安全和感知GIL的Python绑定,基于Python 2/3 和 numpy 运行。目前只能解码 jpeg 文件,在单线程中比 Image.open().tobytes() 和 scipy.misc.imread() 快约 1.3 倍,在多线程模式下快 9 倍................原创 2022-08-30 10:35:32 · 2483 阅读 · 0 评论 -
label-studio批量上传本地数据
Label Studio是一个非常好用的开源数据标注工具,拥有对包括音频、文本、图片、视频和时间序列等各种数据类型的标注能力,有简单易用的UI设计和多导出格式的支持,能够有利于数据准备和利用已有训练数据提升机器学习模型精度。本文内容简要介绍如何在label-studio中批量上传本地数据。当我们希望在label-studio中批量上传本地数据时,可以通过将本地数据以http服务的方式暴露给label-studio访问。以下以Ubuntu系统为例进行说明。将本地数据(如待批量导入的图片)放在运行label原创 2022-07-12 19:52:36 · 3216 阅读 · 2 评论 -
label-studio的内容存储数据库(sqlite3)读取
Label Studio是一个非常好用的开源数据标注工具,拥有对包括音频、文本、图片、视频和时间序列等各种数据类型的标注能力,有简单易用的UI设计和多导出格式的支持,能够有利于数据准备和利用已有训练数据提升机器学习模型精度。本文内容简要介绍如何读取label-studio的内容存储数据库的内容。当我们希望使用脚本读取或批量修改label-studio的数据内容时,需要通过存储数据内容的sqlite3文件访问内容:版权说明本文为原创文章,独家发布在blog.csdn.net/TracelessLe。原创 2022-07-12 19:17:25 · 1356 阅读 · 0 评论 -
使用Python对GIF读取、生成、压缩和加水印
环境说明Python环境下对GIF文件进行读取、生成、压缩和加水印,主要使用到的包有:cv2imageiopygifsicleffmpeg读取__author__ = "TracelessLe"import cv2import osimport numpy as npclass GIF(): def __init__(self, file_path): self.file_path = file_path self.material = [原创 2022-04-13 17:20:22 · 1968 阅读 · 0 评论 -
使用imageio写视频文件指定输出质量
前言imageio是一个比较好用的用于读写图片数据的Python library,在处理视频数据时是以imageio_ffmpeg为backend的。问题当使用imageio读写视频时,其会调用imageio_ffmpeg包以使用ffmpeg作为backend。常用调用方法如下:__author__ = "TracelessLe"import imageioif __name__ == "__main__: video_path = 'test.mp4' video_reader =原创 2022-04-13 14:51:22 · 4764 阅读 · 0 评论 -
PyQt5中的QMessageBox消息弹窗使用示例
前言PyQt是Python语言环境的GUI编程解决方案之一,另外还有PyGTK、wxPython等也较为常用。PyQt作为Qt语言的Python扩展,可以用来方便快速的开发界面应用。PyQt5中的QMessageBox消息弹窗QMessageBox消息弹窗类在QtWidgets模块中定义,使用时需要from qtpy import QtWidgets。具体使用示例如下:from qtpy import QtCorefrom qtpy import QtWidgetsfrom qtpy imp原创 2022-04-10 11:56:42 · 2613 阅读 · 2 评论 -
Non-maximum Suppression (NMS) 流程回顾
前言NMS全称Non-maximum Suppression,非极大值抑制。通常用于检测任务中的bbox去冗余。流程分析procedure NMS(dets, thresh): # dets->bboxes, thresh->filter iou thresh keep = [] # a list to put final picked bbox indexes x1, y1, x2, y2, scores = dets[:, idx] # parse bboxes原创 2022-04-06 16:22:07 · 2038 阅读 · 0 评论 -
Python中__main__方法中的变量使用
前言__main__方法作为Python编程环境的程序入口,可以定义一些变量,这些变量默认为全局变量,可供其他方法使用。但是使用的过程需要注意一些事项,否则会出现报错。__main__方法中的变量import argparse# TracelessLe注:代码示例,不可直接执行def test_fun1(): print("pathA: ", pathA)if __name__ == "__main__": parser = argparse.ArgumentParser(原创 2022-03-23 18:07:14 · 4863 阅读 · 0 评论 -
PyQt5中的QtGui.QImage图片显示问题分析
前言PyQt是Python语言环境的GUI编程解决方案之一,另外还有PyGTK、wxPython等也较为常用。PyQt作为Qt语言的Python扩展,可以用来方便快速的开发界面应用。PyQt5中的QtGui.QImage图片显示import os.path as ospimport cv2from qtpy import QtCorefrom qtpy import QtWidgetsfrom qtpy import QtGui# TracelessLe注:代码示例,不可直接执行c原创 2022-03-07 21:27:54 · 12036 阅读 · 3 评论 -
PyQt5中的定时器QTimer设置与失效分析
前言PyQt是Python语言环境的GUI编程解决方案之一,另外还有PyGTK、wxPython等也较为常用。PyQt作为Qt语言的Python扩展,可以用来方便快速的开发界面应用。PyQt5中的定时器QTimer设置import os.path as ospfrom qtpy import QtCorefrom qtpy import QtWidgets# TracelessLe注:代码示例,不可直接执行class MainWindow(QtWidgets.QMainWindow):原创 2022-02-23 17:41:38 · 3460 阅读 · 1 评论 -
PyQt5中的界面语言翻译
PyQt是Python语言环境的GUI编程解决方案之一,另外还有PyGTK、wxPython等也较为常用。原创 2022-02-23 11:49:55 · 2424 阅读 · 0 评论 -
PyTorch之自定义op扩展编译与加载 —— cpp_extension
前言在深度学习领域,经常需要使用其他人已训练好的模型进行改进或微调,这个时候我们通常会希望加载预训练模型文件的参数,如果网络结构不变,只需要使用load_state_dict方法即可。而当我们改动网络结构后,由于load_state_dict方法要求读入的state_dict的key和net.state_dict()的key对应相等,如果有缺少就会报错。这个时候我们通常希望加载未改动部分结构的参数用来初始化网络。版权说明本文为原创文章,独家发布在blog.csdn.net/TracelessLe。原创 2021-12-31 11:00:58 · 5232 阅读 · 21 评论 -
TensorRT debug及FP16浮点数溢出问题分析
前言TensorRT是NVIDIA推出的一款高效深度学习模型推理框架,其包括了深度学习推理优化器和运行时,能够让深度学习推理应用拥有低时延和高吞吐的优点。除了常规的加速功能外,TensorRT还提供了一套可用于engine生成过程中debug的工具,包括Polygraphy、ONNX GraphSurgeon和PyTorch-Quantization。这些小工具用处很大,值得花时间进一步研究。Debug方法示例polygraphyPolygraphy是TensorRT官方提供的一系列小工具合集原创 2021-10-08 20:02:18 · 7461 阅读 · 3 评论 -
拉普拉斯金字塔融合原理浅析
前言拉普拉斯金字塔融合(Laplacian Pyramid Blending)也称为多频带融合(Multi-band Blending),可以看做是对Alpha融合的一种改进,避免出现鬼影(Ghosting)和截断(Seams)现象。方法原理图像可以认为是由不同频率的信息组成,包含了很多不同的特征,频谱跨度很大。图像中的低频信号和高频信号也叫做低频分量和高频分量。图像中的高频分量,指的是图像强度(亮度/灰度)变化剧烈的地方,也就是我们常说的边缘(轮廓);图像中的低频分量,指的是图像强度(亮度原创 2021-10-08 17:09:05 · 7952 阅读 · 0 评论 -
OpenCV报错“TypeError: Expected cv::UMat for argument ‘img‘”
前言OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。可用于开发实时的图像处理、计算机视觉以及模式识别程序。问题当使用OpenCV函数cv2.putText()时突然报错:Traceback (most recent call last):File "test.py", line 138, in func cv2.putText(img_b原创 2021-06-28 20:02:29 · 981 阅读 · 0 评论 -
Windows VSCode配置conda shell执行Python脚本
前言Visual Studio Code(简称VSCode)是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代码自动补全(又称IntelliSense)、代码重构、查看定义功能,并且内置了命令行工具和Git版本控制系统。用户可以更改主题和键盘快捷方式实现个性化设置,也可以通过内置的扩展程序商店安装扩展以拓展软件功能。Visual Studio Code默认支持非常多的编程语言,包括JavaScript、TypeScript、CSS和HTML;也可以通过下载扩展支持Python、C/C+原创 2021-06-09 16:48:31 · 2517 阅读 · 2 评论 -
数据预处理中的归一化与反归一化
前言在使用深度学习框架构建训练数据时,通常需要数据归一化(Normalize),以利于网络的训练。而在训练过程可视化中,通常需要反归一化。以PyTorch框架而言,提供了torchvision.transforms.Normalize(mean, std, inplace=False)方法用于归一化。归一化归一化的实质是将数据的分布根据均值和标准差进行调整。#torchvision.transforms.Normalize(mean, std, inplace=False)output[chan原创 2021-04-22 17:36:07 · 5585 阅读 · 0 评论 -
face_alignment库获取人脸图片landmark示例
前言face_alignment是Python环境下一个用于检测人脸关键点(landmark)的常用的库。基于FAN方法实现,具有2D和3D关键点检测的能力。方法示例face-alignment库获取输入图片中的人脸关键点,图片输入格式为RGB通道顺序格式,因此如果用OpenCV读取图片后需要注意转换通道顺序,如果是用skimage.io读取则不用转换通道顺序。2D test on CPUimport cv2import face_alignmentdef cv_draw_landmark原创 2021-04-22 15:09:29 · 5118 阅读 · 10 评论 -
Python运行时警告warning的移除
前言当执行Python程序时,经常会由于某些依赖库的接口版本不匹配而报警告,有时候会影响打印信息的观察。这个时候需要对这些警告进行屏蔽。方法方法一:-W ignore在执行Python脚本时增加警告打印控制。python -W ignore script.py方法二:import warnings在Python脚本中导入warnings,增加warnings打印控制。import warningswarnings.filterwarnings("ignore")参考资料[1]原创 2021-04-10 19:26:44 · 1411 阅读 · 0 评论 -
使用PyTorch冻结模型参数的方法
前言在深度学习领域,经常需要使用其他人已训练好的模型进行改进或微调,这个时候我们会加载已有的预训练模型文件的参数,如果网络结构不变,希望使用新数据微调部分网络参数。这时我们则需要冻结部分参数,禁止其更新。方法(1)通过遍历网络结构,设置梯度更新requries_grad = False。 # 冻结network1的全部参数和network2的部分参数 for name, parameter in network1.named_parameters(): parameter.requri原创 2021-04-10 16:49:40 · 20631 阅读 · 6 评论 -
使用PyTorch加载模型部分参数方法
前言在深度学习领域,经常需要使用其他人已训练好的模型进行改进或微调,这个时候我们通常会希望加载预训练模型文件的参数,如果网络结构不变,只需要使用load_state_dict方法即可。而当我们改动网络结构后,由于load_state_dict方法要求读入的state_dict的key和net.state_dict()的key对应相等,如果有缺少就会报错。这个时候我们通常希望加载未改动部分结构的参数用来初始化网络。方法方法一:strict=False直接使用load_state_dict提供的参数s原创 2021-04-10 16:35:48 · 8847 阅读 · 11 评论 -
使用Python脚本下载yandex云盘链接中的内容
前言在下载yandex disk云盘中其他人分享的一些内容时,正常情况下点击下载按钮即可。但是很多时候需要在没有图形界面的Linux机器上下载或者批量下载一批链接,这个时候需要使用脚本方式下载。方法根据yandex disk的文件链接规则,编写相应的Python脚本(见参考资料[3]),执行脚本自动下载。Python脚本yandex_dl.py:#!/usr/bin/env python3# -*- coding: utf-8 -*-# chmod +x yandex_dl.py# py原创 2021-04-09 19:20:54 · 1822 阅读 · 1 评论 -
替换Python的imageio包中自带的ffmpeg以支持GPU编解码加速
前言imageio是一个比较好用的用于读写图片数据的Python library,在处理视频数据时是以imageio_ffmpeg为backend的。问题当使用imageio读写视频时,其会调用imageio_ffmpeg包以使用ffmpeg作为backend。而其自带的ffmpeg只支持CPU,不支持GPU编解码加速。深入到imageio_ffmpeg所在位置,例如~/.conda/envs/env_name/lib/python3.7/site-packages/imageio_ffmpeg原创 2021-03-31 21:01:22 · 4652 阅读 · 6 评论 -
图像分割任务中的评价指标简析
前言在图像分割领域中,我们需要使用特定的指标来评估实验效果。上图源自《Fully Convolutional Networks for Semantic Segmentation》整个评价体系中,被广泛应用的几个评价指标有:PrecisionRecallAccuracyIoUF1-ScoreMean Accuracy / Frequency Weighted Accuracy / Mean IoU / Frequency Weighted IoU等衍生指标在此对上述用到的指标做原创 2021-03-06 18:01:42 · 3692 阅读 · 2 评论 -
VS Code配置远程开发与调试支持
前言Visual Studio Code(简称VS Code)是一个由微软开发,同时支持Windows 、 Linux和macOS等操作系统的免费代码编辑器,它支持调试,并内置了Git 版本控制功能,同时也具有开发环境功能,例如代码补全、代码片段和代码重构等。该编辑器支持用户个性化配置,例如改变主题颜色、键盘快捷方式等各种属性和参数,同时还在编辑器中内置了扩展程序管理的功能。VS Code优势明显,通过日益丰富的插件,VS Code可以配置成各种开发环境,可以说其就像是一把瑞士军刀。越来越多的开发者开原创 2021-02-09 14:42:03 · 326 阅读 · 0 评论 -
使用OpenCV自带gen2.py等工具生成C++的Python binding示例
前言C++作为一种编译型语言,在其设计之初就偏重于性能、效率和灵活性,偏向应用于系统编程、嵌入式、资源受限的软件和系统。Python作为一种解释型语言,内置了如str, tuple, list, dict等常用数据结构,支持自动垃圾回收,拥有简洁的语法、丰富的内置库和第三方库,被越来越广泛地使用在各种场景中。但Python在高便捷性的同时无可避免的缺乏高性能。在部分应用场景中,我们需要在Python的灵活性上架构应用,底层算法希望借助C++的高性能, 那么我们可以考虑将C++开发的模块做成Python原创 2021-01-20 17:34:03 · 853 阅读 · 0 评论 -
Ubuntu下通过sh脚本安装conda失败案例
在官网下载好后Anaconda3-2020.02-Linux-x86_64.sh后在Ubuntu下通过sh安装,出现如下问题:原因在于该sh文件是从Windows电脑传输到Ubuntu上,出现了编码不一致的问题。解决方案如下:vim Anaconda3-2020.02-Linux-x86_64.sh #进入该sh文件输入::set ff=unix #这是进行编码切换:wq #保存退出成功开始安装:记录下来,防止下次掉坑。...原创 2020-06-12 16:59:35 · 540 阅读 · 0 评论 -
使用pybind11生成C++的Python binding示例
C++作为一种编译型语言,在其设计之初就偏重于性能、效率和灵活性,偏向应用于系统编程、嵌入式、资源受限的软件和系统。Python作为一种解释型语言,内置了如str, tuple, list, dict等常用数据结构,支持自动垃圾回收,拥有简洁的语法、丰富的内置库和第三方库,被越来越广泛地使用在Python是一种解释型语言,同样也支持不同的编程范式。原创 2020-12-06 17:01:27 · 1236 阅读 · 0 评论 -
Shared_memory从Python3.8移植到Python3.7/3.6
前言Python3.8中的multiprocessing模块提供了一个 SharedMemory 类,用于分配和管理多核或对称多处理器(SMP)机器上进程间的共享内存。为了协助管理不同进程间的共享内存生命周期,multiprocessing.managers 模块也提供了一个 BaseManager 的子类: SharedMemoryManager。在multiprocessing模块中,共享内存是指 “System V 类型” 的共享内存块而不是 “分布式共享内存”。这种类型的的共享内存允许不同进程读原创 2020-11-25 00:33:05 · 2424 阅读 · 2 评论 -
使用redis实现并发锁
前言Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。同时也是最流行的键值对存储数据库(之一)。由于其基于内存的特性,在使用上轻量高速,在面对并发场景时,可以基于其构建并发锁(分布式锁)。分布式锁一般有三种实现方式:数据库锁基于Redis的分布式锁基于ZooKeeper的分布式锁实现import redisdef get_redis_client(host, port, db): redis_client = redis.Red原创 2020-11-03 22:20:01 · 1278 阅读 · 1 评论 -
Python使用yaml配置logging日志
前言在Python环境下,logging是一个很好的用于处理日志的扩展包。平时使用时一般直接import logging后,调用logging.debug(“info”)方法打印日志。一般情况下够用,但是在需要涉及到复杂的日志功能(例如分级、写文件、归档等)后,则需要深入地对logging进行配置。通常情况下会使用yaml配置。实践创建一个loggingconfigyaml.yaml文件,内容如下:version: 1disable_existing_loggers: Falseformat原创 2020-09-30 16:29:15 · 3801 阅读 · 2 评论 -
使用Python的psutil包获取机器IPv4信息
实现在Python环境下,通过使用psutil包获取机器IP信息。测试机器为Ubuntu18.04。import psutildef getIP(): """获取ipv4地址""" dic = psutil.net_if_addrs() ipv4_list = [] for adapter in dic: snicList = dic[adapter] for snic in snicList: # if sni原创 2020-09-30 16:00:52 · 1401 阅读 · 0 评论 -
使用Python的smtplib和email包发送邮件
实现在Python环境下,通过使用mtplib和email包发送邮件。from email.message import Messageimport smtplibimport tracebackdef sendEmail(sender, password, receiver, sendInfoList): string_list = sendInfoList if string_list != []: email_context = '邮件信息:</p&g原创 2020-09-30 15:40:05 · 509 阅读 · 0 评论 -
使用ffmpeg-python获取视频信息如FPS、时长等
前言FFmpeg 是一个开放源代码的自由软件,可以运行音频和视频多种格式的录影、转换、流功能。而ffmpeg-python是开发者kkroening负责开发和维护的一套ffmpeg的python扩展。在作者的GitHub项目主页中,给出了很多实际的使用代码示例,其中就包括本文要讨论的获取视频信息。可以移步上述Github链接查看。编码实现要使用ffmpeg-python获取视频信息,实际上是通过ffmpeg-python去调用底层的FFmpeg的ffprobe工具实现。之前有写过FFmpeg的工具原创 2020-09-30 15:11:50 · 9135 阅读 · 10 评论 -
使用ffmpeg-python给视频转FPS
前言FFmpeg 是一个开放源代码的自由软件,可以运行音频和视频多种格式的录影、转换、流功能。而ffmpeg-python是开发者kkroening负责开发和维护的一套ffmpeg的python扩展。在作者的GitHub项目主页中,给出了很多实际的使用代码示例,可以移步查看。编码实现要使用ffmpeg-python给视频转FPS,需要注意FPS控制参数为“r”,则在使用时将目标帧率传至"r=*",例如"r=24"。import ffmpegdef change_fps(source_vide原创 2020-09-30 14:58:09 · 1639 阅读 · 1 评论 -
Python之使用shutil拷贝文件/文件夹
模块介绍shutil是Python自带lib中的一员,支持对文件和文件集合的一系列高阶操作。shutil.copyfileobjshutil.copyfileshutil.copymodeshutil.copystatshutil.copyshutil.copy2shutil.ignore_patternsshutil.copytreeshutil.rmtreeshutil.moveshutil.disk_usageshutil.chownshutil.whichshuti原创 2020-09-30 14:40:19 · 3375 阅读 · 0 评论 -
Ubuntu上安装NVIDIA VideoProcessingFramework (VPF)
引言安装参考官方给的安装教程,以Linux系统为例,Windows系统请直接查看官网教程。预先安装依赖(1)安装Nvidia video driver和CUDA SDK①按照最新的CUDA和英伟达显卡驱动,需要注意版本对应。②下载NVIDIA Video Codec SDK并解压备用,官网下载需要注册,可以直接从CSDN下载。(2)从源码安装FFMpeg推荐从源码安装FFMpeg:cd ~/installsgit clone https://github.com/FFmpeg/FFm原创 2020-09-15 15:08:56 · 3507 阅读 · 4 评论 -
使用PyTables读写HDF5文件小记
前言HDF(Hierarchical Data File)是美国国家高级计算应用中心(National Center for Supercomputing Application,NCSA)为了满足各种领域研究需求而研制的一种能高效存储和分发科学数据的新型数据格式 。HDF 是一种功能强大,广泛运用于科学领域的文件格式。研究它的组织结构特别是HDF5 的组织结构对于处理和管理地理信息系统的海量图形数据和属性数据具有一定的借鉴作用。掌握和运用NCSA提供的API 提取影像数据 ,可以节省时间, 提高程序编写原创 2020-08-31 00:28:56 · 2717 阅读 · 0 评论