資料介紹
描述
介紹
汽車(chē)行業(yè)是采用尖端技術(shù)的先驅(qū)之一,機(jī)器學(xué)習(xí)也不例外。借助 ML 解決方案,工程師現(xiàn)在可以構(gòu)建神經(jīng)網(wǎng)絡(luò)來(lái)檢測(cè)各種汽車(chē)缺陷和破損。在本文中,我想展示從業(yè)者如何輕松應(yīng)用 TinyML 方法,在原始微型設(shè)備上創(chuàng)建和部署基于 AI 的解決方案,以預(yù)測(cè)與氣壓系統(tǒng) (APS) 相關(guān)的卡車(chē)故障。
作為重型車(chē)輛的重要組成部分,APS 產(chǎn)生的加壓空氣用于卡車(chē)的各種功能,例如制動(dòng)和換檔,因此及時(shí)的故障檢測(cè)可以減少停機(jī)時(shí)間和故障花費(fèi)的總成本高達(dá)在一定程度上,還簡(jiǎn)化了對(duì)司機(jī)和員工的卡車(chē)檢查過(guò)程,使其不易出錯(cuò)。
業(yè)務(wù)約束
- 延遲:獲取數(shù)據(jù)后進(jìn)行預(yù)測(cè)所花費(fèi)的時(shí)間必須相當(dāng)短,以避免不必要的維護(hù)時(shí)間和成本增加。
- 設(shè)備成本:擁有沉重的 GPU,昂貴的邊緣設(shè)備會(huì)增加不必要的維護(hù)成本。相反,重點(diǎn)應(yīng)該放在更好的傳感器和具有更高準(zhǔn)確性和低內(nèi)存占用的定制 AutoML/TinyML 解決方案上。
- 錯(cuò)誤分類(lèi)的成本:錯(cuò)誤分類(lèi)的成本非常高,特別是如果錯(cuò)誤地分類(lèi)了正類(lèi)數(shù)據(jù)點(diǎn),因?yàn)樗赡軐?dǎo)致卡車(chē)完全故障并產(chǎn)生一些嚴(yán)重的成本。
使用的技術(shù)
- Neuton TinyML:Neuton 是一個(gè)基于專(zhuān)利神經(jīng)網(wǎng)絡(luò)框架的無(wú)代碼平臺(tái)。我為我的實(shí)驗(yàn)選擇了這個(gè)解決方案,因?yàn)樗梢悦赓M(fèi)使用并自動(dòng)創(chuàng)建微型機(jī)器學(xué)習(xí)模型,甚至可以在 8 位 MCU 上部署。根據(jù) Neuton 開(kāi)發(fā)人員的說(shuō)法,您可以在一次迭代中創(chuàng)建一個(gè)緊湊的模型,而無(wú)需壓縮。
- Raspberry Pi Pico:該芯片采用兩個(gè) ARM Cortex-M0 + 內(nèi)核,133 兆赫,安裝在芯片上時(shí)還與 256 KB 的 RAM 配對(duì)。該器件支持高達(dá) 16 MB 的片外閃存,具有一個(gè) DMA 控制器,包括兩個(gè) UART 和兩個(gè) SPI,以及兩個(gè) I2C 和一個(gè) USB 1.1 控制器。該器件接收16個(gè)PWM通道和30個(gè)GPIO針,其中4個(gè)適合模擬數(shù)據(jù)輸入。并帶有 4 美元的凈價(jià)格標(biāo)簽。
![pYYBAGNYtr2AOE1hAAHx846vptg264.png](https://file.elecfans.com/web2/M00/73/FF/pYYBAGNYtr2AOE1hAAHx846vptg264.png)
讓我們構(gòu)建它
本教程的目標(biāo)是演示如何輕松構(gòu)建緊湊的 ML 模型來(lái)解決二進(jìn)制分類(lèi)任務(wù),其中正類(lèi)意味著卡車(chē)中的問(wèn)題是由于 APS 中的故障而負(fù)類(lèi)意味著其他問(wèn)題。
在我們的案例中,我們使用了使用斯堪尼亞卡車(chē)在日常使用中獲取的讀數(shù)(由斯堪尼亞自己收集和提供)制成的數(shù)據(jù)集。由于專(zhuān)有原因,所有功能的名稱(chēng)都是匿名的。此案例研究的數(shù)據(jù)集可在此處找到:https ://archive.ics.uci.edu/ml/datasets/APS+Failure+at+Scania+Trucks
該實(shí)驗(yàn)將在 4 美元的 MCU 上進(jìn)行,沒(méi)有云計(jì)算碳足跡 :)
數(shù)據(jù)集描述
數(shù)據(jù)集分為兩部分,一個(gè)訓(xùn)練集和一個(gè)測(cè)試集。訓(xùn)練集包含60, 000 行,而測(cè)試集包含16, 000 行。數(shù)據(jù)集中有 171 列,其中之一是數(shù)據(jù)點(diǎn)的類(lèi)標(biāo)簽,每個(gè)數(shù)據(jù)點(diǎn)有 170 個(gè)特征。
第 1 步:創(chuàng)建新解決方案并在 Neuton TinyML 平臺(tái)上上傳數(shù)據(jù)集
登錄到 Neuton 帳戶(hù)后,您應(yīng)該有一個(gè)解決方案主頁(yè),單擊添加新解決方案按鈕。
![pYYBAGNYtr-ADQKUAAFjEb9tBZI659.png](https://file.elecfans.com/web2/M00/73/FF/pYYBAGNYtr-ADQKUAAFjEb9tBZI659.png)
創(chuàng)建解決方案后,如上所示,繼續(xù)上傳數(shù)據(jù)集(請(qǐng)記住,當(dāng)前支持的格式僅為 CSV)。
![pYYBAGNYtsOAQfd4AADueLqiicg874.png](https://file.elecfans.com/web2/M00/73/FF/pYYBAGNYtsOAQfd4AADueLqiicg874.png)
為每個(gè)預(yù)測(cè)選擇目標(biāo)變量或所需的輸出。在這種情況下,我們將類(lèi)作為輸出變量:0 表示“負(fù)”,1 表示“正”
![pYYBAGNYtsaAKTMeAADWdYfDtZI490.png](https://file.elecfans.com/web2/M00/73/FF/pYYBAGNYtsaAKTMeAADWdYfDtZI490.png)
第 2 步:模型訓(xùn)練和參數(shù)
由于我們要將模型嵌入到微型 MCU 中,因此我們需要相應(yīng)地設(shè)置參數(shù)。Raspberry Pico 可以運(yùn)行 32 位操作并將 歸一化類(lèi)型設(shè)置為Unique Scale for Each Feature
![poYBAGNYtsmAKM8jAAFFT-KoEeE752.png](https://file.elecfans.com/web2/M00/73/6C/poYBAGNYtsmAKM8jAAFFT-KoEeE752.png)
點(diǎn)擊開(kāi)始訓(xùn)練,由于數(shù)據(jù)集很大,訓(xùn)練可能需要更長(zhǎng)的時(shí)間,對(duì)我來(lái)說(shuō),大約需要 6 個(gè)小時(shí)。同時(shí),您可以查看數(shù)據(jù)處理完成后生成的探索性數(shù)據(jù)分析,請(qǐng)查看以下視頻:
- 在訓(xùn)練期間,您可以通過(guò)觀(guān)察模型狀態(tài)(“一致”或“不一致”)和目標(biāo)指標(biāo)值來(lái)監(jiān)控實(shí)時(shí)模型性能。
我的目標(biāo)指標(biāo)是:AUC 0.987415 ,訓(xùn)練后的模型具有以下特征:
![pYYBAGNYtsuAGrasAAEvm1U-qQk404.png](https://file.elecfans.com/web2/M00/73/FF/pYYBAGNYtsuAGrasAAEvm1U-qQk404.png)
系數(shù)數(shù) = 278,嵌入文件大小 = 3.074 Kb 。太酷了!
第 3 步:在 Raspberry Pico 上進(jìn)行預(yù)測(cè)和嵌入
在 Neuton ai 平臺(tái)上,單擊Prediction選項(xiàng)卡,然后單擊Model for Embedding旁邊的Download按鈕,這將是我們將用于我們的設(shè)備的模型庫(kù)文件。
![pYYBAGNYts6AGJsIAAFfHCjTGsw556.png](https://file.elecfans.com/web2/M00/73/FF/pYYBAGNYts6AGJsIAAFfHCjTGsw556.png)
下載模型文件后,就可以添加我們的自定義函數(shù)和操作了。我正在使用 Arduino IDE 對(duì) Raspberry Pico 進(jìn)行編程
為 Raspberry Pico 設(shè)置 Arduino IDE:
我在本教程中使用了 Ubuntu,但相同的說(shuō)明應(yīng)該適用于其他基于 Debian 的發(fā)行版,例如 Raspberry Pi OS。
1. 打開(kāi)終端,使用 wget 下載官方 Pico 設(shè)置腳本。
$ wget https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh
2.在同一終端修改下載的文件,使其可執(zhí)行。
$ chmod +x pico_setup.sh
3.運(yùn)行 pico_setup.sh開(kāi)始安裝過(guò)程。如果出現(xiàn)提示,請(qǐng)輸入您的 sudo 密碼。
$ ./pico_setup.sh
4.下載 Arduino IDE并將其安裝在您的機(jī)器上。
5. 打開(kāi)終端并將您的用戶(hù)添加到“撥出”組。該組可以與 Arduino 等設(shè)備進(jìn)行通信。使用“$USER”將自動(dòng)使用您的用戶(hù)名。
$ sudo usermod -a -G dialout “$USER”
6.注銷(xiāo)或重新啟動(dòng)計(jì)算機(jī)以使更改生效。
7.打開(kāi) Arduino 應(yīng)用程序并轉(zhuǎn)到 File >> Preferences 。
8. 在附加板的管理器中添加此行并單擊 OK 。
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
![poYBAGNYttCAdNI2AADwGmWcia0274.png](https://file.elecfans.com/web2/M00/73/6C/poYBAGNYttCAdNI2AADwGmWcia0274.png)
9.轉(zhuǎn)到工具>>板>>板管理器。
10.在搜索框中輸入“pico”,然后安裝樹(shù)莓派 Pico/RP2040 板。這將觸發(fā)另一個(gè)大下載,大小約為 300MB。
![pYYBAGNYttOAKvfDAAE9K-jJEnk999.png](https://file.elecfans.com/web2/M00/73/FF/pYYBAGNYttOAKvfDAAE9K-jJEnk999.png)
注意:由于我們要對(duì)測(cè)試數(shù)據(jù)集進(jìn)行分類(lèi),我們將使用 Neuton 提供的 CSV 實(shí)用程序?qū)νㄟ^(guò) USB 發(fā)送到 MCU 的數(shù)據(jù)進(jìn)行推理。
這是我們的項(xiàng)目目錄,
user@desktop:~/Desktop/APS_Failure_detection$ tree
.
├── application.c
├── application.h
├── APS_Failure_detection.ino
├── checksum.c
├── checksum.h
├── model
│ └── model.h
├── neuton.c
├── neuton.h
├── parser.c
├── parser.h
├── protocol.h
├── StatFunctions.c
└── StatFunctions.h
1 directory, 13 files
校驗(yàn)和、解析器程序文件用于使用 CSV 串行實(shí)用工具生成握手并將列數(shù)據(jù)發(fā)送到 Raspberry Pico 進(jìn)行推理。
[秘密提示:如果您訓(xùn)練類(lèi)似的二進(jìn)制分類(lèi)模型,只需替換model.h文件并相應(yīng)修改 * .ino文件即可通過(guò) USB 串行在 CSV 數(shù)據(jù)集上運(yùn)行運(yùn)行推理] 請(qǐng)參見(jiàn)下面的引腳連接
![pYYBAGNYtteARuOxAAEqnQFONAg534.jpg](https://file.elecfans.com/web2/M00/73/FF/pYYBAGNYtteARuOxAAEqnQFONAg534.jpg)
了解APS_Failure_detection.ino文件中的代碼部分,我們?cè)O(shè)置了不同的回調(diào)來(lái)監(jiān)控推理時(shí)使用的 CPU、時(shí)間和內(nèi)存使用情況。
void setup() {
Serial.begin(230400);
while (!Serial);
pinMode(LED_RED, OUTPUT);
pinMode(LED_BLUE, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
digitalWrite(LED_RED, LOW);
digitalWrite(LED_BLUE, LOW);
digitalWrite(LED_GREEN, LOW);
callbacks.send_data = send_data;
callbacks.on_dataset_sample = on_dataset_sample;
callbacks.get_cpu_freq = get_cpu_freq;
callbacks.get_time_report = get_time_report;
init_failed = app_init(&callbacks);
}
真正的魔法發(fā)生在這里callbacks.on_dataset_sample=on_dataset_sample
static float* on_dataset_sample(float* inputs)
{
if (neuton_model_set_inputs(inputs) == 0)
{
uint16_t index;
float* outputs;
uint64_t start = micros();
if (neuton_model_run_inference(&index, &outputs) == 0)
{
uint64_t stop = micros();
uint64_t inference_time = stop - start;
if (inference_time > max_time)
max_time = inference_time;
if (inference_time < min_time)
min_time = inference_time;
static uint64_t nInferences = 0;
if (nInferences++ == 0)
{
avg_time = inference_time;
}
else
{
avg_time = (avg_time * nInferences + inference_time) / (nInferences + 1);
}
// add your functions to respond to events based upon detection
switch (index)
{
case 0:
//Serial.println("0: No Failure");
digitalWrite(LED_GREEN, HIGH);
break;
case 1:
//Serial.println("1: APS Failure Detected");
digitalWrite(LED_RED, HIGH);
break;
case 2:
//Serial.println("2: Unknown");
digitalWrite(LED_BLUE, HIGH);
break;
default:
break;
}
return outputs;
}
}
return NULL;
}
一旦輸入變量準(zhǔn)備就緒,就會(huì)調(diào)用 neuton_model_run_inference(&index, &outputs)來(lái)運(yùn)行推理并返回輸出。
安裝 CSV 數(shù)據(jù)集上傳實(shí)用程序(目前僅適用于 Linux 和 macOS)
- 安裝依賴(lài),
# For Ubuntu
$ sudo apt install libuv1-dev gengetopt
# For macOS
$ brew install libuv gengetopt
- 克隆這個(gè) repo,
$ git clone https://github.com/Neuton-tinyML/dataset-uploader.git
$ cd dataset-uploader
- 運(yùn)行 make 構(gòu)建二進(jìn)制文件,
$ make
完成后,您可以嘗試運(yùn)行幫助命令,它應(yīng)該類(lèi)似于下圖所示
user@desktop:~/dataset-uploader$ ./uploader -h
Usage: uploader [OPTION]...
Tool for upload CSV file MCU
-h, --help Print help and exit
-V, --version Print version and exit
-i, --interface=STRING interface (possible values="udp", "serial"
default=`serial')
-d, --dataset=STRING Dataset file (default=`./dataset.csv')
-l, --listen-port=INT Listen port (default=`50000')
-p, --send-port=INT Send port (default=`50005')
-s, --serial-port=STRING Serial port device (default=`/dev/ttyACM0')
-b, --baud-rate=INT Baud rate (possible values="9600", "115200",
"230400" default=`230400')
--pause=INT Pause before start (default=`0')
第 4 步:在 Raspberry Pico 上運(yùn)行推理
在樹(shù)莓派上上傳程序,
![pYYBAGNYttmAanpxAAJPzdETFPs465.png](https://file.elecfans.com/web2/M00/73/FF/pYYBAGNYttmAanpxAAJPzdETFPs465.png)
上傳并運(yùn)行后,打開(kāi)一個(gè)新終端并運(yùn)行以下命令:
$ ./uploader -s /dev/ttyACM0 -b 230400 -d /home/vil/Desktop/aps_failures_test.csv
![poYBAGNYtt2AF25UAAKRTFogvzg614.png](https://file.elecfans.com/web2/M00/73/6C/poYBAGNYtt2AF25UAAKRTFogvzg614.png)
推理已開(kāi)始運(yùn)行,一旦完成整個(gè) CSV 數(shù)據(jù)集,它將打印完整的摘要。
>> Request performace report
Resource report:
CPU freq: 125000000
Flash usage: 2785
RAM usage total: 821
RAM usage: 821
UART buffer: 694
Performance report:
Sample calc time, avg: 1183.0 us
Sample calc time, min: 1182.0 us
Sample calc time, max: 1346.0 us
![pYYBAGNYtuCASv8FAAJGhRDeg_g924.png](https://file.elecfans.com/web2/M00/73/FF/pYYBAGNYtuCASv8FAAJGhRDeg_g924.png)
我還在 Neuton TinyML 平臺(tái)上與 Web Prediction 進(jìn)行了比較,結(jié)果相似。另外,我嘗試使用 TensorFlow 和 TensorFlow Lite 構(gòu)建相同的模型。我用 Neuton TinyML 構(gòu)建的模型在AUC方面比用TF Lite構(gòu)建的模型要好14.3% ,在模型大小方面要小 9.7 倍。說(shuō)到系數(shù)的數(shù)量,TensorFlow的模型有7個(gè),060個(gè)系數(shù),而Neuton的模型只有278個(gè)系數(shù)(小了25.4倍!)。
因此,得到的模型足跡和推理時(shí)間如下:
![poYBAGNYtuOACJQvAAEi01p2v0E780.png](https://file.elecfans.com/web2/M00/73/6C/poYBAGNYtuOACJQvAAEi01p2v0E780.png)
Raspberry Pico 能夠執(zhí)行使用云上的高性能機(jī)器處理的任務(wù),這不是很神奇嗎?
![poYBAGNYtuaAb-5JAAHBjDtbTqY205.png](https://file.elecfans.com/web2/M00/73/6C/poYBAGNYtuaAb-5JAAHBjDtbTqY205.png)
結(jié)論
本教程生動(dòng)地證明了您無(wú)需成為數(shù)據(jù)科學(xué)家即可快速構(gòu)建超緊湊的 ML 模型以主動(dòng)解決實(shí)際挑戰(zhàn)。而且,最重要的是,使用tinyML實(shí)現(xiàn)這樣的解決方案,節(jié)省了大量的金錢(qián)和資源,不需要高昂的成本和努力,只需要一個(gè)免費(fèi)的無(wú)代碼工具和一個(gè)超級(jí)便宜的MCU!
?
- MCU上的TinyML變速箱故障預(yù)測(cè)開(kāi)源分享
- 基于RNN的GIS故障預(yù)測(cè)算法及系統(tǒng)設(shè)計(jì) 30次下載
- 基于邊緣計(jì)算的艦炮系統(tǒng)故障預(yù)測(cè)系統(tǒng) 25次下載
- 支持向量機(jī)的故障預(yù)測(cè)模型 0次下載
- 天然氣壓縮機(jī)的故障診斷監(jiān)控系統(tǒng)研究_聶煥煥 0次下載
- 基于預(yù)測(cè)濾波器的故障診斷方法研究 32次下載
- 液壓與氣壓傳動(dòng)課件
- 基于SPC的電源故障預(yù)測(cè)系統(tǒng)研究
- 一種復(fù)合故障預(yù)測(cè)動(dòng)態(tài)建模方法
- 汽車(chē)氣壓制動(dòng)裝置故障淺析
- 雙管路氣壓制動(dòng)系統(tǒng)失靈淺析
- 淺談4M20型氮?dú)?b class="flag-6" style="color: red">氣壓縮機(jī)的維護(hù)保養(yǎng)與常見(jiàn)故障的處理
- 礦用移動(dòng)滑片空氣壓縮機(jī)的維護(hù)與故障排除
- 紐邦C100空氣壓縮機(jī)常見(jiàn)故障維修
- 呼吸機(jī)空氣壓縮機(jī)輸出壓力偏低的故障分析與維修
- 氣壓制動(dòng)系統(tǒng)制動(dòng)不良的原因 366次閱讀
- 氣壓制動(dòng)系統(tǒng)工作原理簡(jiǎn)述 859次閱讀
- 低氣壓環(huán)境模擬:試驗(yàn)箱如何確保產(chǎn)品性能穩(wěn)定 423次閱讀
- 如何通過(guò)低氣壓試驗(yàn)提高產(chǎn)品的可靠性 666次閱讀
- 螺桿式空氣壓縮機(jī)常見(jiàn)故障 螺桿式空氣壓縮機(jī)排氣溫度高的原因 1389次閱讀
- 如何保護(hù)電源系統(tǒng)設(shè)計(jì)免受故障影響 546次閱讀
- 詳談SSD故障預(yù)測(cè)技術(shù) 1339次閱讀
- 如何使用TinyML在內(nèi)存受限的設(shè)備上部署ML模型呢 1174次閱讀
- 如何在 MCU 上快速部署 TinyML 1886次閱讀
- 如何利用TinyML實(shí)現(xiàn)語(yǔ)音識(shí)別機(jī)器人車(chē)的設(shè)計(jì) 2325次閱讀
- 故障預(yù)測(cè)與故障診斷在電子系統(tǒng)中的應(yīng)用研究 4160次閱讀
- 空氣壓縮機(jī)常見(jiàn)故障與維修 6w次閱讀
- 進(jìn)氣壓力傳感器故障現(xiàn)象及解決方法 2.1w次閱讀
- 保障電網(wǎng)安全需要攻克電力變壓器故障預(yù)測(cè)與健康管理等關(guān)鍵技術(shù) 9103次閱讀
- 液壓傳動(dòng)與氣壓傳動(dòng)有什么不同_氣壓和液壓傳動(dòng)的區(qū)別_液壓與氣壓傳動(dòng)的優(yōu)缺點(diǎn) 8.1w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論