当前位置: 首页 > news >正文

FreeTex v0.3.0:支持静默运行/软件体积压缩

概述

FreeTex 在经过用户反馈后,又进行一轮小更新,现发布v0.3.0版本,主要有两点更新:

  • 静默运行

  • 体积压缩

FreeTex开源地址:https://github.com/zstar1003/FreeTex

下载地址

此版本仅适合windows_x86_64用户,并未做功能更新,无需强制下载。

百度网盘:https://pan.baidu.com/s/1MupcVrl4epva1UP-bSWovg?pwd=8888 (提取码: 8888)

夸克网盘:https://pan.quark.cn/s/830c4ec3d61d

静默运行

在上版本中,有用户反馈:不小心“手痒”关闭软件,再次启动又需要等待几秒中加载模型,导致工作思路中断。

因此,在此版本,调整了软件的关闭逻辑。

在关闭软件窗口后,软件仍会自动最小化到托盘,保持静默运行状态,双击软件图标可重新打开,无需再次等待模型加载。

托盘运行图标

体积压缩

v0.2.0版本下载文件体积为1.07GB,为进一步压缩体积,做了以下两个优化操作。

1. 模型精度转换

之前使用的unimernet_small模型精度是fp32,一般正常模型做推理时,fp16就足够使用,精度不会损失很多。

使用fp16模型识别结果

因此,使用以下脚本,将模型精度从fp32转换成fp16。

import torch
import osdef convert_to_fp16(state_dict: dict) -> dict:"""将 state_dict 中所有 float32 张量转换为 float16"""return {k: v.half() if isinstance(v, torch.Tensor) and v.dtype == torch.float32 else vfor k, v in state_dict.items()}def convert_pth_to_fp16_keep_structure(input_path, output_path=None):print(f"加载模型文件: {input_path}")data = torch.load(input_path, map_location="cpu")if "model" in data:data["model"] = convert_to_fp16(data["model"])elif "state_dict" in data:data["state_dict"] = convert_to_fp16(data["state_dict"])else:data = convert_to_fp16(data)if output_path is None:base, _ = os.path.splitext(input_path)output_path = base + ".fp16.pth"torch.save(data, output_path)print(f"已保存 fp16 模型: {output_path}")if __name__ == "__main__":convert_pth_to_fp16_keep_structure("models/unimernet_small/unimernet_small.pth")

转换后,模型体积显著减小,从772MB降低至386MB

2. 安装包压缩

v0.2.0版本提供的是软件本体的zip形式压缩包,将软件从1.76GB压缩至1.07GB

实践证实,使用Inno将软件打成安装包后,体积压缩会更为明显,从1.38GB压缩至603.75MB

此外,由于某些依赖并不支持中文路径,因此,在安装到含中文路径下时,会出现无法启动的情况,在使用安装包选择安装路径时,需要注意该点。

总结

FreeTexv0.3.0做了后台静默运行优化和软件体积优化,下载文件体积从1.07GB优化至603.75MB

致谢

感谢 @windy 对此软件添加的静默运行功能。(PR#16)

http://www.xdnf.cn/news/517573.html

相关文章:

  • LLM笔记(八)Transformer学习
  • 2025年- H29-Lc137- 19.删除链表的倒数第N个节点(快慢指针)---java版
  • WebSocket解决方案的一些细节阐述
  • 国内人工智能行业研究报告 目录
  • 三相逆变器下垂均流控制策略simulink仿真
  • 通过觅思文档项目实现Obsidian文章浏览器在线访问
  • 基于OpenCV的实时文档扫描与矫正技术
  • Embedding 模型详解:架构、训练与 LLM 的区别
  • Opik: 评估、测试和监控 LLM 应用
  • 进程相关概念总结
  • Windows系统各版本环境变量
  • # 08_Elastic Stack 从入门到实践(八)---2
  • 关于文件分片的介绍和应用
  • Linux基础第三天
  • 例举3种强制类型转换和2种隐式
  • |从零开始的Pyside2界面编程| 环境搭建以及第一个ui界面
  • 系统思考:IT企业项目困境分析
  • 基于Java+MySQL+Servlet的留言系统开发全解析
  • 电子电路:怎么理解电子在导体中的热运动?
  • C++数组详解:一维和多维数组的定义、初始化、访问与遍历
  • 算法优化——以“LCR 080. 组合”为例
  • React Native打包报错: Task :react-native-picker:verifyReleaseResources FAILE
  • IIS入门指南:原理、部署与实战
  • 电动车仪表上的数字怎么来的,想知道吗?
  • leetcode3546. 等和矩阵分割 I- medium
  • uniapp中的easycom工作机制
  • Flask快速入门和问答项目源码
  • ​在 ASP.NET 中,HTTP 处理程序(HttpHandler)是处理 HTTP 请求的核心组件​
  • 【Bluedroid】蓝牙HID DEVICE 报告发送与电源管理源码解析
  • Python 中 if 和 else 基础知识的详解和使用