相机闪光灯拍照流程分析

2afc7f980d1610cedf611fdf6261621a.gif

和你一起终身学习,这里是程序员Android

经典好文推荐,通过阅读本文,您将收获以下知识点:

一、Flash 基础知识
二、MTK 闪光灯拍照log分析

一、Flash 基础知识

1.1 Flash HAL 场景枚举值

c8436c856f2628d6927925ef48adbf63.jpeg
Flash HAL 场景枚举值

1.2 AE AF mode State 枚举值

a287909d03c026d96243dba68d13a349.jpeg
AE AF mode State 枚举值

1.3 AWB mode State 枚举值

acc20a88ca7fbf57b1e0f73ccf821a3d.jpeg
AWB mode State 枚举值

二、MTK 闪光灯拍照log分析

2.1 log关键字

connect call|AppMgr-configureStreams|AppMgr-ResCbHelper::performCallback\] requestNo:0|Frame timer \[# 1/|convertCallbackParcelToHidl\] requestNo:0|evaluateCaptureSetting|capture req#|setduty|setonoff|setFlashO|takePicture|onShutterButtonClick|submitRequest.*control.captureIntent:2|submitRequest.*requestNo:0|MTK_CONTROL_AF_TRIGGER|MTK_CONTROL_AE_PRECAPTURE_TRIGGER|Backup|Precapture Trigger|AEPrecaptureStart|endPrecapture|doCapAE|CaptureNode.*queue|CaptureProcessor.*onEnque|CaptureProcessor.*onContinue|CaptureProcessor.*notifyRelease|Open with FUSE

2.2 MTK Camera log 分析

2.2.1 闪光灯第一次打闪:预闪
852a67b590772576d861f9aa7baed189.jpeg
预闪备份2A
2.2.2 闪光灯第二次打闪:主闪
ab1991c20560e3c36680245960a561e5.jpeg
主闪存图
2.2.3 MTK camera 闪光灯拍照 log

MTK 相机on 状态下,闪光灯拍照走预闪,主闪流程。

// 相机调用
    02-10 11:20:30.671910  1001 26533 I CameraService: CameraService::connect call (PID 26709 "com.mediatek.camera", camera ID 0) and Camera API version 2
    //预览、拍照、缩略图尺寸
    02-10 11:20:30.852660  4720  5025 D mtkcam-AppStreamMgr: [AppMgr-configureStreams]  0 1920x1080 OUT ImgFormat:0x11(NV21) BufPlanes(strides/sizeInBytes):[ 1920/2073600 1920/1062720 ] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:12 d/s:0x00000000(UNKNOWN) s0:d0:App:YCrCb_420_SP:0|HW_TEXTURE AllocImgFormat:0x11(NV21) AllocBufPlanes(strides/sizeInBytes):[ 1920/2073600 1920/1062720 ] Real:0x11(YCrCb_420_SP) Request:0x22(IMPLEMENTATION_DEFINED) Override:0x11(YCrCb_420_SP) Hal-Client-usage:0x100(0|HW_TEXTURE) Hal-usage:0x20033(0|SW_READ_OFTEN|SW_WRITE_OFTEN|HW_CAMERA_WRITE) HalStream::(consumer/producer)Usage:0/0x20033 0xb400007a43dcde50 phy:-1
    02-10 11:20:30.852684  4720  5025 D mtkcam-AppStreamMgr: [AppMgr-configureStreams]  0x1 4080x2296 OUT ImgFormat:0x2300(JPEG) BufPlanes(strides/sizeInBytes):[ 14461181/14461184 ] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:11 d/s:0x08c20000(V0_JFIF|STANDARD_BT601_625|TRANSFER_SMPTE_170M|RANGE_FULL) s1:d0:App:BLOB:0|SW_READ_OFTEN AllocImgFormat:0x21(BLOB) AllocBufPlanes(strides/sizeInBytes):[ 14461181/14461184 ] Real:0x21(BLOB) Request:0x21(BLOB) Override:0x21(BLOB) Hal-Client-usage:0x3(0|SW_READ_OFTEN) Hal-usage:0x20033(0|SW_READ_OFTEN|SW_WRITE_OFTEN|HW_CAMERA_WRITE) HalStream::(consumer/producer)Usage:0/0x20033 0xb400007a43dce8d0 phy:-1
    02-10 11:20:30.852710  4720  5025 D mtkcam-AppStreamMgr: [AppMgr-configureStreams]  0x2  160x96   OUT ImgFormat:0x11(NV21) BufPlanes(strides/sizeInBytes):[ 192/18432 192/9504 ] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:12 d/s:0x08c20000(V0_JFIF|STANDARD_BT601_625|TRANSFER_SMPTE_170M|RANGE_FULL) s2:d0:App:YCrCb_420_SP:0|SW_READ_OFTEN AllocImgFormat:0x11(NV21) AllocBufPlanes(strides/sizeInBytes):[ 192/18432 192/9504 ] Real:0x11(YCrCb_420_SP) Request:0x23(YCbCr_420_888) Override:0x23(YCbCr_420_888) Hal-Client-usage:0x3(0|SW_READ_OFTEN) Hal-usage:0x20033(0|SW_READ_OFTEN|SW_WRITE_OFTEN|HW_CAMERA_WRITE) HalStream::(consumer/producer)Usage:0/0x20033 0xb400007a43d9f310 phy:-1
    //第一帧请求 requestNo:0 第一帧  control.captureIntent:1 行为为预览
    02-10 11:20:31.076045  4720  5025 I mtkcam-PipelineModelSession: [submitRequest] <4Cell/0> requestNo:0 { repeating:0 control.aeTargetFpsRange:10,30 control.captureIntent:1 control.enableZsl:0 control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:1 }
    //第一帧出图
    02-10 11:20:31.232717  4720 26780 D MtkCam/StreamingPipe/Timer: [print]Frame timer [#    1/   0][t  47][io   0][tof  0/  0][d  0/  0][mss  0/  0/  0/  0][a 47/ 24/ 22][tun  0/  0][msf  0/  0][vnr  0/  0/  0][am  0][b  0/  0][tpi(  0/  0)/(  0/  0)/(  0/  0)][vmdp_A  0/  0 vmdp_B  0/  0][h  3/  0/  0][e  0][r  0/  0][w_A  0/  0/  0/  0 w_B  0/  0/  0/  0][x  0][disp  0/  0][async  0/  0][p2sm  0/  0/  0][fps0.00/0.00/ 10/ 30]
    //第一帧callback image && meta
    02-10 11:20:31.234330  4720 26736 D mtkcam-AppStreamMgr: [0-CallbackHandler::convertCallbackParcelToHidl] requestNo:0 o:image#:1
    02-10 11:20:31.234601  4720 26735 D mtkcam-AppStreamMgr: [0:AppMgr-ResCbHelper::performCallback] requestNo:0 o:image#:1
    02-10 11:20:31.234619  4720 26735 D mtkcam-AppStreamMgr: [0:AppMgr-ResCbHelper::performCallback] requestNo:0
    02-10 11:20:31.320917  4720 26736 D mtkcam-AppStreamMgr: [0-CallbackHandler::convertCallbackParcelToHidl] requestNo:0 o:meta#:4
    02-10 11:20:31.321192  4720 26735 D mtkcam-AppStreamMgr: [0:AppMgr-ResCbHelper::performCallback] requestNo:0 o:meta#:1
    02-10 11:20:31.321293  4720 26735 D mtkcam-AppStreamMgr: [0:AppMgr-ResCbHelper::performCallback] requestNo:0
    //预闪 AE AF tag  MTK_CONTROL_AE_PRECAPTURE_TRIGGER
    02-10 11:20:33.500835  4720  5014 D Hal3Av3 : [parseMeta] MTK_CONTROL_AE_PRECAPTURE_TRIGGER(0 -> 1)
    02-10 11:20:33.500874  4720  5014 D Hal3Av3 : [parseMeta] MTK_CONTROL_AF_TRIGGER(0 -> 1)
    02-10 11:20:33.500897  4720  5014 D Hal3Av3 : [parseMeta] MTK_CONTROL_AF_TRIGGER_ID(1)
    02-10 11:20:33.540439  4720 26740 D Hal3Av3 : [setNormal] Precapture Trigger @ i4MagicNum(62)
    02-10 11:20:33.540502  4720 26740 W TaskMgr : [sendEvent] AEPrecaptureStart, fgLampflashCond(1)
    02-10 11:20:33.541150  4720 25786 D Hal3Av3 : [parseMeta] MTK_CONTROL_AE_PRECAPTURE_TRIGGER(1 -> 0)
    02-10 11:20:33.541199  4720 25786 D Hal3Av3 : [parseMeta] MTK_CONTROL_AF_TRIGGER(1 -> 0)
    // 2A backup doBackupAE AWB
    02-10 11:20:33.546911  4720 26740 D ae_mgr  : [doBackupAE()+] i4SensorDev:1
    02-10 11:20:33.546930  4720 26740 D ae_mgr  : [doBackupAE()-] i4SensorDev:1 m_rAESettingBackup.EvSetting:39998/5904/4100 (ISO:144) m_rAESettingBackup.u4Index/F:111/335 (IndexBase:3)Pre-flash:0 
    02-10 11:20:33.565240  4720 26740 D awb_mgr : [backup] AWB(908,512,765)
    02-10 11:20:33.581089  4720 26740 D ae_mgr  : [doBackupAE()+] i4SensorDev:1
    02-10 11:20:33.581107  4720 26740 D ae_mgr  : [doBackupAE()-] i4SensorDev:1 m_rAESettingBackup.EvSetting:39998/5904/4100 (ISO:144) m_rAESettingBackup.u4Index/F:111/335 (IndexBase:3)Pre-flash:0 
    02-10 11:20:33.602423  4720 26740 D awb_mgr : [backup] AWB(908,512,765)
    02-10 11:20:33.605946  4720 26740 D Hal3ARaw: [doBackup2A]
    02-10 11:20:33.605960  4720 26740 D ae_mgr  : [doBackupAE()+] i4SensorDev:1
    02-10 11:20:33.605974  4720 26740 D ae_mgr  : [doBackupAE()-] i4SensorDev:1 m_rAESettingBackup.EvSetting:39998/5904/4100 (ISO:144) m_rAESettingBackup.u4Index/F:111/335 (IndexBase:3)Pre-flash:1 
    //预闪 flash on type:1:后摄 enable:1 开启闪光灯 scenario:3:预闪 duty(0).
    02-10 11:20:33.606962  4720 26847 I FlashHal: [CAT][flash] setOnOff(): type:1 enable:1 scenario:3
    02-10 11:20:33.606982  4720 26847 I FlashHal: setFlashOn(): duty(0), timeout(0), lt duty(0), lt timeout(0).
    02-10 11:20:33.607010  4720 26847 I StrobeDrvFlashlight: setDuty(): duty(0).
    02-10 11:20:33.607125  4720 26847 I StrobeDrvFlashlight: setOnOff(): enable(1).
    02-10 11:20:33.613575  4720 26847 I StrobeDrvFlashlight: setOnOff(): on time(148789707).
    02-10 11:20:33.632018  4720 26740 D awb_mgr : [backup] AWB(908,512,765)
    02-10 11:20:33.651878 26709 26746 I CamAp_FocusCaptureRequestConfigure: [onCaptureStarted] ae precapture triggered
    02-10 11:20:34.264236  4720 26740 D ae_mgr  : [doRestoreAE()] i4SensorDev:1 m_rAESettingBackup.EvSetting:39998/6016/4100 (ISO:147) m_rAESettingBackup.u4Index/F:111/335 (IndexBase: 3) bIsRestorePreflash:1
    02-10 11:20:34.265317  4720 26740 D ae_mgr  : [doRestoreAE] backup FD information at AFAE state (for main flash)
    //预闪 flash off
    02-10 11:20:34.288120  4720 26847 I FlashHal:  [CAT][flash] setOnOff(): type:1 enable:0 scenario:3
    02-10 11:20:34.288137  4720 26847 I FlashHal: setFlashOff().
    02-10 11:20:34.288156  4720 26847 I StrobeDrvFlashlight: setOnOff(): enable(0).
    02-10 11:20:34.289802  4720 26847 I StrobeDrvFlashlight: setOnOff(): off time(148790388).
    02-10 11:20:34.386669  4720 26740 I FlashMgrM: endPrecapture().
    02-10 11:20:34.386770  4720 26740 I FlashMgrM: endPrecapture().
    //开始拍照
    02-10 11:20:34.538837 26709 26746 I CamAp_PhotoMode: onShutterButtonClick, is storage ready : true,isDeviceReady = true
    02-10 11:20:34.540462 26709 26746 I CamAp_PhotoDevice2Controller: [takePicture] mSession= com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy@8fee002
    //拍照请求帧 control.captureIntent:2
    02-10 11:20:34.589042  4720 25786 I mtkcam-PipelineModelSession: [submitRequest] <4Cell/0> requestNo:88 { repeating:0 control.aeTargetFpsRange:10,30 control.captureIntent:2 control.enableZsl:1 control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:2 }
    02-10 11:20:34.589203  4720 25786 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] (0xb4000079e3e13630) capture req#:88
    02-10 11:20:34.589717  4720 25786 D mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] openId(0), sensorId(0), subsensorId(-1), sub sensor nums 0
    //拍照决策 MTK_CAMERA_SCENARIO_CAPTURE_NORMAL MTK_FEATURE_COMBINATION_SINGLE frames count
    02-10 11:20:34.589850  4720 25786 D mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] find scenario:MTK_CAMERA_SCENARIO_CAPTURE_NORMAL for (openId:0, scenario:1)
    02-10 11:20:34.605578  4720 25786 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] trigger feature:NO_FEATURE_NORMAL(0), feature combination:MTK_FEATURE_COMBINATION_SINGLE(0x20000000300f0) for req#88
    02-10 11:20:34.605586  4720 25786 D mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] capture request frames count(mainFrame:1, subFrames:0, preDummyFrames:2, postDummyFrames:3)
    //主闪开启 scenario:4 主闪 duty(1).
    02-10 11:20:34.738555  4720 26740 I FlashHal:  [CAT][flash] setOnOff(): type:1 enable:1 scenario:4
    02-10 11:20:34.738580  4720 26740 E FlashHal:  FLASH_HAL_SCENARIO_MAIN_FLASH dutyLt=-1,duty=1 (setOnOff){#610:vendor/mediatek/proprietary/hardware/mtkcam/aaa/source/isp_6s/../common/flash_mgr/flash_hal.cpp}
    02-10 11:20:34.738602  4720 26740 I FlashHal: setFlashOn(): duty(1), timeout(0), lt duty(-1), lt timeout(0).
    02-10 11:20:34.738627  4720 26740 I StrobeDrvFlashlight: setDuty(): duty(1).
    02-10 11:20:34.738738  4720 26740 I StrobeDrvFlashlight: setOnOff(): enable(1).
    02-10 11:20:34.743919  4720 26740 I StrobeDrvFlashlight: setOnOff(): on time(148790839).
    02-10 11:20:34.744568  4720 26740 D ae_mgr  : [doBackupAE()+] i4SensorDev:1
    02-10 11:20:34.744582  4720 26740 D ae_mgr  : [doBackupAE()-] i4SensorDev:1 m_rAESettingBackup.EvSetting:39998/5904/4100 (ISO:144) m_rAESettingBackup.u4Index/F:111/335 (IndexBase:3)Pre-flash:0 
    02-10 11:20:34.763537  4720 26740 D ae_mgr  : [doCapAE()] i4SensorDev:1 CamMode:5 TargetMode:0 minISO:25 bIsSyncAE:0
    02-10 11:20:34.763652  4720 26740 D ae_mgr  : [prepareAlgoFrameInfo] send backup FD information to algo at POSTCAP state (during main flash)
    02-10 11:20:34.764276  4720 26740 D ae_mgr  : [doCapAE():monitor] SensorDev:1 Mag:88 CWVY:450 AEStable:1 AlgoAPAELock/AlgoAFAELock:0/0 Index/F:111/335 Algo:39998/5904/4100(144) Real:20004/1632/4156(40) EV/BV/BVWOStrobe:68/18/18 SkipCount:0 hdr LE(39998/3643/4112/89) ME(39998/3643/4112/89) SE(39998/3643/4112/89) VSE(39998/3643/4112/89) R(100)
    02-10 11:20:34.836886  4720 26740 D ae_mgr  : [doRestoreAE()] i4SensorDev:1 m_rAESettingBackup.EvSetting:39998/6016/4100 (ISO:147) m_rAESettingBackup.u4Index/F:111/335 (IndexBase: 3) bIsRestorePreflash:0
    // 主闪关闭   enable:0  setFlashOff
    02-10 11:20:34.863356  4720 26763 I FlashHal:  [CAT][flash] setOnOff(): type:1 enable:0 scenario:4
    02-10 11:20:34.863367  4720 26763 E FlashHal:  FLASH_HAL_SCENARIO_MAIN_FLASH dutyLt=-1,duty=1 (setOnOff){#610:vendor/mediatek/proprietary/hardware/mtkcam/aaa/source/isp_6s/../common/flash_mgr/flash_hal.cpp}
    02-10 11:20:34.863374  4720 26763 I FlashHal: setFlashOff().
    02-10 11:20:34.863382  4720 26763 I StrobeDrvFlashlight: setOnOff(): enable(0).
    02-10 11:20:34.863939  4720 26763 I StrobeDrvFlashlight: setOnOff(): off time(148790964).
    // P2 capture  处理
    02-10 11:20:34.883859  4720 26765 I MtkCam/P2/CaptureNode: [queue] P2C cam 0: (0xb400007883da59b0) R/F Num: 88/90
    02-10 11:20:34.884348  4720 26792 D MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0: isZoom 0, isVsdof 0, isMultiCam 0, isHidlIsp 0
    02-10 11:20:34.885773  4720 26792 D MtkCam/P2/CaptureProcessor: [onEnque]P2 frame number(90) main sensorId(0) sub sensor(-1) isPhyStream(0) isPhyControl(0)
    02-10 11:20:34.885797  4720 26792 I MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#90 MWReq:#88, frame 90 : Index/Count:-1/0 Feature:0x20000000300f0
    02-10 11:20:34.885813  4720 26792 I MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#90 MWReq:#88, frame 90 : Index/Count:-1/0 isEarlyNotificationTrigger:1, isCshot:0, SS_CapHint:0
    02-10 11:20:34.885845  4720 26792 D MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#90 MWReq:#88, frame 90 : [SS] iShootingMode (0)
    02-10 11:20:34.885893  4720 26792 D MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#90 MWReq:#88, frame 90 : [SS] use out_jpeg size as validSize(2296,4080)
    02-10 11:20:34.885906  4720 26792 D MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#90 MWReq:#88, frame 90 : [SS] Update SEC_ANDROID_SCALER_VALID_IMAGE_REGION (0,0)(2296x4080)
    02-10 11:20:34.885917  4720 26792 I MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#90 MWReq:#88, frame 90 : enqued request to captureFeaturePipe, R/F Num:88/90
    02-10 11:20:34.895019  4720 26791 I MtkCam/P2/CaptureProcessor: [onContinue] P2C cam 0 MWFrame:#90 MWReq:#88, frame 90-0 : (0xb400007993dd3470) notify next capture, request count:1, R/F Num:88/90
    02-10 11:20:34.926198  4720 26896 I MtkCam/P2/CaptureProcessor: [notifyRelease] P2C cam 0: notify release, R/F Num:88/90
    02-10 11:20:34.926335  4720 26896 I MtkCam/P2/CaptureProcessor: [notifyRelease] P2C cam 0: notify release, R/F Num:88/90
    //保存图片
    02-10 11:20:35.025687  2150  2164 D MediaProvider: Open with FUSE. FilePath: /storage/emulated/0/DCIM/Camera/IMG_20250210_112034_998.jpg. Uid: 10100. Media Capabilities Uid: 0. ShouldRedact: false. ShouldTranscode: false

2.3 腾讯水印相机闪光灯拍照

腾讯水印相机 拍照流程几乎跟MTK camera 流程一致,走预闪,主闪流程。
scenario:3 预闪
scenario:4 主闪

2.3.1 水印相机下发预闪Tag,进行预闪,主闪
bd17afb0acc3176a6a56e38bf3db378c.jpeg
腾讯水印相机预闪,主闪
2.3.2 主闪存图处理
908277d0e7cc4a190c757c410e18f5b8.jpeg
腾讯水印相机主闪存图

2.4 美图秀秀,美颜相机、B612 闪光灯拍照

美图秀秀、美颜相机、B612等相机 拍照与视频录制统一一个button(点击拍照,长按录制视频),app 下发的flash on 场景为scenario:1 视频手电筒 scenario;

8182413c957e030884e498b0265c5e2c.jpeg
美图秀秀 拍照 视频统一

410dca5bb0054370ec756918fcb4760d.jpeg
美颜相机 点击拍照,长按录制视频

bf6088a09189afce9197d96688f802e5.jpeg
B612点击拍照,长按录制视频

参考文献:

【腾讯文档】Android Framework 知识库
https://docs.qq.com/doc/DSXBmSG9VbEROUXF5

至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

dfadf145e0dec1629172335a70eca970.jpeg

点个在看,为大佬点赞!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/969771.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

给本地模型“投喂“数据

如何训练本地Deepseek-r1:7b模型 在前面两篇文章中&#xff0c;我在自己的电脑的本地部署了Deepseek的7b的模型&#xff0c;并接入到我Chrome浏览器的插件中&#xff0c;使用起来更方便了。在使用的过程中发现7b的推理能力确实没有671满血版本的能力强&#xff0c;很多问题回答…

大脑网络与智力:基于图神经网络的静息态fMRI数据分析方法|文献速递-医学影像人工智能进展

Title 题目 Brain networks and intelligence: A graph neural network based approach toresting state fMRI data 大脑网络与智力&#xff1a;基于图神经网络的静息态fMRI数据分析方法 01 文献速递介绍 智力是一个复杂的构念&#xff0c;包含了多种认知过程。研究人员通…

原生Three.js 和 Cesium.js 案例 。 智慧城市 数字孪生常用功能列表

对于大多数的开发者来言&#xff0c;看了很多文档可能遇见不到什么有用的&#xff0c;就算有用从文档上看&#xff0c;把代码复制到自己的本地大多数也是不能用的&#xff0c;非常浪费时间和学习成本&#xff0c; 尤其是three.js &#xff0c; cesium.js 这种难度较高&#xff…

学习总结三十二

map #include<iostream> #include<map> using namespace std;int main() {//首先创建一个map对象map<int, char>oneMap;//插入数据oneMap.insert(pair<int, char>(1, A));oneMap.insert(make_pair(2,B));oneMap.insert(map<int,char>::value_ty…

AI如何与DevOps集成,提升软件质量效能

随着技术的不断演进&#xff0c;DevOps和AI的融合成为推动软件开发质量提升的重要力量。传统的DevOps已经为软件交付速度和可靠性打下了坚实的基础&#xff0c;而随着AI技术的加入&#xff0c;DevOps流程不仅能提升效率&#xff0c;还能在质量保障、缺陷预测、自动化测试等方面…

ESP学习-1(MicroPython VSCode开发环境搭建)

下载ESP8266固件&#xff1a;https://micropython.org/download/ESP8266_GENERIC/win电脑&#xff1a;pip install esptools python.exe -m pip install --upgrade pip esptooo.py --port COM5 erase_flash //清除之前的固件 esptool --port COM5 --baud 115200 write_fla…

解决DeepSeek服务器繁忙问题

目录 解决DeepSeek服务器繁忙问题 一、用户端即时优化方案 二、高级技术方案 三、替代方案与平替工具&#xff08;最推荐简单好用&#xff09; 四、系统层建议与官方动态 用加速器本地部署DeepSeek 使用加速器本地部署DeepSeek的完整指南 一、核心原理与工具选择 二、…

在WPS中通过JavaScript宏(JSA)调用本地DeepSeek API优化文档教程

既然我们已经在本地部署了DeepSeek,肯定希望能够利用本地的模型对自己软件开发、办公文档进行优化使用,接下来就先在WPS中通过JavaScript宏(JSA)调用本地DeepSeek API优化文档的教程奉上。 前提: (1)已经部署好了DeepSeek,可以看我的文章:个人windows电脑上安装DeepSe…

CentOS-Stream 9安装

文章目录 1 CentOS9安装引导界面2 CentOS9安装过程2.1 语言选择2.2 安装项选择2.2.1 安装目标位置2.2.2 软件选择2.2.3 网络和主机名2.2.4 root密码2.2.5 创建用户 2.3 开始安装2.4 等待安装成功 3 安装成功 1 CentOS9安装引导界面 选择Install CentOS Stream 9后按Enter键&…

【神经网络框架】非局部神经网络

一、非局部操作的数学定义与理论框架 1.1 非局部操作的通用公式 非局部操作(Non-local Operation)是该研究的核心创新点,其数学定义源自经典计算机视觉中的非局部均值算法(Non-local Means)。在深度神经网络中,非局部操作被形式化为: 其中: 1.2 与传统操作的对比分析…

RAG科普文!检索增强生成的技术全景解析

RAG 相关技术的八个主题&#xff1a;https://pub.towardsai.net/a-taxonomy-of-retrieval-augmented-generation-a39eb2c4e2ab 增强生成 (RAG) 是塑造应用生成式 AI 格局的关键技术。Lewis 等人在其开创性论文中提出了一个新概念面向知识密集型 NLP 任务的检索增强生成之后&…

【做一个微信小程序】校园地图页面实现

前言 上一个教程我们实现了小程序的一些的功能&#xff0c;有背景渐变色&#xff0c;发布功能有的呢&#xff0c;已支持图片上传功能&#xff0c;表情和投票功能开发中&#xff08;请期待&#xff09;。下面是一个更高级的微信小程序实现&#xff0c;包含以下功能&#xff1a;…

STM32G474--Linpack程序移植笔记

1 获取测试程序 直接将该页面的测试程序复制到新建的linpack.c文件中即可。 Linpack测试程序 2 移植程序 2.1 准备基本工程 参考这篇笔记从我的仓库中选择合适的基本工程,进行程序移植。这里我用的是stm32g474的基本工程。 使用git clone一个指定文件或者目录 2.2 在基本…

【2025深度学习系列专栏大纲:深入探索与实践深度学习】

第一部分:深度学习基础篇 第1章:深度学习概览 1.1 深度学习的历史背景与发展轨迹 1.2 深度学习与机器学习、传统人工智能的区别与联系 1.3 深度学习的核心组件与概念解析 神经网络基础 激活函数的作用与类型 损失函数与优化算法的选择 1.4 深度学习框架简介与选择建议 第2…

对PosWiseFFN的改进: MoE、PKM、UltraMem

先从PosWiseFFN说起 class PoswiseFeedForwardNet(nn.Module):def __init__(self):super(PoswiseFeedForwardNet, self).__init__()self.fc nn.Sequential(nn.Linear(d_model, d_ff, biasFalse),nn.GeLU(),nn.Linear(d_ff, d_model, biasFalse))def forward(self, inputs): …

web第三次作业

弹窗案例 1.首页代码 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>综合案例</title><st…

计数排序

目录 计数排序原理和步骤&#xff1a; 完整代码实现&#xff1a; 计数排序原理和步骤&#xff1a; 当一段数据比较集中在一个范围&#xff0c;比如 98&#xff0c;95&#xff0c;98&#xff0c;91&#xff0c;90&#xff0c;93&#xff0c;94&#xff0c;97&#xff0c;93&…

安装OpenXR运行时 微软Windows Mixed Reality的OpenXR

1、下载openxr示例代码 https://github.com/KhronosGroup/OpenXR-SDK-Source.git mkdir build\win64 cd build\win64 2、编译会生成可执行文件 C:\Work\github\OpenXR-SDK-Source\build\win64\src\tests\hello_xr\Debug\hello_xr.exe 执行 C:\Work\github\OpenXR-SDK-Source\b…

伯克利 CS61A 课堂笔记 07 —— Lists

本系列为加州伯克利大学著名 Python 基础课程 CS61A 的课堂笔记整理&#xff0c;全英文内容&#xff0c;文末附词汇解释。 目录 01 Lists 列表 02 Containers 容器 03 For Statements For 语句 04 Ranges 范围 05 List Comprehensions 列表理解 06 Box-and-Pointer Nota…

数据结构--八大排序算法

1. 直接插入排序 当插入第 i(i>1) 个元素时&#xff0c;前面的 array[0],array[1],…,array[i-1] 已经排好序&#xff0c;此用 array[i] 的排序码与 array[i-1],array[i-2],… 的排序码顺序进行比较&#xff0c;找到插入位置即将 array[i] 插入&#xff0c;原来位置上的元素…