边缘检测——PidiNet网络训练自己数据集并优化推理测试(详细图文教程)
PiDiNet 是一种用于边缘检测的算法,它提出了一种简单、轻量级但有效的架构。PiDiNet 采用了新
颖的像素差卷积,将传统的边缘检测算子集成到现代 CNN 中流行的卷积运算中,以增强任务性能。
在 BSDS500、NYUD 和 Multicue 上进行了大量的实验,以证明其有效性、高训练和推理效率。
目录
- 一、源码包
- 二、数据集准备
- 三、训练
- 3.1 训练和测试命令
- 3.1 模型保存
- 四、测试
- 4.1 测试结果
- 4.1.1 测试场景1
- 4.1.2 测试场景2
- 4.1.3 测试场景3
- 4.2 检测边缘与原图融合
- 4.2.1 融合代码
- 4.2.2 融合结果展示
- 4.2.1 场景1
- 4.2.2 场景2
- 五、模型优化
- 5.1 修改通道数和空洞率
- 5.2 裁剪卷积层
- 六、推理速度
- 总结
一、源码包
我自己在官网源码包的基础上改过一些代码,我提供的源码包中新增了网络裁剪优化,CPU推理测试代码,边缘检测图与原图融合等代码,也包含了训练集,推荐学者下载我提供的源码包使用。
官网地址:PidiNet
我提供的源码包下载链接:网盘链接,提取码:kmxb
论文地址:论文
我提供的源码包解压后的样子如下:

二、数据集准备
增强的数据集有BSD 500、PASCAL VOC和NYUD,下载链接见下,直接将链接复制到迅雷里面下载,速度很快。在我提供的源码包中有BSD 500数据集,位于目录pidinet\path\to中,如下:

有自己制作好数据集的,直接导入使用。
BSD 500数据集下载链接: http://mftp.mmcheng.net/liuyun/rcf/data/HED-BSDS.tar.gz
PASCAL VOC数据集下载链接: http://mftp.mmcheng.net/liuyun/rcf/data/PASCAL.tar.gz
NYUD数据集下载链接 http://mftp.mmcheng.net/liuyun/rcf/data/NYUD.tar.gz

三、训练
有多种可以选择,官网提供的如下:

其中效果最好的是table7_pidinet,最轻量化的是table5_pidinet-tiny-l,学者根据自己需求选择模型大小,上图像的各个模型权重文件在源码包中trained_models文件夹下,可以直接用这些权重文件测试。

3.1 训练和测试命令
下面是各个模型对应的训练和测试命令:
############### Table 5, Baseline
# train, or generate maps without conversion (uncomment the --evaluate)
python main.py --model pidinet --config baseline --sa --dil --resume --iter-size 24 -j 4 --gpu 0 --epochs 20 --lr 0.005 --lr-type multistep --lr-steps 10-16 --wd 1e-4 --savedir /path/to/table5_baseline --datadir /path/to/BSDS500 --dataset BSDS #--evaluate /path/to/table5_baseline.pth# generate maps (no need to convert because baseline is already a vanilla cnn)
python main.py --model pidinet --config baseline --sa --dil -j 4 --gpu 0 --savedir /path/to/table5_baseline --datadir /path/to/BSDS500 --dataset BSDS --evaluate /path/to/table5_baseline.pth# 101 FPS
python throughput.py --model pidinet --config baseline --sa --dil -j 1 --gpu 0 --datadir /path/to/BSDS500 --dataset BSDS############### Table 5, PiDiNet
# train, or generate maps without conversion (uncomment the --evaluate)
python main.py --model pidinet --config carv4 --sa --dil --resume --iter-size 24 -j 4 --gpu 0 --epochs 20 --lr 0.005 --lr-type multistep --lr-steps 10-16 --wd 1e-4 --savedir /path/to/table5_pidinet --datadir /path/to/BSDS500 --dataset BSDS #--evaluate /path/to/table5_pidinet.pth# generate maps with converted pidinet
python main.py --model pidinet_converted --config carv4 --sa --dil -j 4 --gpu 0 --savedir /path/to/table5_pidinet --datadir /path/to/BSDS500 --dataset BSDS --evaluate /path/to/table5_pidinet.pth --evaluate-converted# 96 FPS
python throughput.py --model pidinet_converted --config carv4 --sa --dil -j 1 --gpu 0 --datadir /path/to/BSDS500 --dataset BSDS############### Table 5, PiDiNet-L
# train, or generate maps without conversion (uncomment the --evaluate)
python main.py --model pidinet --config carv4 --resume --iter-size 24 -j 4 --gpu 0 --epochs 20 --lr 0.005 --lr-type multistep --lr-steps 10-16 --wd 1e-4 --savedir /path/to/table5_pidinet-l --datadir /path/to/BSDS500 --dataset BSDS #--evaluate /path/to/table5_pidinet-l.pth# generate maps with converted pidinet
python main.py --model pidinet_converted --config carv4 -j 4 --gpu 0 --savedir /path/to/table5_pidinet-l --datadir /path/to/BSDS500 --dataset BSDS --evaluate /path/to/table5_pidinet-l.pth --evaluate-converted# 135 FPS
python throughput.py --model pidinet_converted --config carv4 -j 1 --gpu 0 --datadir /path/to/BSDS500 --dataset BSDS############### Table 5, PiDiNet-small
# train, or generate maps without conversion (uncomment the --evaluate)
python main.py --model pidinet_small --config carv4 --sa --dil --resume --iter-size 24 -j 4 --gpu 0 --epochs 20 --lr 0.005 --lr-type multistep --lr-steps 10-16 --wd 1e-4 --savedir /path/to/table5_pidinet-small --datadir /path/to/BSDS500 --dataset BSDS #--evaluate /path/to/table5_pidinet-small.pth# generate maps with converted pidinet
python main.py --model pidinet_small_converted --config carv4 --sa --dil -j 4 --gpu 0 --savedir /path/to/table5_pidinet-small --datadir /path/to/BSDS500 --dataset BSDS --evaluate /path/to/table5_pidinet-small.pth --evaluate-converted# 161 FPS
python throughput.py --model pidinet_small_converted --sa --dil --config carv4 -j 1 --gpu 0 --datadir /path/to/BSDS500 --dataset BSDS############### Table 5, PiDiNet-small-l
# train, or generate maps without conversion (uncomment the --evaluate)
python main.py --model pidinet_small --config carv4 --resume --iter-size 24 -j 4 --gpu 0 --epochs 20 --lr 0.005 --lr-type multistep --lr-steps 10-16 --wd 1e-4 --savedir /path/to/table5_pidinet-small-l --datadir /path/to/BSDS500 --dataset BSDS #--evaluate /path/to/table5_pidinet-small-l.pth# generate maps with converted pidinet
python main.py --model pidinet_small_converted --config carv4 -j 4 --gpu 0 --savedir /path/to/table5_pidinet-small-l --datadir /path/to/BSDS500 --dataset BSDS --evaluate /path/to/table5_pidinet-small-l.pth --evaluate-converted# 225 FPS
python throughput.py --model pidinet_small_converted --config carv4 -j 2 --gpu 0 --datadir /path/to/BSDS500 --dataset BSDS############### Table 5, PiDiNet-tiny
# train, or generate maps without conversion (uncomment the --evaluate)
python main.py --model pidinet_tiny --config carv4 --sa --dil --resume --iter-size 24 -j 4 --gpu 0 --epochs 20 --lr 0.005 --lr-type multistep --lr-steps 10-16 --wd 1e-4 --savedir /path/to/table5_pidinet-tiny --datadir /path/to/BSDS500 --dataset BSDS #--evaluate /path/to/table5_pidinet-tiny.pth# generate maps with converted pidinet
python main.py --model pidinet_tiny_converted --config carv4 --sa --dil -j 4 --gpu 0 --savedir /path/to/table5_pidinet-tiny --datadir /path/to/BSDS500 --dataset BSDS --evaluate /path/to/table5_pidinet-tiny.pth --evaluate-converted# 182 FPS
python throughput.py --model pidinet_tiny_converted --sa --dil --config carv4 -j 2 --gpu 0 --datadir /path/to/BSDS500 --dataset BSDS############### Table 5, PiDiNet-tiny-l
# train, or generate maps without conversion (uncomment the --evaluate)
python main.py --model pidinet_tiny --config carv4 --resume --iter-size 24 -j 4 --gpu 0 --epochs 20 --lr 0.005 --lr-type multistep --lr-steps 10-16 --wd 1e-4 --savedir /path/to/table5_pidinet-tiny-l --datadir /path/to/BSDS500 --dataset BSDS #--evaluate /path/to/table5_pidinet-tiny-l.pth# generate maps with converted pidinet
python main.py --model pidinet_tiny_converted --config carv4 -j 4 --gpu 0 --savedir /path/to/table5_pidinet-tiny-l --datadir /path/to/BSDS500 --dataset BSDS --evaluate /path/to/table5_pidinet-tiny-l.pth --evaluate-converted# 253 FPS
python throughput.py --model pidinet_tiny_converted --config carv4 -j 2 --gpu 0 --datadir /path/to/BSDS500 --dataset BSDS############### Table 6, PiDiNet
# train, or generate maps without conversion (uncomment the --evaluate)
python main.py --model pidinet --config carv4 --sa --dil --resume --iter-size 24 -j 4 --gpu 0 --epochs 14 --lr 0.005 --lr-type multistep --lr-steps 8-12 --wd 1e-4 --savedir /path/to/table6_pidinet --datadir /path/to/NYUD --dataset NYUD-image --lmbda 1.3 #--evaluate /path/to/table6_pidinet.pth# generate maps with converted pidinet
python main.py --model pidinet_converted --config carv4 --sa --dil -j 4 --gpu 0 --savedir /path/to/table6_pidinet --datadir /path/to/NYUD --dataset NYUD-image --lmbda 1.3 --evaluate /path/to/table6_pidinet.pth --evaluate-converted# 66 FPS
python throughput.py --model pidinet_converted --sa --dil --config carv4 -j 1 --gpu 0 --datadir /path/to/NYUD --dataset NYUD-image############### Table 7, PiDiNet
# train, or generate maps without conversion (uncomment the --evaluate)
python main.py --model pidinet --config carv4 --sa --dil --resume --iter-size 24 -j 4 --gpu 0 --epochs 14 --lr 0.005 --lr-type multistep --lr-steps 8-12 --wd 1e-4 --savedir /path/to/table7_pidinet --datadir /path/to/Multicue/multicue_v2 --dataset Multicue-boundary-1 #--evaluate /path/to/table7_pidinet.pth# generate maps with converted pidinet
python main.py --model pidinet_converted --config carv4 --sa --dil -j 4 --gpu 0 --savedir /path/to/table7_pidinet --datadir /path/to/Multicue/multicue_v2 --dataset Multicue-boundary-1 --evaluate /path/to/table7_pidinet.pth --evaluate-converted# 17 FPS
python throughput.py --model pidinet_converted --sa --dil --config carv4 -j 1 --gpu 0 --datadir /path/to/Multicue/multicue_v2 --dataset Multicue-boundary-1
各个模型的定义,在代码中的位置如下:

实际训练使用,只需要将修改训练命令中模型保存路径:–savedir;数据集路径:–dataset
具体使用如下,在终端输入命令,下面就是训练过程:

3.1 模型保存
训练好的模型会自动保存指定路径下:

四、测试
各个模型对应的测试命令见上面3.1。
在我提供的源码包中,单独区分了GPU测试脚本和CPU测试脚本,如下:

使
用测试命令时要修改读入测试集的路径:–datadir;保存测试结果的路径:–savedir;训练好的模型权重路径:–evaluate。其它的参数可以根据情况调整。
GPU测试命令例子如下:
python main_GPU.py --model pidinet_converted --config carv4 --sa --dil -j 4 --gpu 0 --savedir ./path/to/savedir_table7_pidinet --datadir ./path/to/custom_images --dataset Custom --evaluate ./trained_models/table5_baseline.pth --evaluate-converted
CPU测试命令例子如下:
python main_CPU.py --model pidinet_tiny_converted_small5 --config carv4 --sa --dil -j 4 --savedir ./results/pidinet_tiny_small5_Crop --datadir ./path/to/custom_images --dataset Custom --evaluate ./path/to/Train_Models/pidinet_tiny_small5_Crop/save_models/checkpoint_008.pth --evaluate-converted
下面是终端中输入命令实际测试的过程:

最终的测试结果会自动保存在–savedir指定的路径中,如下:

4.1 测试结果
4.1.1 测试场景1


4.1.2 测试场景2


4.1.3 测试场景3


4.2 检测边缘与原图融合
融合方法是先单独在Y通道上对原图和边缘图进行叠加融合,最后用融合后的Y通道和原图图的Cr,Cb合并,再转为BGR图像。用这样的融合方法得到的图像比较自然,色彩信息不会丢失。
4.2.1 融合代码
# 此方法可行,在Y通道上将图像的细节融合后再与CrCb色彩通道合并颜色import cv2
import numpy as np# 读取原始图像image = cv2.imread('path/to/DenoiseImages/23.jpg', cv2.IMREAD_COLOR) # 原图image_edge = cv2.imread("results/Table_pidinet_tiny_l/eval_results/imgs_epoch_019/23.png") # 边缘图像# 转YCrCb图像
image_YCrCb = cv2.cvtColor(image,cv2.COLOR_BGR2YCrCb)
image_edge_YCrCb = cv2.cvtColor(image_edge,cv2.COLOR_BGR2YCrCb)# 拆分YCRCb图像各个通道image_y,image_cr,image_cb = cv2.split(image_YCrCb)image_edge_y,image_edge_cr,image_edge_cb = cv2.split(image_edge_YCrCb)# 将边缘图像转换为彩色图像
# edge_image_color = cv2.cvtColor(image_edge, cv2.COLOR_GRAY2BGR)# 将边缘图像叠加到原始图像上
enhanced_image_y = cv2.addWeighted(image_y, 0.9, image_edge_y, 0.1, 0)# 合同通道
fusion_YCrCb = cv2.merge((enhanced_image_y,image_cr,image_cb))# YCrCb转BGR
fusion_BGR = cv2.cvtColor(fusion_YCrCb,cv2.COLOR_YCrCb2BGR)cv2.imwrite("results/DenoiseImages+Table_pidinet_tiny_l/23.bmp",fusion_BGR)# fusion_RGB = cv2.cvtColor(fusion_YCrCb,cv2.COLOR_YCrCb2RGB)# 显示增强后的图像
cv2.imshow("original",image)
cv2.imshow("image_edge",image_edge)
cv2.imshow('image_y',image_y)
cv2.imshow('image_edge_y',image_edge_y)
cv2.imshow('enhanced_image_y',enhanced_image_y)
cv2.imshow('Fusion Image', fusion_BGR)
cv2.waitKey(0)
cv2.destroyAllWindows()
4.2.2 融合结果展示
4.2.1 场景1

4.2.2 场景2

五、模型优化
官网已经提供了多种模型,但是在CPU上还是远远不够,所以我的优化主要是针对速度。
5.1 修改通道数和空洞率
我最小的通道数为5,空洞率为2。其它值也可以设置,检测效果会有影响。

5.2 裁剪卷积层
我裁剪网络结构的部分如下图红框所示,裁剪代码脚本为源码包中的pidinet_Crop.py文件。

对应的源码里面将block_3部分和block_4部分删除,同时forword里面也要对应修改,如下:



通过这种方法能够提升一定速度,但是检测效果差了很多。
六、推理速度
我自己测试的图像分辨率为480*360,电脑处理器:12th Gen Intel® Core™ i7-12700H 2.30 GHz。
官网table7_pidinet模型大小为2.73M。 CPU推理速度:450ms/fps,GPU推理速度:4ms/fps。
官网table5-pidinet-tiny-l模型大小为304K。CPU推理速度:143.6ms/fps,GPU推理速度:2ms/fps。
模型优化,裁剪通道数为5,空洞率为2,模型大小为:178K。 CPU推理速度:81ms/fps。
模型优化,卷积层裁剪部分如下图红框所示,通道数为5,空洞率为2,模型大小为:65.06K。CPU推理速度:72.25ms/fps。
总结
以上就是边缘检测算法PidiNet网络训练自己数据集并优化推理测试的详细图文教程,该网络架构都是采用轻量化的模块集成,确实快,但依然有优化空间,有更深入研究的学者欢迎一起探讨。
总结不易,多多支持,谢谢!
相关文章:
边缘检测——PidiNet网络训练自己数据集并优化推理测试(详细图文教程)
PiDiNet 是一种用于边缘检测的算法,它提出了一种简单、轻量级但有效的架构。PiDiNet 采用了新 颖的像素差卷积,将传统的边缘检测算子集成到现代 CNN 中流行的卷积运算中,以增强任务性能。 在 BSDS500、NYUD 和 Multicue 上进行了大量的实验…...
SpringBoot整合Mybatis遇到的常见问题及解决方案
大家好,我是升仔 一、背景 SpringBoot与Mybatis的整合是Java开发中常见的实践,用于简化数据库操作。然而,在整合过程中,开发者可能会遇到各种问题,影响开发效率和应用性能。 二、具体问题及解决方案 问题࿱…...
【10】ES6:Promise 对象
一、同步和异步 1、JS 是单线程语言 JavaScript 是一门单线程的语言,因此同一个时间只能做一件事情,这意味着所有任务都需要排队,前一个任务执行完,才会执行下一个任务。但是,如果前一个任务的执行时间很长ÿ…...
Hive和Spark生产集群搭建(spark on doris)
1.环境准备 1.1 版本选择 序号bigdata-001bigdata-002bigdata-003bigdata-004bigdata-005MySQL-8.0.31mysqlDataxDataxDataxDataxDataxDataxSpark-3.3.1SparkSparkSparkSparkSparkHive-3.1.3HiveHive 1.2 主要组件官网 hive官网: https://hive.apache.org/ hive…...
VuePress、VuePress-theme-hope 搭建个人博客 1【快速上手】 —— 防止踩坑篇
vuePress官网地址 👉 首页 | VuePress 手动安装 这一章节会帮助你从头搭建一个简单的 VuePress 文档网站。如果你想在一个现有项目中使用 VuePress 管理文档,从步骤 3 开始。 步骤 1: 创建并进入一个新目录 mkdir vuepress-starter cd vuepress-star…...
【PostgreSQL】从零开始:(三十一)数据类型-复合类型
复合类型 复合类型是一种由其他类型组成的类型。它可以是数组、结构体、联合体或指向这些类型的指针。复合类型允许将多个值组合成单个实体,以便更方便地处理和使用。复合类型在C语言中非常常见,用于表示复杂的数据结构和组织数据的方式。 数组是一种由…...
基于鸿蒙OS开发一个前端应用
创建JS工程:做鸿蒙应用开发到底学习些啥? 若首次打开DevEco Studio,请点击Create Project创建工程。如果已经打开了一个工程,请在菜单栏选择File > New > Create Project来创建一个新工程。选择HarmonyOS模板库,…...
PIC单片机项目(7)——基于PIC16F877A的智能灯光设计
1.功能设计 使用PIC16F877A单片机,检测环境关照,当光照比阈值低的时候,开灯。光照阈值可以通过按键进行设置,同时阈值可以保存在EEPROM中,断电不丢失。使用LCD1602进行显示,第一行显示测到的实时光照强度&a…...
Mysql For Navicate (老韩)
Navicate创建数据库 先创建一个数据库;然后在数据库中创建一张表;在表格当中填入相应的属性字段;打开表, 然后填入相应的实例字段; – 使用数据库图形化App和使用指令来进行操作各有各的好处和利弊; 数据库的三层结构(破除MySQL神秘) 所谓安装Mysql数据库, 就是在主机安装一…...
设计模式之-建造者模式通俗易懂理解,以及建造者模式的使用场景和示列代码
系列文章目录 设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式,5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式,每一种模式的概念、使用…...
Redis分布式锁进阶源码分析
Redis分布式锁进阶源码分析 1、如何写一个商品秒杀代码?2、加上Java锁3、使用redis setnx命令获取锁4、增加try和finally5、给锁设置过期时间6、增长过期时间,并setnx增加唯一value7、使用redisson8、源码分析a、RedissonLock.tryLockInnerAsyncb、Redis…...
lag-llama源码解读(Lag-Llama: Towards Foundation Models for Time Series Forecasting)
Lag-Llama: Towards Foundation Models for Time Series Forecasting 文章内容: 时间序列预测任务,单变量预测单变量,基于Llama大模型,在zero-shot场景下模型表现优异。创新点,引入滞后特征作为协变量来进行预测。 获得…...
Three.js基础入门介绍——Three.js学习三【借助控制器操作相机】
在Three.js基础入门介绍——Three.js学习二【极简入门】中介绍了如何搭建Three.js开发环境并实现一个包含旋转立方体的场景示例,以此为前提,本篇将引进一个控制器的概念并使用”轨道控制器”(OrbitControls)来达到从不同方向展示场…...
【日志系列】什么是分布式日志系统?
✔️什么是分布式日志系统? 现在,很多应用都是集群部署的,一次请求会因为负载均衡而被路由到不同的服务器上面,这就导致一个应用的日志会分散在不同的服务器上面。 当我们要向通过日志做数据分析,问题排查的时候&#…...
[卷积神经网络]FCOS--仅使用卷积的Anchor Free目标检测
项目源码: FCOShttps://github.com/tianzhi0549/FCOS/ 一、概述 作为一种Anchor Free的目标检测网络,FCOS并不依赖锚框,这点类似于YOLOx和CenterNet,但CenterNet的思路是寻找目标的中心点,而FCOS则是寻找每个像素点&…...
Ubuntu fcitx Install
ubuntu经常出现键盘失灵的问题 查询资料得知应该是Ibus框架的问题 于是需要安装fcitx框架和搜狗拼音 sudo apt update sudo apt install fcitx 设置fcitx开机自启动(建议) sudo cp /usr/share/applications/fcitx.desktop /etc/xdg/autostart/ 然后…...
【Makefile/GNU Make】知识总结
文章目录 1. 总体认识2. 编写Makefile2.1. Makefile的组成2.2. Makefile文件名2.3. 包含其他Makefile 3. 编写规则4. 编写规则中的构建命令5. 如何使用变量6. 条件判断7. 转换文本的函数8. 如何运行make9. 使用模糊规则10. 使用make来更新存档文件11. 扩展GNU make12. 集成GNU …...
腾讯云轻量服务器和云服务器CVM该怎么选?区别一览
腾讯云轻量服务器和云服务器CVM该怎么选?不差钱选云服务器CVM,追求性价比选择轻量应用服务器,轻量真优惠呀,活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三…...
MySQL定时备份实现
一、备份数据库 –all-databases 备份所有数据库 /opt/mysqlcopy/all_$(date “%Y-%m-%d %H:%M:%S”).sql 备份地址 docker exec -it 容器名称 sh -c "mysqldump -u root -ppassword --all-databases > /opt/mysqlcopy/all_$(date "%Y-%m-%d %H:%M:%S").sq…...
Nginx 不同源Https请求Http 报strict-origin-when-cross-origin
原因: nginx代理配置url指向只开放了/* 而我/*/*多了一层路径 成功:...
TrackingNet评估实战:从注册到结果解析
1. TrackingNet评估平台入门指南 第一次接触TrackingNet这个目标跟踪领域的权威评估平台时,我和大多数研究者一样有点懵。这个平台不像GitHub那样有直观的界面,操作流程也相对复杂。不过别担心,跟着我的实战经验走,保证你能少踩8…...
OneAPI安全增强指南:令牌过期策略、兑换码批量发放、用户邀请奖励机制详解
OneAPI安全增强指南:令牌过期策略、兑换码批量发放、用户邀请奖励机制详解 1. 引言:为什么你需要一个统一的大模型网关? 如果你正在使用或者管理多个大模型服务,比如 OpenAI 的 ChatGPT、百度的文心一言、阿里的通义千问&#x…...
AgentCPM-Report研报系统实操:Pixel Epic贤者响应延迟优化教程
AgentCPM-Report研报系统实操:Pixel Epic贤者响应延迟优化教程 1. 认识Pixel Epic智识终端 Pixel Epic是一款基于AgentCPM-Report大模型构建的创新研究报告辅助系统。与传统AI工具不同,它将枯燥的科研过程转化为一场像素风格的RPG冒险。在这个系统中&a…...
LFM2.5-1.2B-Thinking-GGUF开源生态初探:与Ollama等工具的对比与集成
LFM2.5-1.2B-Thinking-GGUF开源生态初探:与Ollama等工具的对比与集成 1. 开源大模型本地部署生态概览 近年来,开源大模型本地部署工具呈现百花齐放的局面。从早期的单一模型加载器,发展到如今功能丰富的模型管理生态系统,开发者…...
Phi-4-mini-reasoning应对软件测试:自动生成测试用例与缺陷分析
Phi-4-mini-reasoning应对软件测试:自动生成测试用例与缺陷分析 1. 引言:软件测试的痛点与AI解决方案 在软件开发的生命周期中,测试环节往往占据30%-50%的项目时间。传统测试工作面临两大核心挑战:一是测试用例设计需要大量人工…...
DAMO-YOLO实战:搭建教育科研AI视觉实验平台
DAMO-YOLO实战:搭建教育科研AI视觉实验平台 1. 教育科研中的AI视觉需求 在教育科研领域,视觉AI技术正成为重要的研究工具。传统计算机视觉实验平台往往面临部署复杂、性能有限、交互体验差等问题。DAMO-YOLO智能视觉探测系统为解决这些问题提供了创新方…...
OpenCode应用案例:搭建企业内部代码审查助手,提升开发效率
OpenCode应用案例:搭建企业内部代码审查助手,提升开发效率 1. 项目背景与痛点分析 在软件开发团队中,代码审查是保证代码质量的关键环节。然而传统人工审查方式面临诸多挑战: 时间成本高:资深工程师需要花费大量时间…...
Phi-3-mini-4k-instruct-gguf应用案例:HR招聘话术生成、产品FAQ自动整理、日报模板填充
Phi-3-mini-4k-instruct-gguf应用案例:HR招聘话术生成、产品FAQ自动整理、日报模板填充 1. 模型简介 Phi-3-mini-4k-instruct-gguf是微软推出的轻量级文本生成模型,特别适合处理问答、文本改写和内容整理等任务。这个GGUF版本的模型经过优化࿰…...
RWKV7-1.5B-g1a效果展示:‘请用一句中文介绍你自己’真实响应
RWKV7-1.5B-g1a效果展示:请用一句中文介绍你自己真实响应 1. 模型简介 rwkv7-1.5B-g1a 是基于新一代 RWKV-7 架构开发的多语言文本生成模型,特别适合中文场景下的轻量级对话和文本生成任务。这个1.5B参数的版本在保持响应速度的同时,提供了…...
cv_unet_image-colorization音乐史料处理:黑白乐谱AI上色与音符语义关联增强
cv_unet_image-colorization音乐史料处理:黑白乐谱AI上色与音符语义关联增强 1. 引言:当黑白乐谱遇见AI色彩 想象一下,你是一位音乐史研究者,面前摊开一本泛黄的、只有黑白线条的19世纪乐谱手稿。那些音符、标记、作曲家的笔迹&…...
