欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    查 編譯整理

    量子位 出品 | 公眾號 QbitAI

    小時候的你在游戲中搓著手柄,在現(xiàn)實中是否也會模仿這《拳皇》的動作?用身體控制游戲角色的體感游戲很早就已出現(xiàn),但需要體感手柄(Wii)或體感攝像頭(微軟Kinect)配合。而現(xiàn)在,筆記本就能幫你做到這一切!

    最近,有一位名叫Minko Gechev的軟件工程師實現(xiàn)了在筆記本上玩《真人快打》(Mortal Kombat),只需要一顆前置攝像頭即可。



    早在5年前,他就曾展示過體感玩格斗游戲的項目成果:



    當(dāng)時實現(xiàn)方案很簡單,也沒有利用時下流行的AI技術(shù)。但是這套算法離完美還相去甚遠,因為需要單色畫面背景作為參照,使用條件苛刻。

    5年間,無論是網(wǎng)絡(luò)瀏覽器的API,還是WebGL都有了長足的發(fā)展。于是這名工程師決定用TensorFlow.js來改進他的游戲程序,并在他個人Blog上放出了完整教程。

    量子位對文章做了編譯整理,主要內(nèi)容是訓(xùn)練模型識別《真人快打》這款游戲主要有拳擊、踢腿兩種動作,并通過模型輸出結(jié)果控制游戲人物做出對應(yīng)動作。

    以下就是他Blog的主要內(nèi)容:

    簡介

    我將分享用TensorFlow.js和MobileNet創(chuàng)建動作分類算法的一些經(jīng)驗,全文將分為以下幾部分:

    • 為圖片分類收集數(shù)據(jù)
    • 使用imgaug進行數(shù)據(jù)增強
    • 使用MobileNet遷移學(xué)習(xí)
    • 二元分類和N元分類
    • 在瀏覽器中使用TensorFlow.js模型訓(xùn)練圖片分類

    簡單討論使用LSTM進行動作分類

    我們將開發(fā)一種監(jiān)督深度學(xué)習(xí)模型,利用筆記本攝像頭獲取的圖像來分辨用戶是在出拳、出腿或者沒有任何動作。最終演示效果如下圖:



    理解本文內(nèi)容需要有基本的軟件工程和JavaScript知識。如果你有一些基本的深度學(xué)習(xí)知識會很有幫助,但非硬性要求。

    收集數(shù)據(jù)

    深度學(xué)習(xí)模型的準(zhǔn)確性在很大程度上取決于訓(xùn)練數(shù)據(jù)的質(zhì)量。因此,我們首要的目標(biāo)是建立一個豐富的訓(xùn)練數(shù)據(jù)集。

    我們的模型需要識別人物的拳擊和踢腿,所以應(yīng)當(dāng)從以下三個分類中收集圖像:

    • 拳擊
    • 踢腿
    • 其他

    為了這個實驗,我找到兩位志愿者幫我收集圖像。我們總共錄制了5段視頻,每段都包含2-4個拳擊動作和2-4個踢腿動作。由于收集到的是視頻文件,我們還需要使用ffmpeg將之轉(zhuǎn)化為一幀一幀的圖片:

    ffmpeg -i video.mov $filename%03d.jpg

    最終,在每個目錄下,我們都收集了大約200張圖片,如下:



    注:除了拳擊和踢腿外,圖片目錄中最多的是“其他”部分,主要是走動、轉(zhuǎn)身、開關(guān)視頻錄制的一些畫面。如果這部分內(nèi)容太多,會有風(fēng)險導(dǎo)致訓(xùn)練后的模型產(chǎn)生偏見,把應(yīng)該歸于前兩類的圖片劃分到“其他”中,因此我們減少了這部分圖片的量。

    如果只使用這600張相同環(huán)境、相同人物的圖片,我們將無法獲得很高的準(zhǔn)確度。為了進一步提高識別的準(zhǔn)確度,我們將使用數(shù)據(jù)增強對樣本進行擴充。

    數(shù)據(jù)增強

    數(shù)據(jù)增強是一種通過已有數(shù)據(jù)集合成新樣本的技術(shù),可以幫助我們增加數(shù)據(jù)集的樣本量和多樣性。我們可以將原始圖片處理一下轉(zhuǎn)變成新圖,但處理過程不能太過激烈,好讓機器能夠?qū)π聢D片正確歸類。

    常見的處理圖片的方式有旋轉(zhuǎn)、反轉(zhuǎn)顏色、模糊等等。網(wǎng)上已有現(xiàn)成軟件,我將使用一款由Python編寫的imgaug的工具(項目地址見附錄),我的數(shù)據(jù)增強代碼如下:

    np.random.seed(44)
    ia.seed(44)
    def main():
     for i in range(1, 191):
     draw_single_sequential_images(str(i), "others", "others-aug")
     for i in range(1, 191):
     draw_single_sequential_images(str(i), "hits", "hits-aug")
     for i in range(1, 191):
     draw_single_sequential_images(str(i), "kicks", "kicks-aug")
    def draw_single_sequential_images(filename, path, aug_path):
     image=misc.imresize(ndimage.imread(path + "/" + filename + ".jpg"), (56, 100))
     sometimes=lambda aug: iaa.Sometimes(0.5, aug)
     seq=iaa.Sequential(
     [
     iaa.Fliplr(0.5), # horizontally flip 50% of all images
     # crop images by -5% to 10% of their height/width
     sometimes(iaa.CropAndPad(
     percent=(-0.05, 0.1),
     pad_mode=ia.ALL,
     pad_cval=(0, 255)
     )),
     sometimes(iaa.Affine(
     scale={"x": (0.8, 1.2), "y": (0.8, 1.2)}, # scale images to 80-120% of their size, individually per axis
     translate_percent={"x": (-0.1, 0.1), "y": (-0.1, 0.1)}, # translate by -10 to +10 percent (per axis)
     rotate=(-5, 5),
     shear=(-5, 5), # shear by -5 to +5 degrees
     order=[0, 1], # use nearest neighbour or bilinear interpolation (fast)
     cval=(0, 255), # if mode is constant, use a cval between 0 and 255
     mode=ia.ALL # use any of scikit-image's warping modes (see 2nd image from the top for examples)
     )),
     iaa.Grayscale(alpha=(0.0, 1.0)),
     iaa.Invert(0.05, per_channel=False), # invert color channels
     # execute 0 to 5 of the following (less important) augmenters per image
     # don't execute all of them, as that would often be way too strong
     iaa.SomeOf((0, 5),
     [
     iaa.OneOf([
     iaa.GaussianBlur((0, 2.0)), # blur images with a sigma between 0 and 2.0
     iaa.AverageBlur(k=(2, 5)), # blur image using local means with kernel sizes between 2 and 5
     iaa.MedianBlur(k=(3, 5)), # blur image using local medians with kernel sizes between 3 and 5
     ]),
     iaa.Sharpen(alpha=(0, 1.0), lightness=(0.75, 1.5)), # sharpen images
     iaa.Emboss(alpha=(0, 1.0), strength=(0, 2.0)), # emboss images
     iaa.AdditiveGaussianNoise(loc=0, scale=(0.0, 0.01*255), per_channel=0.5), # add gaussian noise to images
     iaa.Add((-10, 10), per_channel=0.5), # change brightness of images (by -10 to 10 of original value)
     iaa.AddToHueAndSaturation((-20, 20)), # change hue and saturation
     # either change the brightness of the whole image (sometimes
     # per channel) or change the brightness of subareas
     iaa.OneOf([
     iaa.Multiply((0.9, 1.1), per_channel=0.5),
     iaa.FrequencyNoiseAlpha(
     exponent=(-2, 0),
     first=iaa.Multiply((0.9, 1.1), per_channel=True),
     second=iaa.ContrastNormalization((0.9, 1.1))
     )
     ]),
     iaa.ContrastNormalization((0.5, 2.0), per_channel=0.5), # improve or worsen the contrast
     ],
     random_order=True
     )
     ],
     random_order=True
     )
     im=np.zeros((16, 56, 100, 3), dtype=np.uint8)
     for c in range(0, 16):
     im[c]=image
     for im in range(len(grid)):
     misc.imsave(aug_path + "/" + filename + "_" + str(im) + ".jpg", grid[im])
    

    每張圖片最后都被擴展成16張照片,考慮到后面訓(xùn)練和評估時的運算量,我們減小了圖片體積,每張圖的分辨率都被壓縮成100*56。



    建立模型

    現(xiàn)在,我們開始建立圖片分類模型。處理圖片使用的是CNN(卷積神經(jīng)網(wǎng)絡(luò)),CNN適合于圖像識別、物體檢測和分類領(lǐng)域。

    遷移學(xué)習(xí)

    遷移學(xué)習(xí)允許我們使用已被訓(xùn)練過網(wǎng)絡(luò)。我們可以從任何一層獲得輸出,并把它作為新的神經(jīng)網(wǎng)絡(luò)的輸入。這樣,訓(xùn)練新創(chuàng)建的神經(jīng)網(wǎng)絡(luò)能達到更高的認知水平,并且能將源模型從未見過的圖片進行正確地分類。

    我們在文中將使用MobileNet神經(jīng)網(wǎng)絡(luò)(安裝包地址見附錄),它和VGG-16一樣強大,但是體積更小,在瀏覽器中的載入時間更短。

    在瀏覽器中運行模型

    在這一部分,我們將訓(xùn)練一個二元分類模型。

    首先,我們?yōu)g覽器的游戲腳本MK.js中運行訓(xùn)練過的模型。代碼如下:

    const video=document.getElementById('cam');
    const Layer='global_average_pooling2d_1';
    const mobilenetInfer=m=> (p): tf.Tensor<tf.Rank>=> m.infer(p, Layer);
    const canvas=document.getElementById('canvas');
    const scale=document.getElementById('crop');
    const ImageSize={
     Width: 100,
     Height: 56
    };
    navigator.mediaDevices
     .getUserMedia({
     video: true,
     audio: false
     })
     .then(stream=> {
     video.srcObject=stream;
     });
    

    以上代碼中一些變量和函數(shù)的注釋:

    • video:頁面中的HTML5視頻元素
    • Layer:MobileNet層的名稱,我們從中獲得輸出并把它作為我們模型的輸入
    • mobilenetInfer:從MobileNet接受例子,并返回另一個函數(shù)。返回的函數(shù)接受輸入,并從MobileNet特定層返回相關(guān)的輸出
    • canvas:將取出的幀指向HTML5的畫布
    • scale:壓縮幀的畫布

    第二步,我們從攝像頭獲取視頻流,作為視頻元素的源。對獲得的圖像進行灰階濾波,改變其內(nèi)容:

    const grayscale=(canvas: HTMLCanvasElement)=> {
     const imageData=canvas.getContext('2d').getImageData(0, 0, canvas.width, canvas.height);
     const data=imageData.data;
     for (let i=0; i < data.length; i +=4) {
     const avg=(data[i] + data[i + 1] + data[i + 2]) / 3;
     data[i]=avg;
     data[i + 1]=avg;
     data[i + 2]=avg;
     }
     canvas.getContext('2d').putImageData(imageData, 0, 0);
    };
    

    第三步,把訓(xùn)練過的模型和游戲腳本MK.js連接起來。

    let mobilenet: (p: any)=> tf.Tensor<tf.Rank>;
    tf.loadModel('http://localhost:5000/model.json').then(model=> {
     mobileNet
     .load()
     .then((mn: any)=> mobilenet=mobilenetInfer(mn))
     .then(startInterval(mobilenet, model));
    });
    

    在以上代碼中,我們將MobileNet的輸出傳遞給mobilenetInfer方法,從而獲得了從網(wǎng)絡(luò)的隱藏層中獲得輸出的快捷方式。此外,我還引用了startInterval。

    const startInterval=(mobilenet, model)=> ()=> {
     setInterval(()=> {
     canvas.getContext('2d').drawImage(video, 0, 0);
     grayscale(scale
     .getContext('2d')
     .drawImage(
     canvas, 0, 0, canvas.width,
     canvas.width / (ImageSize.Width / ImageSize.Height),
     0, 0, ImageSize.Width, ImageSize.Height
     ));
     const [punching]=Array.from((
     model.predict(mobilenet(tf.fromPixels(scale))) as tf.Tensor1D)
     .dataSync() as Float32Array);
     const detect=(window as any).Detect;
     if (punching >=0.4) detect && detect.onPunch();
     }, 100);
    };
    

    startInterval正是關(guān)鍵所在,它每間隔100ms引用一個匿名函數(shù)。在這個匿名函數(shù)中,我們把視頻當(dāng)前幀放入畫布中,然后壓縮成100*56的圖片后,再用于灰階濾波器。

    在下一步中,我們把壓縮后的幀傳遞給MobileNet,之后我們將輸出傳遞給訓(xùn)練過的模型,通過dataSync方法返回一個一維張量punching。

    最后,我們通過punching來確定拳擊的概率是否高于0.4,如果是,將調(diào)用onPunch方法,現(xiàn)在我們可以控制一種動作了:



    用N元分類識別拳擊和踢腿

    在這部分,我們將介紹一個更智能的模型:使用神經(jīng)網(wǎng)絡(luò)分辨三種動作:拳擊、踢腿和站立。

    const punches=require('fs')
     .readdirSync(Punches)
     .filter(f=> f.endsWith('.jpg'))
     .map(f=> `${Punches}/${f}`);
    const kicks=require('fs')
     .readdirSync(Kicks)
     .filter(f=> f.endsWith('.jpg'))
     .map(f=> `${Kicks}/${f}`);
    const others=require('fs')
     .readdirSync(Others)
     .filter(f=> f.endsWith('.jpg'))
     .map(f=> `${Others}/${f}`);
    const ys=tf.tensor2d(
     new Array(punches.length)
     .fill([1, 0, 0])
     .concat(new Array(kicks.length).fill([0, 1, 0]))
     .concat(new Array(others.length).fill([0, 0, 1])),
     [punches.length + kicks.length + others.length, 3]
    );
    const xs: tf.Tensor2D=tf.stack(
     punches
     .map((path: string)=> mobileNet(readInput(path)))
     .concat(kicks.map((path: string)=> mobileNet(readInput(path))))
     .concat(others.map((path: string)=> mobileNet(readInput(path))))
    ) as tf.Tensor2D;
    

    我們對壓縮和灰階化的圖片調(diào)用MobileNet,之后將輸出傳遞給訓(xùn)練過的模型。 該模型返回一維張量,我們用dataSync將其轉(zhuǎn)換為一個數(shù)組。 下一步,通過使用Array.from我們將類型化數(shù)組轉(zhuǎn)換為JavaScript數(shù)組,數(shù)組中包含我們提取幀中三種姿勢的概率。

    如果既不是踢腿也不是拳擊的姿勢的概率高于0.4,我們將返回站立不動。 否則,如果顯示高于0.32的概率拳擊,我們會向MK.js發(fā)出拳擊指令。 如果踢腿的概率超過0.32,那么我們發(fā)出一個踢腿動作。

    以下就是完整的演示效果:



    動作識別

    如果我們收集到更大的多樣性數(shù)據(jù)集,那么我們搭建的模型就能更精確處理每一幀。但這樣就夠了嗎?顯然不是,請看以下兩張圖:



    它們都是踢腿動作,但實際上在視頻中有很大的不同,是兩種不同的動作。



    為了識別動作,我們還需要使用RNN(循環(huán)神經(jīng)網(wǎng)絡(luò)),RNN的優(yōu)勢在處理時間序列問題,比如

    • 自然語言處理,詞語的意思需要聯(lián)系上下文
    • 根據(jù)歷史記錄,預(yù)測用戶將要訪問的頁面
    • 識別一系列幀中的動作

    若要識別動作,我們還需要將數(shù)幀畫面輸入CNN,再將輸出結(jié)果輸入RNN。

    總結(jié)

    在本文中,我們開發(fā)了一個圖像分類模型。為此,我們手動提取視頻幀并收集數(shù)據(jù)集,將它們分成三個不同的類別,然后使用imgaug進行數(shù)據(jù)增強。

    之后,我們通過MobileNet來解釋什么是遷移學(xué)習(xí),以及我們?nèi)绾卫肕obileNet。經(jīng)過訓(xùn)練,我們的模型達到了90%以上的準(zhǔn)確率!

    為了在瀏覽器中使用我們開發(fā)的模型,我們將它與MobileNet一起加載,并從用戶的相機中每100ms取出一幀,識別用戶的動作,并使用模型的輸出來控制《真人快打3》中的角色。

    最后,我們簡單討論了如何通過RNN來進一步改進我們的模型。

    我希望你們能夠和我一樣喜歡這個小項目。

    附錄:

    原文地址:

    https://blog.mgechev.com/2018/10/20/transfer-learning-tensorflow-js-data-augmentation-mobile-net/

    原動作識別項目地址:

    https://github.com/mgechev/movement.js

    JS版《真人快打》項目地址:

    https://github.com/mgechev/mk.js

    imgaug:

    https://github.com/aleju/imgaug

    MobileNet神經(jīng)網(wǎng)絡(luò):

    https://www.npmjs.com/package/@tensorflow-models/mobilenet

    查 編譯整理

    量子位 出品 | 公眾號 QbitAI

    小時候的你在游戲中搓著手柄,在現(xiàn)實中是否也會模仿這《拳皇》的動作?用身體控制游戲角色的體感游戲很早就已出現(xiàn),但需要體感手柄(Wii)或體感攝像頭(微軟Kinect)配合。而現(xiàn)在,筆記本就能幫你做到這一切!

    最近,有一位名叫Minko Gechev的軟件工程師實現(xiàn)了在筆記本上玩《真人快打》(Mortal Kombat),只需要一顆前置攝像頭即可。



    早在5年前,他就曾展示過體感玩格斗游戲的項目成果:



    當(dāng)時實現(xiàn)方案很簡單,也沒有利用時下流行的AI技術(shù)。但是這套算法離完美還相去甚遠,因為需要單色畫面背景作為參照,使用條件苛刻。

    5年間,無論是網(wǎng)絡(luò)瀏覽器的API,還是WebGL都有了長足的發(fā)展。于是這名工程師決定用TensorFlow.js來改進他的游戲程序,并在他個人Blog上放出了完整教程。

    量子位對文章做了編譯整理,主要內(nèi)容是訓(xùn)練模型識別《真人快打》這款游戲主要有拳擊、踢腿兩種動作,并通過模型輸出結(jié)果控制游戲人物做出對應(yīng)動作。

    以下就是他Blog的主要內(nèi)容:

    簡介

    我將分享用TensorFlow.js和MobileNet創(chuàng)建動作分類算法的一些經(jīng)驗,全文將分為以下幾部分:

    • 為圖片分類收集數(shù)據(jù)
    • 使用imgaug進行數(shù)據(jù)增強
    • 使用MobileNet遷移學(xué)習(xí)
    • 二元分類和N元分類
    • 在瀏覽器中使用TensorFlow.js模型訓(xùn)練圖片分類

    簡單討論使用LSTM進行動作分類

    我們將開發(fā)一種監(jiān)督深度學(xué)習(xí)模型,利用筆記本攝像頭獲取的圖像來分辨用戶是在出拳、出腿或者沒有任何動作。最終演示效果如下圖:



    理解本文內(nèi)容需要有基本的軟件工程和JavaScript知識。如果你有一些基本的深度學(xué)習(xí)知識會很有幫助,但非硬性要求。

    收集數(shù)據(jù)

    深度學(xué)習(xí)模型的準(zhǔn)確性在很大程度上取決于訓(xùn)練數(shù)據(jù)的質(zhì)量。因此,我們首要的目標(biāo)是建立一個豐富的訓(xùn)練數(shù)據(jù)集。

    我們的模型需要識別人物的拳擊和踢腿,所以應(yīng)當(dāng)從以下三個分類中收集圖像:

    • 拳擊
    • 踢腿
    • 其他

    為了這個實驗,我找到兩位志愿者幫我收集圖像。我們總共錄制了5段視頻,每段都包含2-4個拳擊動作和2-4個踢腿動作。由于收集到的是視頻文件,我們還需要使用ffmpeg將之轉(zhuǎn)化為一幀一幀的圖片:

    ffmpeg -i video.mov $filename%03d.jpg

    最終,在每個目錄下,我們都收集了大約200張圖片,如下:



    注:除了拳擊和踢腿外,圖片目錄中最多的是“其他”部分,主要是走動、轉(zhuǎn)身、開關(guān)視頻錄制的一些畫面。如果這部分內(nèi)容太多,會有風(fēng)險導(dǎo)致訓(xùn)練后的模型產(chǎn)生偏見,把應(yīng)該歸于前兩類的圖片劃分到“其他”中,因此我們減少了這部分圖片的量。

    如果只使用這600張相同環(huán)境、相同人物的圖片,我們將無法獲得很高的準(zhǔn)確度。為了進一步提高識別的準(zhǔn)確度,我們將使用數(shù)據(jù)增強對樣本進行擴充。

    數(shù)據(jù)增強

    數(shù)據(jù)增強是一種通過已有數(shù)據(jù)集合成新樣本的技術(shù),可以幫助我們增加數(shù)據(jù)集的樣本量和多樣性。我們可以將原始圖片處理一下轉(zhuǎn)變成新圖,但處理過程不能太過激烈,好讓機器能夠?qū)π聢D片正確歸類。

    常見的處理圖片的方式有旋轉(zhuǎn)、反轉(zhuǎn)顏色、模糊等等。網(wǎng)上已有現(xiàn)成軟件,我將使用一款由Python編寫的imgaug的工具(項目地址見附錄),我的數(shù)據(jù)增強代碼如下:

    np.random.seed(44)
    ia.seed(44)
    def main():
     for i in range(1, 191):
     draw_single_sequential_images(str(i), "others", "others-aug")
     for i in range(1, 191):
     draw_single_sequential_images(str(i), "hits", "hits-aug")
     for i in range(1, 191):
     draw_single_sequential_images(str(i), "kicks", "kicks-aug")
    def draw_single_sequential_images(filename, path, aug_path):
     image=misc.imresize(ndimage.imread(path + "/" + filename + ".jpg"), (56, 100))
     sometimes=lambda aug: iaa.Sometimes(0.5, aug)
     seq=iaa.Sequential(
     [
     iaa.Fliplr(0.5), # horizontally flip 50% of all images
     # crop images by -5% to 10% of their height/width
     sometimes(iaa.CropAndPad(
     percent=(-0.05, 0.1),
     pad_mode=ia.ALL,
     pad_cval=(0, 255)
     )),
     sometimes(iaa.Affine(
     scale={"x": (0.8, 1.2), "y": (0.8, 1.2)}, # scale images to 80-120% of their size, individually per axis
     translate_percent={"x": (-0.1, 0.1), "y": (-0.1, 0.1)}, # translate by -10 to +10 percent (per axis)
     rotate=(-5, 5),
     shear=(-5, 5), # shear by -5 to +5 degrees
     order=[0, 1], # use nearest neighbour or bilinear interpolation (fast)
     cval=(0, 255), # if mode is constant, use a cval between 0 and 255
     mode=ia.ALL # use any of scikit-image's warping modes (see 2nd image from the top for examples)
     )),
     iaa.Grayscale(alpha=(0.0, 1.0)),
     iaa.Invert(0.05, per_channel=False), # invert color channels
     # execute 0 to 5 of the following (less important) augmenters per image
     # don't execute all of them, as that would often be way too strong
     iaa.SomeOf((0, 5),
     [
     iaa.OneOf([
     iaa.GaussianBlur((0, 2.0)), # blur images with a sigma between 0 and 2.0
     iaa.AverageBlur(k=(2, 5)), # blur image using local means with kernel sizes between 2 and 5
     iaa.MedianBlur(k=(3, 5)), # blur image using local medians with kernel sizes between 3 and 5
     ]),
     iaa.Sharpen(alpha=(0, 1.0), lightness=(0.75, 1.5)), # sharpen images
     iaa.Emboss(alpha=(0, 1.0), strength=(0, 2.0)), # emboss images
     iaa.AdditiveGaussianNoise(loc=0, scale=(0.0, 0.01*255), per_channel=0.5), # add gaussian noise to images
     iaa.Add((-10, 10), per_channel=0.5), # change brightness of images (by -10 to 10 of original value)
     iaa.AddToHueAndSaturation((-20, 20)), # change hue and saturation
     # either change the brightness of the whole image (sometimes
     # per channel) or change the brightness of subareas
     iaa.OneOf([
     iaa.Multiply((0.9, 1.1), per_channel=0.5),
     iaa.FrequencyNoiseAlpha(
     exponent=(-2, 0),
     first=iaa.Multiply((0.9, 1.1), per_channel=True),
     second=iaa.ContrastNormalization((0.9, 1.1))
     )
     ]),
     iaa.ContrastNormalization((0.5, 2.0), per_channel=0.5), # improve or worsen the contrast
     ],
     random_order=True
     )
     ],
     random_order=True
     )
     im=np.zeros((16, 56, 100, 3), dtype=np.uint8)
     for c in range(0, 16):
     im[c]=image
     for im in range(len(grid)):
     misc.imsave(aug_path + "/" + filename + "_" + str(im) + ".jpg", grid[im])
    

    每張圖片最后都被擴展成16張照片,考慮到后面訓(xùn)練和評估時的運算量,我們減小了圖片體積,每張圖的分辨率都被壓縮成100*56。



    建立模型

    現(xiàn)在,我們開始建立圖片分類模型。處理圖片使用的是CNN(卷積神經(jīng)網(wǎng)絡(luò)),CNN適合于圖像識別、物體檢測和分類領(lǐng)域。

    遷移學(xué)習(xí)

    遷移學(xué)習(xí)允許我們使用已被訓(xùn)練過網(wǎng)絡(luò)。我們可以從任何一層獲得輸出,并把它作為新的神經(jīng)網(wǎng)絡(luò)的輸入。這樣,訓(xùn)練新創(chuàng)建的神經(jīng)網(wǎng)絡(luò)能達到更高的認知水平,并且能將源模型從未見過的圖片進行正確地分類。

    我們在文中將使用MobileNet神經(jīng)網(wǎng)絡(luò)(安裝包地址見附錄),它和VGG-16一樣強大,但是體積更小,在瀏覽器中的載入時間更短。

    在瀏覽器中運行模型

    在這一部分,我們將訓(xùn)練一個二元分類模型。

    首先,我們?yōu)g覽器的游戲腳本MK.js中運行訓(xùn)練過的模型。代碼如下:

    const video=document.getElementById('cam');
    const Layer='global_average_pooling2d_1';
    const mobilenetInfer=m=> (p): tf.Tensor<tf.Rank>=> m.infer(p, Layer);
    const canvas=document.getElementById('canvas');
    const scale=document.getElementById('crop');
    const ImageSize={
     Width: 100,
     Height: 56
    };
    navigator.mediaDevices
     .getUserMedia({
     video: true,
     audio: false
     })
     .then(stream=> {
     video.srcObject=stream;
     });
    

    以上代碼中一些變量和函數(shù)的注釋:

    • video:頁面中的HTML5視頻元素
    • Layer:MobileNet層的名稱,我們從中獲得輸出并把它作為我們模型的輸入
    • mobilenetInfer:從MobileNet接受例子,并返回另一個函數(shù)。返回的函數(shù)接受輸入,并從MobileNet特定層返回相關(guān)的輸出
    • canvas:將取出的幀指向HTML5的畫布
    • scale:壓縮幀的畫布

    第二步,我們從攝像頭獲取視頻流,作為視頻元素的源。對獲得的圖像進行灰階濾波,改變其內(nèi)容:

    const grayscale=(canvas: HTMLCanvasElement)=> {
     const imageData=canvas.getContext('2d').getImageData(0, 0, canvas.width, canvas.height);
     const data=imageData.data;
     for (let i=0; i < data.length; i +=4) {
     const avg=(data[i] + data[i + 1] + data[i + 2]) / 3;
     data[i]=avg;
     data[i + 1]=avg;
     data[i + 2]=avg;
     }
     canvas.getContext('2d').putImageData(imageData, 0, 0);
    };
    

    第三步,把訓(xùn)練過的模型和游戲腳本MK.js連接起來。

    let mobilenet: (p: any)=> tf.Tensor<tf.Rank>;
    tf.loadModel('http://localhost:5000/model.json').then(model=> {
     mobileNet
     .load()
     .then((mn: any)=> mobilenet=mobilenetInfer(mn))
     .then(startInterval(mobilenet, model));
    });
    

    在以上代碼中,我們將MobileNet的輸出傳遞給mobilenetInfer方法,從而獲得了從網(wǎng)絡(luò)的隱藏層中獲得輸出的快捷方式。此外,我還引用了startInterval。

    const startInterval=(mobilenet, model)=> ()=> {
     setInterval(()=> {
     canvas.getContext('2d').drawImage(video, 0, 0);
     grayscale(scale
     .getContext('2d')
     .drawImage(
     canvas, 0, 0, canvas.width,
     canvas.width / (ImageSize.Width / ImageSize.Height),
     0, 0, ImageSize.Width, ImageSize.Height
     ));
     const [punching]=Array.from((
     model.predict(mobilenet(tf.fromPixels(scale))) as tf.Tensor1D)
     .dataSync() as Float32Array);
     const detect=(window as any).Detect;
     if (punching >=0.4) detect && detect.onPunch();
     }, 100);
    };
    

    startInterval正是關(guān)鍵所在,它每間隔100ms引用一個匿名函數(shù)。在這個匿名函數(shù)中,我們把視頻當(dāng)前幀放入畫布中,然后壓縮成100*56的圖片后,再用于灰階濾波器。

    在下一步中,我們把壓縮后的幀傳遞給MobileNet,之后我們將輸出傳遞給訓(xùn)練過的模型,通過dataSync方法返回一個一維張量punching。

    最后,我們通過punching來確定拳擊的概率是否高于0.4,如果是,將調(diào)用onPunch方法,現(xiàn)在我們可以控制一種動作了:



    用N元分類識別拳擊和踢腿

    在這部分,我們將介紹一個更智能的模型:使用神經(jīng)網(wǎng)絡(luò)分辨三種動作:拳擊、踢腿和站立。

    const punches=require('fs')
     .readdirSync(Punches)
     .filter(f=> f.endsWith('.jpg'))
     .map(f=> `${Punches}/${f}`);
    const kicks=require('fs')
     .readdirSync(Kicks)
     .filter(f=> f.endsWith('.jpg'))
     .map(f=> `${Kicks}/${f}`);
    const others=require('fs')
     .readdirSync(Others)
     .filter(f=> f.endsWith('.jpg'))
     .map(f=> `${Others}/${f}`);
    const ys=tf.tensor2d(
     new Array(punches.length)
     .fill([1, 0, 0])
     .concat(new Array(kicks.length).fill([0, 1, 0]))
     .concat(new Array(others.length).fill([0, 0, 1])),
     [punches.length + kicks.length + others.length, 3]
    );
    const xs: tf.Tensor2D=tf.stack(
     punches
     .map((path: string)=> mobileNet(readInput(path)))
     .concat(kicks.map((path: string)=> mobileNet(readInput(path))))
     .concat(others.map((path: string)=> mobileNet(readInput(path))))
    ) as tf.Tensor2D;
    

    我們對壓縮和灰階化的圖片調(diào)用MobileNet,之后將輸出傳遞給訓(xùn)練過的模型。 該模型返回一維張量,我們用dataSync將其轉(zhuǎn)換為一個數(shù)組。 下一步,通過使用Array.from我們將類型化數(shù)組轉(zhuǎn)換為JavaScript數(shù)組,數(shù)組中包含我們提取幀中三種姿勢的概率。

    如果既不是踢腿也不是拳擊的姿勢的概率高于0.4,我們將返回站立不動。 否則,如果顯示高于0.32的概率拳擊,我們會向MK.js發(fā)出拳擊指令。 如果踢腿的概率超過0.32,那么我們發(fā)出一個踢腿動作。

    以下就是完整的演示效果:



    動作識別

    如果我們收集到更大的多樣性數(shù)據(jù)集,那么我們搭建的模型就能更精確處理每一幀。但這樣就夠了嗎?顯然不是,請看以下兩張圖:



    它們都是踢腿動作,但實際上在視頻中有很大的不同,是兩種不同的動作。



    為了識別動作,我們還需要使用RNN(循環(huán)神經(jīng)網(wǎng)絡(luò)),RNN的優(yōu)勢在處理時間序列問題,比如

    • 自然語言處理,詞語的意思需要聯(lián)系上下文
    • 根據(jù)歷史記錄,預(yù)測用戶將要訪問的頁面
    • 識別一系列幀中的動作

    若要識別動作,我們還需要將數(shù)幀畫面輸入CNN,再將輸出結(jié)果輸入RNN。

    總結(jié)

    在本文中,我們開發(fā)了一個圖像分類模型。為此,我們手動提取視頻幀并收集數(shù)據(jù)集,將它們分成三個不同的類別,然后使用imgaug進行數(shù)據(jù)增強。

    之后,我們通過MobileNet來解釋什么是遷移學(xué)習(xí),以及我們?nèi)绾卫肕obileNet。經(jīng)過訓(xùn)練,我們的模型達到了90%以上的準(zhǔn)確率!

    為了在瀏覽器中使用我們開發(fā)的模型,我們將它與MobileNet一起加載,并從用戶的相機中每100ms取出一幀,識別用戶的動作,并使用模型的輸出來控制《真人快打3》中的角色。

    最后,我們簡單討論了如何通過RNN來進一步改進我們的模型。

    我希望你們能夠和我一樣喜歡這個小項目。

    附錄:

    原文地址:

    https://blog.mgechev.com/2018/10/20/transfer-learning-tensorflow-js-data-augmentation-mobile-net/

    原動作識別項目地址:

    https://github.com/mgechev/movement.js

    JS版《真人快打》項目地址:

    https://github.com/mgechev/mk.js

    imgaug:

    https://github.com/aleju/imgaug

    MobileNet神經(jīng)網(wǎng)絡(luò):

    https://www.npmjs.com/package/@tensorflow-models/mobilenet

    內(nèi)容來源于@什么值得買APP,觀點僅代表作者本人 |作者:別比比了我知道我很帥



    一、購買理由

    在這個92#油價突破8元大關(guān)、饅頭漲到1塊1個、顯卡天價一卡難求,啥啥都漲價就工資沒漲還越來越卷的現(xiàn)狀下,要想提高生活質(zhì)量,就得開源和節(jié)流,開源咱不懂,節(jié)流倒是可以和大家分享分享經(jīng)驗。這次主要想向大家分享一款性價比非常高,只要幾百塊就能暢玩一百多款體感游戲、幾百款上代、上上代游戲大作,卻被人們遺忘許久的家庭娛樂健身神器——Xbox 360。

    (1)什么是XBOX360?

    Xbox 360是微軟的第2代家用游戲主機。2005年11月面世,在服役了10多年之后,于2016年4月由官方宣布Xbox360全系列主機正式停產(chǎn),這款游戲機自2005年11月誕生以來,銷量已經(jīng)達到8400萬臺。

    從發(fā)售至今,Xbox 360已經(jīng)發(fā)行過核心版、簡裝版、豪華版、精英版、Slim版以及各種游戲限量版,XBOX360向下全面兼容XBOX一代游戲。通過外置HD播放器,支持1080P的高清播放,2010年E3,微軟發(fā)布更輕薄的XBOX Slim主機,支持2010年11月上市的KINECT。2013年3月1日發(fā)布更輕、更薄的Xbox360 E版,配置與 Xbox360 Slim 相同。XBOX360擁有強勁的主機性能,并且在搶先發(fā)售的優(yōu)勢下領(lǐng)先其他競爭者,完善的網(wǎng)絡(luò),豐富的游戲是XBOX360的優(yōu)勢。2010年底發(fā)售的KINECT將會把XBOX360推向一個更高的位置。

    (2)XBOX360的型號區(qū)別?

    這里主要簡單介紹一下雙65、S版和E版,這三款是目前能夠購買到的性價比比較高/且能夠正常穩(wěn)定使用的機型。

    此段介紹引自百度XBOX360貼吧yy77zz置頂帖,僅為做科普,如有侵權(quán),聯(lián)系本人刪除:

    1. 雙65
    雙65是08年底發(fā)售的,可以說是里程碑似的的一代主機,CPU和GPU都采用65nm工藝,徹底解決了之前的三紅問題,解決的微軟的質(zhì)量危機。目前也為很多玩家稱為最耐用、性價比最高的一代主機,目前仍在二手市場上有一定的交易量。究其原因除了價格便宜以外,雙65nm的CPU和GPU芯片采用獨立式設(shè)計,自制機開機快,運行穩(wěn)定等諸多優(yōu)點。但相比雙45nm的薄機缺點也是顯而易見的,芯片制作工藝低、體型大、功耗大、沒有無線網(wǎng)卡(不過可以利用USB無線網(wǎng)卡來實現(xiàn)無線連接WIFI功能)、沒有專用體感接口、閃存容量小,一般為256m、年代久遠無新機,返修機多、硬盤不好拆卸等。

    2. S版
    S版是指Xbox360 Slim版主機。2010年6月發(fā)售,S版主機的CPU和GPU都采用45nm工藝,并且集成到了一塊芯片當(dāng)中,內(nèi)置了 802.11N 無線網(wǎng)卡,從外觀上S版有明顯的瘦腰部分(俗稱小蠻腰),有4G閃存和內(nèi)置250G硬盤的兩種版本。內(nèi)置硬盤可從底部很方便的抽取拆卸,兩個小風(fēng)扇改為一個大風(fēng)扇,降低噪音,風(fēng)扇也更加安靜,電源開關(guān)和光驅(qū)按鈕采用觸感型按鈕設(shè)計,用戶只需要揮動手指,便可以完成開關(guān)機,彈出光驅(qū)等操作。更全的接口(有Kinect專用的電源和數(shù)據(jù)接口),更小的變壓器,與舊版互不兼容。跟厚機比,最大區(qū)別是外觀變了,CPU和GPU工藝是45nm,更省電,發(fā)熱量更小。當(dāng)然主板也做了更改,主要是為了防破解。

    3.E版
    E版是2013年E3展上發(fā)布的型號??傮w上E版跟S版相比,改變更多的是外觀,只是為了外觀造型迎合當(dāng)時微軟的新主機XBOX ONE的造型才做的改變。而其內(nèi)部結(jié)構(gòu)、硬盤、散熱系統(tǒng)、光驅(qū)等等硬件配置并沒有太大改變,簡單地說就是Xbox360 Slim的換殼。

    這三款中,我個人認為2013E版最美觀,論性價比雙65最高,S版相對最靠譜,畢竟有很多商家會拿S版改為E版出售。

    價格建議:

    根據(jù)我本人近期在海鮮市場上搜索記錄,大概600-1000元可以購買到以上3款任意機型帶單/雙手柄+Kinect體感識別器的套裝,非常劃算。

    讓我們看看通過花費600-1000元能夠購買到什么:

    1.一臺雙65/S版/E版的XBOX360游戲主機

    2.1-2個游戲手柄

    3.Kinect體感識別器套裝

    4.一塊白送的硬盤(雖然不值什么錢但是自帶一堆游戲會省去很多麻煩)

    當(dāng)前,600-1000元連一塊甜點級的二手顯卡都買不到!更別說這個價位的電腦幾乎無法流暢玩GTA5、NBA2K18、孤島危機3等游戲,更別說XBOX360還能玩一百多個體感游戲了,屬實降維打擊。

    讓我們再看看XBOX360支持哪些游戲

    XBOX360 KINECT支持的英文體感游戲(僅部分約109款):

    XBOX360支持的中文游戲(僅部分約255款):

    X360CH001 – 11只眼 交錯的視線[中文][GOD]

    X360CH002 – FIA世界汽車?yán)﹀\標(biāo)賽4[中文][GOD]

    X360CH003 – FIFA2013[中文][GOD]

    X360CH004 – FIFA2014[中文][GOD]

    X360CH005 – FIFA2015[中文][GOD]

    X360CH006 – kinect運動大會2[KINECT體感][中文][GOD]

    X360CH007 – kinect運動大會[KINECT體感][中文][GOD]

    X360CH008 – NBA2K12 美國職業(yè)籃球[傳奇表演DLC][中文][GOD]

    X360CH009 – NBA2K13 美國職業(yè)籃球[中文][GOD]

    X360CH010 – NBA2K14 美國職業(yè)籃球[中文][GOD]

    X360CH011 – NBA2K15 美國職業(yè)籃球[中文][GOD]

    X360CH012 – NBA2K16 美國職業(yè)籃球[中文][GOD]

    X360CH013 – NBA2K17 美國職業(yè)籃球[中文][GOD]

    X360CH014 – NBA2K18 美國職業(yè)籃球[中文][GOD]

    X360CH015 – Nike教練幫你健身[KINECT體感][中文][GOD]

    X360CH016 – 愛麗絲 瘋狂回歸[中文][GOD](不死機版)

    X360CH017 – 暗黑破壞神3[中文][GOD]

    X360CH018 – 暗黑之魂(黑暗之魂)2[中文][GOD]

    X360CH019 – 暗黑之魂(黑暗之魂)2 原罪哲人[中文][GOD]

    X360CH020 – 暗黑之魂(黑暗之魂)受死版[中文][GOD]

    X360CH021 – 暗影狂奔[中文][GOD]

    X360CH022 – 班卓熊 神奇螺絲[中文][GOD]

    X360CH023 – 寶貝萬歲[中文][GOD]

    X360CH024 – 寶貝萬歲 歡樂派對[中文][GOD]

    X360CH025 – 寶貝萬歲 天堂煩惱[中文][GOD]

    X360CH026 – 炙熱之魂[中文][GOD]

    X360CH027 – 蝙蝠俠 阿甘起源(阿卡姆起源)[中文][GOD]

    X360CH028 – 蝙蝠俠 阿甘之城(阿卡姆之城)[中文][GOD]

    X360CH029 – 蝙蝠俠 黑門[中文][GOD]

    X360CH030 – 蝙蝠俠 秘密系譜(1-5全集)[中文][GOD]

    X360CH031 – 變形金剛暗焰崛起[中文][GOD]

    X360CH032 – 波斯王子5 遺忘之沙[中文][GOD]

    X360CH033 – 蒼翼默示錄[中文][GOD]

    X360CH034 – 蒼翼默示錄 連續(xù)變換[中文][GOD]

    X360CH035 – 蒼翼默示錄 連續(xù)變換 擴展版 [中文][GOD]

    X360CH036 – 超級爆摔跤[中文][GOD]

    X360CH037 – 熾焰帝國末日之環(huán)[中文][GOD]

    X360CH038 – 除暴戰(zhàn)警2(鎮(zhèn)壓2)[中文][GOD]

    X360CH039 – 除暴戰(zhàn)警[中文][GOD]

    X360CH040 – 刺客信條2[中文][GOD]

    X360CH041 – 刺客信條3[中文][GOD]

    X360CH042 – 刺客信條4黑旗[中文][GOD]

    X360CH043 – 刺客信條 叛變[中文][GOD]

    X360CH044 – 刺客信條 啟示錄[中文][GOD]

    X360CH045 – 刺客信條 兄弟會[中文][GOD]

    X360CH046 – 戴斯班克陪根[中文][GOD]

    X360CH047 – 德軍總部新秩序[中文][GOD]

    X360CH048 – 迪士尼皮克斯大冒險[KINECT體感][中文][GOD]

    X360CH049 – 迪斯尼樂園大冒險[KINECT體感][中文][GOD]

    X360CH050 – 敵軍前線[中文][GOD]

    X360CH051 – 洞穴2[中文][GOD]

    X360CH052 – 多重陰影[XBLA][中文]

    X360CH053 – 惡靈附身[中文][GOD]

    X360CH054 – 惡魔城 暗影之王2[中文][GOD]

    X360CH055 – 惡魔城 暗影之王[中文][GOD]

    X360CH056 – 惡魔城 暗影之王 命運之鏡(宿命鏡面)[中文][GOD]

    X360CH057 – 二進制領(lǐng)域[中文][GOD]

    X360CH058 – 翡翠王國[中文][GOD]

    X360CH059 – 分裂細胞5斷罪[中文][GOD]

    X360CH060 – 瘋狂大亂斗2[中文][GOD]

    X360CH061 – 孤島驚魂3[中文][GOD]

    X360CH062 – 孤島驚魂4[中文][GOD]

    X360CH063 – 孤島危機1[中文][GOD]

    X360CH064 – 孤島危機2[中文][GOD]

    X360CH065 – 孤島危機3[中文][GOD]

    X360CH066 – 古墓麗影9[中文][GOD]

    X360CH067 – 古墓麗影 崛起[18DLC][中文][GOD]

    X360CH068 – 光環(huán)3最后一戰(zhàn)[中文語音][中文][GOD]

    X360CH069 – 光環(huán)4[中文][GOD]

    X360CH070 – 光環(huán)HD高清重制版[中文][GOD]

    X360CH071 – 光環(huán) 地獄傘兵[中文][GOD]

    X360CH072 – 光環(huán) 斯巴達突襲[中文][GOD]

    X360CH073 – 光環(huán)戰(zhàn)爭[中文][GOD]

    X360CH074 – 光環(huán) 致遠星[中文][GOD]

    X360CH075 – 光之子[中文][GOD]

    X360CH076 – 鬼魂力量3(圣魔戰(zhàn)記3無罪的狂熱)[中文][GOD]

    X360CH077 – 鬼泣5 全DLC[中文][GOD]

    X360CH078 – 鬼屋魔影5(國語配音)[中文][GOD]

    X360CH079 – 致命慣性[中文][GOD]

    X360CH080 – 行尸走肉 生存本能[中文][騏驥漢化組][GOD]

    X360CH081 – 航母指揮官 蓋亞行動[中文][GOD]

    X360CH082 – 合金獵犬[中文][GOD]

    X360CH083 – 合金裝備崛起 復(fù)仇[中文][GOD]

    X360CH084 – 黑暗潛伏者[中文][GOD]

    X360CH085 – 黑手黨2[中文][GOD]

    X360CH086 – 黑手黨 黑幫之城[中文][GOD]

    X360CH087 – 歡樂戰(zhàn)爭[中文][GOD]

    X360CH088 – 忠勇之心 偉大戰(zhàn)爭[中文][GOD]

    X360CH089 – 荒野大鏢客 救贖 年度版[漢化v2.0][全DLC][軒轅漢化組][GOD]Disk1+2

    X360CH090 – 皇牌空戰(zhàn)6[中文][GOD]

    X360CH091 – 火爆狂飆 復(fù)仇[中文][GOD]

    X360CH092 – 火焰限界[中文][GOD]

    X360CH093 – 火影忍者疾風(fēng)傳 究極忍者風(fēng)暴 革命[中文][GOD]

    X360CH094 – 終極街頭霸王4(終極街霸4)[中文][XEX]

    X360CH095 – 火影忍者 究極忍者風(fēng)暴2[中文][GOD]

    X360CH096 – 火影忍者 究極忍者風(fēng)暴3完全爆發(fā)[中文][GOD]

    X360CH097 – 極品飛車9 最高通緝[中文][GOD]

    X360CH098 – 極品飛車10 卡本溪谷[中文][GOD]

    X360CH099 – 極品飛車11 街頭狂飆[中文][GOD]

    X360CH100 – 極品飛車12 無間風(fēng)云[中文][GOD]

    X360CH101 – 極品飛車13 變速[中文][GOD]

    X360CH102 – 極品飛車14 熱力追蹤3[中文][GOD]

    X360CH103 – 極品飛車15 變速2[中文][GOD]

    X360CH104 – 極品飛車16 亡命天涯[中文][GOD]

    X360CH105 – 極品飛車17 最高通緝[中文][GOD]

    X360CH106 – 極品飛車18 宿敵[中文][GOD]

    X360CH107 – 極限競速2[中文][GOD]

    X360CH108 – 極限競速3[中文][GOD]

    X360CH109 – 極限競速4年度版[中文][GOD]

    X360CH110 – 極限競速 地平線2[中文][GOD]

    X360CH111 – 極限競速 地平線[中文][GOD]

    X360CH112 – 劍勇傳奇 忍者龍劍傳Z[中文][GOD]

    X360CH113 – 街霸X鐵拳[中文][GOD]

    X360CH114 – 勁舞革命宇宙3 中文曲特別版[中文][GOD]

    X360CH115 – 九十九夜[中文][GOD]

    X360CH116 – 狙擊精英3[中文][軒轅漢化組][GOD](建議使用XEX版)

    X360CH117 – 狙擊精英3[中文][軒轅漢化組][XEX]

    X360CH118 – 狙擊精英V2[中文][GOD]

    X360CH119 – 狙擊手 幽靈戰(zhàn)士2[中文][GOD]

    X360CH120 – 凱蜜歐傳說 力量元素[中文][GOD]

    X360CH121 – 凱瑟琳[中文][GOD]

    X360CH122 – 看門狗[血恨交織DLC][中文][GOD]

    X360CH123 – 藍龍[中文][GOD]

    X360CH124 – 樂高蝙蝠俠3飛躍哥譚市[中文][GOD]

    X360CH125 – 樂高霍比特人[中文][GOD]

    X360CH126 – 樂高漫威超級英雄[中文][GOD]

    X360CH127 – 兩個世界[中文][GOD]

    X360CH128 – 獵天使魔女[中文][GOD]

    X360CH129 – 裝甲核心5[中文][GOD]

    X360CH130 – 龍騰世紀(jì)2[中文][GOD]

    X360CH131 – 龍騰世紀(jì)3審判[中文][GOD]

    X360CH132 – 龍之信條黑暗覺醒[中文][GOD]

    X360CH133 – 馬克思佩恩3[中文][GOD]

    X360CH134 – 冒險家計劃[中文][GOD]

    X360CH135 – 命運石之門(斯坦因之門)[中文][GOD]

    X360CH136 – 模擬山羊[中文][GOD]

    X360CH137 – 謀殺靈魂疑犯[中文][GOD]

    X360CH138 – 木偶快槍手[KINECT體感][中文][GOD]

    X360CH139 – 幕府將軍的頭骨[中文][GOD]

    X360CH140 – 南方公園真理之杖[中文][GOD]

    X360CH141 – 虐殺原型2[中文][GOD]

    X360CH142 – 秋之回憶7 打勾勾的記憶[中文][GOD]

    X360CH143 – 求生之路2[中文][GOD]

    X360CH144 – 求生之路[中文][GOD]

    X360CH145 – 權(quán)力的游戲 全6章[中文][GOD]

    X360CH146 – 全民派對[中文][GOD]

    X360CH147 – 拳皇13[中文][GOD]

    X360CH148 – 熱血無賴 沉睡的獵犬[中文][GOD]

    X360CH149 – 忍者龍劍傳2[中文][GOD]

    X360CH150 – 忍者龍劍傳3[中文][GOD]

    X360CH151 – 忍者龍劍傳3 刀鋒邊緣[中文][GOD]

    X360CH152 – 忍者之刃[中文][GOD]

    X360CH153 – 榮譽勛章[中文][GOD]

    X360CH154 – 榮譽勛章 戰(zhàn)士[中文][GOD]

    X360CH155 – 喪尸圍城2[中文][GOD]

    X360CH156 – 殺手5 赦免[中文][GOD]

    X360CH157 – 殺手已死[中文][GOD]

    X360CH158 – 閃回[中文][GOD]

    X360CH159 – 上古卷軸5傳奇版[中文][GOD]

    X360CH160 – 深淵奧德賽[中文][GOD]

    X360CH161 – 神鬼寓言1高清重制周年紀(jì)念版[中文][GOD]

    X360CH162 – 神鬼寓言2年度白金版[中文][GOD]

    X360CH163 – 神鬼寓言3[中文][GOD]

    X360CH164 – 神鬼寓言 旅途[KINECT體感][中文][GOD]

    X360CH165 – 神鬼寓言 英雄[XBLA]

    X360CH166 – 神偷4[中文][GOD]

    X360CH167 – 生化奇兵2[中文][GOD]

    X360CH168 – 生化奇兵3 無限[中文][GOD]

    X360CH169 – 生化奇兵[中文][GOD]

    X360CH170 – 生化危機5[中文][GOD]

    X360CH171 – 生化危機6[中文][GOD]

    X360CH172 – 生化危機HD重置版[中文][GOD]

    X360CH173 – 生化危機 啟示錄2[中文][GOD]

    X360CH174 – 生化危機 啟示錄HD[中文][GOD]

    X360CH175 – 體感大冒險[KINECT體感][中文][GOD]

    X360CH176 – 失落的奧德賽 4DVD完整版[中文][GOD]

    X360CH177 – 失落的星球3[中文][GOD]

    X360CH178 – 實況足球2009[中文解說][中文][GOD]

    X360CH179 – 實況足球2010[中文][GOD]

    X360CH180 – 實況足球2011[中文][GOD]

    X360CH181 – 實況足球2012[中文][GOD]

    X360CH182 – 實況足球2013[中文][GOD]

    X360CH183 – 實況足球2014[中文][GOD]

    X360CH184 – 實況足球2015[中文][GOD]

    X360CH185 – 實況足球2016[中文][GOD]

    X360CH186 – 實況足球2017[中文解說][中文][GOD]

    X360CH187 – 實況足球2018[中文][GOD]

    X360CH188 – 使命召喚11 高級戰(zhàn)爭[中文][GOD]

    X360CH189 – 世界街頭賽車(哥譚賽車計劃)3[中文][GOD]

    X360CH190 – 世界街頭賽車(哥譚賽車計劃)4[中文][GOD]

    X360CH191 – 世界摩托錦標(biāo)賽[中文][GOD]

    X360CH192 – 獸人必須死[中文][XBLA].zip

    X360CH193 – 死或生4[中文][GOD]

    X360CH194 – 死或生5終極版[中文][GOD]

    X360CH195 – 死或生 沙灘排球2[中文][GOD]

    X360CH196 – 死或生 沙灘排球2[補丁版][中文][GOD]

    X360CH197 – 死亡島 激流[中文][GOD]

    X360CH198 – 死亡空間2[中文][GOD]

    X360CH199 – 死亡空間3[中文][GOD]

    X360CH200 – 泰坦隕落[中文][GOD]

    X360CH201 – 特技摩托 進化[中文][XBLA].zip

    X360CH202 – 特技摩托 聚變[中文][GOD]

    X360CH203 – 天誅 千亂[中文][GOD]

    X360CH204 – 完美特工前傳(完美黑暗零)[中文][GOD]

    X360CH205 – 我的世界[中文][GOD]

    X360CH206 – 我的世界 故事模式 完整版[中文][GOD]

    X360CH207 – 巫師2 國王刺客 加強版[中文][GOD]

    X360CH208 – 無間戰(zhàn)神 非凡戰(zhàn)士[中文][GOD]

    X360CH209 – 無限試駕[中文][GOD]

    X360CH210 – 舞蹈中心3[KINECT體感][中文][GOD]

    X360CH211 – 舞力全開 兒童版2014[中文][GOD]

    X360CH212 – 勿忘我[中文][GOD]

    X360CH213 – 洗碗工2吸血鬼的微笑[中文][GOD]

    X360CH214 – 洗碗工 死亡武士[中文][GOD]

    X360CH215 – 細胞分裂6 黑名單[中文][GOD]

    X360CH216 – 俠盜獵車手5 GTA5(直裝雙碟版)[v1.21][中文][GOD]

    X360CH217 – 心靈殺手[中文][GOD]

    X360CH218 – 心靈殺手 美國惡夢[中文][GOD]

    X360CH219 – 星球大戰(zhàn)[KINECT體感][中文][GOD]

    X360CH220 – 型可塑[中文][GOD]

    X360CH221 – 幽閉圣地2[中文][GOD]

    X360CH222 – 戰(zhàn)地3[中文][GOD]

    X360CH223 – 戰(zhàn)地4[BUG修正版][中文][GOD]

    X360CH224 – 裝甲核心 判決日[中文][GOD]

    X360CH225 – 戰(zhàn)地 硬仗[中文][GOD]

    X360CH226 – 戰(zhàn)爭機器1[中文][GOD]

    X360CH227 – 戰(zhàn)爭機器2[中文][GOD]

    X360CH228 – 戰(zhàn)爭機器3[中文][GOD]

    X360CH229 – 戰(zhàn)爭機器 審判[中文][GOD]

    X360CH230 – 真三國無雙5[中文][GOD]

    X360CH231 – 真三國無雙5帝國[中文][GOD]

    X360CH232 – 真三國無雙7[中文][GOD]

    X360CH233 – 真三國無雙 聯(lián)合突襲特別版[中文][GOD]

    X360CH234 – 舞蹈中心2[KINECT體感][中文][GOD]

    X360CH235 – 植物大戰(zhàn)僵尸 花園戰(zhàn)爭[中文][GOD]

    X360CH236 – 質(zhì)量效應(yīng)2[中文][GOD]

    X360CH237 – 質(zhì)量效應(yīng)3[中文][GOD]

    X360CH238 – 最終幻想13-2[中文][GOD]

    X360CH239 – 最終幻想13-3 雷霆歸來[中文][GOD]

    X360CH240 – 暗影帝國[中文][XLBA]

    X360CH241 – 城堡毀滅者[中文][XLBA]

    X360CH242 – 風(fēng)卷殘云[中文][XLBA]

    X360CH243 – 颶風(fēng)雷霆賽艇[中文][XLBA]

    X360CH244 – 卡卡頌[中文][XLBA]

    X360CH245 – 卡坦島[中文][XLBA]

    X360CH246 – 淘金者 進化版[中文][XLBA]

    X360CH247 – 突擊英雄[中文][XLBA]

    X360CH248 – 玩具士兵 冷戰(zhàn)[中文][XLBA]

    X360CH249 – 逍遙賽車[KINECT體感][中文][GOD]

    X360CH250 – 新體感腦力鍛煉[KINECT體感][中文][GOD]

    X360CH251 – 型可塑 健身進化2012[KINECT體感][中文][GOD]

    X360CH252 – 假日大飆車[KINECT體感][中文][GOD]

    X360CH253 – 健身教練[中文語音][KINECT體感][中文][GOD]

    X360CH254 – 舞力全開2017[KINECT體感][中文][GOD]

    X360CH255 – 反恐精英 全球攻勢 CSGO[中文][XBLA]

    還支持XBLA DLC全集(225個),在此就不一一列舉了,以上也只是我能搜集到的XBOX360支持的部分游戲,我個人感覺已經(jīng)足夠我玩了,實際上根本玩不過來,而以上未列出的更多游戲非常歡迎評論區(qū)大神進行補充。

    今天主要向大家分享Xbox 360的體感游戲體驗,我認為在現(xiàn)有所有游戲主機中(來來來把PC也算上拉進來一起A了),論體感性能,Xbox 360+Kinect的組合無疑是最好的,它不僅支持最多數(shù)量的體感游戲,同時體感的操作和靈敏度也是最佳的,并且支持最多6人同時享受體感游戲的歡樂體驗。

    在此簡單介紹一下XBOX得以實現(xiàn)如此精準(zhǔn)的體感識別的最大功臣——Kinect

    Kinect是微軟在2009年6月2日的E3大展上,正式公布的XBOX360體感周邊外設(shè)。Kinect徹底顛覆了游戲的單一操作,使人機互動的理念更加徹底的展現(xiàn)出來,網(wǎng)友普遍稱其中文名為“啃奶特”。它是一種3D體感攝影機(開發(fā)代號“Project Natal”),同時它導(dǎo)入了即時動態(tài)捕捉、影像辨識、麥克風(fēng)輸入、語音辨識、社群互動等功能。玩家可以通過這項技術(shù)在游戲中開車、與其他玩家互動、通過互聯(lián)網(wǎng)與其他Xbox玩家分享圖片和信息等。

    微軟的Kinect不需要使用任何控制器,它依靠相機捕捉三維空間中玩家的運動。這個系統(tǒng)也辨識人臉,讓玩家自動連上游戲。它還可辨認聲音和接受命令。在游戲示范中,玩家們用腳踢僅存在于屛幕中的足球,并用伸手設(shè)法攔阻進球。在駕駛游戲中,玩家轉(zhuǎn)動想像中的方向盤來操控電視游戲中的賽車。在繪畫游戲,玩家則是說出顏色--“藍色”或“淺褐色”--然后搖擺雙臂來在數(shù)碼式畫板上飛濺一片油漆?!园俣劝倏?/span>

    Kinect的校準(zhǔn)與識別簡單演示:

    從視頻可以看到,設(shè)置好的Kinect對體感的識別非常精準(zhǔn)!并且識別延遲相當(dāng)?shù)汀?/span>

    二、一點照騙

    ▲XBOX360主機+kinect+手柄全家福

    ▲XBOX360主機+手柄

    ▲XBOX360主機

    ▲XBOX360主機

    ▲Kinect體感攝像頭

    三、體感游戲?qū)Ρ?/h1>

    在此主要選擇舞力全開這款游戲與Switch對比,舞力全開可以在這兩個主機平臺運行,無非游戲版本有所區(qū)別,核心玩法其實都是一樣的。

    (1)XBOX360+舞力全開2014:

    實際上XBOX360最高可以玩舞力全開的2019版本,而我用2014來對比主要是因為特別喜歡里邊這首Moskau,非常魔性動作也不難,和我家隊友跳起來非常歡樂哈哈哈哈。

    具體可以看視頻(不想看視頻的可以看下邊的動圖),記得一定打開聲音。。否則我倆看起來真的很傻哈哈哈哈:

    GIF圖:

    雙機位拍攝之后置機位視角:

    雙機位拍攝之Kinect視角+系統(tǒng)鬼畜剪輯:

    雙機位拍攝之Kinect視角+系統(tǒng)鬼畜剪輯+系統(tǒng)自帶特效:

    (2)Switch+舞力全開2020:



    Switch的體感游戲需要把joy-con握在手中,實際應(yīng)該只能識別手部動作,對非手部區(qū)域的識別比較隨緣。。

    實際上不論XBOX360還是Switch的體感游戲體驗都是不錯的,畢竟我和媳婦都屬于四肢簡單運動細胞不發(fā)達的人,每次跳舞就是圖個樂,盡力完成屏幕上的動作,沒有太高要求,突出一個隨心所欲,想怎么跳就怎么跳哈哈哈,快樂就完事了!

    而Switch相對于XBOX360最欠缺的是kinec的自動錄制+鬼畜剪輯功能!xbox360通過剪輯kinect拍攝的視頻,每首歌曲結(jié)束后都會給我們做鬼畜剪輯小彩蛋!簡直太贊了!我們每次跳完舞最期待的就是看系統(tǒng)把我們剪輯成了什么奇怪的樣子哈哈哈哈,超級快樂!這種快樂是NS等其他游戲主機無法體驗的!因為在Switch上玩體感游戲你完全不知道自己的動作到底做成了啥樣哈哈哈。

    XBOX360除了舞力全開之外還有很多款體感游戲比如體感游戲聚會、體感運動會、體感聚會、尊巴、節(jié)奏派對、龍珠Z等等,以及GTA5等多款上代游戲大作,而NS上也可以玩塞爾達等神作(塞爾達是天?。笥袝r間再錄制相關(guān)視頻向大家分享吧。

    ▲XBOX360+體感龍珠Z

    ▲XBOX360+體感運動會2

    ▲Switch+塞爾達傳說

    四、總結(jié)

    (1)XBOX360的優(yōu)點:

    游戲性對比:

    1.XBOX可以支持255款以上的中文游戲,109個體感游戲,還有225個XBLA DLC,游戲資源非常豐富。

    2.XBOX最值得一提的就是他的體感游戲功能!可以說是我目前玩過所有的游戲設(shè)備中體感做的最好的,沒有之一!kinect物理攝像頭+FACE ID前身算法加持,動作識別非常精準(zhǔn)?。ㄏ啾认聛鞱S那個體感真真兒是個玩具....emmm)同時還可以錄制你玩體感游戲的畫面,在游戲結(jié)束后回放看看自己的動作是否標(biāo)準(zhǔn),和小伙伴一起看對方到底在游戲中做了哪些奇怪的動作哈哈哈,非常快樂!游戲氛圍拉滿。

    ▲感謝值友“天空染藍了?!钡目破?/span>

    功能性對比:XBOX360除了可以玩一些經(jīng)典游戲大作,還能玩體感游戲與家人一起進行身體鍛煉、家庭娛樂,當(dāng)然它還可以作為看電影、聽音樂,只是作為視頻播放器來說支持格式較少,此功能基本可以忽略。

    價格對比:XBOX海鮮市場600-1000元就能搞定,暢玩109款體感游戲+255款以上的中文游戲大作,簡直超值!

    (2)XBOX360的不足:

    1.游戲版本比較老,大多數(shù)獨占游戲現(xiàn)在幾乎都已經(jīng)在pc端移植或者重制,不買它用PC也能玩!

    2.玩體感游戲需要一定空間環(huán)境才能使用,游戲前清除空間中的所有障礙物,如:茶幾、桌椅板凳、沙發(fā)等,玩家與kinect體感識別器最好保持2-3米距離為佳。

    kinect體感對環(huán)境的要求和注意事項:

    ? 最好有一個大一點的電視,推薦50寸以上,這樣玩起來才夠爽。
    ? 最好在一個無障礙的空間進行體感游戲,在游戲前清除空間中的所有障礙物,如:茶幾、桌椅板凳、沙發(fā)等;
    ? 與體感器保持1.8米以上的距離,建議有條件的保持2米以上;
    ? 雙人以上游戲需要更大空間,同時要注意,在玩的盡興時不要弄傷同伴;
    ? 如果有條件最好在活動區(qū)域鋪上一張墊子;
    ? 不建議赤腳進行體感游戲,最好穿上一雙舒適的跑步鞋;
    ? 穿著單一、寬松(運動裝);
    ? 室內(nèi)溫度冬天保持恒溫,夏天保持通風(fēng);
    ? 保持室內(nèi)光線充足,但不要有反光,避免陽光紫外線直接照射;
    ? 游戲過程中不要脫離體感的感應(yīng)區(qū),超出范圍后體感游戲會自動暫停,并提示玩家返回有效區(qū)域;
    ? 體感器的角度都自動調(diào)節(jié)的,切記不要手動調(diào)節(jié),會造成硬件損傷;
    ? 體感器安裝并調(diào)試好后,除了可以在專用體感游戲中使用體感操作以外,還可以在官方系統(tǒng)或FSD界面中利用體感器進行菜單的選擇和確認;
    ? 玩體感游戲必須創(chuàng)建人偶和設(shè)定檔。

    此段介紹引自百度XBOX360貼吧yy77zz置頂帖,僅為做科普,如有侵權(quán),聯(lián)系本人刪除。

    總結(jié):說實話我使用XBOX360主要就是看上了它的體感功能,就像我之前入坑國行版SWITCH一樣,都屬于根據(jù)自身需求來購買——我只玩健身娛樂類游戲,對其他游戲興趣不大,更對其他游戲的DLC和聯(lián)機功能沒有任何需求。而購買xbox360只需要花費幾百塊就能得到遠超NS的體感游戲體驗!這還不夠香嗎?它的體感游戲涉及多個游戲類型,健身類比如舞力全開、尊巴、節(jié)奏派對等,家庭娛樂型比如體感運動會,竟然還有對抗類的體感游戲龍珠Z,一百多個體感游戲我還沒有時間一一嘗試,之后我會把口碑比較好、我自己玩覺得很有意思的幾款游戲體驗分享給大家,如果你也有相同的需求,我個人建議完全可以考慮購買一臺XBOX360玩體感游戲,如果有隊友一起玩只能說太歡樂了哈哈哈,同時這玩意吃灰了也不會覺得心疼,考慮回血的話出手也就虧個百八十塊,堪稱最省錢的家庭健身娛樂合家歡利器!

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有