Python深度学习实用代码合集

这篇具有很好参考价值的文章主要介绍了Python深度学习实用代码合集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


背景:这篇文章的背景是在日常的学习和项目中,经常会遇到一些基础功能的组合复用,每次去查函数的用法和pipeline都是比较耗时耗力需要重新调试,所以想着把一些经常用到的代码段固化成函数,方便未来的调用,快速迭代和验证。另外,发现谷歌的colab比较好使,对于算法的快速验证迭代还是很有帮助的(尤其对于我这个垃圾笔记本),在环境的配置,算力的提供上都有无与伦比的优势,本地的部署除了在必须的情况下使用,尽量还是可以通过colab的形式迭代算法。除了colab,kaggle也提供类似的平台,二者功能相仿,可以对比学习使用。

Colab 代码集合

怎么在colab打开ipynb文件

https://colab.research.google.com/github/
然后把ipynb文件的github地址复制过去

保存文件夹内的所有文件

import os
from google.colab import files
 
def traverse_dir(data_dir):
  file_name_list = os.listdir(data_dir)
  for file_name in file_name_list:
    files.download('{}/{}'.format(data_dir, file_name))  # 多层文件夹需要修改这里
 
traverse_dir('/content/PhotoWCT2/figures/style') # 文件路径

从github拉代码

from google.colab import drive, output
import os
import json

%cd /content/
!rm -rf '/content/wct2'
!git clone https://github.com/chiutaiyin/PhotoWCT2.git  # 代码仓地址
%cd /content/PhotoWCT2  # 修改当前工作路径

Python代码集合

可交互选取文件路径

from tkinter import filedialog
filepath = filedialog.askopenfilename()  # 选择文件,路径保存于filepath中

文件目录

使用Python中的os模块下的方法listdir()是一个不错的选择,样例如下:

import os
os.listdir()

上面的代码将打印当前路径下所有文件和目录的名称。
如果我们想基于特定路径来打印结果,只需传递给函数os.listdir() 相应的参数,举例如下:

os.listdir(myPath)

如果想知道当前运行脚本的目录:

currentdir = os.path.dirname(__file__)
parentdir = os.path.abspath(os.path.join(currentdir, os.pardir))

遍历文件夹批量修改文件名和后缀

os.path的用法

def renaming(file):
    """修改后缀"""
    ext = os.path.splitext(file)    # 将文件名路径与后缀名分开

    if ext[1] == '.jpg':  # 文件名:ext[0]
        new_name = ext[0] + '.bmp'  # 文件后缀:ext[1]
        os.rename(file, new_name)  # tree()已切换工作地址,直接替换后缀
    elif ext[1] == '.jpeg':
        new_name = ext[0] + '.bmp'
        os.rename(file, new_name)

path = r'C:\Users\Desktop\wallpaper'  # 文件目录
for filename in os.listdir(path):
    oripath = path + os.sep + filename  # 获取绝对路径
    os.chdir(path)  # 修改工作地址(相当于文件指针到指定文件目录地址)
    renaming(oripath)  # 修改后缀


def tree(path):
    """递归函数"""
    files = os.listdir(path)  # 获取当前目录的所有文件及文件夹
    for file in files:
        file_path = os.path.join(path, file)  # 获取该文件的绝对路径
        if os.path.isdir(file_path):  # 判断是否为文件夹
            tree(file_path)  # 开始递归
        else:
            os.chdir(path)  # 修改工作地址(相当于文件指针到指定文件目录地址)
            renaming(file)  # 修改后缀

复制文件

def mycopyfile(srcfile, dstpath):  # 复制文件
    if not os.path.isfile(srcfile):
        print("%s not exist!" % (srcfile))
    else:
        fpath, fname = os.path.split(srcfile)  # 分离文件名和路径
        if not os.path.exists(dstpath):
            os.makedirs(dstpath)  # 创建路径
        shutil.copy(srcfile, dstpath + os.sep + fname)  # 复制文件
        print("copy %s -> %s" % (srcfile, dstpath + fname))


path1 = r'C:\Users\Desktop\wallpaper\0a2efbd136628de3094007cf3c8f3cdd.bmp'
path2 = r'C:\Users\Desktop\wallpaperedit'
mycopyfile(path1, path2)

删除文件

def del_file(path_data):
    for i in os.listdir(path_data) :# os.listdir(path_data)#返回一个列表,里面是当前目录下面的所有东西的相对路径
        file_data = path_data + os.sep + i#当前文件夹的下面的所有东西的绝对路径
        if os.path.isfile(file_data) == True:#os.path.isfile判断是否为文件,如果是文件,就删除.如果是文件夹.递归给del_file.
            os.remove(file_data)
        else:
            del_file(file_data)

读取图片(PIL和CV2)


from PIL import Image
img1 = Image.open(bp).convert("RGBA")
# img转换为cv用的arry
CVarray= np.array(PILimg)


import cv2
img = cv2.imread(path, cv2.IMREAD_UNCHANGED)
img = cv2.cvtColor(img, cv2.COLOR_RGBA2BGR)
# cv用的arry转换为img
PIVimg = Image.fromarray(CVarray)
PIVimg .save("out.jpeg")

显示图片(PIL和CV2)

from PIL import Image
img=Image.open('d:/dog.png')
img.show()
import cv2
img_grayscale = cv2.imread('test.jpg',0)
cv2.imshow('graycsale image',img_grayscale)
cv2.waitKey(0)

拼接图片

path = r'C:\Users\Desktop\wallpaper'
sourcepath = r'D:\algorithm\Color-Transfer-between-Images-master\Color-Transfer-between-Images-master\source'
resultpath = r'D:\algorithm\Color-Transfer-between-Images-master\Color-Transfer-between-Images-master\result'
savepath = r'C:\Users\Desktop\wallpaperedit'
# mycopyfile(path1, path2)
# del_file(sourcepath)
for filename in os.listdir(path):
    oripath = path + os.sep + filename
    mycopyfile(oripath, sourcepath)
    color_transfer()
    del_file(sourcepath)

    oriimg = Image.open(oripath)
    sp = oriimg.size
    joint = Image.new("RGBA", (sp[0]*10, sp[1]))
    joint.paste(oriimg, (0, 0))
    idx = 1
    for imgname in os.listdir(resultpath):
        curimgpath = resultpath + os.sep + imgname
        curimg = Image.open(curimgpath)
        loc = (sp[0]*idx, 0)
        joint.paste(curimg, loc)
        idx += 1
    pth = savepath + os.sep + filename
    joint.save(pth)
    del_file(resultpath)

图片与base64的互相转化

base 64 :

import base64
data1 = base64.b64encode(open('C:/Users/Desktop/universe.bmp', 'rb').read())
data2 = data1.decode('utf-8')
print(data2)

im = base64.b64decode(data2)
img = cv2.imdecode(np.frombuffer(im, dtype=np.uint8), -1)
cv2.imshow('graycsale image', img)
cv2.waitKey(0)

python打包成为exe

python 生成 exe文章来源地址https://www.toymoban.com/news/detail-539114.html

根据分割mask(rgb通道)的信息从图片中提取png图的A通道

import os
import cv2
def extract_mask(mskpath, oripath, savepath, oriformat):
    """
    用于根据分割掩膜从视频提取分割物体
    从分割得到的RGBmask图片获取mask的A通道图像
    mskpath和oripath的文件需要有相同的图片名称
    :param mskpath: 原始的分割掩膜路径
    :param oripath: 原始图片的路径
    :param savepath: 提取出分割物体的存储路径
    :param oriformat: 生成图的格式,.jpg/.png
    :return: 保存结果到savepath
    """
    for filename in os.listdir(mskpath):
        # 读取文件夹中的每个文件
        maskpath = mskpath + os.sep + filename  # 获取掩膜绝对路径
        realfilename = filename.split('.')
        # 读取原始素材的路径
        originalpath = oripath + os.sep + realfilename[0] + oriformat
        # 读取图片
        mskimg = cv2.imread(maskpath, cv2.IMREAD_UNCHANGED)  # 掩模图
        msktmp = cv2.cvtColor(mskimg, cv2.COLOR_BGR2GRAY)
        # 掩模图转化为二值图
        thresh, mask = cv2.threshold(msktmp, 0, 255, cv2.THRESH_BINARY)
        # 原图
        oriimg = cv2.imread(originalpath, cv2.IMREAD_UNCHANGED)
        # 提取图片
        im = cv2.bitwise_and(oriimg, oriimg, mask=mask)
        finalsavepath = savepath + os.sep + filename
        cv2.imwrite(finalsavepath, im, [int(cv2.IMWRITE_JPEG_QUALITY), 100])

图片生成视频

import os
import cv2
def build_video(refvideopath, resourcepath, imgfmt, savepath, savename):
    """
    从一系列的图片生成视频
    :param refvideopath:原视频的路径,用来根据原始视频的帧率设定处理之后视频的帧率
    :param resourcepath:图片序列的路径
    :param imgfmt:图片格式,.png/.jpg
    :param savepath:保存的路径
    :param savename:保存的名字
    :return:保存视频
    """
    videoCapture = cv2.VideoCapture(refvideopath)  # 读取视频文件
    fps = videoCapture.get(cv2.CAP_PROP_FPS)  # 计算视频的帧率

    # 图片文件夹路径和格式(例如:/path/to/folder/*.jpg)
    img_folder = resourcepath
    img_format = imgfmt

    # 视频文件保存路径和名称
    video_name = savename

    # 获取图片列表
    img_list = sorted([os.path.join(img_folder, f) for f in os.listdir(img_folder) if f.endswith('.' + img_format)])

    # 读取第一张图片,获取图片尺寸
    img = cv2.imread(img_list[0])
    height, width, channels = img.shape

    # 创建视频编写器
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')  # 定义视频编码器
    savepath = savepath + os.sep + video_name
    video = cv2.VideoWriter(savepath, fourcc, fps, (width, height))  # 定义视频文件,帧率为读取到的fps

    # 逐个将图片写入视频文件
    for img_path in img_list:
        img = cv2.imread(img_path)
        video.write(img)

    # 释放资源
    video.release()

图片叠加

from PIL import Image
import numpy as np
def combinevideo(mskpath, oripath, segpath, oriformat, savepath):
    """
    将分割得到的前景和背景组合展示
    :param mskpath: 掩膜的路径,即png中A通道的路径
    :param oripath: 背景图的路径
    :param segpath: 前景图的路径
    :param oriformat: 背景图图像格式
    :param savepath: 保存路径
    :return: 保存粘贴好的图片
    """
    for filename in os.listdir(mskpath):
        maskpath = mskpath + os.sep + filename  # 获取掩膜绝对路径
        realfilename = filename.split('.')
        originalpath = oripath + os.sep + realfilename[0] + oriformat
        segmentationpath = segpath + os.sep + filename
        mskimg = cv2.imread(maskpath, cv2.IMREAD_UNCHANGED)  # 掩模图
        oriimg = cv2.imread(originalpath, cv2.IMREAD_UNCHANGED)  # 原图
        segimg = cv2.imread(segmentationpath, cv2.IMREAD_UNCHANGED)  # 分割图
        height, width, channels = segimg.shape
        oriimg = cv2.resize(oriimg, (width, height), interpolation=cv2.INTER_AREA)
        msktmp = cv2.cvtColor(mskimg, cv2.COLOR_BGR2GRAY)
        thresh, msk = cv2.threshold(msktmp, 0, 255, cv2.THRESH_BINARY)
        # im = cv2.bitwise_and(oriimg, segimg)
        oriimg = cv2.cvtColor(oriimg, cv2.COLOR_BGR2RGB)
        segimg = cv2.cvtColor(segimg, cv2.COLOR_BGR2RGB)
        ORIimg = Image.fromarray(oriimg)
        SEGimg = Image.fromarray(segimg)
        MSKimg = Image.fromarray(msk)
        # MSKimg.show()
        ORIimg.paste(SEGimg, (0, 0), mask=MSKimg)
        # ORIimg.show()
        finalsavepath = savepath + os.sep + filename
        CVarray = np.array(ORIimg)
        CVarray = cv2.cvtColor(CVarray, cv2.COLOR_RGB2BGR)
        cv2.imwrite(finalsavepath, CVarray, [int(cv2.IMWRITE_JPEG_QUALITY), 100])

到了这里,关于Python深度学习实用代码合集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习(24): 计算两个图像的LPIPS,SSIM指标 (python代码)

    LPIPS:学习感知图像块相似度(Learned Perceptual Image Patch Similarity, LPIPS)也称为“感知损失”(perceptual loss),用于度量两张图像之间的差别。来源于CVPR2018《The Unreasonable Effectiveness of Deep Features as a Perceptual Metric》 要计算两张图片之间的LPIPS(Learned Perceptual Image Patch Similarity)距离,

    2024年02月15日
    浏览(45)
  • 如何在PyCharm中开发Python keras深度学习模型?

    PyCharm是一款非常流行的Python集成开发环境(IDE),它支持Python开发的各种功能,包括数据分析、机器学习和深度学习等。 在本文中,我们将介绍如何在PyCharm中开发Python keras深度学习模型。 一、安装PyCharm 首先,需要在官网上下载并安装PyCharm。下载地址为: 根据自己的操作

    2024年02月02日
    浏览(57)
  • 【Python | 深度学习】safetensors 包的介绍和使用案例(含源代码)

    safetensors 是一种用于安全存储张量(与 pickle 相反)的新型简单格式,并且仍然很快(零拷贝)。 safetensors 真的很快。 仅加载部分张量(在多个GPU上运行时很有趣): safetensors 真的很快。让我们通过加载 gpt2 权重将其进行比较。要运行 GPU 基准测试,请确保您的机器具有 G

    2024年02月08日
    浏览(61)
  • 云计算实战应用案例精讲-【深度学习】多模态融合(附python代码实现)

    目录 前言 几个高频面试题目 为什么Transformer适合做多模态任务?

    2024年04月16日
    浏览(45)
  • Python大数据之PySpark(三)使用Python语言开发Spark程序代码

    Spark Standalone的PySpark的搭建----bin/pyspark --master spark://node1:7077 Spark StandaloneHA的搭建—Master的单点故障(node1,node2),zk的leader选举机制,1-2min还原 【scala版本的交互式界面】bin/spark-shell --master xxx 【python版本交互式界面】bin/pyspark --master xxx 【提交任务】bin/spark-submit --master xxxx 【学

    2024年01月17日
    浏览(51)
  • 基于深度学习的动物识别系统(YOLOv5清新界面版,Python代码)

    摘要:动物识别系统用于识别和统计常见动物数量,通过深度学习技术检测日常几种动物图像识别,支持图片、视频和摄像头画面等形式。在介绍算法原理的同时,给出 P y t h o n 的实现代码、训练数据集以及 P y Q t 的UI界面。动物识别系统主要用于常见动物的识别,检测几种

    2024年01月18日
    浏览(45)
  • 基于YOLOv8深度学习的智能肺炎诊断系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战

    《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌ 更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍 感谢小伙伴们点赞、关注! 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】

    2024年01月23日
    浏览(113)
  • 基于深度学习的人脸识别与管理系统(UI界面增强版,Python代码)

    摘要:人脸检测与识别是机器视觉领域最热门的研究方向之一,本文详细介绍博主自主设计的一款基于深度学习的人脸识别与管理系统。博文给出人脸识别实现原理的同时,给出 P y t h o n 的人脸识别实现代码以及 P y Q t 设计的UI界面。系统实现了集识别人脸、录入人脸、管理

    2024年01月20日
    浏览(52)
  • 入门深度学习——基于全连接神经网络的手写数字识别案例(python代码实现)

    1.1 问题导入 如图所示,数字五的图片作为输入,layer01层为输入层,layer02层为隐藏层,找出每列最大值对应索引为输出层。根据下图给出的网络结构搭建本案例用到的全连接神经网络 1.2 手写字数据集MINST 如图所示,MNIST数据集是机器学习领域中非常经典的一个数据集,由6

    2024年02月03日
    浏览(44)
  • 深度学习在组织病理学图像分析中的应用: Python实现和代码解析

    引言 组织病理学是医学的一个重要分支,它主要研究组织和细胞的形态学改变,以确定疾病的性质和发展。随着深度学习技术的进步,其在组织病理学图像分析中的应用也变得日益重要。本文旨在介绍如何使用Python和深度学习技术来处理和分析组织病理学图像。 1. 环境配置

    2024年02月12日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包