File size: 6,659 Bytes
7d6de87 9fdce57 7d6de87 9fdce57 7d6de87 9fdce57 7d6de87 9fdce57 7d6de87 9fdce57 7d6de87 9fdce57 7d6de87 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Image Classification - Hugging Face Transformers.js</title>
<script type="module">
// 허깅페이스의 pipeline 모듈을 import하십시오.
// To-Do: ???
// Make it available globally
window.pipeline = pipeline;
</script>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="css/styles.css">
</head>
<body>
<div class="container-main">
<!-- Page Header -->
<div class="header">
<div class="header-main-text">
<h1>Hugging Face Transformers.js</h1>
</div>
</div>
<hr> <!-- Separator -->
<!-- Back to Home button -->
<div class="row mt-5">
<div class="col-md-12 text-center">
<a href="index.html" class="btn btn-outline-secondary"
style="color: #3c650b; border-color: #3c650b;">Back to Main Page</a>
</div>
</div>
<!-- Content -->
<div class="container mt-5">
<!-- Centered Titles -->
<div class="text-center">
<h2>Computer Vision</h2>
<h4>Mobilevit Image Classification</h4>
</div>
<!-- Actual Content of this page -->
<div id="image-classification-container" class="container mt-4">
<h5>Classify an Image:</h5>
<div class="d-flex align-items-center">
<label for="imageClassificationURLText" class="mb-0 text-nowrap" style="margin-right: 15px;">Enter
image URL:</label>
<input type="text" class="form-control flex-grow-1" id="imageClassificationURLText"
value="https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/tiger.jpg"
placeholder="Enter image" style="margin-right: 15px; margin-left: 15px;">
<button id="ClassifyButton" class="btn btn-primary" onclick="classifyImage()">Classify</button>
</div>
<div class="mt-4">
<h4>Output:</h4>
<pre id="outputArea"></pre>
</div>
</div>
<hr> <!-- Line Separator -->
<div id="image-classification-local-container" class="container mt-4">
<h5>Classify a Local Image:</h5>
<div class="d-flex align-items-center">
<label for="imageClassificationLocalFile" class="mb-0 text-nowrap"
style="margin-right: 15px;">Select Local Image:</label>
<input type="file" id="imageClassificationLocalFile" accept="image/*" />
<button id="ClassifyButtonLocal" class="btn btn-primary"
onclick="classifyImageLocal()">Classify</button>
</div>
<div class="mt-4">
<h4>Output:</h4>
<pre id="outputAreaLocal"></pre>
</div>
</div>
<hr> <!-- Line Separator -->
<div id="image-classification-top-container" class="container mt-4">
<h5>Classify an Image and Return Top n Classes:</h5>
<div class="d-flex align-items-center">
<label for="imageClassificationTopURLText" class="mb-0 text-nowrap" style="margin-right: 15px;">Enter
image URL:</label>
<input type="text" class="form-control flex-grow-1" id="imageClassificationTopURLText"
value="https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/tiger.jpg"
placeholder="Enter image" style="margin-right: 15px; margin-left: 15px;">
<button id="ClassifyTopButton" class="btn btn-primary" onclick="classifyTopImage()">Classify</button>
</div>
<div class="mt-4">
<h4>Output:</h4>
<pre id="outputAreaTop"></pre>
</div>
</div>
<!-- Back to Home button -->
<div class="row mt-5">
<div class="col-md-12 text-center">
<a href="index.html" class="btn btn-outline-secondary"
style="color: #3c650b; border-color: #3c650b;">Back to Main Page</a>
</div>
</div>
</div>
</div>
<script>
let classifier;
// Initialize the sentiment analysis model
async function initializeModel() {
// pipeline 함수를 이용하여 Xenova/mobilevit-small 모델의 인스턴스를 생성하여 이를 classifier에 저정하십시오. 인스턴스 생성 시 quantized 파라미터의 값을 false로 설정하십시오.
// To-Do: ???
}
async function classifyImage() {
const textFieldValue = document.getElementById("imageClassificationURLText").value.trim();
const result = await classifier(textFieldValue);
document.getElementById("outputArea").innerText = JSON.stringify(result, null, 2);
}
async function classifyImageLocal() {
// HTML DOM의 element Id가 imageClassificationLocalFile인 element의 값을 fileInput으로 저장하십시오.
// To-Do: const fileInput = ???
const file = fileInput.files[0];
if (!file) {
alert('Please select an image file first.');
return;
}
const url = URL.createObjectURL(file);
// classifier에 url을 입력하여 출력된 결과를 result에 저장하십시오.
// To-Do: ???
document.getElementById("outputAreaLocal").innerText = JSON.stringify(result, null, 2);
}
async function classifyTopImage() {
const textFieldValue = document.getElementById("imageClassificationTopURLText").value.trim();
// classifier에 textFieldValue를 입력 변수로, topk 파라미터 값을 3으로 설정하여 classifer를 수행하고 그 결과를 result에 저장하십시오.
// To-Do: ???
document.getElementById("outputAreaTop").innerText = JSON.stringify(result, null, 2);
}
// Initialize the model after the DOM is completely loaded
window.addEventListener("DOMContentLoaded", initializeModel);
</script>
</body>
</html> |