Python中如何制作用于神经网络和计算机视觉的可视化工具,十分钟开始训练神经网络,求些意见~
我本身是做机器学习的,和团队一起在过去两年多里服务过机场电网无人机医院等一堆行业。然后感觉每次找新需求都要从 demo 开始做太烦了,就写了个工具 TeguCV 用来快速训练神经网络,然后一些常见的计算机视觉需求可以直接调用。用了一段之后感觉还可以,而且除了我们之外其他人也应该都可以用上。就公开了免费下载,发到 V2EX 上面想求些意见!好指导我们下一步如何更新。 TeguCV 目前已经支持:图像识别、视频分类、人脸比对和车牌识别。配置需要 Win 10,英伟达显卡加最新驱动。Win 7 和 Server 应该也可以,但我们测试的不多。 免费下载链接:
https://tegu-1257137322.cos.ap-beijing.myqcloud.com/1017/TeguCV%20GUI%201.15%20LTS.zip
因为我们更新比较快,所以现在版本需要每个月更新一次。这个软件现在还属于从零到一的阶段,比如有个问题就是请务必把文件放在纯英文目录里面!
用图像识别举个例子,比如我们想识别无人机航拍的车辆。 如果你已经下载完成 TeguCV,在 TeguCV GUI 1.15/Dataset/CarDataset 这个文件夹目录里,我们可以看到不少照片。这都是用无人机在长春航拍所得。我们今天的目标就是利用神经网络把里面的车识别出来。
在安装文件夹中找到 Tegu.exe 。
BTW,这个软件现在最大的缺点就是卡,点击各个功能之后请多等一会。点一次就行。
选择图像识别 Image Detection,新建项目并且填写必要的信息(项目名称和保存路径)就可以开始了!
打开之后,你会看到一个充满参数的界面。左面是参数调整,右边是日志输出。别怕,你看完这篇文章就能学会全部参数的含义。
首先要选择我们这次准备训练用的数据。在「 Data Root 」选择数据存放的地址:TeguCV GUI 1.15/Dataset/CarDataset/trainset 里面是我们的训练用数据集,双击打开后选择这个文件夹就可以。
然后是「 Serval Path 」,是标注文件的路径。因为我们单纯给电脑图片是没用的,还需要告诉电脑图片里有什么。.serval 是 TeguCV 专用的标注文件格式。在 TeguCV GUI 1.15/Dataset/CarDataset/ 可以看到一个名为 car.serval 的文件,选择它。
「 Model Save Path 」是模型保存的地址,咱们上一步新建项目的时候已经给它安排上了。
其实现在我们已经可以开始训练,教电脑如何识别车辆了。但开始之前,我们还有几个地方最好了解一下:
Epoch 是最大训练轮次。就是说你打算让电脑一共学习多久这些数据。就好像读完义务教育要 9 年,但是读完博士可能要 19 年。但也不是说时间越长越好,毕竟博士延毕迟迟出不来也不是啥好事对不?如果你是新手,我建议第一次这里写 100,如果你的电脑不是特别快,写 20 也行。
Learning Rate 是学习率。通俗地说电脑学习的速度。学的太快可能导致学不明白,但学的太慢则有可能一直学不完。调整学习率需要依赖人的经验,这个过程也就是我们所谓的「调参」。TeguCV 拥有自动搜索合适学习率的功能,但这不是这次的重点。我们下次会讲一讲。
Save Epoch 是每多少轮会保存一次。建议 5 或者 10 轮一次。
Visualization When Save 是每次保存模型时,都让电脑顺便挑 20% 的训练数据去识别一下,方便我们看当前的效果。看着识别越来越准是一件很有成就的事情。不过要注意的是,最开始的轮次模型完全不准很正常。可以在保存模型的路径下找到展示效果。
这次我们可以选择 Epoch 为 50 或 100,Learning Rate 0.001 ,每 10 轮保存一次。请务必让全部文件路径都是英文的。
i5 + 1050ti 的话差不多 10s 跑完一轮。到了需要保存那轮会稍微慢一些。
最开始你会看到的效果是一堆框到处乱圈。这都不要紧。蓝色框中是电脑认为是车的位置。多轮训练之后,效果会开始变好。按照我的个人经验,半个小时之内,50 轮左右就不错了。 至此,你也许是第一个,但肯定是过程最简单的一个神经网络模型就训练出来了!
如果你想使用这个模型,可以直接用下面的 Predict 功能。或者比如我们想直接实时识别无人机回传的数据,也可以开启 Server。详细介绍可以在下载包里的说明文档找到。这里也有份在线文档:
https://tegu.gitbook.io/tegucv-cn/
这篇文章也有带图的版本: https://zhuanlan.zhihu.com/p/46884374
Tips:
TeguCV 和其他任何一个深度学习工具一样,需要英伟达 GPU。AMD 和 Intel 的 GPU 都暂时没有支持。
安装和保存路径需要全部为英文路径。
Epoch 等术语并非 TeguCV 独有,而是机器学习届通用术语。
你也可以标注自己的数据集然后给 TeguCV 去训练!不一定单纯是识别这个车。在线和下载文档里都有对标注流程的详细介绍。TeguCV GUI 1.15 LTS/Tegu Image Annotation 中可以找到标注工具 giia。
再发一遍下载链接:
https://tegu-1257137322.cos.ap-beijing.myqcloud.com/1017/TeguCV%20GUI%201.15%20LTS.zip
欢迎各位拍砖~任何意见或建议都可以直接留言,也可以加我绿色通信工具:adamgi
邮件联系我也没问题:adamwang at giai.tech
Python中如何制作用于神经网络和计算机视觉的可视化工具,十分钟开始训练神经网络,求些意见~
要快速搭建神经网络和计算机视觉的可视化训练工具,推荐用Gradio或Streamlit配合PyTorch/TensorFlow。下面是一个用Gradio和PyTorch的完整示例,十分钟内就能跑起来:
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
import gradio as gr
import matplotlib.pyplot as plt
import numpy as np
# 1. 定义简单CNN
class SimpleCNN(nn.Module):
def __init__(self):
super().__init__()
self.conv1 = nn.Conv2d(1, 32, 3, 1)
self.conv2 = nn.Conv2d(32, 64, 3, 1)
self.fc1 = nn.Linear(1600, 128)
self.fc2 = nn.Linear(128, 10)
def forward(self, x):
x = torch.relu(self.conv1(x))
x = torch.max_pool2d(x, 2)
x = torch.relu(self.conv2(x))
x = torch.max_pool2d(x, 2)
x = torch.flatten(x, 1)
x = torch.relu(self.fc1(x))
return self.fc2(x)
# 2. 训练函数(带可视化)
def train_and_visualize(epochs=2, lr=0.01):
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = SimpleCNN().to(device)
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.1307,), (0.3081,))
])
train_data = datasets.MNIST('./data', train=True, download=True, transform=transform)
train_loader = torch.utils.data.DataLoader(train_data, batch_size=64, shuffle=True)
optimizer = optim.Adam(model.parameters(), lr=lr)
criterion = nn.CrossEntropyLoss()
losses = []
for epoch in range(epochs):
model.train()
epoch_loss = 0
for batch_idx, (data, target) in enumerate(train_loader):
data, target = data.to(device), target.to(device)
optimizer.zero_grad()
output = model(data)
loss = criterion(output, target)
loss.backward()
optimizer.step()
epoch_loss += loss.item()
avg_loss = epoch_loss / len(train_loader)
losses.append(avg_loss)
print(f"Epoch {epoch+1}/{epochs}, Loss: {avg_loss:.4f}")
# 可视化损失曲线
fig, ax = plt.subplots(figsize=(8, 4))
ax.plot(range(1, epochs+1), losses, marker='o', linewidth=2)
ax.set_xlabel("Epoch")
ax.set_ylabel("Loss")
ax.set_title("Training Loss Curve")
ax.grid(True)
fig.tight_layout()
return model, fig
# 3. 创建Gradio界面
def create_interface():
with gr.Blocks() as demo:
gr.Markdown("## 神经网络训练可视化工具")
with gr.Row():
epochs = gr.Slider(1, 10, value=2, step=1, label="训练轮数")
lr = gr.Slider(0.001, 0.1, value=0.01, step=0.001, label="学习率")
train_btn = gr.Button("开始训练", variant="primary")
with gr.Row():
loss_plot = gr.Plot(label="损失曲线")
model_output = gr.Textbox(label="训练日志", lines=10)
def train_wrapper(epochs, lr):
model, fig = train_and_visualize(int(epochs), lr)
log = f"训练完成!\n模型结构:{model.__class__.__name__}\n参数量:{sum(p.numel() for p in model.parameters()):,}"
return fig, log
train_btn.click(train_wrapper, inputs=[epochs, lr], outputs=[loss_plot, model_output])
return demo
# 4. 启动应用
if __name__ == "__main__":
demo = create_interface()
demo.launch(server_name="0.0.0.0", server_port=7860)
核心要点:
- 快速原型:用Gradio/Streamlit能快速创建Web界面,实时调整超参数
- 可视化集成:在训练循环中收集损失/准确率数据,用Matplotlib实时绘图
- 数据流:使用MNIST等标准数据集避免数据准备时间
- 轻量模型:用简单CNN快速验证流程
一句话建议: 先用现成框架搭出最小可行产品,再逐步添加高级功能。
是的,我把图片删了。更新了一个知乎专栏链接,里面可以看到图~
https://zhuanlan.zhihu.com/p/46884374
看了下,挺好的,不过我不做图像,提不出啥意见
不知道市面上有没有这种无脑跑模型的软件
可以导出模型吗:D
正在弄这方面的功能
也有,但是好用的不能离线,而且比较贵。
一直想使用高清相机把楼下车位拍出来,自动找空车位,然后微信提供给小区邻居查询,不知道这个可以干不?
那估计得用不少高清相机了吧
我感觉用我们这东西能做,有照片就行
主流框架都有 model zoo 啊…这轮子造的…
挺好的,为啥不支持智能数据预测
用 model zoo 也是要花时间的
对于很多人来说(比如我自己),给客户新电脑配置环境开始就感觉很烦 XD 很多简单工作越简单越好
还没做到这~另外智能数据预测能不能说的更详细一些,是哪类的吗?
估计一个就可以了,主要我正好在停车场正面居中 28 楼,前面是俩排停车位,摄像头得弄个清楚的
1.能实现那种我提供几十万人的检验结果和疾病诊断可以统计病人结果或者预测相关性不?
2.我提供几万张医学图像和某个病灶标记后期遇到类似图像自动诊断出相关疾病
比如提供乳腺癌的标记图片学习,后期其他患者拍了照片让机器自动诊断
「几万张医学图像和某个病灶标记后期遇到类似图像自动诊断出相关疾病」这个理论上可以。不过我做过医学影像识别,医学影像的难点在于图像预处理和过 fda 啥的。
先识别车,然后判断图片相应区域有没有车被识别出来
图像处理一般是黑白的 dicom 文件,转 jpg 后处理下,fda 是什么,这个好像和美国那个食品监测的 fda 没关系吧,是不是患者隐私这些需要通过相关国家审核
就是大数据预测
利用 ai 往大数据方面走
很多大公司,销售行业,把以前的相关资料录进去,之前的结果是什么,然后把现在的资料录进去,看看结果,给老板参考好下决策。
行业那么多,大家数据也多,往这边走会不会路子宽点,视觉类的现在好多。
有一些数据比较麻烦,需要走手续
训练出了找车位小程序求分享啊!
兄弟有兴趣的话咱们加个微信聊聊?看看怎么做停车场这个需求,我微信是 adamgi


