tochvision轻松支持十种图像分类模型迁移学习

原创 OpenCV学堂 2022-10-08 17:50

点击上方蓝字关注我们

微信公众号:OpenCV学堂

关注获取更多计算机视觉与深度学习知识

torchvision分类介绍

Torchvision高版本支持各种SOTA的图像分类模型,同时还支持不同数据集分类模型的预训练模型的切换。使用起来十分方便快捷,Pytroch中支持两种迁移学习方式,分别是:
- Finetune模式基于预训练模型,全链路调优参数- 冻结特征层模式这种方式只修改输出层的参数,CNN部分的参数冻结
上述两种迁移方式,分别适合大量数据跟少量数据,前一种方式计算跟训练时间会比第二种方式要长点,但是针对大量自定义分类数据效果会比较好。

自定义分类模型修改与训练

加载模型之后,feature_extracting 为true表示冻结模式,否则为finetune模式,相关的代码如下:
def set_parameter_requires_grad(model, feature_extracting):     if feature_extracting:         for param in model.parameters():             param.requires_grad = False
以resnet18为例,修改之后的自定义训练代码如下:
model_ft = models.resnet18(pretrained=True)
num_ftrs = model_ft.fc.in_features
# Here the size of each output sample is set to 5.
# Alternatively, it can be generalized to nn.Linear(num_ftrs, len(class_names)).
model_ft.fc = nn.Linear(num_ftrs, 
5)

model_ft = model_ft.to(device)

criterion = nn.CrossEntropyLoss()

# Observe that all parameters are being optimized
optimizer_ft = optim.SGD(model_ft.parameters(), lr=0.001, momentum=0.9)

# Decay LR by a factor of 0.1 every 7 epochs
exp_lr_scheduler = lr_scheduler.StepLR(optimizer_ft, step_size=7, gamma=0.1)

model_ft = train_model(model_ft, criterion, optimizer_ft, exp_lr_scheduler,
                       num_epochs=25)

数据集是flowers-dataset,有五个分类分别是:

daisydandelionrosessunflowerstulips

全链路调优,迁移学习训练CNN部分的权重参数

Epoch 0/24
----------
train Loss: 1.3993 Acc: 0.5597
valid Loss: 1.8571 Acc: 0.7073
Epoch 1/24
----------
train Loss: 1.0903 Acc: 0.6580
valid Loss: 0.6150 Acc: 0.7805
Epoch 2/24
----------
train Loss: 0.9095 Acc: 0.6991
valid Loss: 0.4386 Acc: 0.8049
Epoch 3/24
----------
train Loss: 0.7628 Acc: 0.7349
valid Loss: 0.9111 Acc: 0.7317
Epoch 4/24
----------
train Loss: 0.7107 Acc: 0.7669
valid Loss: 0.4854 Acc: 0.8049
Epoch 5/24
----------
train Loss: 0.6231 Acc: 0.7793
valid Loss: 0.6822 Acc: 0.8049
Epoch 6/24
----------
train Loss: 0.5768 Acc: 0.8033
valid Loss: 0.2748 Acc: 0.8780
Epoch 7/24
----------
train Loss: 0.5448 Acc: 0.8110
valid Loss: 0.4440 Acc: 0.7561
Epoch 8/24
----------
train Loss: 0.5037 Acc: 0.8170
valid Loss: 0.2900 Acc: 0.9268
Epoch 9/24
----------
train Loss: 0.4836 Acc: 0.8360
valid Loss: 0.7108 Acc: 0.7805
Epoch 10/24
----------
train Loss: 0.4663 Acc: 0.8369
valid Loss: 0.5868 Acc: 0.8049
Epoch 11/24
----------
train Loss: 0.4276 Acc: 0.8504
valid Loss: 0.6998 Acc: 0.8293
Epoch 12/24
----------
train Loss: 0.4299 Acc: 0.8529
valid Loss: 0.6449 Acc: 0.8049
Epoch 13/24
----------
train Loss: 0.4256 Acc: 0.8567
valid Loss: 0.7897 Acc: 0.7805
Epoch 14/24
----------
train Loss: 0.4062 Acc: 0.8559
valid Loss: 0.5855 Acc: 0.8293
Epoch 15/24
----------
train Loss: 0.4030 Acc: 0.8545
valid Loss: 0.7336 Acc: 0.7805
Epoch 16/24
----------
train Loss: 0.3786 Acc: 0.8730
valid Loss: 1.0429 Acc: 0.7561
Epoch 17/24
----------
train Loss: 0.3699 Acc: 0.8763
valid Loss: 0.4549 Acc: 0.8293
Epoch 18/24
----------
train Loss: 0.3394 Acc: 0.8788
valid Loss: 0.2828 Acc: 0.9024
Epoch 19/24
----------
train Loss: 0.3300 Acc: 0.8834
valid Loss: 0.6766 Acc: 0.8537
Epoch 20/24
----------
train Loss: 0.3136 Acc: 0.8906
valid Loss: 0.5893 Acc: 0.8537
Epoch 21/24
----------
train Loss: 0.3110 Acc: 0.8901
valid Loss: 0.4909 Acc: 0.8537
Epoch 22/24
----------
train Loss: 0.3141 Acc: 0.8931
valid Loss: 0.3930 Acc: 0.9024
Epoch 23/24
----------
train Loss: 0.3106 Acc: 0.8887
valid Loss: 0.3079 Acc: 0.9024
Epoch 24/24
----------
train Loss: 0.3143 Acc: 0.8923
valid Loss: 0.5122 Acc: 0.8049
Training complete in 2534s
Best val Acc: 0.926829

冻结CNN部分,只训练全连接分类权重

Params to learn:
         fc.weight
         fc.bias
Epoch 0/24
----------
train Loss: 1.0217 Acc: 0.6465
valid Loss: 1.5317 Acc: 0.8049
Epoch 1/24
----------
train Loss: 0.9569 Acc: 0.6947
valid Loss: 1.2450 Acc: 0.6829
Epoch 2/24
----------
train Loss: 1.0280 Acc: 0.6999
valid Loss: 1.5677 Acc: 0.7805
Epoch 3/24
----------
train Loss: 0.8344 Acc: 0.7426
valid Loss: 1.1053 Acc: 0.7317
Epoch 4/24
----------
train Loss: 0.9110 Acc: 0.7250
valid Loss: 1.1148 Acc: 0.7561
Epoch 5/24
----------
train Loss: 0.9049 Acc: 0.7346
valid Loss: 1.1541 Acc: 0.6341
Epoch 6/24
----------
train Loss: 0.8538 Acc: 0.7465
valid Loss: 1.4098 Acc: 0.8293
Epoch 7/24
----------
train Loss: 0.9041 Acc: 0.7349
valid Loss: 0.9604 Acc: 0.7561
Epoch 8/24
----------
train Loss: 0.8885 Acc: 0.7468
valid Loss: 1.2603 Acc: 0.7561
Epoch 9/24
----------
train Loss: 0.9257 Acc: 0.7333
valid Loss: 1.0751 Acc: 0.7561
Epoch 10/24
----------
train Loss: 0.8637 Acc: 0.7492
valid Loss: 0.9748 Acc: 0.7317
Epoch 11/24
----------
train Loss: 0.8686 Acc: 0.7517
valid Loss: 1.0194 Acc: 0.8049
Epoch 12/24
----------
train Loss: 0.8492 Acc: 0.7572
valid Loss: 1.0378 Acc: 0.7317
Epoch 13/24
----------
train Loss: 0.8773 Acc: 0.7432
valid Loss: 0.7224 Acc: 0.8049
Epoch 14/24
----------
train Loss: 0.8919 Acc: 0.7473
valid Loss: 1.3564 Acc: 0.7805
Epoch 15/24
----------
train Loss: 0.8634 Acc: 0.7490
valid Loss: 0.7822 Acc: 0.7805
Epoch 16/24
----------
train Loss: 0.8069 Acc: 0.7644
valid Loss: 1.4132 Acc: 0.7561
Epoch 17/24
----------
train Loss: 0.8589 Acc: 0.7492
valid Loss: 0.9812 Acc: 0.8049
Epoch 18/24
----------
train Loss: 0.7677 Acc: 0.7688
valid Loss: 0.7176 Acc: 0.8293
Epoch 19/24
----------
train Loss: 0.8044 Acc: 0.7514
valid Loss: 1.4486 Acc: 0.7561
Epoch 20/24
----------
train Loss: 0.7916 Acc: 0.7564
valid Loss: 1.0575 Acc: 0.8049
Epoch 21/24
----------
train Loss: 0.7922 Acc: 0.7647
valid Loss: 1.0406 Acc: 0.7805
Epoch 22/24
----------
train Loss: 0.8187 Acc: 0.7647
valid Loss: 1.0965 Acc: 0.7561
Epoch 23/24
----------
train Loss: 0.8443 Acc: 0.7503
valid Loss: 1.6163 Acc: 0.7317
Epoch 24/24
----------
train Loss: 0.8165 Acc: 0.7583
valid Loss: 1.1680 Acc: 0.7561
Training complete in 207s
Best val Acc: 0.829268


测试结果:


零代码训练演示

我已经完成torchvision中分类模型自定义数据集迁移学习的代码封装与开发,支持基于收集到的数据集,零代码训练,生成模型。图示如下:


轻松支持十种主流的CNN模型

self.models_combox.addItem("resnet18")self.models_combox.addItem("resnet34")self.models_combox.addItem("resnet50")self.models_combox.addItem("resnet101")self.models_combox.addItem("inception")self.models_combox.addItem("densenet")self.models_combox.addItem("wide_resnet50")self.models_combox.addItem("wide_resnet101")self.models_combox.addItem("resnext50_32x4d")self.models_combox.addItem("resnext101_32x8d")
扫码获取YOLOv5 TensorRT INT8量化脚本与视频教程

扫码查看OpenCV+OpenVIO+Pytorch系统化学习路线图

 推荐阅读 

CV全栈开发者说 - 从传统算法到深度学习怎么修炼

2022入坑深度学习,我选择Pytorch框架!

Pytorch轻松实现经典视觉任务

教程推荐 | Pytorch框架CV开发-从入门到实战

OpenCV4 C++学习 必备基础语法知识三

OpenCV4 C++学习 必备基础语法知识二

OpenCV4.5.4 人脸检测+五点landmark新功能测试

OpenCV4.5.4人脸识别详解与代码演示

OpenCV二值图象分析之Blob分析找圆

OpenCV4.5.x DNN + YOLOv5 C++推理

OpenCV4.5.4 直接支持YOLOv5 6.1版本模型推理

OpenVINO2021.4+YOLOX目标检测模型部署测试

比YOLOv5还厉害的YOLOX来了,官方支持OpenVINO推理


OpenCV学堂 专注计算机视觉开发技术分享,技术框架使用,包括OpenCV,Tensorflow,Pytorch教程与案例,相关算法详解,最新CV方向论文,硬核代码干货与代码案例详解!作者在CV工程化方面深度耕耘15年,感谢您的关注!
评论 (0)
  • 北京贞光科技有限公司作为紫光同芯产品的官方代理商,为客户提供车规安全芯片的硬件、软件SDK销售及专业技术服务,并且可以安排技术人员现场支持客户的选型和定制需求。在全球汽车电子市场竞争日益激烈的背景下,中国芯片厂商正通过与国际领先企业的深度合作,加速融入全球技术生态体系。近日,紫光同芯与德国HighTec达成的战略合作标志着国产高端车规芯片在国际化道路上迈出了关键一步,为中国汽车电子产业的发展注入了新的活力。全栈技术融合:打造国际化开发平台紫光同芯与HighTec共同宣布,HighTec汽车级编译
    贞光科技 2025-03-31 14:44 124浏览
  • 据先科电子官方信息,其产品包装标签将于2024年5月1日进行全面升级。作为电子元器件行业资讯平台,大鱼芯城为您梳理本次变更的核心内容及影响:一、标签变更核心要点标签整合与环保优化变更前:卷盘、内盒及外箱需分别粘贴2张标签(含独立环保标识)。变更后:环保标识(RoHS/HAF/PbF)整合至单张标签,减少重复贴标流程。标签尺寸调整卷盘/内盒标签:尺寸由5030mm升级至**8040mm**,信息展示更清晰。外箱标签:尺寸统一为8040mm(原7040mm),提升一致性。关键信息新增新增LOT批次编
    大鱼芯城 2025-04-01 15:02 159浏览
  • REACH和RoHS欧盟两项重要的环保法规有什么区别?适用范围有哪些?如何办理?REACH和RoHS是欧盟两项重要的环保法规,主要区别如下:一、核心定义与目标RoHS全称为《关于限制在电子电器设备中使用某些有害成分的指令》,旨在限制电子电器产品中的铅(Pb)、汞(Hg)、镉(Cd)、六价铬(Cr6+)、多溴联苯(PBBs)和多溴二苯醚(PBDEs)共6种物质,通过限制特定材料使用保障健康和环境安全REACH全称为《化学品的注册、评估、授权和限制》,覆盖欧盟市场所有化学品(食品和药品除外),通过登
    张工13144450251 2025-03-31 21:18 117浏览
  •        在“软件定义汽车”的时代浪潮下,车载软件的重要性日益凸显,软件在整车成本中的比重逐步攀升,已成为汽车智能化、网联化、电动化发展的核心驱动力。车载软件的质量直接关系到车辆的安全性、可靠性以及用户体验,因此,构建一套科学、严谨、高效的车载软件研发流程,确保软件质量的稳定性和可控性,已成为行业共识和迫切需求。       作为汽车电子系统领域的杰出企业,经纬恒润深刻理解车载软件研发的复杂性和挑战性,致力于为O
    经纬恒润 2025-03-31 16:48 86浏览
  • 文/郭楚妤编辑/cc孙聪颖‍不久前,中国发展高层论坛 2025 年年会(CDF)刚刚落下帷幕。本次年会围绕 “全面释放发展动能,共促全球经济稳定增长” 这一主题,吸引了全球各界目光,众多重磅嘉宾的出席与发言成为舆论焦点。其中,韩国三星集团会长李在镕时隔两年的访华之行,更是引发广泛热议。一直以来,李在镕给外界的印象是不苟言笑。然而,在论坛开幕前一天,李在镕却意外打破固有形象。3 月 22 日,李在镕与高通公司总裁安蒙一同现身北京小米汽车工厂。小米方面极为重视此次会面,CEO 雷军亲自接待,小米副董
    华尔街科技眼 2025-04-01 19:39 115浏览
  • 在智能交互设备快速发展的今天,语音芯片作为人机交互的核心组件,其性能直接影响用户体验与产品竞争力。WT588F02B-8S语音芯片,凭借其静态功耗<5μA的卓越低功耗特性,成为物联网、智能家居、工业自动化等领域的理想选择,为设备赋予“听得懂、说得清”的智能化能力。一、核心优势:低功耗与高性能的完美结合超低待机功耗WT588F02B-8S在休眠模式下待机电流仅为5μA以下,显著延长了电池供电设备的续航能力。例如,在电子锁、气体检测仪等需长期待机的场景中,用户无需频繁更换电池,降低了维护成本。灵活的
    广州唯创电子 2025-04-02 08:34 72浏览
  • 职场之路并非一帆风顺,从初入职场的新人成长为团队中不可或缺的骨干,背后需要经历一系列内在的蜕变。许多人误以为只需努力工作便能顺利晋升,其实核心在于思维方式的更新。走出舒适区、打破旧有框架,正是让自己与众不同的重要法宝。在这条道路上,你不只需要扎实的技能,更需要敏锐的观察力、不断自省的精神和前瞻的格局。今天,就来聊聊那改变命运的三大思维转变,让你在职场上稳步前行。工作初期,总会遇到各式各样的难题。最初,我们习惯于围绕手头任务来制定计划,专注于眼前的目标。然而,职场的竞争从来不是单打独斗,而是团队协
    优思学院 2025-04-01 17:29 111浏览
  • 在不久前发布的《技术实战 | OK3588-C开发板上部署DeepSeek-R1大模型的完整指南》一文中,小编为大家介绍了DeepSeek-R1在飞凌嵌入式OK3588-C开发板上的移植部署、效果展示以及性能评测,本篇文章不仅将继续为大家带来关于DeepSeek-R1的干货知识,还会深入探讨多种平台的移植方式,并介绍更为丰富的交互方式,帮助大家更好地应用大语言模型。1、移植过程1.1 使用RKLLM-Toolkit部署至NPURKLLM-Toolkit是瑞芯微为大语言模型(LLM)专门开发的转换
    飞凌嵌入式 2025-03-31 11:22 230浏览
  • 引言在语音芯片设计中,输出电路的设计直接影响音频质量与系统稳定性。WT588系列语音芯片(如WT588F02B、WT588F02A/04A/08A等),因其高集成度与灵活性被广泛应用于智能设备。然而,不同型号在硬件设计上存在关键差异,尤其是DAC加功放输出电路的配置要求。本文将从硬件架构、电路设计要点及选型建议三方面,解析WT588F02B与F02A/04A/08A的核心区别,帮助开发者高效完成产品设计。一、核心硬件差异对比WT588F02B与F02A/04A/08A系列芯片均支持PWM直推喇叭
    广州唯创电子 2025-04-01 08:53 155浏览
  • 文/Leon编辑/cc孙聪颖‍步入 2025 年,国家进一步加大促消费、扩内需的政策力度,家电国补政策将持续贯穿全年。这一利好举措,为行业发展注入强劲的增长动力。(详情见:2025:消费提振要靠国补还是“看不见的手”?)但与此同时,也对家电企业在战略规划、产品打造以及市场营销等多个维度,提出了更为严苛的要求。在刚刚落幕的中国家电及消费电子博览会(AWE)上,家电行业的竞争呈现出胶着的态势,各大品牌为在激烈的市场竞争中脱颖而出,纷纷加大产品研发投入,积极推出新产品,试图提升产品附加值与市场竞争力。
    华尔街科技眼 2025-04-01 19:49 126浏览
  • 升职这件事,说到底不是单纯靠“干得多”或者“喊得响”。你可能也看过不少人,能力一般,甚至没你努力,却升得飞快;而你,日复一日地拼命干活,升职这两个字却始终离你有点远。这种“不公平”的感觉,其实在很多职场人心里都曾经出现过。但你有没有想过,问题可能就藏在一些你“没当回事”的小细节里?今天,我们就来聊聊你升职总是比别人慢,可能是因为这三个被你忽略的小细节。第一:你做得多,但说得少你可能是那种“默默付出型”的员工。项目来了接着干,困难来了顶上去,别人不愿意做的事情你都做了。但问题是,这些事情你做了,却
    优思学院 2025-03-31 14:58 104浏览
  • 引言随着物联网和智能设备的快速发展,语音交互技术逐渐成为提升用户体验的核心功能之一。在此背景下,WT588E02B-8S语音芯片,凭借其创新的远程更新(OTA)功能、灵活定制能力及高集成度设计,成为智能设备语音方案的优选。本文将从技术特性、远程更新机制及典型应用场景三方面,解析该芯片的技术优势与实际应用价值。一、WT588E02B-8S语音芯片的核心技术特性高性能硬件架构WT588E02B-8S采用16位DSP内核,内部振荡频率达32MHz,支持16位PWM/DAC输出,可直接驱动8Ω/0.5W
    广州唯创电子 2025-04-01 08:38 136浏览
  • 提到“质量”这两个字,我们不会忘记那些奠定基础的大师们:休哈特、戴明、朱兰、克劳士比、费根堡姆、石川馨、田口玄一……正是他们的思想和实践,构筑了现代质量管理的核心体系,也深远影响了无数企业和管理者。今天,就让我们一同致敬这些质量管理的先驱!(最近流行『吉卜力风格』AI插图,我们也来玩玩用『吉卜力风格』重绘质量大师画象)1. 休哈特:统计质量控制的奠基者沃尔特·A·休哈特,美国工程师、统计学家,被誉为“统计质量控制之父”。1924年,他提出世界上第一张控制图,并于1931年出版《产品制造质量的经济
    优思学院 2025-04-01 14:02 114浏览
  • 在环保与经济挑战交织的当下,企业如何在提升绩效的同时,也为地球尽一份力?普渡大学理工学院教授 查德·劳克斯(Chad Laux),和来自 Maryville 大学、俄亥俄州立大学及 Trine 大学的三位学者,联合撰写了《精益可持续性:迈向循环经济之路(Lean Sustainability: Creating a Sustainable Future through Lean Thinking)》一书,为这一问题提供了深刻的答案。这本书也荣获了 国际精益六西格玛研究所(IL
    优思学院 2025-03-31 11:15 93浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦