tensorflow.js调用摄像头识别你的手势代码
代码语言:html
所属分类:其他
代码描述:tensorflow.js调用摄像头识别你的手势代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<html> <head> <meta charset="UTF-8"> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/tf.2.0.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/tf-data.js"></script> <style> img, video { object-fit: cover; } </style> </head> <body> <video autoplay playsinline muted id="webcam" width="224" height="224"></video> <div id="buttons"> <button onclick="captureSample(0)">None</button> <button onclick="captureSample(1)">✊ (Rock)</button> <button onclick="captureSample(2)">🖐 (Paper)</button> <button onclick="captureSample(3)">✌️ (Scissors)</button> <button onclick="captureSample(4)">👌 (Letter D)</button> <button onclick="captureSample(5)">👍 (Thumb Up)</button> <button onclick="captureSample(6)">🖖 (Vulcan)</button> <button onclick="captureSample(7)">🤟 (ILY - I Love You)</button> <button onclick="trainModel()">训练</button> </div> <h1 id="status">模型下载中...</h1> <script> let trainingData = []; const labels = [ "None", "✊ (Rock)", "🖐 (Paper)", "✌️ (Scissors)", "👌 (Letter D)", "👍 (Thumb Up)", "🖖 (Vulcan)", "🤟 (ILY - I Love You)" ]; function setText( text ) { document.getElementById( "status" ).innerText = text; } async function predictImage() { if( !hasTrained ) { return; } // Skip prediction until trained const img = await getWebcamImage(); let result = tf.tidy( () => { const input = img.reshape( [ 1, 224, 224, 3 ] ); return model.predict( input ); }); img.dispose(); let prediction = await result.data(); result.dispose(); // Get the index of the highest value in the prediction let id = prediction.indexOf( Math.max( ...prediction ) ); setText( labels[ id ] ); } function createTransferModel( model ) { // Create the truncated base model (remove the "top" layers, classification + bottleneck layers) const bottleneck = model.getLayer( "dropout" ); // This is the final layer before the conv_pred pre-trained classification layer const baseModel = tf.model({ inputs: model.inputs, outputs: bottleneck.output }); // Freeze the convolutional base for( const layer of baseModel.layers ) { layer.trainable = false; } // Add a classification head const newHead = tf.sequential(); newHead.add( tf.layers.flatten( { inputShape: baseModel.outputs[ 0 ].shape.slice( 1 ) } ) ); newHead.add( tf.layers.dense( { units: 100, activation: 'relu' } ) ); newHead.add( tf.layers.dense( { units: 100, activation: 'relu' } ) ); newHead.add( tf.layers.dense( { units: 10, activation: 'relu' } ) ); newHead.add( tf.layers.dense( { .........完整代码请登录后点击上方下载按钮下载查看
网友评论0