news 2026/6/10 14:23:52

如何上传本地图片?Notebook文件操作详细步骤

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何上传本地图片?Notebook文件操作详细步骤

如何上传本地图片?Notebook文件操作详细步骤

在使用基于 ModelScope 的人像卡通化镜像时,一个最常遇到、也最容易卡住的问题就是:我的照片在自己电脑上,怎么传到 Notebook 环境里?
很多用户复制了示例代码,把路径写成E:\photos\me.jpg/Users/xxx/Desktop/photo.png,结果运行报错——FileNotFoundError: No such file or directory。这不是你代码写错了,而是根本没理解 Notebook 的运行环境本质:它是一台远程的、独立的 Linux 服务器,和你的本地电脑完全隔离。

本文不讲模型原理,不堆参数,只聚焦一个动作:如何把你的本地人像照片,真正、可靠、一步到位地传进 Notebook,并成功调用 unet person image cartoon compound 镜像完成卡通化处理。全程实操截图级指引,小白照着点三下就能跑通。


1. 明确前提:你正在使用的镜像环境

本文所有操作均基于以下镜像:

  • 镜像名称unet person image cartoon compound人像卡通化 构建by科哥
  • 技术底座:ModelScopedamo/cv_unet_person-image-cartoon_compound-models
  • 运行方式:通过 CSDN 星图或类似平台启动的 Jupyter Notebook 实例(非本地 Anaconda)
  • 关键事实:该环境默认为 Linux 系统,无图形桌面,无法直接访问你电脑上的任何文件路径

正确认知:上传复制路径上传= 把文件从你本地硬盘,通过 HTTP 协议,传输到 Notebook 服务器的某个目录中。


2. 上传本地图片的三种可靠方法(推荐按顺序尝试)

2.1 方法一:Notebook 内置上传按钮(最简单,首选)

这是最直观、成功率最高的方式,无需命令行,适合所有用户。

操作步骤:

  1. 打开你的 Notebook 页面(如https://notebook.xxx.com/tree
  2. 在左侧文件浏览器空白处,点击Upload按钮(通常在右上角,图标为 ↑ 箭头)
  3. 弹出系统文件选择窗口 → 选中你要卡通化的1 张或多张 JPG/PNG 文件→ 点击「打开」
  4. 等待上传进度条走完(几秒到十几秒,取决于文件大小和网络)
  5. 上传完成后,文件会直接出现在当前 Notebook 目录下(如./my_photo.jpg

验证是否成功:在 Notebook 新建一个代码单元格,输入并运行:

import os os.listdir('.')

如果输出列表中包含你上传的文件名(如'me.jpg'),说明上传已就位。

优势:零命令、界面友好、支持拖拽、一次可传多张
注意:上传后文件默认在当前工作目录(./),路径就是'文件名.扩展名'不是绝对路径


2.2 方法二:拖拽上传(效率更高,适合批量)

如果你习惯用鼠标操作,且浏览器支持(Chrome/Firefox/Edge 均支持),拖拽是最顺滑的方式。

操作步骤:

  1. 在你的电脑桌面或文件夹中,选中要上传的图片(可多选)
  2. 直接用鼠标左键拖拽到 Notebook 的文件浏览器区域(不是代码单元格!是左侧那个树状目录面板)
  3. 松开鼠标,等待绿色对勾出现或进度提示消失
  4. 刷新文件列表(或按F5),确认文件已出现在目录中

小技巧:

  • 拖拽时,目标区域会出现蓝色虚线边框,表示可接收
  • 上传大文件(>5MB)时,建议单次不超过 3 张,避免超时中断

优势:比点击上传更快,支持多文件连续拖入
注意:不要拖到代码编辑区或 Markdown 单元格,否则会插入 base64 图片链接(不可用于模型输入)


2.3 方法三:命令行上传(适合自动化、脚本化场景)

当你需要重复处理几十张图,或想写个循环批量调用时,用wgetcurl从公网地址拉取更稳定。但这要求你的图片必须先上传到某个公开可访问的链接(如图床、GitHub raw、阿里云 OSS)。

注意:此方法不适用于“直接传本地文件”,它是“曲线救国”方案,仅作补充说明。

典型流程:

  1. 用手机或电脑将图片上传至图床(如 sm.ms、imgbb、腾讯云 COS)
  2. 获取图片的直链 URL(必须以http://https://开头,且能直接在浏览器打开)
  3. 在 Notebook 中运行:
# 示例:用 wget 下载网络图片到当前目录 !wget https://i.imgur.com/abc123.jpg -O input.jpg # 验证下载 from PIL import Image Image.open('input.jpg')

优势:可写进脚本、支持批量、不受 Notebook 上传限制
劣势:多一步图床操作、涉及隐私需谨慎、非真正“本地上传”


3. 上传后,如何在代码中正确引用这张图?

上传只是第一步。很多用户卡在第二步:代码里怎么写路径?

3.1 错误示范(90% 新手踩坑)

# ❌ 错误!这是你本地 Windows 路径,Notebook 根本找不到 result = pipeline('image-portrait-stylization', model=model_dir)('C:\\Users\\Me\\Desktop\\photo.jpg') # ❌ 错误!这是 macOS 路径,服务器是 Linux result = pipeline(...)('/Users/me/Pictures/photo.png') # ❌ 错误!用了相对路径但层级不对 result = pipeline(...)( '../data/photo.jpg' ) # 当前目录没有 data 子目录

3.2 正确写法(只需一行)

假设你用方法一或二上传了一张叫zhangsan.jpg的照片,它就在 Notebook 当前目录下:

# 正确!文件名即路径(当前目录下) result = img_cartoon('zhangsan.jpg') # 正确!显式写出当前目录(效果相同) result = img_cartoon('./zhangsan.jpg') # 正确!如果上传到了子目录(如 uploads/),则写全相对路径 result = img_cartoon('uploads/zhangsan.jpg')

关键口诀:

“上传到哪,路径就写哪;文件名是什么,路径就写什么;不用猜,直接看左边文件列表。”


4. 完整端到端示例:从上传到生成卡通图

我们用一张真实人像照片,走一遍完整流程。假设你已启动镜像,页面已打开。

4.1 第一步:上传图片

  • 点击 Notebook 左侧Upload
  • 选择本地一张清晰正面人像 JPG(推荐 800×1200 左右)
  • 上传完成,文件名为portrait.jpg

4.2 第二步:加载模型(只需运行一次)

from modelscope.pipelines import pipeline from modelscope.hub.snapshot_download import snapshot_download # 下载并加载模型(首次运行较慢,约 1–2 分钟) model_dir = snapshot_download('damo/cv_unet_person-image-cartoon_compound-models', cache_dir='.') img_cartoon = pipeline('image-portrait-stylization', model=model_dir)

4.3 第三步:调用卡通化(核心!路径必须正确)

import cv2 # 关键:这里写的是上传后的文件名,不是你电脑上的路径 result = img_cartoon('portrait.jpg') # 保存结果 cv2.imwrite('cartoon_portrait.png', result['output_img']) print(" 卡通化完成!结果已保存为 cartoon_portrait.png")

4.4 第四步:查看与下载结果

  • 运行后,左侧文件列表会出现cartoon_portrait.png
  • 点击它,Notebook 会内嵌显示图片
  • 右键图片 → “另存为”,即可下载到你本地电脑

至此,你已完成:本地图 → Notebook 服务器 → 模型处理 → 结果回传本地的全链路。


5. 常见问题排查(附解决方案)

问题现象可能原因一键解决
FileNotFoundError: portrait.jpg文件名拼错(大小写、空格、扩展名)查看左侧文件列表,严格复制文件名(包括.jpg
上传后文件列表不刷新浏览器缓存或未触发重载F5刷新整个 Notebook 页面
上传失败 / 进度卡住文件过大(>20MB)或网络波动换小图(<5MB),或改用方法三(图床+wget)
生成图片是灰色/全黑输入图不是标准 RGB,或含 Alpha 通道用画图工具另存为 JPG,或加代码预处理:
import cv2; img = cv2.imread('portrait.jpg'); img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
处理时间超 30 秒无响应模型首次加载未完成,或内存不足等待首次日志出现load model ... done.;若反复失败,重启 Kernel(Kernel → Restart)

6. 进阶技巧:批量处理多张本地照片

你不需要一张张上传、一张张运行。用以下模板,一次搞定 10 张:

import os import cv2 from modelscope.pipelines import pipeline from modelscope.hub.snapshot_download import snapshot_download # 1. 加载模型(只做一次) model_dir = snapshot_download('damo/cv_unet_person-image-cartoon_compound-models', cache_dir='.') img_cartoon = pipeline('image-portrait-stylization', model=model_dir) # 2. 定义输入输出目录(确保这些文件夹存在) input_dir = '.' # 上传的所有图都在当前目录 output_dir = 'cartoon_results' os.makedirs(output_dir, exist_ok=True) # 3. 遍历当前目录所有 JPG/PNG 文件 for filename in os.listdir(input_dir): if filename.lower().endswith(('.jpg', '.jpeg', '.png')): try: print(f" 正在处理 {filename}...") result = img_cartoon(os.path.join(input_dir, filename)) output_path = os.path.join(output_dir, f"cartoon_{filename}") cv2.imwrite(output_path, result['output_img']) print(f" 已保存 {output_path}") except Exception as e: print(f"❌ 处理 {filename} 失败:{e}") print(" 批量处理完成!结果在 cartoon_results 文件夹中。")

运行后:

  • 左侧会出现cartoon_results/文件夹
  • 点击进入,可预览所有卡通图,或打包下载整个文件夹

这才是真正解放双手的生产力方案。


7. 为什么不能直接读取本地路径?技术本质解析

这个问题背后,是云计算最基础的隔离原则:

  • 你的浏览器(Chrome)运行在本地电脑(Windows/macOS)
  • Notebook 服务运行在远程云服务器(Linux Docker 容器)
  • 二者之间只有 HTTP/WebSocket 连接,没有共享文件系统,没有磁盘映射

就像你用微信发文件给朋友,朋友收到的是副本,不是你电脑里的原文件。上传按钮,就是这个“发送”动作的图形化实现。

记住:Notebook 里的一切路径,都是服务器上的路径。你唯一可控的“本地”,就是你上传后生成的那个文件。


8. 总结:上传这件事,其实很简单

  • 别想复杂:上传 = 点按钮 / 拖文件 → 出现在左边列表 → 代码里写文件名
  • 别抄路径:永远不要复制你电脑上的D:\.../Users/...
  • 别怕试错:上传失败?删掉重传;路径报错?看左边列表再抄一遍
  • 别单张操作:学会用os.listdir()+ 循环,10 张图 10 秒处理完

你现在拥有的,不是一个“需要折腾环境”的工具,而是一个开箱即用的卡通化工厂。你只需要把原料(照片)送进去,剩下的,交给模型和代码。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 21:46:09

Unsloth快速入门:从0开始微调Llama 3指令模型

Unsloth快速入门&#xff1a;从0开始微调Llama 3指令模型 1. 为什么你需要Unsloth——不是又一个微调框架&#xff0c;而是显存与速度的重新定义 你有没有试过在单张3090上微调Llama 3&#xff1f; 不是报OOM&#xff0c;就是训练慢得像在等咖啡凉透。 不是模型太重&#xff…

作者头像 李华
网站建设 2026/6/10 18:48:33

虚拟ZPL打印机完全指南:从调试到部署的7大实战技巧

虚拟ZPL打印机完全指南&#xff1a;从调试到部署的7大实战技巧 【免费下载链接】Virtual-ZPL-Printer An ethernet based virtual Zebra Label Printer that can be used to test applications that produce bar code labels. 项目地址: https://gitcode.com/gh_mirrors/vi/V…

作者头像 李华
网站建设 2026/6/10 20:00:29

超实用开源CAD绘图工具完全指南:从入门到精通LibreCAD

超实用开源CAD绘图工具完全指南&#xff1a;从入门到精通LibreCAD 【免费下载链接】LibreCAD LibreCAD is a cross-platform 2D CAD program written in C14 using the Qt framework. It can read DXF and DWG files and can write DXF, PDF and SVG files. The user interface…

作者头像 李华
网站建设 2026/6/10 13:00:52

腾讯混元7B大模型:256K长文本+GQA,性能再创新高!

腾讯混元7B大模型&#xff1a;256K长文本GQA&#xff0c;性能再创新高&#xff01; 【免费下载链接】Hunyuan-7B-Pretrain-0124 腾讯Hunyuan-7B-Pretrain-0124是高性能中文7B大模型&#xff0c;支持256K长文本与GQA技术&#xff0c;兼容Hugging Face生态。MMLU达75.37、CMMLU 8…

作者头像 李华
网站建设 2026/6/10 12:57:20

新手必看:Multisim示波器测量方波失真方法

以下是对您提供的博文内容进行 深度润色与结构优化后的技术文章 。全文已彻底去除AI生成痕迹,语言更贴近一位资深电子工程师/教学博主的自然表达风格:逻辑清晰、节奏张弛有度、术语准确但不堆砌、案例真实可感,并强化了“为什么这么设”“哪里容易错”“怎么验证对错”的工…

作者头像 李华
网站建设 2026/6/9 23:44:27

MOSFET开关过程中的米勒平台现象:图解说明机制

以下是对您提供的技术博文《MOSFET开关过程中的米勒平台现象:机制解析与工程实践指南》的 深度润色与结构重构版本 。本次优化严格遵循您的全部要求: ✅ 彻底去除AI腔调与模板化表达(如“本文将从……几个方面阐述”) ✅ 拒绝机械分节标题(删除所有“引言/概述/核心特…

作者头像 李华