Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
文來源:Lemberg Solutions Ltd
作者:Zahra Mahoor、Jack Felag、 Josh Bongard
「雷克世界」編譯:嗯~阿童木呀、KABUDA
現(xiàn)如今,與智能手機(jī)進(jìn)行交互的方式有很多種:觸摸屏、硬件按鈕、指紋傳感器、視頻攝像頭(如人臉識(shí)別)、方向鍵(D-PAD)、手持設(shè)備控制等等。但是我們?cè)撊绾问褂脛?dòng)作識(shí)別功能呢?
我們可以舉一個(gè)例子來說明這個(gè)問題,比如當(dāng)你持手機(jī)將其快速移動(dòng)到左側(cè)或右側(cè)時(shí),可以非常精確地顯示出想要切換到播放列表中下一首或上一首歌曲的意圖;或者,你可以將手機(jī)快速向上向下翻轉(zhuǎn),從而刷新應(yīng)用程序內(nèi)容。引入這樣的交互看起來是非常有發(fā)展前景的,并且為用戶體驗(yàn)增添了一個(gè)新的層面。接下來,本文將介紹該如何使用機(jī)器學(xué)習(xí)和Android上的Tensorflow庫實(shí)現(xiàn)這一目標(biāo)。
對(duì)于我們的目標(biāo),我們可以將其描述為希望手機(jī)能夠識(shí)別左右的快速動(dòng)作。
我們希望能夠在一個(gè)單獨(dú)的Android庫中完成這一實(shí)現(xiàn),以便它能夠容易地集成到任何其他應(yīng)用程序中。
這些動(dòng)作可以通過手機(jī)上的幾個(gè)傳感器進(jìn)行捕獲:加速度計(jì)、陀螺儀、磁力計(jì)等等。隨后,這些批量動(dòng)作可以用于機(jī)器學(xué)習(xí)算法,以便進(jìn)行訓(xùn)練和后續(xù)識(shí)別。
為了捕捉數(shù)據(jù),我們將開發(fā)一個(gè)Android應(yīng)用程序。預(yù)處理和訓(xùn)練過程將在Jupyter Notebook環(huán)境的PC上使用Python和TensorFlow庫執(zhí)行。手勢(shì)識(shí)別將在一個(gè)Android應(yīng)用程序演示中執(zhí)行,并生成訓(xùn)練數(shù)據(jù)。最后,我們將開發(fā)一個(gè)即時(shí)可用的Android庫,用于手勢(shì)識(shí)別,而且可以很容易地集成到其他應(yīng)用程序中。
下面是有關(guān)該實(shí)現(xiàn)過程的高級(jí)計(jì)劃:
1.在手機(jī)上收集數(shù)據(jù)
2.設(shè)計(jì)和訓(xùn)練神經(jīng)網(wǎng)絡(luò)
3.將神經(jīng)網(wǎng)絡(luò)導(dǎo)出到手機(jī)中
4.開發(fā)一個(gè)測(cè)試Android應(yīng)用程序
5.開發(fā)Android庫
實(shí)現(xiàn)
?準(zhǔn)備數(shù)據(jù)
首先,我們來明確一下什么樣的傳感器和什么樣的數(shù)據(jù)可以用于描述我們的動(dòng)作手勢(shì)。為了準(zhǔn)確地描述這些手勢(shì),我們應(yīng)該使用加速度計(jì)和陀螺儀。
加速度計(jì)傳感器明顯是用于測(cè)量加速度,然后測(cè)量運(yùn)動(dòng):
加速度計(jì)有一個(gè)有趣的細(xì)微差別;它不僅測(cè)量設(shè)備本身的加速度,而且測(cè)量地球重力的加速度,大約為9.8m/s2。這意味著放在桌子上的手機(jī)加速度向量的大小將等于9.8。這些值不能直接使用,而應(yīng)從地球重力值中提取。這并不是一件容易的任務(wù),因?yàn)樗枰帕τ?jì)和加速度計(jì)傳感器值的融合。不過幸運(yùn)的是,Android已經(jīng)有了特定的線性加速度傳感器以執(zhí)行這樣的計(jì)算并返回正確的值。
另一方面,陀螺儀將用于測(cè)量旋轉(zhuǎn):
我們?cè)囍页鰧⑴c我們的手勢(shì)相關(guān)聯(lián)的值。顯然,在加速度計(jì)(即線性加速度計(jì))中,X和Y值將高度描述手勢(shì),而加速度計(jì)的Z值不太可能受到我們手勢(shì)的影響。
至于陀螺儀傳感器,似乎只有Z軸會(huì)受到手勢(shì)的輕微影響。不過,為了簡(jiǎn)化實(shí)施,我們可以不將該值考慮在內(nèi)。在這種情況下,我們的手勢(shì)檢測(cè)器不僅能夠識(shí)別手機(jī)在手中的移動(dòng),而且還能識(shí)別出其沿著水平線的移動(dòng)——例如在桌子上。這大概不是一個(gè)太大的問題。
所以,我們需要開發(fā)一個(gè)能夠記錄加速度計(jì)數(shù)據(jù)的Android應(yīng)用程序。
我開發(fā)了一款這樣的應(yīng)用程序,下面是記錄的“向右移動(dòng)”手勢(shì)的屏幕截圖:
正如你所看到的那樣,X軸和Y軸對(duì)手勢(shì)的反應(yīng)非常強(qiáng)烈。 Z軸也有反應(yīng),但正如我們所說的那樣,我們沒有將其考慮在內(nèi)。
這是“左移”手勢(shì):
請(qǐng)注意,X值與前一手勢(shì)的值幾乎相反。
還有一點(diǎn)需要提及的是數(shù)據(jù)采樣率。這反映了數(shù)據(jù)采樣的頻率,并且直接影響每個(gè)時(shí)間間隔的數(shù)據(jù)量。
另一個(gè)要考慮的是手勢(shì)持續(xù)時(shí)間。這個(gè)值,就像這里許多其他值一樣,應(yīng)該根據(jù)經(jīng)驗(yàn)對(duì)其進(jìn)行選擇。我所建立的那個(gè)手勢(shì)持續(xù)時(shí)間不超過1秒,但為了讓事情進(jìn)行得更為順利,我把它四舍五入到了1.28秒。
我選擇的數(shù)據(jù)采樣率是每個(gè)選定的持續(xù)時(shí)間內(nèi)128點(diǎn),這將產(chǎn)生10毫秒的延遲(1.28 / 128)。這個(gè)值應(yīng)該被傳遞給registerListener(https://developer.android.com/reference/android/hardware/SensorManager.html#registerListener%28android.hardware.SensorEventListener,%20android.hardware.Sensor,%20int%29)方法。
因此,這個(gè)想法就是訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò),用以在加速度傳感器中的實(shí)時(shí)數(shù)據(jù)流中識(shí)別這些信號(hào)。
所以,接下來,我們需要記錄一系列手勢(shì)并將其導(dǎo)出到文件。當(dāng)然,相同類型的手勢(shì)(右側(cè)或左側(cè))應(yīng)該使用相同的標(biāo)簽進(jìn)行標(biāo)記。我們很難事先說出需要多少樣本來訓(xùn)練這個(gè)網(wǎng)絡(luò),但這可以通過訓(xùn)練結(jié)果進(jìn)行確定。
通過點(diǎn)擊數(shù)據(jù),樣本持續(xù)時(shí)間將自動(dòng)高亮顯示:
現(xiàn)在,“保存”按鈕啟用,點(diǎn)擊它將自動(dòng)把已選項(xiàng)保存到工作目錄中的文件。文件名將以“{label} _ {timestamp} .log”的形式生成。可以使用應(yīng)用程序菜單來選擇工作目錄。
另外請(qǐng)注意,保存當(dāng)前選擇后,將自動(dòng)選擇下一個(gè)手勢(shì)。下一個(gè)手勢(shì)的選擇是使用一個(gè)非常簡(jiǎn)單的算法實(shí)現(xiàn)的:找到其絕對(duì)值大于3的第一個(gè)X條目,然后返回20個(gè)樣本。
這種自動(dòng)化過程使我們能夠快速保存一系列樣本。對(duì)于每個(gè)手勢(shì)我們記錄了500個(gè)樣本。保存的數(shù)據(jù)應(yīng)該被復(fù)制到一臺(tái)PC上以進(jìn)行進(jìn)一步處理。 (直接在手機(jī)上進(jìn)行處理和訓(xùn)練看起來很有發(fā)展前景,但是Android的TensorFlow目前不支持訓(xùn)練)。
在前面提供的截圖中,數(shù)據(jù)范圍大約為±6。但是,如果你更有力地?fù)]動(dòng)手機(jī),它可以達(dá)到±10。對(duì)數(shù)據(jù)進(jìn)行正則化操作比較好,從而使得范圍為±1,這更適合神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)格式。我只是把所有的數(shù)據(jù)除以一個(gè)常數(shù)系數(shù),我通常使用的是9。
開始訓(xùn)練之前可以執(zhí)行的下一步是過濾數(shù)據(jù)以消除高頻振蕩。這種振動(dòng)與我們的手勢(shì)無關(guān)。
有很多方法可以過濾數(shù)據(jù)。一種是基于移動(dòng)平均值(https://en.wikipedia.org/wiki/Moving_average)框進(jìn)行過濾。
請(qǐng)注意,X數(shù)據(jù)的最大值現(xiàn)在是原來值的一半。由于我們將在識(shí)別過程中對(duì)實(shí)時(shí)數(shù)據(jù)執(zhí)行相同的過濾,所以這應(yīng)該不成問題。
改善訓(xùn)練的最后一步是數(shù)據(jù)增強(qiáng)(data augmentation)。該過程通過執(zhí)行一些操作擴(kuò)展了原始數(shù)據(jù)集。在我們的例子中,我簡(jiǎn)單地將數(shù)據(jù)左右移動(dòng)了幾個(gè)點(diǎn):
?設(shè)計(jì)一個(gè)神經(jīng)網(wǎng)絡(luò)
設(shè)計(jì)一個(gè)神經(jīng)網(wǎng)絡(luò)并不是一個(gè)簡(jiǎn)單的任務(wù),需要一些經(jīng)驗(yàn)和直覺。另一方面,神經(jīng)網(wǎng)絡(luò)在某些任務(wù)中是眾所周知的,而且你可以簡(jiǎn)單地對(duì)現(xiàn)有網(wǎng)絡(luò)做些調(diào)整。我們的任務(wù)與圖像分類任務(wù)非常相似,輸入可以被視為高度為1像素的圖像(這是真實(shí)的——第一個(gè)操作是將二維數(shù)據(jù)[128列x 2信道]的輸入轉(zhuǎn)換為三維數(shù)據(jù)[1行x 128列x 2信道])。
所以,神經(jīng)網(wǎng)絡(luò)輸入是[128,2]。
神經(jīng)網(wǎng)絡(luò)輸出是長(zhǎng)度等于標(biāo)簽數(shù)量的向量。在我們的例子中是[2]。數(shù)據(jù)類型是雙精度浮點(diǎn)數(shù)。
這里是神經(jīng)網(wǎng)絡(luò)的示意圖:
這里是通過TensorBoard獲得的詳細(xì)原理圖:
該示意圖包含一些僅用于訓(xùn)練的輔助節(jié)點(diǎn)。之后,我將提供一個(gè)干凈的、優(yōu)化后的圖片。
?訓(xùn)練
訓(xùn)練將在具有Jupyter Notebook環(huán)境的PC上使用Python和TensorFlow庫進(jìn)行。可以使用以下配置文件在Conda環(huán)境中啟動(dòng)Notebook。以下是一些訓(xùn)練超參數(shù)(hyperparameters):
Optimizer: Adam
Number of training epochs: 3
Learning rate: 0.0001
數(shù)據(jù)集按照7/3的比例被分為訓(xùn)練集和驗(yàn)證集。
訓(xùn)練質(zhì)量可以通過訓(xùn)練和測(cè)試精確度值來控制。訓(xùn)練的精確度應(yīng)該接近但不能達(dá)到1。如果值太低,則表示識(shí)別率低且不準(zhǔn)確,并且過高的值將導(dǎo)致模型過度擬合,并且可能在識(shí)別期間引入一些偽像,如非手勢(shì)數(shù)據(jù)的非零識(shí)別評(píng)估。良好的測(cè)試精度可以證明:一個(gè)訓(xùn)練有素的模型可以識(shí)別不可見的早期數(shù)據(jù)。
訓(xùn)練日志:
(‘Epoch: ‘, 0, ‘ Training Loss: ‘, 0.054878365, ‘ Training Accuracy: ‘, 0.99829739)
(‘Epoch: ‘, 1, ‘ Training Loss: ‘, 0.0045060506, ‘ Training Accuracy: ‘, 0.99971622)
(‘Epoch: ‘, 2, ‘ Training Loss: ‘, 0.00088313385, ‘ Training Accuracy: ‘, 0.99981081)
(‘Testing Accuracy:’, 0.99954832)
TensorFlow圖和相關(guān)數(shù)據(jù)使用以下方法保存到文件中:
saver = tf.train.Saver()
with tf.Session() as session:
session.run(tf.global_variables_initializer())
# save the graph
tf.train.write_graph(session.graph_def, '.', 'session.pb', False)
for epoch in range(training_epochs):
# train
saver.save(session, './session.ckpt')
完整的notebook代碼可以在這里查看:
https://github.com/ryanchyshyn/motion_gestures_detection/blob/master/Python/training.ipynb
?輸出神經(jīng)網(wǎng)絡(luò)
上一部分展示了如何保存Tensor Flow數(shù)據(jù)。圖形保存到“session.pb”文件中,訓(xùn)練數(shù)據(jù)(權(quán)重,偏差等)被保存到一批“session.ckpt”文件中。這些文件可以足夠大:
session.ckpt.data-00000-of-00001 3385232
session.ckpt.index 895
session.ckpt.meta 65920
session.pb 47732
表格和訓(xùn)練數(shù)據(jù)可以被凍結(jié),并轉(zhuǎn)化成適合在移動(dòng)設(shè)備上運(yùn)行的單個(gè)文件。
為了凍結(jié)它,需要將tensorflow / python / tools / freeze_graph.py文件復(fù)制到notebook目錄中,然后運(yùn)行以下命令:
python freeze_graph.py --input_graph=session.pb \
--input_binary=True \
--input_checkpoint=session.ckpt \
--output_graph=frozen.pb \
--output_node_names=labels_output
生成的文件比之前的文件要小,但就單個(gè)文件而言,仍然足夠大:
frozen.pb 1130835
這是TensorBoard中的模型:
tensorflow / python / tools / import_pb_to_tensorboard.py文件復(fù)制到notebook目錄并啟動(dòng):
python import_pb_to_tensorboard.py --model_dir=frozen.pb --log_dir=tmp
其中frozen.pb是一個(gè)模型文件。
現(xiàn)在,啟動(dòng)TensorBoard:
tensorboard --logdir=tmp
有幾種方法可以為移動(dòng)環(huán)境優(yōu)化模型。想要運(yùn)行所描述的命令,需要從源代碼編譯TensorFlow:
1.刪除未使用的節(jié)點(diǎn)和常規(guī)優(yōu)化。執(zhí)行:
bazel build tensorflow/tools/graph_transforms:transform_graph
bazel-bin/tensorflow/tools/graph_transforms/transform_graph --in_graph=mydata/frozen.pb --out_graph=mydata/frozen_optimized.pb --inputs='x_input' --outputs='labels_output' --transforms='strip_unused_nodes(type=float, shape="128,2") remove_nodes(op=Identity, op=CheckNumerics) round_weights(num_steps=256) fold_constants(ignore_errors=true) fold_batch_norms fold_old_batch_norms'
這是TensorBoard運(yùn)行結(jié)果:
2.執(zhí)行量化(轉(zhuǎn)換浮點(diǎn)數(shù)據(jù)格式信息8位數(shù)據(jù)格式),執(zhí)行:
bazel-bin/tensorflow/tools/graph_transforms/transform_graph --in_graph=mydata/frozen_optimized.pb --out_graph=mydata/frozen_optimized_quant.pb --inputs='x_input' --outputs='labels_output' --transforms='quantize_weights strip_unused_nodes'
因此,與3.5 Mb的原始文件相比,輸出文件的大小為287129字節(jié)。這個(gè)文件可以在Android的TensorFlow中使用。
?演示 Android應(yīng)用程序
想在Android應(yīng)用程序中執(zhí)行信號(hào)識(shí)別,你需要使用Android的Tensor Flow庫。將庫添加至gradle屬性項(xiàng):
dependencies {
implementation 'org.tensorflow:tensorflow-android:1.4.0'
}
現(xiàn)在,你可以通過TensorFlowInferenceInterface類訪問TensorFlow API。首先,將“frozen_optimized_quant.pb”文件放入應(yīng)用程序的“assets”目錄中 (即 “app/src/main/assets” ),并將其加載到代碼中(如:從Activity開始;但是,像往常一樣,最好在后臺(tái)線程中執(zhí)行有關(guān)IO的相關(guān)操作)
inferenceInterface = new TensorFlowInferenceInterface(getAssets(), “file:///android_asset/frozen_optimized_quant.pb”);
注意如何選定模型文件
最后,看一下如何進(jìn)行識(shí)別:
float[] data = new float[128 * 2];
String[] labels = new String[]{"Right", "Left"};
float[] outputScores = new float[labels.length];
// populate data array with accelerometer data
inferenceInterface.feed("x_input", data, new long[] {1, 128, 2});
inferenceInterface.run(new String[]{“l(fā)abels_output”});
inferenceInterface.fetch("labels_output", outputScores);
數(shù)據(jù)是我們“黑盒”的一個(gè)輸入,應(yīng)該有一個(gè)加速度計(jì)X和Y測(cè)量的平面陣列,即數(shù)據(jù)格式是[x1, y1, x2, y2, x3, y3, …, x128, y128]。
在輸出方面,我們有兩個(gè)浮點(diǎn)值,它們根據(jù)“左”或“右”的手勢(shì)變化,隨不同輸入值在0到1的范圍內(nèi)取值。需要注意的是,這些值的總和是1。因此,舉一個(gè)例子,如果輸入信號(hào)與左或右手勢(shì)不匹配,那么輸出將接近[0.5,0.5]。為了進(jìn)一步簡(jiǎn)化,最好使用簡(jiǎn)單的數(shù)學(xué)方法將這些值轉(zhuǎn)化為絕對(duì)值在0到1之間的數(shù)。
在運(yùn)行之前,需要對(duì)數(shù)據(jù)進(jìn)行過濾和正則化操作。
這里是演示應(yīng)用程序的最終測(cè)試屏幕:
其中“紅色”和“綠色”的線條是實(shí)時(shí)預(yù)處理信號(hào),黃線和青線分別屬于“固定”、“左”和“右”概率。“時(shí)間”是處理時(shí)間,非常短,這使得實(shí)時(shí)識(shí)別成為可能。(2毫秒意味著可以以500Hz的頻率運(yùn)行處理,同時(shí)我們請(qǐng)求加速度計(jì)以100Hz的頻率進(jìn)行更新)。
正如你所看到的,有一些令人驚奇的細(xì)微差別。首先,即便是“沉默”信號(hào),也存在一些非零概率。其次,每個(gè)手勢(shì)在中心都具有長(zhǎng)時(shí)間的“真實(shí)”識(shí)別,其值接近于1,并且在邊緣處具備較小的相反識(shí)別。
看起來,要執(zhí)行準(zhǔn)確的實(shí)際手勢(shì)識(shí)別,需要進(jìn)行一些附加的處理。
?Android庫
我在一個(gè)單獨(dú)的Android庫中對(duì)輸出信號(hào)進(jìn)行附加處理,實(shí)現(xiàn)了TensorFlow識(shí)別。以下是庫和演示應(yīng)用程序。
如果在你自己的應(yīng)用程序中使用它,請(qǐng)將庫屬性項(xiàng)添加至模塊gradle文件中:
repositories { maven { url "https://dl.bintray.com/rii/maven/" } }
dependencies {
...
implementation 'uk.co.lemberg:motiondetectionlib:1.0.0'
}
創(chuàng)建一個(gè)動(dòng)作檢測(cè)器監(jiān)聽器(MotionDetector listener):
private final MotionDetector.Listener gestureListener = new MotionDetector.Listener() {
@Override
public void onGestureRecognized(MotionDetector.GestureType gestureType) {
Log.d(TAG, "Gesture detected: " + gestureType);
}
};
啟用動(dòng)作檢測(cè):
MotionDetector motionDetector = new MotionDetector(context, gestureListener);
motionDetector.start();
我們通過利用TensorFlow庫,在Android應(yīng)用程序上實(shí)現(xiàn)了對(duì)動(dòng)作手勢(shì)進(jìn)行識(shí)別的所有步驟:采集和預(yù)處理訓(xùn)練數(shù)據(jù)、設(shè)計(jì)和訓(xùn)練神經(jīng)網(wǎng)絡(luò)、開發(fā)測(cè)試應(yīng)用程序以及隨時(shí)可用的Android庫。所描述的方法可以用于其他任何識(shí)別/分類任務(wù)。生成的庫可以集成到其他任何Android應(yīng)用程序中,并通過動(dòng)作手勢(shì)進(jìn)行升級(jí)。
編輯
編輯
編輯
1.新增OPPO直接提取方案,支持Android 9及以上OPPO手機(jī),部分特殊機(jī)型除外
2.優(yōu)化微信朋友圈和公眾號(hào)的顯示效果
3.增加Android設(shè)備備份空間不足時(shí)的彈窗
4. 支持Android設(shè)備在設(shè)置中自定義“文件提取”掃描范圍
5、HTML報(bào)告中新增“手機(jī)取證報(bào)告助手”下載地址
編輯
6.程序運(yùn)行時(shí)防止PC休眠
7.插件更新:
iOS:LINE、Rocket Chat、Soul、TikTok、Chrome、釘釘、Safari、淘寶
Android:Potato、TikTok、Rocket Chat、、Via、火狐、京東、支付寶
每個(gè)人生活在這個(gè)世界上都有一部手機(jī),每部手機(jī)上都有各種各樣的應(yīng)用程序來幫助它的主人方便地做很多事情,所以手機(jī)上
包含著個(gè)人的很多私人信息,包括身份證、財(cái)務(wù)狀況、與他人的關(guān)系、
通訊等。記錄、愛好、地理位置等等。有了這些信息,我們就可以制作有關(guān)其所有者的角色檔案。
另一方面,手機(jī)成為當(dāng)今最廣泛的指揮、控制、實(shí)施和記錄犯罪活動(dòng)的設(shè)備。
手機(jī)比你自己更了解你。
移動(dòng)設(shè)備調(diào)查過程的第一步是識(shí)別手機(jī)。
這并不像聽起來那么容易,因?yàn)橛袛?shù)百家設(shè)備制造商,每家制造商平均每年推出 15 個(gè)新版本的移動(dòng)設(shè)備。
應(yīng)用程序通常將大部分信息存儲(chǔ)在 SQLite 數(shù)據(jù)庫中,因此這些數(shù)據(jù)庫將包含案例數(shù)據(jù)的主要部分。
移動(dòng)取證工具包會(huì)自動(dòng)解碼數(shù)據(jù)庫并以結(jié)構(gòu)化方式顯示它們,但是根據(jù)工具包的不同,
僅支持幾十到幾百個(gè)不同的應(yīng)用程序,這是一個(gè)相對(duì)較小的數(shù)字,因?yàn)榭捎玫?br>應(yīng)用程序超過 500 萬個(gè)在市場(chǎng)上。
移動(dòng)設(shè)備上使用安全機(jī)制來保護(hù)數(shù)據(jù)。這些機(jī)制的范圍從手機(jī)用戶鎖到 SIM 卡 PIN 碼
和 PUK 以及設(shè)備加密。通過 PIN 或密碼鎖定的設(shè)備可以通過適當(dāng)?shù)?br>軟件程序或設(shè)備所有者的信息來解鎖。加密更加深入,在軟件和/或硬件級(jí)別保護(hù)數(shù)據(jù),并且通常很難解密。
隨著技術(shù)的不斷發(fā)展,執(zhí)法機(jī)構(gòu)中的數(shù)字取證需要進(jìn)一步的權(quán)限來訪問手機(jī)以進(jìn)行犯罪調(diào)查。
現(xiàn)在,通過使用 Salvationdata SPF Pro(智能手機(jī)取證系統(tǒng)專業(yè)版),您可以深度訪問各種手機(jī)Android & IOS(Iphone)、
Symbian、Blackberry,支持99%的中國(guó)品牌手機(jī),如華為、Oppo、小米等。通過對(duì)被調(diào)查手機(jī)的數(shù)據(jù)提取和成像,我們可以輕松
完成嫌疑人的分析。此外,與大數(shù)據(jù)取證系統(tǒng)合作將為調(diào)查人員提供整體和可視化分析結(jié)果的建議。
SPF Pro可以支持全球流行的智能手機(jī)和應(yīng)用程序,尤其是幾乎所有中國(guó)品牌的智能手機(jī)。此外,廣泛使用的應(yīng)用程序也被添加到支持列表中。
品牌:iPhone、三星、華為、OPPO、VIVO、小米、HTC、黑莓、諾基亞、摩托羅拉、NEC、多普達(dá)、索尼愛立信、LG、中興、聯(lián)想、魅族、酷派等中國(guó)品牌,包括海外手機(jī)品牌的中國(guó)OEM制造商。
SPF Pro支持豐富的智能手機(jī),幾乎所有著名的操作系統(tǒng),包括功能手機(jī)。
Android、iOS、Firefox OS、Yun OS、Blackberry、Windows Phone、Symbian、Palm、BADA、Windows Mobile、Ubuntu、MTK、展訊等
中國(guó)智能手機(jī)或功能手機(jī)操作系統(tǒng)。
全面優(yōu)化的多任務(wù)性能,支持多達(dá)8個(gè)移動(dòng)設(shè)備同時(shí)基于
物理和邏輯層面的數(shù)據(jù)提取和恢復(fù)。幫助以取證上合理且有效的方式收集數(shù)字證據(jù)。
自動(dòng)檢測(cè)智能手機(jī)型號(hào)和狀態(tài),智能決策并向用戶推薦最佳提取方案。
文件瀏覽器可以實(shí)時(shí)查看和提取智能手機(jī)中的證據(jù)數(shù)據(jù)。
智能、主動(dòng)地監(jiān)控敏感數(shù)據(jù)并向用戶發(fā)出警報(bào)。分析項(xiàng)目包括關(guān)鍵字、應(yīng)用程序、URL、電話、MD5 和完全可定制。
為您節(jié)省昂貴且耗時(shí)的流程,以更低的成本為您提供更智能的移動(dòng)取證
IOS
安卓
蘋果
微信
真我
OPPO
紅米
維沃
微信
在移動(dòng)取證中,應(yīng)用程序數(shù)據(jù)備份提取是一種無需root智能手機(jī)即可獲取應(yīng)用程序數(shù)據(jù)的簡(jiǎn)單解決方案。通過使用Android系統(tǒng)的備份功能,可以創(chuàng)建保存在SD卡中的應(yīng)用程序數(shù)據(jù)副本,無需root訪問。
本次演示中,我們以搭載MIUI系統(tǒng)(Android系統(tǒng))的小米手機(jī)為例,演示如何在不root手機(jī)的情況下備份和提取App數(shù)據(jù)。
前提條件
目標(biāo)智能手機(jī)必須正常運(yùn)行并且可以開機(jī)
屏幕可以解鎖
Android系統(tǒng)備份功能可供用戶使用
手機(jī)操作流程
SPF Pro操作流程
手機(jī)操作流程
1.進(jìn)入設(shè)置
2.找到Backup & Reset(在其他系統(tǒng)中,也可能是Backup & Restore或其他類似名稱)
3.點(diǎn)擊本地備份
4.單擊“備份”創(chuàng)建新備份
5.然后選中您要提取的應(yīng)用程序的框
6.點(diǎn)擊備份開始創(chuàng)建備份
7.然后等待該過程完成
8.將智能手機(jī)連接到電腦并從SD卡中提取備份數(shù)據(jù)。
9.備份數(shù)據(jù)的存儲(chǔ)位置通常在名為backup的文件夾中
,在本演示中,位置如下:SD卡MIUIackupAllBackup
SPF Pro操作流程
現(xiàn)在使用SPF Pro加載并分析您剛剛提取的備份數(shù)據(jù)
創(chuàng)建新案例或打開現(xiàn)有案例
單擊文件夾分析,然后找到并加載從手機(jī)獲取的備份文件夾。
注意:請(qǐng)加載備份文件的根文件夾(應(yīng)用程序文件夾的上層文件夾),否則SPF Pro可能無法識(shí)別備份文件。
單擊自動(dòng)邏輯提取
選擇您的提取目標(biāo)
單擊“開始”開始該過程
等待該過程完成,然后您可以看到提取結(jié)果
① 導(dǎo)航面板
單擊此處可在不同應(yīng)用程序和類別之間導(dǎo)航。
② 分類窗口
所有提取的數(shù)據(jù)將顯示在此處。
③ 過濾欄
設(shè)置過濾器,可根據(jù)時(shí)間、關(guān)鍵詞等快速定位目標(biāo)數(shù)據(jù)。
④ 報(bào)告
單擊可打開報(bào)告窗口并生成取證報(bào)告。
能手機(jī)顯示,受試者血液內(nèi)的酒精含量為0.08。
酗酒已經(jīng)演變成一個(gè)全球性問題,僅在美國(guó),每年就有上萬名司機(jī)死于酒駕事故。如果公眾可以隨時(shí)隨地使用酒精測(cè)試儀,這類悲劇事件或許能減少。可惜的是,公眾對(duì)專門攜帶酒精測(cè)試儀并不太感興趣。
techxplore.com網(wǎng)站當(dāng)?shù)貢r(shí)間8月12日?qǐng)?bào)道,加拿大拉瓦爾大學(xué)光學(xué)、光子和激光中心(COPL)的研究人員找到了一種潛在的解決方案:在智能手機(jī)中植入酒精測(cè)試儀。這個(gè)想法并不新鮮,很多科學(xué)家已經(jīng)有過類似的嘗試。其問題在于,目前檢測(cè)血液酒精含量的技術(shù)還無法集成到手機(jī)中——這需要為手機(jī)更換化學(xué)傳感器,而它們的體積龐大、價(jià)格昂貴、難以大規(guī)模生產(chǎn),并且不耐用。
COPL的研究人員并不打算在手機(jī)中集成現(xiàn)有的酒精測(cè)試技術(shù),而試圖以手機(jī)中已有的組件來測(cè)量血液酒精含量。為此,他們提出了一種有趣的思路——將光學(xué)酒精測(cè)試儀集成在智能屏幕中。其工作原理是基于對(duì)屏幕上呼吸霧蒸發(fā)速率的分析。當(dāng)手機(jī)屏幕蒙上呼吸霧時(shí),其表面會(huì)形成無數(shù)的微滴。當(dāng)呼吸霧中含有酒精時(shí),微滴會(huì)蒸發(fā)得更快。
用于保護(hù)手機(jī)、平板電腦和智能手表的強(qiáng)化玻璃表面都有防刮層。防刮層比玻璃其他部分密度更大,它形成了平面波導(dǎo),可將光從一端引導(dǎo)至另一端。而光源就是手機(jī)顯示屏的背光。當(dāng)手機(jī)屏幕有霧時(shí),部分光被耦合到平面波導(dǎo)中,并被引導(dǎo)至屏幕的另一側(cè)。在此處,可以放置一個(gè)光電二極管來測(cè)量光強(qiáng)度。
研究人員表示,微滴邊緣發(fā)生的強(qiáng)烈全反射誘導(dǎo)了光與平面波導(dǎo)的耦合。因此,光電二極管測(cè)得的光強(qiáng)度與微滴數(shù)量成正比,并隨蒸發(fā)而減小。當(dāng)呼吸霧中含酒精時(shí),屏幕上的微滴蒸發(fā)速率變快,光電二極管測(cè)得的光強(qiáng)度也下降得更快。研究人員已經(jīng)證實(shí)了光強(qiáng)度信號(hào)與血液酒精濃度之間的相關(guān)性。
不過,論文作者Jerome Lapointe博士也表示:“雖然新技術(shù)在受控環(huán)境中表現(xiàn)良好,但現(xiàn)實(shí)環(huán)境的條件更加復(fù)雜。比如說,如果天氣暖和或者空氣不那么潮濕時(shí),屏幕上的霧氣會(huì)蒸發(fā)得更快一些。因此,我們需要在盡可能多的復(fù)雜條件下進(jìn)行測(cè)試,以校準(zhǔn)呼吸分析器……在積累了龐大的數(shù)據(jù)庫后,我們計(jì)劃通過訓(xùn)練神經(jīng)網(wǎng)絡(luò)來提高測(cè)試準(zhǔn)確性,進(jìn)而說服主要的手機(jī)制造商接受這一集成建議。”
編譯:雷鑫宇 審稿:西莫 責(zé)編:陳之涵
期刊來源:《傳感器》
期刊編號(hào):1424-8220
原文鏈接:
https://techxplore.com/news/2021-08-smartphone-screen-integrated-optical-breathalyzer.html
中文內(nèi)容僅供參考,一切內(nèi)容以英文原版為準(zhǔn)。轉(zhuǎn)載請(qǐng)注明來源。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。