Mendeteksi semua tubuh manusia dalam gambar dan mengembalikan kotak pembatas beserta skor kepercayaannya.
Skema Penggunaan
-
Deteksi pejalan kaki: Menentukan lokasi pejalan kaki dalam gambar.
-
Pelacakan lintasan: Menganalisis perilaku pejalan kaki melalui deteksi dan pelacakan.
-
Penghitungan tubuh manusia: Menghitung jumlah orang dalam gambar untuk analisis lalu lintas atau keselamatan lokasi.
Cara Menggunakan
Prasyarat
-
Anda telah mengaktifkan Intelligent Media Management (IMM).
-
Anda telah membuat bucket di OSS dan mengunggah file yang akan diproses ke bucket tersebut.
-
Anda telah membuat dan memetakan Proyek IMM. Anda dapat memetakan proyek tersebut menggunakan Konsol OSS atau dengan memanggil operasi API. Proyek IMM harus berada di wilayah yang sama dengan bucket.
-
Anda telah memberikan izin yang diperlukan kepada pengguna.
Contoh Kode
Contoh berikut mendeteksi tubuh manusia menggunakan SDK OSS. Sesuaikan parameter sesuai kebutuhan.
Java
Diperlukan OSS SDK for Java versi 3.17.4 atau lebih baru.
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyuncs.exceptions.ClientException;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class Demo {
public static void main(String[] args) throws ClientException, ClientException {
// Tentukan titik akhir wilayah tempat bucket berada.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan wilayah titik akhir. Contoh: cn-hangzhou.
String region = "cn-hangzhou";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket.
String bucketName = "examplebucket";
// Jika gambar disimpan di direktori root bucket, masukkan nama gambar. Jika tidak disimpan di direktori root bucket, Anda harus menentukan path lengkap gambar tersebut. Contoh: exampledir/example.jpg.
String key = "example.jpg";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya ketika OSSClient tidak lagi digunakan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Buat instruksi pemrosesan untuk deteksi tubuh manusia.
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
getObjectRequest.setProcess("image/bodies");
// Gunakan metode getObject, dan teruskan instruksi pemrosesan.
OSSObject ossObject = ossClient.getObject(getObjectRequest);
// Baca dan tampilkan hasil kueri.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = ossObject.getObjectContent().read(buffer)) != -1) {
baos.write(buffer, 0, bytesRead);
}
String imageBodies = baos.toString("UTF-8");
System.out.println("Image Bodies:");
System.out.println(imageBodies);
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
} finally {
// Matikan instance OSSClient.
ossClient.shutdown();
}
}
}
Python
Diperlukan OSS SDK for Python versi 2.18.4 atau lebih baru.
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Tentukan ID wilayah Alibaba Cloud tempat bucket berada.
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)
# Jika gambar disimpan di direktori root bucket, masukkan nama gambar. Jika tidak disimpan di direktori root bucket, Anda harus menentukan path lengkap gambar tersebut. Contoh: exampledir/example.jpg.
key = 'example.jpg'
# Buat instruksi pemrosesan untuk deteksi tubuh manusia.
process = 'image/bodies'
try:
# Gunakan parameter process pada metode get_object untuk meneruskan instruksi pemrosesan.
result = bucket.get_object(key, process=process)
# Baca dan tampilkan hasil kueri.
image_bodies = result.read().decode('utf-8')
print("Image Bodies:")
print(image_bodies)
except oss2.exceptions.OssError as e:
print("Error:", e)
Go
Diperlukan OSS SDK for Go versi 3.0.2 atau lebih baru.
package main
import (
"fmt"
"io"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Dapatkan kredensial akses sementara dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instance OSSClient.
// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com. Ganti dengan titik akhir aktual Anda.
// Tentukan ID wilayah Alibaba Cloud tempat bucket berada. Contoh: cn-hangzhou.
client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", "", "", oss.SetCredentialsProvider(&provider), oss.AuthVersion(oss.AuthV4), oss.Region("cn-hangzhou"))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Tentukan nama bucket. Contoh: examplebucket.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Jika gambar disimpan di direktori root bucket, masukkan nama gambar. Jika tidak disimpan di direktori root bucket, Anda harus menentukan path lengkap gambar tersebut. Contoh: exampledir/example.jpg.
// Buat instruksi pemrosesan untuk deteksi tubuh manusia menggunakan metode oss.Process.
body, err := bucket.GetObject("example.jpg", oss.Process("image/bodies"))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
defer body.Close()
data, err := io.ReadAll(body)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println("data:", string(data))
}
PHP
Diperlukan OSS SDK for PHP versi 2.7.0 atau lebih baru.
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
try {
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
$provider = new EnvironmentVariableCredentialsProvider();
// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = 'https://oss-cn-hangzhou.aliyuncs.com';
// Tentukan nama bucket. Contoh: examplebucket.
$bucket = 'examplebucket';
// Jika gambar disimpan di direktori root bucket, masukkan nama gambar. Jika tidak disimpan di direktori root bucket, Anda harus menentukan path lengkap gambar tersebut. Contoh: exampledir/example.jpg.
$key = 'example.jpg';
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
// Tentukan ID wilayah Alibaba Cloud tempat bucket berada.
"region" => "cn-hangzhou"
);
$ossClient = new OssClient($config);
// Buat instruksi pemrosesan untuk deteksi tubuh manusia.
$options[$ossClient::OSS_PROCESS] = "image/bodies";
$result = $ossClient->getObject($bucket,$key,$options);
var_dump($result);
} catch (OssException $e) {
printf($e->getMessage() . "\n");
return;
}
Parameter
Nama operasi: image/bodies
Parameter dalam permintaan
|
Parameter |
Type |
Wajib |
Deskripsi |
Contoh |
|
sen |
int |
Tidak |
Sensitivitas hasil deteksi. Semakin tinggi sensitivitas, semakin banyak tubuh manusia yang terdeteksi. Nilai valid: 0 hingga 100. Nilai default: 60. |
50 |
Parameter dalam respons
Bidang respons didokumentasikan dalam DetectImageBodies - Deteksi tubuh manusia dalam gambar.
API Terkait
Untuk kustomisasi lanjutan, panggil langsung API RESTful. Sertakan perhitungan signature dalam kode Anda sesuai dengan (Direkomendasikan) Sertakan signature V4.
Proses gambar dengan menambahkan parameter x-oss-process ke operasi GetObject. GetObject.
Contoh 1
Permintaan contoh
GET /example.jpg?x-oss-process=image/bodies HTTP/1.1
Host: image-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 21 Jul 2023 08:49:07 GMT
Authorization: SignatureValue
Respons contoh
HTTP/1.1 200 OK
Server: AliyunOSS
Date: Fri, 21 Jul 2023 08:49:09 GMT
Content-Type: application/json;charset=utf-8
Content-Length: 145
Connection: keep-alive
x-oss-request-id: 64BA4685A645AE37313CBD14
ETag: "2CE2EA370531B7CC1D23BE6015CF5DA5"
Last-Modified: Mon, 10 Jul 2023 13:07:30 GMT
x-oss-object-type: Normal
x-oss-hash-crc64ecma: 13420962247653419692
x-oss-storage-class: Standard
x-oss-ec: 0048-00000104
Content-Disposition: attachment
x-oss-force-download: true
x-oss-server-time: 329
{
"RequestId": "58C0F6A4-7B26-5E22-9C60-EFF90E2082ED",
"Bodies": [
{
"Confidence": 0.733,
"Boundary": {
"Left": 115,
"Top": 97,
"Height": 103,
"Width": 63
}
}
]
}
Contoh 2
Permintaan contoh
Pada contoh ini, nilai parameter sen adalah 50.
GET /example.jpg?x-oss-process=image/bodies,sen_50 HTTP/1.1
Host: image-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 21 Jul 2023 08:54:54 GMT
Authorization: SignatureValue
Respons contoh
HTTP/1.1 200 OK
Server: AliyunOSS
Date: Fri, 21 Jul 2023 08:54:56 GMT
Content-Type: application/json;charset=utf-8
Content-Length: 145
Connection: keep-alive
x-oss-request-id: 64BA47E05B40CC33396D6AA3
ETag: "2CE2EA370531B7CC1D23BE6015CF5DA5"
Last-Modified: Mon, 10 Jul 2023 13:07:30 GMT
x-oss-object-type: Normal
x-oss-hash-crc64ecma: 13420962247653419692
x-oss-storage-class: Standard
x-oss-ec: 0048-00000104
Content-Disposition: attachment
x-oss-force-download: true
x-oss-server-time: 394
{
"RequestId": "E9BDE106-1436-5077-9F6E-65D81DC6FEC8",
"Bodies": [
{
"Confidence": 0.733,
"Boundary": {
"Left": 115,
"Top": 97,
"Height": 103,
"Width": 63
}
},
{
"Confidence": 0.732,
"Boundary": {
"Left": 214,
"Top": 121,
"Height": 86,
"Width": 63
}
},
{
"Confidence": 0.656,
"Boundary": {
"Left": 63,
"Top": 102,
"Height": 100,
"Width": 82
}
}
]
}
Penagihan
Deteksi tubuh manusia dikenai biaya baik di sisi OSS maupun IMM karena menggunakan layanan IMM:
-
Sisi OSS: Harga OSS
API
Item penagihan
Deskripsi
GetObject
Permintaan GET
Anda dikenai biaya permintaan berdasarkan jumlah permintaan yang berhasil.
lalu lintas outbound melalui Internet
Jika Anda memanggil operasi GetObject menggunakan titik akhir publik, seperti oss-cn-hangzhou.aliyuncs.com, atau titik akhir percepatan, seperti oss-accelerate.aliyuncs.com, Anda dikenai biaya lalu lintas outbound melalui Internet berdasarkan ukuran data.
Kapasitas Pengambilan Data Akses Jarang
Jika objek IA diambil, Anda dikenai biaya pengambilan data IA berdasarkan ukuran data IA yang diambil.
Kapasitas Pengambilan Data Langsung dari Archive
Jika objek Archive dalam bucket yang diaktifkan akses real-time-nya diambil, Anda dikenai biaya pengambilan data Archive berdasarkan ukuran objek Archive yang diambil.
akselerasi transfer
Jika Anda mengaktifkan akselerasi transfer dan menggunakan titik akhir percepatan untuk mengakses bucket Anda, Anda dikenai biaya akselerasi transfer berdasarkan ukuran data.
HeadObject
Permintaan GET
Anda dikenai biaya permintaan berdasarkan jumlah permintaan yang berhasil.
-
Sisi IMM: Item penagihan IMM
PentingMulai pukul 11.00 WIB tanggal 28 Juli 2025, deteksi tubuh manusia IMM berubah dari gratis menjadi berbayar. Item penagihannya adalah ImageDetect. Pengumuman penyesuaian penagihan IMM.
API
Item penagihan
Deskripsi
DetectImageBodies
ImageDetect
Anda dikenai biaya permintaan berdasarkan jumlah permintaan yang berhasil.
Catatan Penggunaan
-
Deteksi tubuh manusia hanya mendukung pemrosesan sinkron melalui x-oss-process.
-
Akses anonim akan ditolak.