深度学习
文章平均质量分 89
老潘的博客
老潘的博客,程序员眸中的fantasy life,分享AI技术干货,让大家少走弯路~
展开
-
深度学习部署神器——triton inference server入门教程指北
triton作为一个NVIDIA开源的商用级别的服务框架,个人认为很好用而且很稳定**,API接口的变化也不大,我从2020年的20.06切换到2022年的22.06,两个大版本切换,一些涉及到代码的工程变动很少,稍微修改修改就可以直接复用,很方便。> 本系列讲解的版本也是基于22.06。原创 2022-10-19 09:07:16 · 4323 阅读 · 3 评论 -
实践torch.fx第二篇-fx量化实操
torch.fx量化第二篇原创 2022-09-21 22:41:09 · 2533 阅读 · 2 评论 -
AI工程师的笔记本环境配置
还是爱折腾...前一阵子买了个新的笔记本电脑,幻13-3050TI-1T版本,全能本,CPU是8核心16线程的标压版AMD锐龙9-5900HS,显卡是NVIDIA-3050TI,重量和macbook差不多,都是1.4kg,便携、可以改变形态。大概长这样:可以变换3种形态(莫名有种兴奋感),可能也有人问我为啥不买macbook,没买的原因有两点:macbook不支持nvidia显卡,这个无解,没办法本地跑AI代码,只能远程服务器macbook用腻了,有一点审美疲劳,新版的macbook pro也原创 2022-05-21 21:35:33 · 1976 阅读 · 1 评论 -
实践torch.fx第一篇——基于Pytorch的模型优化量化神器
第一篇——什么是torch.fx今天聊一下比较重要的torch.fx,也趁着这次机会把之前的torch.fx笔记整理下,笔记大概拆成三份,分别对应三篇:什么是torch.fx基于torch.fx做量化基于torch.fx量化部署到TensorRT 本文对应第一篇,主要介绍torch.fx和基本使用方法。废话不多说,直接开始吧!什么是Torch.FXtorch.fx是Pytorch 1.8出来的一套工具或者说一个库,是做python-to-python code transformation原创 2022-05-21 21:11:23 · 2489 阅读 · 1 评论 -
PyTorch and torchvision versions are incompatible问题
Couldn’t load custom C++ ops. This can happen if your PyTorch and torchvision versions are incompatible一般来说,在pip install torvhvision会自动找到相应的pytorch版本进行安装,这个时候没啥问题。但是假如我们强行使两个版本不一致,比如pip install xxx --no-deps这样,肯定就会报错。解决方法就是使pytorch和torchvision版本一致:如.原创 2022-03-01 16:31:25 · 2202 阅读 · 0 评论 -
一起实践神经网络INT8量化系列教程(一)
开篇老潘刚开始接触神经网络量化是2年前那会,用NCNN和TVM在树莓派上部署一个简单的SSD网络。那个时候使用的量化脚本是参考于TensorRT和NCNN的PTQ量化(训练后量化)模式,使用交叉熵的方式对模型进行量化,最终在树莓派3B+上部署一个简单的分类模型(识别剪刀石头布静态手势)。这是那会的一篇文章,略显稚嫩哈哈:一步一步解读神经网络编译器TVM(二)——利用TVM完成C++端的部署转眼间过了这么久啦,神经网络量化应用已经完全实现大面积落地了、相比之前成熟多了!我工作的时候虽然也简单接原创 2021-11-23 23:31:17 · 4964 阅读 · 3 评论 -
聊聊阅读源码那些事儿
大家好我是老潘,我们又见面了~如果下文中有格式方面的错误,可以点击这里查看原文。老潘的AI宝藏内容也总结在这里!看源码本身就是一种学习,就像小时候写作文一样,看别人的好作文也就会模仿一些好的句子,一些好的段落。看源码也一样,不同大厂的源码写的风格也不一样,惯用的技巧也不一样,强调的规范也不一样,使用的C++标注也不一样(C++11、C++14等等)。但是如果想要深入学习一个框架的底层,看源码是必须的。我看过不少源码,也模仿过一些大厂源码的例子。最常见的例子就是抽象类、工厂、单例、注册等等机制原创 2021-10-04 12:15:19 · 728 阅读 · 0 评论 -
分享下AI算法工程师的一些宝贵经验(一)
大家好我是老潘,持续分享深度学习质量文,也会闲谈程序员的美好生活~宝藏内容以及如何找到老潘:老潘的AI宝藏内容也欢迎来我的博客做访:老潘的博客如果你对AI、深度学习、目标检测、图像分割、AI模型部署、模型优化等话题感兴趣,不妨尝试下关注老潘~前一段时间一直在优化部署模型。这几天终于来了需求,又要开始重操训练一些新模型了。趁着这次机会总结了下之前的一些训练模型的笔记,可能比较杂,抛砖引玉!当然这是不完全统计的经验,除了训练部分,还有很多部署的坑没有写。算法工程师50%的时间是和数据打交道,有.原创 2021-09-18 19:46:38 · 516 阅读 · 0 评论 -
遇到torchvision-op无法调用的问题
在使用torchvision的op的时候,比如from torchvision.ops.nms如果遇到以下的问题:Couldn’t load custom C++ ops. This can happen if your PyTorch andtorchvision versions are incompatible, or if you had errors while compilingtorchvision from source. For further information on the原创 2021-08-18 18:02:09 · 2571 阅读 · 5 评论 -
想要的AI部署前沿技术都在这里了!
不得不相信英伟达总能给我们惊喜,老潘作为一名深度学习从业者以及游戏爱好者,对于这种与AI、GPU、并行计算相关的话题一直都是比较感兴趣。作为深度学习第一大硬件平台的英伟达,我们自然熟悉的不能再熟悉了。英伟达的硬件足够优秀,但也需要足够的软件开发者去支撑才能真正的令其发展起来,对此英伟达是“上心的”。因为毕竟只有大家都用、大家都觉着好用、你也觉着好用,你才会用英伟达的产品,才会用它的GPU去做一些你感兴趣的事情(当然英伟达就可以卖钱啦)。这也就是生态。其实用了比较长时间英伟达的产品(显卡、嵌入式版本系原创 2021-08-15 21:56:22 · 1315 阅读 · 1 评论 -
老潘的AI部署以及工业落地学习之路
Hello我是老潘,好久不见各位。最近在复盘今年上半年做的一些事情,不管是训练模型、部署模型搭建服务,还是写一些组件代码,零零散散是有一些产出。虽然有了一点点成果,但仍觉着缺点什么。作为深度学习算法工程师,训练模型和部署模型是最基本的要求,每天都在重复着这个工作,但偶尔静下心来想一想,还是有很多事情需要做的:模型的结构,因为上线业务需要,更趋向于稳定有经验的,未探索一些新的结构模型的加速仍然不够,还没有压榨完GPU的全部潜力深感还有很多很多需要学习的地方啊。既然要学习,那么学习路线就显得比原创 2021-08-08 10:22:54 · 1727 阅读 · 3 评论 -
想提速但TensorRT的FP16不得劲?怎么办?在线支招!
问题的开始前些天尝试使用TensorRT转换一个模型,模型用TensorFlow训练,包含LSTM+Transform+CNN,是一个典型的时序结构模型,包含编码解码结构,暂称为debug.onnx吧。这个debug.onnx使用tf2onnx导出,导出后tf2onnx会自动对这个onnx做一些优化,例如常量折叠、算子融合等等一些常规操作,一般来说这些操作不会影响网络结构(也会出现影响的情况!之后老潘会说),而且有助于模型的优化。然后导出来之后使用onnxruntime简单测试一下导出模型是否正确,是原创 2021-04-11 22:39:24 · 3535 阅读 · 1 评论 -
主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)
紧接着前几天的事:特殊的日子,想起了当年的双(1080TI)显卡装机实录和炼丹炉买不起了:聊一聊这段日子的显卡行情之后,决定买一台整机玩玩。而现在,主机终于回!来!了!主机回来干什么,当然是——配置环境。老潘之前也有一些配置环境的文章,可以参考:ubuntu16.04下安装NVIDIA(cuda)-gtx965m相关步骤以及问题pytorch-0.2成功调用GPU:ubuntu16.04,Nvidia驱动安装以及最新cuda9.0与cudnnV7.0配置win10下安装使用pytor原创 2021-03-07 22:09:36 · 2154 阅读 · 5 评论 -
CVer最想知道的,简单分析下《2020年度中国计算机视觉人才调研报告》
最近闲来无事,老潘以一名普通算法工程师的角度,结合自身以及周围人的情况,理性也感性地分析一下极市平台前些天发布的2020年度中国计算机视觉人才调研报告。以下的“计算机视觉人才”简称“人才”,感觉说人才有点怪怪的感觉?自己也算人才么?老潘只不过是一个普普通通的算法工程师罢了(逃)。这个报告一共分为几个方面,用大白话讲一下就是:计算机人才哪个城市最多,哪个专业最多、都喜欢发些什么论文、喜欢什么编程语言、深度学习框架、工作地点等等作为计算机人才,我们应该学习什么才能不被社会所淘汰,如何提升自己计算原创 2021-02-23 23:21:19 · 1247 阅读 · 0 评论 -
2021年,我们还需要入门深度学习吗?
前言过年时闲来无事,瞎翻自己的博客,偶然看到之前写的一篇文章:一篇文章解决机器学习,深度学习入门疑惑这篇文章原先发布于2018年中旬,那会正是深度学习、神经网络无脑火热的时候。火热到什么程度?火热到显卡一度卖脱销(不是因为挖矿),研究生导师集体推荐学生转深度学习方向、毕业论文不带“深度学习”四个字都毕不了业、大街上随便拉个学生问都认识吴恩达。就这个火的程度,我那会也毅然决然地踏入了深度学习的大军,开始追星(吴恩达、李宏毅),开始上课(CS231n、CS229),开始学习框架(Pytorch、Te原创 2021-02-15 23:25:35 · 1755 阅读 · 3 评论 -
结束研究生第一年之际,前来谈谈自己的感受(2018)
前言在即将结束研究生第一年之际,前来谈谈自己的感受。你可以把这篇文章当做深度学习者、程序员、研究生的简短自白。可能会有点啰嗦,会有点无趣。但如果有时间、感兴趣,不妨阅读阅读,或许你能从其中挑出点有用的东西来呢。谈到的话题:编程语言选择该怎么准备去找工作上不上博杂谈不知不觉入行深度学习即将快一年,虽然说入行之前所做的项目,所编写的代码和现在做的并没有什么直接关系。但是从自己的上手程度和过来的经验来说,好的基础还是很重要的。对于深度学习的基础,大体分为三个部分:理论知识基础(数学知识原创 2021-02-13 10:53:45 · 565 阅读 · 1 评论 -
老潘的私藏宝藏资料分享!!!
yahaha~你终于找到这里了。这里收集了老潘总结的深度原创文和珍藏的资料,相信可以帮助到你。列一下博客的关键词:深度学习、神经网络、模型部署落地、服务器推理、Pytorch、TensorRT、Caffe、Python、C++、算法等。如果这里刚好有你需要的,能够帮助到你,我会非常开心(PS:内心无比激动~)。这里的每一篇文章都值得你精读,每周都会更新,有关算法工程师和模型部署工程师的学习路线在文末。老潘本潘老潘不是严格的算法工程师,虽然也训练一些模型,但是对模型部署和产品落地更为感兴趣,也做过原创 2021-02-10 12:25:58 · 164740 阅读 · 0 评论 -
只需半小时,搭建paddlepaddle-OCR识别服务(识别身份证、资格证等)
前言简单尝试了下paddleOCR的最新版(2021),只需要几行命令就可以很快地在本地部署一个OCR识别系统。如果不想看下文,依次执行以下命令即可搭建(注意:仅在linux系统中测试,其他系统也可参照):# 有anaconda系统可以跳过sh Anaconda3-2020.03-Linux-x86_64.shconda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/conda con原创 2021-02-02 22:32:18 · 6824 阅读 · 2 评论 -
一个Tensor的生命历程(Pytorch版)
文中涉及到大量的Pytorch的C++源码,版本为1.4.0,适合有一定Pytorch源码基础的童鞋观看,同时也涉及到一些python中的C/C++拓展的一些基础知识,其中每一段代码的第一行表明了该代码的文件位置。需要注意有些代码是自动生成的,原始工程中并没有,需要对pytorch源码编译后才会生成出来。还要注意一点,因为Pytorch仍在积极开发中,可能代码接口变化还是比较频繁。当你看到本文的时候,有可能展示的源码与master版的略有不同,但是大部分的代码逻辑变动不大,我们只需要知道核心工作原理即可原创 2021-01-30 18:10:47 · 1267 阅读 · 0 评论 -
TensorRT-7.x自定义插件详细指南
小博主拍了拍你的脑袋发了一个神秘链接:oldpan.me本系列为新TensorRT的第一篇,为什么叫新,因为之前已经写了两篇关于TensorRT的文章,是关于TensorRT-5.0版本的。好久没写关于TensorRT的文章了,所幸就以新来开头吧~接下来将要讲解的TensorRT,将会是基于7.0版本。7版本开头的TensorRT变化还是挺大的,增加了很多新特性,但是TensorRT的核心运作方式还是没有什么变化的,关于TensorRT的介绍可以看之前写的这两篇:利用TensorRT对深度学习进行原创 2021-01-12 22:26:17 · 2800 阅读 · 8 评论 -
Mac mini M1使用简单体验(编程、游戏、深度学习)
小博主拍了拍你的脑袋发了一个神秘链接:oldpan.me爽啊。前一阵子忍不住剁手买了M1芯片的mac mini,为了弥补自己的内疚感就卖了自己的旧的mbp2017款。数据也完全迁移到了新机器上,之前的工作也就由mbp2017彻底换成mac mini了,要换就换彻底点,不要给自己了留后路,哼。为什么买mini而不是macbook系列,当然是为了减少一下尝鲜的成本,mini对于有显示器有键盘的童鞋来说,应该是尝鲜m1芯片最有性价比的一款了(某宝只需4700)。另外需要说明一点,M1这个Apple Si原创 2021-01-12 22:22:56 · 11600 阅读 · 9 评论 -
机器学习系统或者SysML&DL笔记(一)
关于本文章的最新更新请查看:oldpan博客前言在使用过TVM、TensorRT等优秀的机器学习编译优化系统以及Pytorch、Keras等深度学习框架后,总觉得有必要从理论上对这些系统进行一些分析,虽然说在实践中学习是最快最直接的(指哪儿打哪儿、不会哪儿查哪儿),但恶补一些关于系统设计的一些知识还是非常有用了,权当是巩固一些基础了。因此,有必要学习了解一下机器学习系统的设计和思想。如果不是很了解机器学习系统的设计,可以看下知乎上关于这个问题的回答:相比AI算法研究,计算机系统研究没落了吗?以下是本原创 2020-07-14 22:55:58 · 583 阅读 · 0 评论 -
Openvino初探(附实际体验)
关于本文章的最新更新请查看:oldpan博客趁着临近毕业之前再贡献一波热度吧!本篇文章主要内容为在使用OpenVino时的一些注意点,方便带大家快速入门。OpenVino相比TVM和libtorch在intelx86的CPU端还是有很大优势的,可以说在X86上推断速度没有什么框架可以媲美OpenVino。实际测试中OpenVino确实出乎了我的意料,值得尝试。另外,Intel也在大力发展OpenVino(从跟新频率可以看出来),也有一些相关的活动和比赛可以参与试试。看到右下角的计算棒了么(感谢提供此图原创 2020-07-14 22:50:21 · 3231 阅读 · 4 评论 -
利用Pytorch的C++前端(libtorch)读取预训练权重并进行预测
关于本文章的最新更新请查看:oldpan博客看起来明天(2018-12-7)会发布Pytorch-1.0的稳定版。前言距离发布Pytorch-1.0-Preview版的发布已经有两个多月,Pytorch-1.0最瞩目的功能就是生产的大力支持,推出了C++版本的生态端(FB之前已经在Detectron进行了实验),包括C++前端和C++模型编译工具。对于我们来说,之后如果想要部署深度学习应用...原创 2018-12-17 21:43:29 · 14072 阅读 · 13 评论 -
浅谈深度学习中超参数调整策略
欢迎访问Oldpan博客,分享人工智能有趣消息,持续酝酿深度学习质量文。前言深度学习中,设计模型以及保证模型的正确性是首要需要考虑的。当模型设置完成时,理论上模型不存在问题,实现效果也通过计算可以复现出来。一切准备就绪后,那么接下来需要操作的就是——调参了。正文为什么很多人都称深度学习为炼丹?为什么丹药那么难炼?为什么为什么,因为炼丹的调料放多少不知道啊?得一个一个去...原创 2018-10-21 20:35:59 · 2124 阅读 · 0 评论 -
C231n-KNN-assignment1-完全代码及注释
以下内容为C231n-assignment1-KNN的代码 作业网址:http://cs231n.github.io/assignments2017/assignment1/ Q1: k-Nearest Neighbor classifier (20 points) The IPython Notebook knn.ipynb will walk you through implemen原创 2017-10-26 22:10:20 · 1773 阅读 · 0 评论 -
解密Deepfake(深度换脸)-基于自编码器的(Pytorch代码)
前言还记得在2018月3月份火爆reddit的deepfake吗?将视频中的头换成另一个人的头像,虽然可能有些粗糙和模糊,但是在分辨率不要求很高的情况下可以达到以假乱真的效果。举个栗子,如下图中将希拉里换成特朗普的一段演讲视频。另外还有实现川普和尼古拉脸相换:当然这只是DeepFake的冰山一角,Deepfake当初火起来的原因可以说是广大拥有宅男心态的程序员们一起奋斗的结果。那就是,...原创 2019-01-23 09:04:14 · 7958 阅读 · 1 评论 -
利用TensorRT对深度学习进行加速
关于本文章的最新更新请查看:oldpan博客前言TensorRT是什么,TensorRT是英伟达公司出品的高性能的推断C++库,专门应用于边缘设备的推断,TensorRT可以将我们训练好的模型分解再进行融合,融合后的模型具有高度的集合度。例如卷积层和激活层进行融合后,计算速度可以就进行提升。当然,TensorRT远远不止这个:我们平时所见到了深度学习落地技术:模型量化、动态内存优化以及其他...原创 2019-01-23 09:08:22 · 14925 阅读 · 3 评论 -
Pytorch的C++端(libtorch)在Windows中的使用
关于本文章的最新更新请查看:oldpan博客前言填一个之前的坑啊,本篇的姊妹篇——利用Pytorch的C++前端(libtorch)读取预训练权重并进行预测 这篇文章中已经说明了如何在Ubuntu系统中使用libtorch做预测,当初也有朋友问我如何在Windows之下尝试使用libtorch,当时因为时间关系没有去看,后来就给忘了…现在有时间了当然要尝试一下~当然先说结论哈,其实在Wind...原创 2019-01-23 09:10:00 · 10012 阅读 · 8 评论 -
利用TensorRT实现神经网络提速(读取ONNX模型并运行)
关于本文章的最新更新请查看:oldpan博客前言这篇文章接着上一篇继续讲解如何具体使用TensorRT。在之前已经写到过一篇去介绍什么是TensorRT:利用TensorRT对深度学习进行加速,这篇文章中大概已经基本讨论了TensorRT究竟是个什么东西以及怎么使用它。而在这篇文章中我们主要介绍如何使用它在我们的实际任务中进行加速。在我这里的实验结论表明,在FP32的精度下,使用Tens...原创 2019-01-23 09:11:50 · 20116 阅读 · 8 评论 -
想啥时候用的GPU服务器:Kaggle中kernels的快速入门指南
关于本文章的最新更新请查看:oldpan博客前言对于很多入门深度学习领域的小伙伴来说啊,拥有一款合适的显卡是必要的,只有拥有好的装备才能更好更快地进行神经网络的训练、调试网络结构、改善我们的代码,进而更快地产出结果。也就是说,显卡可以代表生产力,显卡越好,生产力越强。程序训练的速度越快,我们也就可以更方便地看到结果从而进行下一步。大家可以回顾一下我在之前发布的几篇关于显卡的文章:更...原创 2019-03-27 18:22:52 · 6019 阅读 · 0 评论 -
理解深度学习:与神经网络相似的网络-自编码器(上)
欢迎访问Oldpan博客,分享人工智能有趣消息,持续酝酿深度学习质量文。自编码器是什么,自编码器是个神奇的东西,可以提取数据中的深层次的特征。例如我们输入图像,自编码器可以将这个图像上“人脸”的特征进行提取(编码过程),这个特征就保存为自编码器的潜变量,例如这张人脸的肤色以及头发颜色,自编码器在提取出这些特征之后还可以通过这些特征还原我们的原始数据。这个过程称作“解码”。前言本...原创 2018-10-21 20:31:59 · 5687 阅读 · 3 评论 -
浅谈深度学习落地问题
欢迎访问Oldpan博客,分享人工智能有趣消息,持续酝酿深度学习质量文。前言深度学习不不仅仅是理论创新,更重要的是应用于工程实际。关于深度学习人工智能落地,已经有有很多的解决方案,不论是电脑端、手机端还是嵌入式端,将已经训练好的神经网络权重在各个平台跑起来,应用起来才是最实在的。(caffe2-ios:https://github.com/KleinYuan/Caffe2-...原创 2018-10-21 20:27:03 · 2348 阅读 · 0 评论 -
利用pytorch实现Visualising Image Classification Models and Saliency Maps
素材来源自cs231n-assignment3-NetworkVisualizationsaliency mapsaliency map即特征图,可以告诉我们图像中的像素点对图像分类结果的影响。计算它的时候首先要计算与图像像素对应的正确分类中的标准化分数的梯度(这是一个标量)。如果图像的形状是(3, H, W),这个梯度的形状也是(3, H, W);对于图像中的每个像素点,这个梯度告诉我们当像素点原创 2017-11-29 17:40:35 · 5633 阅读 · 1 评论 -
利用pytorch实现Fooling Images(添加特定噪声到原始图像,使神经网络误识别)
It suggests that it is the space, rather than the individual units, that contains the semantic information in the high layers of neural networks. 在深层的神经网络中,真正影响特征信息的,不是个体单元,而是空间信息。 we find that原创 2017-11-30 11:22:15 · 7183 阅读 · 0 评论 -
对pytroch中torch.autograd.backward的思考
反向传递法则是深度学习中最为重要的一部分,torch中的backward可以对计算图中的梯度进行计算和累积这里通过一段程序来演示基本的backward操作以及需要注意的地方>>> import torch>>> from torch.autograd import Variable>>> x = Variable(torch.ones(2,2), requires_grad=True)>>>原创 2017-11-29 16:31:37 · 3940 阅读 · 0 评论 -
linux、windows下查看NVIDIA显卡显存使用率
做深度学习时,查看当前任务的使用率可以有效地进行实验在linux中,命令行输入nvidia-smi指令即可看到当前nvidia显卡的使用情况在window中,同样也是nvidia-smi.exe的命令 在C:\Program Files\NVIDIA Corporation\NVSMI目录中,找到nvidia-smi.exe,将其拖入cmd命令行中即可查到使用情况:原创 2017-11-20 17:06:20 · 20347 阅读 · 0 评论 -
【转】CNN卷积神经网络_ GoogLeNet 之 Inception(V1-V4)
http://blog.csdn.net/diamonjoy_zone/article/details/70576775参考:1. Inception[V1]: Going Deeper with Convolutions2. Inception[V2]: Batch Normalization: Accelerating Deep Network Training转载 2017-11-20 16:15:55 · 1222 阅读 · 0 评论 -
ubuntu16.04下安装NVIDIA(cuda)-gtx965m相关步骤以及问题
ubunt版本:16.04 笔记本:机械革命,i7-6700,gtx965m(集显Intel Hm170 ) 安装NVIDIA以及cuda来测试深度学习之前安装ubuntu前对grub文件进行了修改才进行了安装,现在进入系统安装完nvidia后记得将其改回来。禁用nouveau驱动Ubuntu系统集成的显卡驱动程序是nouveau,如果刚装好ubuntu16.04,系统输入密码无法进入桌面,无限原创 2017-11-05 18:25:00 · 2963 阅读 · 0 评论 -
深度学习必备:通过VNC连接ubuntu(linux)工作站
说到深度学习,配置搭建环境是最重要的,一些深度学习库的搭建和尝试是必须的。比如pytorch、TensorFlow等优秀的深度框架在linux下可以很好的运行,这里通过使用两台电脑(一台win10、一台ubuntu)来进行深度学习环境的搭建。此篇讲解如果通过VNC实现win10电脑操控(ubuntu)linux电脑,只需一个键盘一个鼠标就可以操控两个电脑,实现高效率工作。必需品: 两台电脑、一根原创 2017-11-04 19:55:19 · 8763 阅读 · 0 评论