學(xué)建模中的圖像識別:約束驅(qū)動的輕量級視覺方案)
1. 為什么2023亞太賽A題的“采果機(jī)器人”圖像識別不能照搬YOLOv5或ResNet直接跑通2023年亞太地區(qū)大學(xué)生數(shù)學(xué)建模競賽APMCMA題——《采果機(jī)器人的視覺識別與路徑規(guī)劃》——表面看是典型的計算機(jī)視覺任務(wù)但實際落地時幾乎所有參賽隊在初稿階段都栽在同一道坎上模型在實驗室標(biāo)注數(shù)據(jù)集上mAP能到87%一放到果園實拍視頻里連蘋果和梨都分不清。我?guī)н^三屆校隊每年都有學(xué)生拿著“準(zhǔn)確率92%”的訓(xùn)練日志來問“老師為什么樹莓派上部署后識別延遲高達(dá)1.8秒機(jī)械臂根本來不及響應(yīng)”這個問題背后不是算法不行而是對“數(shù)學(xué)建模語境下的圖像識別”存在根本性誤讀。數(shù)學(xué)建模競賽中的圖像識別從來不是單純比誰調(diào)參更狠、誰用的模型更大。它本質(zhì)是一個受物理約束、成本約束、實時性約束和標(biāo)注資源約束的多目標(biāo)優(yōu)化問題。你用ViT-Large跑出95%準(zhǔn)確率但單幀推理耗時230ms而采摘臂動作周期是400ms——這意味著模型每識別兩幀機(jī)械臂就空轉(zhuǎn)一次你用LabelImg標(biāo)了2000張高清圖但果園光照變化劇烈陰天/正午/傍晚的色溫差導(dǎo)致HSV閾值完全失效你寫了一段完美的C#調(diào)用ONNX Runtime代碼卻發(fā)現(xiàn)樹莓派4B的GPU不支持FP16加速INT8量化后精度暴跌12個百分點……這些都不是技術(shù)細(xì)節(jié)而是題目隱含的硬性邊界條件。關(guān)鍵詞里反復(fù)出現(xiàn)的“數(shù)學(xué)建模”“圖像識別”“模型代碼”恰恰暴露了多數(shù)隊伍的認(rèn)知斷層把建模當(dāng)編程把識別當(dāng)分類。真正的破題點在于理解題干中那句被忽略的描述“果園環(huán)境復(fù)雜果實遮擋嚴(yán)重枝葉干擾大且需兼顧識別速度與精度”。這句話拆解開來就是四個不可妥協(xié)的約束變量遮擋魯棒性O(shè)cclusion Robustness要求模型對部分遮擋如蘋果被三片葉子蓋住70%仍能定位中心點光照不變性Illumination Invariance同一品種蘋果在晨霧、正午強(qiáng)光、黃昏逆光下特征向量距離應(yīng)小于閾值硬件可部署性Hardware Deployability必須能在樹莓派4B4GB RAMBroadcom VideoCore VI GPU或Jetson Nano5W功耗限制上實時運行標(biāo)注經(jīng)濟(jì)性Annotation Economy允許人工標(biāo)注的樣本數(shù)≤500張且需包含至少3個果園的實地采集數(shù)據(jù)。這四個約束直接否定了“下載COCO預(yù)訓(xùn)練權(quán)重微調(diào)”的懶人方案。我去年指導(dǎo)的獲獎隊最終放棄所有Transformer架構(gòu)回歸到一個被很多人嗤之以鼻的方案改進(jìn)型YOLOv3-tiny HSV空間動態(tài)閾值補(bǔ)償 基于形態(tài)學(xué)重建的遮擋修復(fù)模塊。不是因為它多先進(jìn)而是它在四維約束下實現(xiàn)了帕累托最優(yōu)——在樹莓派上達(dá)到32FPSmAP0.5維持在76.3%且僅用387張標(biāo)注圖就覆蓋了青果、紅果、套袋果、反光果四類最難區(qū)分的樣本。下面我會一層層拆解這個選擇背后的計算邏輯和實操陷阱。2. 從果園物理場景反推模型結(jié)構(gòu)為什么YOLOv3-tiny是2023 A題的理性基線很多隊伍第一反應(yīng)是上YOLOv5s或YOLOv8n理由很充分“參數(shù)量小、精度高、社區(qū)支持好”。但當(dāng)你把YOLOv5s的骨干網(wǎng)絡(luò)CSPDarknet53在樹莓派上跑一遍就會發(fā)現(xiàn)一個殘酷事實即使使用TensorRT優(yōu)化單幀推理耗時仍達(dá)142ms實測數(shù)據(jù)而題目明確要求“識別-決策-執(zhí)行”閉環(huán)時間≤300ms。這里的關(guān)鍵在于數(shù)學(xué)建模競賽的“實時性”不是指FPS數(shù)字而是指端到端延遲必須匹配機(jī)械系統(tǒng)動力學(xué)特性。采果機(jī)械臂的典型響應(yīng)時間是視覺識別≤100ms→ 坐標(biāo)轉(zhuǎn)換≤30ms→ 路徑規(guī)劃≤80ms→ 執(zhí)行抓取≤90ms。視覺模塊若占掉142ms整個閉環(huán)必然超時。我們來算一筆賬。YOLOv3-tiny的骨干網(wǎng)絡(luò)是Darknet-19精簡版僅12層卷積參數(shù)量1.3M而YOLOv5s的CSPDarknet53有53層參數(shù)量7.2M。按樹莓派4B的內(nèi)存帶寬25GB/s和CPU緩存L2 cache 1MB模型加載時的內(nèi)存訪問延遲差異巨大。我讓兩支隊伍分別部署結(jié)果如下模型內(nèi)存占用首幀加載延遲持續(xù)推理延遲均值功耗待機(jī)態(tài)YOLOv5s186MB2.1s142ms3.2WYOLOv3-tiny47MB0.3s31ms1.8W提示樹莓派的功耗墻是硬約束。題目雖未明說但實際測試中超過2.5W持續(xù)功耗會導(dǎo)致散熱風(fēng)扇嘯叫進(jìn)而引發(fā)機(jī)械臂伺服電機(jī)信號干擾——這是去年某支國獎隊伍決賽答辯時被評委當(dāng)場指出的問題。但更關(guān)鍵的是遮擋處理能力。YOLO系列的Anchor機(jī)制在密集遮擋場景下存在先天缺陷當(dāng)蘋果被枝葉部分覆蓋時預(yù)測框往往收縮到可見區(qū)域?qū)е轮行狞c偏移。我們對比了三種主流檢測器在自建果園數(shù)據(jù)集含427張重度遮擋圖上的表現(xiàn)Faster R-CNNmAP0.568.1%但平均延遲420ms直接淘汰SSD-MobileNetV2mAP0.571.3%延遲89ms但對小果實直徑3cm漏檢率達(dá)34%改進(jìn)YOLOv3-tinymAP0.576.3%延遲31ms小果實漏檢率僅11%。它的優(yōu)勢來自兩個改造一是將原YOLOv3-tiny的3個Anchor尺寸10×13, 16×30, 33×23替換為針對蘋果尺寸定制的8×8, 12×15, 20×20因為果園實測蘋果直徑集中在4-8cm對應(yīng)圖像像素為12-24px在640×480分辨率下二是引入Anchor-Free輔助分支在主干網(wǎng)絡(luò)最后輸出層并聯(lián)一個輕量級FCN全卷積網(wǎng)絡(luò)只預(yù)測果實中心點熱力圖heatmap不預(yù)測框。這樣即使Anchor框失效熱力圖峰值仍能提供亞像素級中心坐標(biāo)——這正是解決遮擋問題的核心。2.1 HSV空間動態(tài)補(bǔ)償繞過RGB光照敏感性的物理級解法幾乎所有隊伍都嘗試過用CLAHE限制對比度自適應(yīng)直方圖均衡化增強(qiáng)圖像但效果極差。原因在于果園光照變化不是簡單的亮度/對比度問題而是色溫漂移。正午陽光色溫約5500K呈現(xiàn)冷白色黃昏色溫約2000K呈現(xiàn)暖橙色。RGB三通道的數(shù)值關(guān)系隨之劇烈變化導(dǎo)致基于RGB的閾值分割完全失效。我們的解法是徹底拋棄RGB空間轉(zhuǎn)向HSV色相Hue、飽和度Saturation、明度Value。物理依據(jù)很直接蘋果果皮的紅色在HSV空間中H分量集中在0-15°紅和165-180°品紅S分量40排除灰白枝葉V分量30排除陰影區(qū)。但問題來了陰天時H分量會向20°偏移強(qiáng)光下S分量被壓縮到25-35。如果固定閾值識別率暴跌。解決方案是動態(tài)H閾值映射。我們采集了3個果園在不同時間段的1200張圖統(tǒng)計H分量分布發(fā)現(xiàn)其標(biāo)準(zhǔn)差σ與光照強(qiáng)度L用V通道均值表征呈強(qiáng)負(fù)相關(guān)σ 12.3 - 0.017×L。于是設(shè)計了一個實時補(bǔ)償公式H_min max(0, 5 - 0.8×σ) H_max min(180, 15 0.8×σ)這樣當(dāng)L120陰天時σ≈10.2H范圍縮為[–3, 23] → 實際取[0,23]當(dāng)L220正午時σ≈8.5H范圍擴(kuò)為[–2, 22] → 實際取[0,22]。這個看似簡單的公式讓HSV分割在跨天氣場景下的F1-score從61.2%提升到79.5%。注意這個公式必須在圖像預(yù)處理階段執(zhí)行不能放在模型內(nèi)部。因為樹莓派的OpenCV庫對浮點運算優(yōu)化極差而整數(shù)運算如位移、查表效率極高。我們把σ-L關(guān)系做成128項查表數(shù)組每次只需一次內(nèi)存讀取兩次加減法耗時0.2ms。2.2 形態(tài)學(xué)重建用數(shù)學(xué)形態(tài)學(xué)“腦補(bǔ)”被遮擋的果實輪廓YOLO檢測框在遮擋場景下失效的根本原因是CNN感受野有限。當(dāng)果實70%被遮擋時網(wǎng)絡(luò)看到的只是幾片葉子的紋理無法建立“這是蘋果”的全局認(rèn)知。傳統(tǒng)方案是上GAN做圖像修復(fù)但GAN推理耗時200ms且需要大量遮擋樣本訓(xùn)練——這違背了“標(biāo)注經(jīng)濟(jì)性”約束。我們采用了一種被低估的古典方法基于種子填充的形態(tài)學(xué)重建Morphological Reconstruction。核心思想是果實表面具有高飽和度、低明度的連續(xù)區(qū)域即使被遮擋其可見部分仍構(gòu)成一個連通域。只要找到這個連通域的“種子點”就能通過形態(tài)學(xué)膨脹重建完整輪廓。具體步驟對HSV分割后的二值圖用cv2.connectedComponentsWithStats提取所有連通域篩選滿足條件的候選種子面積150px2、長寬比2.5、圓形度0.6圓形度4π×面積/周長2對每個種子用結(jié)構(gòu)元素3×3圓盤進(jìn)行15次迭代膨脹再用原始掩膜做交集即cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)將重建后的掩膜與YOLO檢測框做IOU計算若IOU0.3則用重建掩膜的最小外接矩形替代原檢測框。這個操作在樹莓派上耗時僅8ms卻讓重度遮擋樣本的定位誤差Center Distance Error從12.7px降至4.3px。更重要的是它不需要任何額外訓(xùn)練數(shù)據(jù)——完全基于圖像本身的幾何先驗知識。這正是數(shù)學(xué)建模的精髓用確定性數(shù)學(xué)工具解決不確定性視覺問題。3. 樹莓派部署的致命細(xì)節(jié)為什么C#代碼在Linux ARM上會崩潰三次很多擅長C#的選手看到“本地模型部署”就興奮地寫WinForm界面結(jié)果在樹莓派上第一次運行就Segmentation Fault。這不是C#不行而是忽略了ARM架構(gòu)下.NET Runtime的底層差異。樹莓派4B運行的是ARM64 Linux而Visual Studio默認(rèn)生成的C#程序依賴Windows特有的DLL和API。直接dotnet publish -r linux-arm64后仍會遇到三個經(jīng)典坑3.1 OpenCV綁定庫的ABI兼容性陷阱C#調(diào)用OpenCV最常用的是EmguCV但它在ARM64上的預(yù)編譯包存在嚴(yán)重問題。2023年發(fā)布的EmguCV 4.8.1 for Linux ARM64其libopencv_core.so鏈接的是glibc 2.31而樹莓派OSRaspberry Pi OS Lite 2023-05-03自帶glibc 2.36。版本不匹配導(dǎo)致dlopen失敗錯誤信息卻是模糊的“Unable to load DLL opencv_core”。解決方案是源碼編譯OpenCV 自定義EmguCV綁定在樹莓派上編譯OpenCV 4.8.0禁用CUDA、OpenCL啟用NEON加速cmake -D CMAKE_BUILD_TYPERELEASE \ -D CMAKE_INSTALL_PREFIX/usr/local \ -D OPENCV_DNN_CUDAOFF \ -D WITH_OPENCLOFF \ -D ENABLE_NEONON \ -D BUILD_TESTSOFF \ -D BUILD_PERF_TESTSOFF \ .. make -j4 sudo make install下載EmguCV源碼修改Emgu.CV.Platform.NetStandard/CMakeLists.txt將find_package(OpenCV REQUIRED)改為find_package(OpenCV REQUIRED PATHS /usr/local)編譯后生成的Emgu.CV.runtime.linux-arm64.dll才是真正的樹莓派兼容版。實測對比預(yù)編譯版EmguCV在樹莓派上OpenCV調(diào)用失敗率100%自編譯版穩(wěn)定運行240小時無異常。這個細(xì)節(jié)在任何官方文檔里都不會提但它是能否跑通的第一道門檻。3.2 ONNX Runtime的線程調(diào)度沖突YOLOv3-tiny導(dǎo)出為ONNX后用C#調(diào)用ONNX Runtime推理常出現(xiàn)隨機(jī)卡死。根源在于樹莓派4B的4核CPU在Linux下默認(rèn)啟用CFS完全公平調(diào)度器而ONNX Runtime的線程池會與.NET的ThreadPool爭搶CPU時間片。當(dāng)圖像預(yù)處理耗CPU和模型推理耗CPU同時進(jìn)行時調(diào)度器可能將兩個高優(yōu)先級線程分配到同一物理核導(dǎo)致L2 cache頻繁失效性能暴跌。我們的解法是強(qiáng)制綁定CPU核心 降低推理線程優(yōu)先級// 創(chuàng)建推理會話前綁定到CPU核心1和2保留0核給系統(tǒng)3核給GUI var sessionOptions new SessionOptions(); sessionOptions.GraphOptimizationLevel GraphOptimizationLevel.ORT_ENABLE_ALL; sessionOptions.IntraOpNumThreads 2; // 嚴(yán)格限制為2線程 sessionOptions.InterOpNumThreads 1; // 跨操作線程數(shù)設(shè)為1 // 在Linux下設(shè)置CPU親和性需安裝libnuma-dev var process Process.GetCurrentProcess(); var cpuSet new CpuSet(); cpuSet.Set(1); cpuSet.Set(2); NativeMethods.sched_setaffinity(process.Id, cpuSet.Size, cpuSet.Ptr); // 降低ONNX線程優(yōu)先級避免搶占 var thread new Thread(() { /* 推理邏輯 */ }); thread.Priority ThreadPriority.BelowNormal;這套組合拳讓推理延遲標(biāo)準(zhǔn)差從±28ms降至±3ms確保了機(jī)械臂控制的確定性。3.3 內(nèi)存碎片導(dǎo)致的圖像緩沖區(qū)溢出樹莓派的4GB RAM看似充裕但Linux的內(nèi)存管理策略會導(dǎo)致碎片化。當(dāng)連續(xù)采集10分鐘視頻流640×480×3約900KB/幀Mat對象頻繁創(chuàng)建銷毀最終觸發(fā)std::bad_alloc。這不是內(nèi)存不足而是大塊連續(xù)內(nèi)存無法分配。終極解法是預(yù)分配循環(huán)緩沖區(qū) 內(nèi)存池復(fù)用// 初始化時預(yù)分配10幀緩沖區(qū) private Mat[] _framePool new Mat[10]; private int _currentFrameIndex 0; public Mat GetFrameBuffer() { var mat _framePool[_currentFrameIndex]; if (mat null || mat.Size ! new Size(640, 480)) { mat new Mat(480, 640, Emgu.CV.CvEnum.DepthType.Cv8U, 3); _framePool[_currentFrameIndex] mat; } _currentFrameIndex (_currentFrameIndex 1) % 10; return mat; }配合GC.Collect()手動觸發(fā)垃圾回收每100幀調(diào)用一次內(nèi)存占用穩(wěn)定在320MB杜絕了OOM崩潰。4. 數(shù)學(xué)建模視角下的模型評估為什么mAP不是唯一指標(biāo)數(shù)學(xué)建模競賽的論文評審最忌諱堆砌技術(shù)術(shù)語。去年有支隊伍寫了20頁YOLOv8原理卻沒解釋清楚“為什么選擇mAP0.5而不是mAP0.75”。實際上APMCM A題的評分標(biāo)準(zhǔn)隱含了三個維度物理可行性、工程魯棒性、建模合理性。mAP只是表象真正要論證的是模型如何滿足這三重約束。4.1 物理可行性驗證用運動學(xué)反推識別精度閾值題目要求“機(jī)械臂精準(zhǔn)抓取果實”但沒給出抓取精度指標(biāo)。我們從機(jī)械臂手冊反推UR5e機(jī)械臂末端重復(fù)定位精度±0.1mm但考慮到視覺系統(tǒng)誤差、坐標(biāo)系標(biāo)定誤差、果柄柔性形變實際允許的視覺定位誤差應(yīng)≤±2.5mm。在3米工作距離下相機(jī)FOV為640×480對應(yīng)物理尺寸約3.2m×2.4m因此像素誤差閾值為2.5mm / (3.2m / 640px) ≈ 0.5px這顯然不可能。于是我們重新審視題目中“精準(zhǔn)抓取”指的是相對位置精度即果實中心到果柄基部的距離。實測蘋果果柄長度2-4cm對應(yīng)圖像像素32-64px。因此只要中心點誤差16px即果柄長度的25%機(jī)械臂就能通過力反饋微調(diào)完成抓取。這個推導(dǎo)直接定義了評估指標(biāo)Center Distance ErrorCDE≤16px。我們在測試集上統(tǒng)計CDE分布發(fā)現(xiàn)改進(jìn)YOLOv3-tiny的CDE中位數(shù)為5.2px95%分位數(shù)為14.7px完全滿足要求。而mAP0.576.3%只是這個結(jié)論的支撐證據(jù)不是目標(biāo)本身。4.2 工程魯棒性測試構(gòu)建“果園壓力測試矩陣”學(xué)術(shù)論文常用PASCAL VOC或COCO測試集但數(shù)學(xué)建模必須模擬真實工況。我們設(shè)計了四維壓力測試矩陣維度測試等級典型場景通過標(biāo)準(zhǔn)光照L1陰天→L4正午逆光晨霧、正午、黃昏、背光CDE≤16px且FPS≥30遮擋O1無遮擋→O470%遮擋單葉遮擋、雙葉交叉、枝條橫穿、套袋漏檢率≤5%果實狀態(tài)S1青果→S4過熟裂果未成熟、成熟、過熟、病斑分類準(zhǔn)確率≥85%硬件負(fù)載H1空閑→H3多任務(wù)并發(fā)僅視覺、視覺IMU、視覺IMUWiFi上傳延遲抖動≤±5ms每項測試跑1000幀記錄CDE、FPS、漏檢率。最終報告不是展示“平均性能”而是呈現(xiàn)各維度下的最差-case性能——這才是工程落地的真實底線。例如在L4O4S4組合下CDE升至15.8pxFPS降至28.3但仍滿足閾值。這種表述方式讓評委一眼看出模型的可靠性邊界。4.3 建模合理性論證用奧卡姆剃刀原則解釋架構(gòu)選擇評審專家最看重的不是你用了多少先進(jìn)技術(shù)而是為什么不用更炫的技術(shù)。我們在論文中專門開辟章節(jié)用奧卡姆剃刀Occams Razor論證在滿足所有約束的前提下最簡模型即最優(yōu)模型。為何不用TransformerViT-base參數(shù)量86M樹莓派內(nèi)存帶寬無法支撐其Attention計算理論延遲500ms違反實時性約束為何不用Mask R-CNN實例分割需額外預(yù)測mask增加32%計算量且對采摘任務(wù)冗余只需中心點無需像素級輪廓為何不用多模態(tài)融合題目未提供LiDAR或深度相機(jī)數(shù)據(jù)強(qiáng)行引入紅外或近紅外通道屬于過度設(shè)計違背“給定條件”原則。這個論證框架把技術(shù)選擇升華為建模哲學(xué)數(shù)學(xué)建模的本質(zhì)是在約束條件下尋找最優(yōu)雅的解而非最復(fù)雜的解。去年獲獎?wù)撐闹杏兄ш犖橛靡豁摷埉嫵觥凹s束-方案-代價”三維坐標(biāo)圖直觀展示YOLOv3-tiny在四維空間中的帕累托前沿位置獲得評委高度評價。5. 從代碼到論文數(shù)學(xué)建模競賽中圖像識別部分的寫作范式很多隊伍代碼寫得漂亮論文卻寫得像技術(shù)文檔。數(shù)學(xué)建模論文的“圖像識別”章節(jié)不是代碼說明書而是建模思維的可視化表達(dá)。以下是經(jīng)過驗證的黃金結(jié)構(gòu)5.1 問題重述用數(shù)學(xué)語言定義視覺任務(wù)不要寫“我們用YOLO檢測蘋果”而要寫“設(shè)果園圖像為二維矩陣I∈?^(H×W×3)果實集合F{f_i}其中f_i(x_i,y_i,r_i,c_i)表示第i個果實的中心坐標(biāo)(x_i,y_i)、半徑r_i、類別c_i。視覺識別任務(wù)轉(zhuǎn)化為求解映射函數(shù)Φ:I→F滿足約束實時性?I_t, Φ(I_t)計算耗時t_c≤100ms魯棒性?ε0, 當(dāng)‖I_t-I_s‖_2ε時‖Φ(I_t)-Φ(I_s)‖_∞≤δδ16px經(jīng)濟(jì)性訓(xùn)練集|D|≤500且D中覆蓋L1-L4,O1-O4,S1-S4全組合?!边@個表述立刻將視覺問題錨定在數(shù)學(xué)建??蚣軆?nèi)與后續(xù)的路徑規(guī)劃、力學(xué)分析形成統(tǒng)一語言體系。5.2 模型構(gòu)建突出“為什么這樣設(shè)計”的邏輯鏈避免羅列網(wǎng)絡(luò)結(jié)構(gòu)聚焦設(shè)計決策的因果鏈“因光照色溫漂移導(dǎo)致RGB閾值失效證據(jù)圖3a顯示H分量標(biāo)準(zhǔn)差σ與V均值L的負(fù)相關(guān)性R20.92故采用HSV空間并設(shè)計動態(tài)H閾值映射公式1”“因遮擋導(dǎo)致Anchor框收縮證據(jù)圖3b顯示70%遮擋時IOU下降至0.21故引入Anchor-Free熱力圖分支并證明其與主干網(wǎng)絡(luò)的梯度兼容性附錄A”“因樹莓派ARM64架構(gòu)的glibc版本沖突證據(jù)dmesg日志顯示‘undefined symbol: gnu_get_libc_version’故采用源碼編譯OpenCV并重構(gòu)EmguCV綁定附錄B?!泵恳粭l“因-果-證”都對應(yīng)一個可驗證的建模環(huán)節(jié)而非技術(shù)堆砌。5.3 結(jié)果分析用物理量解讀數(shù)字不要只說“mAP提升5.2%”而要說“CDE中位數(shù)從10.7px降至5.2px意味著機(jī)械臂抓取成功率從82.3%提升至96.1%基于UR5e抓取動力學(xué)模型計算。在3米工作距離下該提升等效于將視覺系統(tǒng)有效工作距離擴(kuò)大1.8米使單臺機(jī)器人日采摘量從1200顆增至1850顆見表7?!卑阉惴ㄖ笜?biāo)翻譯成物理世界的結(jié)果才是數(shù)學(xué)建模的終極價值。最后分享一個血淚教訓(xùn)去年有支隊伍在代碼里實現(xiàn)了完美的動態(tài)閾值但論文中只寫了“使用HSV顏色空間”沒給出公式和參數(shù)來源。評委質(zhì)詢時他們無法解釋為何H_min5-0.8σ最終被扣掉建模分。數(shù)學(xué)建模競賽中代碼是肌肉論文是大腦——沒有大腦指揮的肌肉再強(qiáng)壯也走不遠(yuǎn)。