时隔5年,MobileNet V4发布!

距离MobileNet系列上一代版本MobileNet V3的发布已经过去五年

熟悉该系列的同学应该知道,MobileNet致力于维持神经网络在精度和效率之间的微妙平衡,为了让用户在移动设备上拥有快速、实时和交互式的体验,谷歌推出了MobileNet V4——专为移动设备设计的通用高效架构

研究团队预计这一开创性贡献和分析框架将推动移动计算机视觉领域的进一步发展

MobileNet V4(MNv4)的核心在于通用倒置颈结构(Universal Inverted Bottleneck, UIB)和Mobile MQA两大模块,搭配优化后的神经网络架构搜索(NAS)配方

作者仍然基于MobileNet的经典组件如可分离的深度卷积(DW)和逐点(PW)扩展及投影倒置瓶颈块,引入了通用倒置颈结构(UIB)。这个结构相当简单,在倒置瓶颈块中引入了两个可选的深度卷积(DW),一个位于扩展层之前,另一个位于扩展层和投影层之间。这两个深度卷积的存在与否是神经架构搜索(NAS)优化过程的一部分,最终会生成新颖的网络架构。尽管这个修改看似简单,但作者却巧妙地统一了几个重要的模块,包括原始的倒置颈结构、ConvNext以及ViT中的FFN。此外,UIB还引入了一个新的变体:ExtraDW

在神经网络架构搜索过程中灵活的构建倒置颈结构,从而消除了手动制定缩放规则的需要。此外,结合基于SuperNet的神经网络架构搜索算法,这种方法实现了跨不同实例化的参数共享(>95%),使得NAS效率极高

与UIB相辅相成的是Mobile MQA,设计了一个专为加速器设计的开创性注意力块,实现高达39%的推理加速。此外,还引入一种优化的神经网络架构搜索(NAS)配方,提高了MNv4搜索的有效性

UIB、Mobile MQA和精细化NAS的融合,催生了一系列新颖的MNv4模型,这些模型在移动CPU、DSP、GPU以及如Apple Neural Engine和Google Pixel EdgeTPU等专用加速器上均表现出优异的性能

MNv4在Pixel 8 EdgeTPU上实现了87%的ImageNet-1K准确率,延迟仅为3.8毫秒,标志着移动计算机视觉能力取得了重大进展

感兴趣的赶紧动起来,创新点有了(dog),paper又不远了

pdf - https://arxiv.org/pdf/2404.10518.pdf
GitHub - https://github.com/tensorflow/models/blob/master/official/vision/modeling/backbones/mobilenet.py

在Android中设置定时器每隔5分钟执行一次,可以使用AlarmManager和PendingIntent。以下是基本步骤: 1. **获取权限**:首先需要运行时权限来访问系统服务,例如`Manifest.xml`文件中的`<uses-permission>`标签: ```xml <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> ``` 2. **创建计时任务**:在你的Activity或Service中,你可以创建一个Runnable或Callable对象,并封装到Handler或Thread中,作为你的定时任务。 3. **设置AlarmManager**:在需要启动定时器的地方,比如应用启动或特定操作完成后: ```java AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MINUTE, 5); // 5分钟后执行 Intent intent = new Intent(this, YourReceiver.class); intent.putExtra("timer_task", yourTaskObject); // 传递任务数据 PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 60, pendingIntent); // 每天重复 ``` 4. **接收器(Receiver)**:创建一个BroadcastReceiver,它会在指定时间接收到AlarmManager发出的通知: ```java public class YourReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if ("timer_task".equals(intent.getStringExtra("timer_task"))) { // 执行你的定时任务 } AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); am.cancel(pendingIntent); } } ``` 记得在应用关闭时取消AlarmManager,以免后台持续消耗资源: ```java @Override protected void onDestroy() { super.onDestroy(); if (pendingIntent != null) { AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); am.cancel(pendingIntent); } } ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啥都生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值