Kaggle克隆github项目+文件操作+Kaggle常见操作问题解决方案——一文搞定,以openpose姿态估计项目为例

本文主要是介绍Kaggle克隆github项目+文件操作+Kaggle常见操作问题解决方案——一文搞定,以openpose姿态估计项目为例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、Kaggle克隆仓库
    • 1、克隆项目
    • 2、查看目录
  • 二、安装依赖
  • 三、文件的上传、复制、转移操作
    • 1.上传.pth文件到input目录
    • 2、将权重文件从input目录转移到工作目录
  • 三、修改工作目录里的文件内容
    • 1、修改demo_camera.py内容
  • 四、运行!


前言

想跑一些深度学习的项目,但是电脑没有显卡,遂看向云服务器Kaggle,这里可以每周免费使用30h的GPU算力,效果确实不错。
本人之前尝试过google colab,但是

  • 时不时就要你人机验证
  • 连接容易断开
  • 文件操作有些麻烦
  • 还要挂载google drive云盘
  • 还要魔法

用过Kaggle之后,不得不说是真香,它是不需要魔法的。
但是刚上手Kaggle的DPers可能还不是很熟悉一些基本命令操作,那么这篇文章就总结了一些常见操作,常见问题,希望对你有所帮助。


一、Kaggle克隆仓库

1、克隆项目

一般在kaggle的notebook里面输入控制台类的代码,前面要加上!当然也有特例,我们后面再说

! git init
! git clone https://github.com/Hzzone/pytorch-openpose.git

2、查看目录

克隆下来的项目,放在了output下,目录为kaggle/working
在这里插入图片描述
注意kaggle/working也是我们默认的工作目录,你可以输入下述代码来验证

import os
os.getcwd()

二、安装依赖

! pip install -r /kaggle/working/pytorch-openpose/requirements.txt

这里要输入requirements.txt的完整路径,可以在右侧直接复制
在这里插入图片描述

三、文件的上传、复制、转移操作

github上这个姿态估计的项目需要权重文件,但是仓库里没有直接放进去,通过网盘给到了.pth权重文件。那么现在我们应该如何将电脑中的.pth文件上传到工作目录里呢

1.上传.pth文件到input目录

比较简单,点击upload->New Dataset->选择本地文件直接上传,
一个项目可以包含多个datasets,我这里新建了2个,并分别上传了一个文件,下面是目录结构:
在这里插入图片描述

2、将权重文件从input目录转移到工作目录

将权重文件从input目录转移到output下的kaggle/working工作目录

# import module we'll need to import our custom module
from shutil import copyfilecopyfile(src = "/kaggle/input/hand-pose-model-pth/hand_pose_model.pth", dst = "/kaggle/working/pytorch-openpose/model/hand_pose_model.pth")
copyfile(src = "/kaggle/input/hand-pose-model-pth/body_pose_model.pth", dst = "/kaggle/working/pytorch-openpose/model/body_pose_model.pth")

注意,目标目录下的.pth文件不用提前建立,它会自动生成


三、修改工作目录里的文件内容

按理说,我现在直接可以输入! python /kaggle/working/pytorch-openpose/demo_camera.py
进行demo测试了,但是会报错找不到权重文件,因为人家项目里写的是相对路径,但是说实话,相对路径在kaggle的notebook执行的时候,会识别不出来
在这里插入图片描述

所以最保险的做法:
全部换成绝对路径
这时要修改demo_camera.py的文件内容,如何修改呢?

1、修改demo_camera.py内容

现在的工作路径是
在这里插入图片描述
我们cd 到demo_camera.py文件所在文件夹下
在这里插入图片描述
在本地修改demo_camera.py,修改为绝对路径
在这里插入图片描述
将这个文件里所有内容复制到%%writefile demo_camera.py下面,什么意思?就是相当于把demo_camera.py的内容进行了覆盖。

%%writefile demo_camera.py
import cv2
import matplotlib.pyplot as plt
import copy
import numpy as np
import torchfrom src import model
from src import util
from src.body import Body
from src.hand import Handbody_estimation = Body('/kaggle/working/pytorch-openpose/model/body_pose_model.pth')
hand_estimation = Hand('/kaggle/working/pytorch-openpose/model/hand_pose_model.pth')print(f"Torch device: {torch.cuda.get_device_name()}")cap = cv2.VideoCapture(0)
cap.set(3, 640)
cap.set(4, 480)
while True:ret, oriImg = cap.read()candidate, subset = body_estimation(oriImg)canvas = copy.deepcopy(oriImg)canvas = util.draw_bodypose(canvas, candidate, subset)# detect handhands_list = util.handDetect(candidate, subset, oriImg)all_hand_peaks = []for x, y, w, is_left in hands_list:peaks = hand_estimation(oriImg[y:y+w, x:x+w, :])peaks[:, 0] = np.where(peaks[:, 0]==0, peaks[:, 0], peaks[:, 0]+x)peaks[:, 1] = np.where(peaks[:, 1]==0, peaks[:, 1], peaks[:, 1]+y)all_hand_peaks.append(peaks)canvas = util.draw_handpose(canvas, all_hand_peaks)cv2.imshow('demo', canvas)#一个窗口用以显示原视频if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()

在这里插入图片描述

四、运行!

输入

! python /kaggle/working/pytorch-openpose/demo_camera.py

当然,你可能遇到其他代码上的bug,这就不是kaggle平台的问题啦
这就需要你擦亮你的眼睛认认真真debug啦

这篇关于Kaggle克隆github项目+文件操作+Kaggle常见操作问题解决方案——一文搞定,以openpose姿态估计项目为例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1128836

相关文章

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

java中long的一些常见用法

《java中long的一些常见用法》在Java中,long是一种基本数据类型,用于表示长整型数值,接下来通过本文给大家介绍java中long的一些常见用法,感兴趣的朋友一起看看吧... 在Java中,long是一种基本数据类型,用于表示长整型数值。它的取值范围比int更大,从-922337203685477

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis