吴忠躺衫网络科技有限公司

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>Yoga AI從單個圖像進行3D姿勢估計

Yoga AI從單個圖像進行3D姿勢估計

2022-10-26 | zip | 1.69 MB | 次下載 | 免費

資料介紹

描述

介紹

雖然 2D 計算機視覺取得了巨大進步,但 3D 計算機視覺仍然是一項艱巨的任務。我們生成大量 2D 數據(圖像、視頻),但 3D 數據集很少見且創建成本高。該項目將探索從單個圖像獲得的 2D 數據獲取 3D 人體姿態信息的不同方法。

poYBAGNYh7WAH_mGAABb-SXmge4287.png
基于單張圖像的 3D 姿態估計
?

這項工作基于兩篇文章:

第一篇文章探索了一種簡單而有效的方法,通過使用相對簡單的 DNN 將 2D 數據“提升”到 3D。本文中提出的模型將進一步稱為“文章模型”或 article.xmodel(來自用于在 VCK5000 卡上進行推理的文件名)。

嘗試了“文章”模型的替代方案,一層上的神經元較少,但層數較多。這種替代模型進一步稱為“殘差”或“res.xmodel”。

這兩個模型是在Human3.6M 數據集上訓練的。這包含通過在工作室中使用昂貴的高分辨率相機設置、拍攝專業演員而獲得的 3D 數據。據作者所知,這是唯一可用于 3D 數據的數據集。

第三個模型,稱為 gan (gan.xmodel) 使用了一個新穎的想法:生成對抗網絡僅從 2D 數據生成 3D 數據。該模型由生成器(使用殘差模型)和鑒別器組成。

生成器的工作是獲取 2D 姿勢并為它們生成深度,將它們轉換為 3D 姿勢。鑒別器的工作是采取 2D 姿勢并返回它們是真的還是假的(由生成器生成)。生成器生成的 3D 姿勢被隨機旋轉,轉換回相機的坐標并以 2D 的形式投影回來。然后將它們反饋給鑒別器。主要思想是,如果生成器能夠創建良好的 3D 姿勢估計,那么那些隨機旋轉并投影回 2D 的 3D 姿勢對于鑒別器來說將看起來無法區分。生成器和判別器一起訓練,一個目標是創建“假” 2D 姿勢,而另一個目標是檢測“假”。該模型是根據從 YouTube 上的 35 個有關瑜伽姿勢的視頻中獲得的圖像進行訓練的。GAN 是出了名的難以訓練,判別器和生成器都產生良好結果的狀態是一種轉瞬即逝的狀態,而不是穩定的狀態。

poYBAGNYh7eAYROHAACWeG3_PEQ566.png
GAN
?

入門

  • 按照此處所述安裝 Vitis AI 。對于訓練和模型量化,需要構建 GPU Docker,因為它將大大加快該過程。(提示:GPU Docker 構建需要大量 DRAM,如果構建失敗,請考慮啟用 swap
  • 按照此處所述設置 VCK5000-ES1 卡。如果您有 VCK5000-PROD 卡,那么最新的 Vitis AI 庫將有一個類似的頁面描述如何操作
  • 運行openpose 演示以驗證所有內容都已正確安裝
  • 克隆Vitis AI 目錄中的Yoga AI存儲庫
  • 啟動 gpu docker 鏡像:
./docker_run.sh xilinx/vitis-ai-gpu:1.4.1.978

修改了 docker_run.sh 文件以添加對 X11 和 USB 網絡攝像頭的支持:

docker_run_params=$(cat <<-END
    -v /dev/shm:/dev/shm \
    -v /opt/xilinx/dsa:/opt/xilinx/dsa \
    -v /opt/xilinx/overlaybins:/opt/xilinx/overlaybins \
    -v /etc/xbutler:/etc/xbutler \
    -e USER=$user -e UID=$uid -e GID=$gid \
    -e VERSION=$VERSION \
    -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v $HOME/.Xauthority:/tmp/.Xauthority \
    -v $DOCKER_RUN_DIR:/vitis_ai_home \
    -v $HERE:/workspace \
    -w /workspace \
    --device /dev/video0 \
    --rm \
    --network=host \
    --ipc=host \
    ${DETACHED} \
    ${RUN_MODE} \
    $IMAGE_NAME \
    $DEFAULT_COMMAND
END
)

此處描述了完整的命令列表

2D 姿態估計

這是通過使用此處所述的 Vitis AI 庫完成的。

在使用 2D 姿態估計器之前,必須下載模型:

cd /workspace/models/AI-Model-Zoo

sudo mkdir /usr/share/vitis_ai_library/models

tar -xzvf openpose_pruned_0_3-vck5000-DPUCVDX8H-r1.4.1.tar.gz

sudo cp openpose_pruned_0_3 /usr/share/vitis_ai_library/models -r

從 2D 提升到 3D

雖然有很好的 2D 姿態估計器,但 3D 問題仍然懸而未決。主要有兩種方法:

  • 從圖像開始,使用非常大且復雜的 CNN 進行端到端訓練
  • 使用現有的 2D 姿勢估計器并將 2D 結果“提升”為 3D

本項目將使用第二種方法,并嘗試使用兩篇文章中的想法將 2D 結果“提升”為 3D:

第一個是使用簡單的 DNN 來學習如何從 2D 開始估計 3D 位置。這需要大量的 3D 姿勢數據集。(使用了 Human3.6M 數據集)

生成的 DNN 對于在 Human3.6M 數據集中找到的位置表現良好,但對于在那里沒有找到的位置(例如瑜伽位置)表現不佳。另一個缺點是創建 3D 數據集非常昂貴,因此很少有公開可用的。

第二篇文章提出了一個生成對抗網絡,它不需要 3D 數據的基本事實。這使得獲取訓練數據變得非常容易,因為有大量數據(視頻、圖像)可用。缺點是訓練 GAN 更像是一門藝術而不是科學,因為它依賴于校準兩個不穩定的神經網絡

用于回歸 3D 數據的簡單 DNN

在使用 Human3.6M 數據集之前,對數據進行了預處理,然后保存在 .tfrecords 文件中以便于訓練。每個 3D 姿勢數據為:

  • 縮放以使頭部錨點和臀部錨點之間的距離為 1 個單位長度
  • 以臀部錨點為中心
  • 圍繞 z 軸在 0 到 360 度之間隨機旋轉
  • 轉換為相機坐標
  • 在 2D 數據(用作 DNN 的輸入)和將作為 DNN 輸出的第三個“深度”值之間拆分

這是由 prepare_data.py 腳本完成的:

python prepare_data.py

ls -al ./data/Human36M_subject*
-rw-r--r-- 1 andrei andrei 12172996 mar 19 19:52 ./data/Human36M_subject11_joint_3d.tfrecords
-rw-r--r-- 1 andrei andrei 12977646 mar 19 19:47 ./data/Human36M_subject1_joint_3d.tfrecords
-rw-r--r-- 1 andrei andrei 20707511 mar 19 19:48 ./data/Human36M_subject5_joint_3d.tfrecords
-rw-r--r-- 1 andrei andrei 13055394 mar 19 19:49 ./data/Human36M_subject6_joint_3d.tfrecords
-rw-r--r-- 1 andrei andrei 21238789 mar 19 19:50 ./data/Human36M_subject7_joint_3d.tfrecords
-rw-r--r-- 1 andrei andrei 13517702 mar 19 19:51 ./data/Human36M_subject8_joint_3d.tfrecords
-rw-r--r-- 1 andrei andrei 16598153 mar 19 19:51 ./data/Human36M_subject9_joint_3d.tfrecords

提出了三種模型:

  • 文章(article.xmodel)中描述的DNN:
python train-article.py

python -u quantize.py --float_model model/article/article.h5 --quant_model model/article/quant_article.h5 --batchsize 64 --evaluate 2>&1 | tee quantize.log

vai_c_tensorflow2 --model model/article/quant_article.h5 --arch /opt/vitis_ai/compiler/arch/DPUCVDX8H/VCK5000/arch.json --output_dir model/article --net_name article
  • 一個 DNN,每層神經元較少,但層數比文章中描述的層多(res.xmodel):
python train-res.py

python -u quantize.py --float_model model/residual/res.h5 --quant_model model/residual/quant_res.h5 --batchsize 64 --evaluate 2>&1 | tee quantize.log

vai_c_tensorflow2 --model model/residual/quant_res.h5 --arch /opt/vitis_ai/compiler/arch/DPUCVDX8H/VCK5000/arch.json --output_dir model/residual --net_name res
  • 一個 GAN 模型(gan.xmodel)

教程介紹了 TensorFlow2 和 Vitis AI 設計流程。

推理

該項目使用兩個 DNN:

使用 OpenPose 進行推理非常簡單:

auto image = cv::imread("sample_openpose.jpg");
auto det = vitis::ai::OpenPose::create("openpose_pruned_0_3");
auto results = det->run(image);

此 API 負責處理圖像所需的任何預處理(調整大小等)

  • 自定義 DNN 將姿勢從 2D 提升到 3D

代碼有點復雜,使用 VART API:

auto graph = Graph::deserialize(model);
auto subgraph = get_dpu_subgraph(graph.get());
auto runner = Runner::create_runner(subgraph[0],"run");
TensorShape inshapes[1];
TensorShape outshapes[1];
GraphInfo shapes;
shapes.inTensorList = inshapes;
shapes.outTensorList = outshapes;
getTensorShape(runner.get(), &shapes, 1, 1);
auto inTensors = cloneTensorBuffer(runner->get_input_tensors());
auto outTensors = cloneTensorBuffer(runner->get_output_tensors());
int batchSize = inTensors[0]->get_shape().at(0);
int inSize = inshapes[0].size;
int outSize = outshapes[0].size;
auto input_scale = get_input_scale(runner->get_input_tensors()[0]);
auto output_scale = get_output_scale (runner->get_output_tensors()[0]);
int8_t *datain = new int8_t[inSize * batchSize];
int8_t *dataresult = new int8_t[outSize * batchSize];
/* Copy the data in datain buffer. 
Don't forget to scale it by multiplying it with input_scale*/
vector> inputs, outputs;
inputs.push_back(make_unique(datain, inTensors[0].ge()));
outputs.push_back(make_unique(dataresult, outTensors[0].get()));
vector inputsPtr, outputsPtr;
inputsPtr.push_back(inputs[0].get());
outputsPtr.push_back(outputs[0].get());
auto job_id = runner->execute_async(inputsPtr, outputsPtr);
runner->wait(job_id.first, -1);
/* Copy the result from dataresult
Don't forget to scale it by mupliplying with output_scale*/
delete[] datain;
delete[] dataresult;

運行演示

首先必須編譯演示程序和系統設置。啟動 docker gpu 映像后,在 docker 終端中運行以下命令:

cp /tmp/.Xauthority ~/
sudo chown vitis-ai-user:vitis-ai-group ~/.Xauthority
sudo usermod -a -G video $(whoami)
sudo su $(whoami)
cd /workspace/setup/vck5000/
source setup.sh
cd /workspace/models/AI-Model-Zoo
wget https://www.xilinx.com/bin/public/openDownload?filename=openpose_pruned_0_3-vck5000-DPUCVDX8H-r1.4.1.tar.gz -O openpose_pruned_0_3-vck5000-DPUCVDX8H-r1.4.1.tar.gz
sudo mkdir /usr/share/vitis_ai_library/models
tar -xzvf openpose_pruned_0_3-vck5000-DPUCVDX8H-r1.4.1.tar.gz
sudo cp openpose_pruned_0_3 /usr/share/vitis_ai_library/models -r
sudo usermod -a -G video vitis-ai-user
/usr/bin/pip3 install matplotlib
conda activate vitis-ai-tensorflow2
cd /workspace/yoga-ai/
sh build.sh

要使用文章中的模型運行 3D 估計器以獲取單張圖片,請運行以下命令:(如果在冷重啟后第一次運行,則需要大約 30 秒來對卡進行編程

./build/yoga-ai-picture ./model/article/article.xmodel ./data/temp/emily-sea-coiWR0gT8Cw-unsplash.jpg 
generated ./data/temp/emily-sea-coiWR0gT8Cw-unsplash_result.jpg
generated ./data/temp/emily-sea-coiWR0gT8Cw-unsplash_1_plot.jpg

在這張圖片上運行 3D 姿態估計器:

將生成此 2D 姿勢結果:

pYYBAGNYh8WAQfXaAAuwwqxhE3s898.jpg
?

以及以下 3D 結果:

poYBAGNYh8eAPBh8AABS6yzvKtY204.jpg
文章.xmodel
?

更深層次的 DNN(res.xmodel):

./build/yoga-ai-picture ./model/residual/res.xmodel ./data/temp/emily-sea-coiWR0gT8Cw-unsplash.jpg 
generated ./data/temp/emily-sea-coiWR0gT8Cw-unsplash_result.jpg
generated ./data/temp/emily-sea-coiWR0gT8Cw-unsplash_1_plot.jpg
pYYBAGNYh8qACWARAABSfMdsGP4154.jpg
res.x模型
?

對于多個主題:

./build/yoga-ai-picture ./model/article/article.xmodel ./data/temp/i-yunmai-BucQCjOvDyM-unsplash.jpg 
generated ./data/temp/i-yunmai-BucQCjOvDyM-unsplash_result.jpg
generated ./data/temp/i-yunmai-BucQCjOvDyM-unsplash_1_plot.jpg
generated ./data/temp/i-yunmai-BucQCjOvDyM-unsplash_2_plot.jpg
?
?
?
pYYBAGNYh9GADcGvAA3MEM7orcs315.jpg
?
1 / 4 ?由 i yunmai 在 Unsplash 上拍攝
?
./build/yoga-ai-picture ./model/residual/res.xmodel ./data/temp/i-yunmai-BucQCjOvDyM-unsplash.jpg 
generated ./data/temp/i-yunmai-BucQCjOvDyM-unsplash_result.jpg
generated ./data/temp/i-yunmai-BucQCjOvDyM-unsplash_1_plot.jpg
generated ./data/temp/i-yunmai-BucQCjOvDyM-unsplash_2_plot.jpg
?
?
?
poYBAGNYh9SAbUDUAABRRsbqM0E478.jpg
?
1 / 2 ? res.xmodel
?

圖片中有三個主題,但其中只有兩個擁有所有錨點。

實時運行 3D 姿態估計器:

./build/yoga-ai-mt ./model/article/article.xmodel
or
./build/yoga-ai-mt ./model/residual/res.xmodel

這將打開它找到的第一個網絡攝像頭并運行 3D 姿勢估計器

?
?

FPS 受到房間照明的限制,而不是 2D 估計器或 2D 到 3D DNN 的限制,它們非常快,尤其是在批處理時(批處理最多 8 幀)。

不幸的是,我找不到 c++ 原生的 3D 繪圖庫,所以我使用了 python 中的 matplotlib 庫和 c++ 包裝器。它可以創建繪圖的速度約為 2-3 FPS,遠低于相機或姿勢估計器。

GAN 示例

將以 10 FPS 的速率從視頻中提取第一幀:

mkdir -p ./data/video/frames
find ./data/video -maxdepth 1 -name '*.webm' -print0 | xargs -0 -i sh -c 'fullfile="{}"; filename=${fullfile##*/}; name=${filename%%.*}; ffmpeg -i "$fullfile" -r 10/1 ./data/video/frames/"$name"%010d.jpg'

然后 2D 估計器將在每個圖像上運行:

./build/yoga-ai-multiple ./data/video/frames > ./data/video/frames.json

最后,帶有 2D 姿勢的 json 將被預處理(縮放、居中)并保存為 .tfrecords 文件:

python prepare_data_gan.py ./data/video/

訓練:

rm -rf ./logs/
rm -rf ./model/gan/*
python train-gan.py

選擇型號:

tensorboard --logdir logs/ --bind_all

生成器和鑒別器網絡都必須保持平衡,損失函數朝著不同的目標工作。

poYBAGNYh9aARds5AABrybaEzB8071.png
?

理想情況下,生成器和判別器的損失函數都應盡可能接近 1,這意味著判別器很難區分生成的解決方案和真實的解決方案。

Epoch 100 - 12.01 sec, Gen Loss: 1.3215000629425049, Disc Loss: 1.0641013383865356
Epoch 101 - 12.04 sec, Gen Loss: 1.4143874645233154, Disc Loss: 1.0295127630233765
Epoch 102 - 12.00 sec, Gen Loss: 1.3275189399719238, Disc Loss: 1.0719201564788818
Epoch 103 - 12.00 sec, Gen Loss: 1.3471262454986572, Disc Loss: 1.0649248361587524
Epoch 104 - 12.03 sec, Gen Loss: 1.3648614883422852, Disc Loss: 1.0483965873718262
Epoch 105 - 12.00 sec, Gen Loss: 1.387969732284546, Disc Loss: 1.0464917421340942
Epoch 106 - 12.01 sec, Gen Loss: 1.369732141494751, Disc Loss: 1.0375384092330933
Epoch 107 - 12.01 sec, Gen Loss: 1.3962113857269287, Disc Loss: 1.0418665409088135
Epoch 108 - 12.03 sec, Gen Loss: 1.391349196434021, Disc Loss: 1.0387295484542847
Epoch 109 - 12.02 sec, Gen Loss: 1.4321180582046509, Disc Loss: 1.0043883323669434
Epoch 110 - 12.02 sec, Gen Loss: 1.4454706907272339, Disc Loss: 1.0133466720581055

train-gan.py 腳本在每個 epoch 保存生成器網絡,我從 epoch 102 中選擇了網絡:

cp ./model/gan/gan_102.h5 ./model/gan/gan.h5

量化和編譯:

python -u quantize.py --float_model model/gan/gan.h5 --quant_model model/gan/quant_gan.h5 --batchsize 64 --evaluate 2>&1 | tee quantize.log

vai_c_tensorflow2 --model model/gan/quant_gan.h5 --arch /opt/vitis_ai/compiler/arch/DPUCVDX8H/VCK5000/arch.json --output_dir model/gan --net_name gan

結果:

./build/yoga-ai-mt ./model/gan/gan.xmodel
?
?
?
?
pYYBAGNYh8WAQfXaAAuwwqxhE3s898.jpg
?
1 / 2
?
?
?
?
pYYBAGNYh-OATsIKAA-a6-P2QsM985.jpg
?
1 / 3
?

訓練

所有模型都訓練了 200 個 epoch,batch_size 為 64。

article.xmodel 和 res.xmodel 都使用 Human3.6M 數據集。

gan.xmodel 在一個包含 35 個來自 YouTube 的瑜伽視頻的數據庫上進行了訓練。從這些視頻中,使用 ffmpeg 提取了 859812 張圖像,然后使用 build/yoga-ai-multiple 實用程序(運行 2D open_pose)提取了 112210 個姿勢(存在所有錨點)。

更多結果

?
?
?
poYBAGNYh-aAdYxyAAF6SWonk0A381.jpg
?
1 / 4 ? article.xmodel
?
?
?
?
poYBAGNYh-aAdYxyAAF6SWonk0A381.jpg
?
1 / 4 ? res.xmodel
?
?
?
?
poYBAGNYh-aAdYxyAAF6SWonk0A381.jpg
?
1 / 4 ? gan.xmodel
?

源文件

用于預處理數據集的腳本:

https://github.com/andrei-ace/yoga-ai/blob/master/prepare_data.py

https://github.com/andrei-ace/yoga-ai/blob/master/prepare_data_gan.py

https://github.com/andrei-ace/yoga-ai/blob/master/src/yoga-ai-multiple.cpp

用于訓練神經網絡的腳本:

https://github.com/andrei-ace/yoga-ai/blob/master/train-article.py

https://github.com/andrei-ace/yoga-ai/blob/master/train-res.py

https://github.com/andrei-ace/yoga-ai/blob/master/train-gan.py

演示程序:

https://github.com/andrei-ace/yoga-ai/blob/master/src/yoga-ai-picture.cpp

https://github.com/andrei-ace/yoga-ai/blob/master/src/yoga-ai-mt.cpp

結論

在 Human3.6M 數據集中找到的姿勢結果非常好,但對于看不見的姿勢卻不是很準確。該數據集不包含任何瑜伽姿勢,因此準確度有些低。創建更多數據集將大大提高預測的準確性,但最大的問題是它們需要昂貴的設備來生產。

GAN 方法似乎是最有前途的方法,因為它只需要大量存在的 2D 數據。一個簡單的改進是從不同角度拍攝相同的姿勢,使用的 YouTube 視頻大多具有相同的角度。這不需要專業工作室中的任何昂貴設備,可以使用任何消費級相機,并且不需要同步它們,甚至不需要拍攝相同的演員。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
全讯网五湖四海| 豪华百家乐官网桌子| 广东百家乐桌布| 百家乐官网如何计算| 迪威百家乐娱乐场| 百家乐官网博彩优惠论坛| 梦幻城百家乐的玩法技巧和规则| 百家乐官网投注限额| 大发888体育场| 百家乐官网技巧开户网址| 平博| 川宜百家乐破解版| 百家乐官网下注平台| 百家乐皇室百家乐的玩法技巧和规则 | 大发888手机版下载官方网站| 为什么百家乐官网玩家越来越多选择网上百家乐官网 | 博彩百家乐官网字谜总汇二丹东| 易胜博足球开户| 百家乐视频计牌器| 网络百家乐官网最安全| 君怡百家乐的玩法技巧和规则| 高科技百家乐官网牌具| 棋牌小游戏| 百家乐平台开户哪里优惠多 | 百家乐作| 八大胜百家乐官网的玩法技巧和规则| 全讯网网址| 传奇百家乐官网的玩法技巧和规则 | 百家乐官网技巧和规律| 网上百家乐公司| 24山向吉凶水法| 太阳城申博| 做生意容易成功的八字| 百家乐官网电脑游戏高手| 大发888客户端软件| 做百家乐网上投注| 百家乐官网信息| 东方夏威夷娱乐| 国际娱百家乐的玩法技巧和规则| 成都百家乐官网牌具| 百家乐官网专打单跳投注法|