All Products
Search
Document Center

Platform For AI:Gunakan SDK Potret AI untuk Python

Last Updated:Jun 22, 2025

Platform for AI (PAI) menyediakan SDK Potret AI untuk Python yang memungkinkan Anda memanggil operasi layanan algoritma dari layanan Potret AI untuk melatih model dan membuat potret. Dengan SDK ini, Anda dapat mengonfigurasi model LoRA kustom serta membuat potret berdasarkan gambar template. Topik ini menjelaskan persiapan yang diperlukan sebelum menggunakan SDK Potret AI untuk Python dalam memanggil operasi terkait, serta memberikan contoh cara melakukannya.

Prasyarat

  • Lingkungan Python telah disiapkan. Python 3.4 atau versi lebih baru didukung.

  • Untuk pelatihan model dan pembuatan potret, siapkan 5 hingga 20 gambar pelatihan dan 1 gambar template. Format gambar yang didukung adalah: .jpg, .jpeg, dan .png. Pastikan ukuran setiap gambar lebih besar dari 512 x 512 piksel.

    • Potret satu orang: Gambar template harus berisi wajah seseorang. Wajah di beberapa gambar pelatihan milik orang yang sama.

    • Potret multi-orang: Gambar template harus berisi beberapa wajah, dengan jumlah wajah sesuai nilai parameter model_id yang ditentukan untuk pelatihan model.

Persiapan

  1. Jalankan perintah berikut untuk menginstal SDK Python:

    wget https://ai-service-data.oss-cn-beijing.aliyuncs.com/python-sdk/ai_service_python_sdk-1.1.3-py3-none-any.whl
    pip install ai_service_python_sdk-1.1.3-py3-none-any.whl
  2. Inisialisasi klien.

    Jalankan perintah berikut untuk menginisialisasi lingkungan:

    from ai_service_python_sdk.client.api_client import ApiClient
    client = ApiClient('<HOST>', '<YOUR-APPID>', '<YOUR-TOKEN>')

    Ubah parameter berikut sesuai kebutuhan bisnis Anda.

    Parameter

    Deskripsi

    <HOST>

    Alamat server. Contoh: http://ai-service.ce8cc13b6421545749e7b4605f3d02607.cn-hangzhou.alicontainer.com.

    <YOUR-APPID>

    ID aplikasi. Setelah Anda mengaktifkan layanan Potret AI, Anda dapat melihat ID aplikasi di halaman Potret AI.

    <YOUR-TOKEN>

    Token. Setelah Anda mengaktifkan layanan Potret AI, Anda dapat melihat token di halaman Potret AI.

Kode contoh

Potret AI adalah layanan intensif sumber daya yang melibatkan proses pelatihan model dan pembuatan potret. Pelatihan model biasanya memerlukan beberapa menit, sedangkan pembuatan potret hanya membutuhkan beberapa puluh detik. Gambar berikut menunjukkan proses pembuatan potret AI dengan memanggil operasi API.

Berikut adalah permintaan contoh, respons contoh untuk operasi API terkait, serta kode contoh untuk proses end-to-end.

Permintaan Pemeriksaan (aigc_images_check)

  • Permintaan contoh:

    from ai_service_python_sdk.client.api_client import ApiClient
    from ai_service_python_sdk.client.api.ai_service_aigc_images_api import AIGCImagesApi
    
    host = 'http://ai-service.ce8cc13b6421545749e7b4605f3d02607.cn-hangzhou.alicontainer.com'
    appId = 'YOUR-APPID'
    token = 'YOUR-TOKEN'
    
    client  = ApiClient(host, appId, token)
    api    = AIGCImagesApi(client)  # noqa: E501
    
    # Gambar pelatihan dalam format URL.
    images = [
        'https://xxx/0.jpg',
        'https://xxx/1.jpg'
    ]
    response = api.aigc_images_check(images, <model_name>, <configure>)
    
    # ID permintaan.
    request_id = response.request_id
    # Status permintaan.
    code = response.code
    # Detail status permintaan.
    message = response.message
    # Konten yang dikembalikan oleh layanan model.
    data = response.data
    # Tampilkan nilai pengembalian.
    print(response)

    Tabel berikut menjelaskan parameter utama.

    Parameter

    Deskripsi

    appId

    ID aplikasi. Setelah Anda mengaktifkan layanan Potret AI, Anda dapat melihat ID aplikasi di halaman Potret AI.

    token

    Token. Setelah Anda mengaktifkan layanan Potret AI, Anda dapat melihat token di halaman Potret AI.

    images

    URL gambar yang ingin Anda periksa. Pisahkan beberapa URL dengan koma (,).

    response

    Parameter respons berisi bidang berikut:

    • <model_name>: nama model. Secara default, string kosong digunakan. Contoh: ''.

    • <configure>: item konfigurasi yang dikembalikan. Nilai default: None. Tidak ada item konfigurasi tambahan yang ditentukan.

  • Respons contoh:

    {
        "request_id":"07988c97-caa4-4512-a2b2-e9173c1a03c6",
        "code":"OK",
        "message":"success",
        "data":{
            "check_results":[
                {
                    "code":1,
                    "frontal":true,
                    "message":"success",
                    "url":"https://xxx/0.jpg"
                },{
                    "code":1,
                    "frontal":false,
                    "message":"success",
                    "url":"https://xxx/1.jpg"
                }
            ],
            "cost_time":0.47095775604248047,
            "images":["https://xxx/0.jpg","https://xxx/1.jpg"],
            "request_id":"07988c97-caa4-4512-a2b2-e9173c1a03c6"}}

    Tabel berikut menjelaskan parameter respons.

    Parameter

    Deskripsi

    request_id

    ID permintaan, yang bertipe STRING.

    code

    Kode status permintaan, yang bertipe STRING. Nilai valid:

    • OK: Permintaan berhasil.

    • error: Permintaan gagal.

    message

    Detail status permintaan. Jika permintaan berhasil, success dikembalikan. Dalam skenario lain, pesan berbeda dikembalikan.

    data

    Detail data yang dikembalikan, yang bertipe JSON Object. Parameter:

    • check_results: Hasil deteksi untuk setiap gambar input. Setiap gambar sesuai dengan kamus yang berisi kunci berikut: url, message, dan frontal.

    • cost_time: waktu yang diperlukan server untuk memanggil API.

    • images: URL gambar yang diperiksa. Nilainya bertipe LIST.

    • request_id: ID permintaan. Nilainya bertipe STRING.

    Nilai valid dari bidang message dalam check_results

    Nilai Valid

    Kode Status

    Deskripsi

    success

    1

    Gambar sesuai.

    Image decode error

    2

    Gambar tidak dapat diunduh atau didekode.

    Number of face is not 1

    3

    Jumlah wajah bukan satu.

    Image detect error

    4

    Terjadi kesalahan dalam pengenalan wajah.

    Image encoding error

    5

    Terjadi kesalahan saat mengkodekan wajah menjadi vektor fitur, yang menunjukkan bahwa wajah tidak dapat dikenali.

    This photo is not the same person in photos

    6

    Jika hanya kesalahan ini yang dilaporkan, wajah di beberapa gambar tidak milik orang yang sama.

Inisiasi pelatihan model (aigc_images_train)

  • Permintaan contoh:

    from ai_service_python_sdk.client.api_client import ApiClient
    from ai_service_python_sdk.client.api.ai_service_aigc_images_api import AIGCImagesApi
    
    host = 'http://ai-service.ce8cc13b6421545749e7b4605f3d02607.cn-hangzhou.alicontainer.com'
    appId = 'YOUR-APPID'
    token = 'YOUR-TOKEN'
    
    client  = ApiClient(host, appId, token)
    api     = AIGCImagesApi(client)  # noqa: E501
    
    # Gambar pelatihan dalam format URL.
    images = [
        'https://xxx/0.jpg',
        'https://xxx/1.jpg',
        'https://xxx/2.jpg',
        'https://xxx/3.jpg',
        'https://xxx/4.jpg',
        'https://xxx/5.jpg'
    ]
    response = api.aigc_images_train(images, <model_name>, <configure>)
    
    # ID permintaan.
    request_id = response.request_id
    # Status permintaan.
    code = response.code
    # Detail status permintaan.
    message = response.message
    # Konten yang dikembalikan oleh layanan model.
    data = response.data
    # job id
    job_id = response.data['job_id']
    # model_id
    model_id = response.data['model_id']
    # Tampilkan nilai pengembalian.
    print(response)

    Tabel berikut menjelaskan parameter utama.

    Parameter

    Deskripsi

    appId

    ID aplikasi. Setelah Anda mengaktifkan layanan Potret AI, Anda dapat melihat ID aplikasi di halaman Potret AI.

    token

    Token. Setelah Anda mengaktifkan layanan Potret AI, Anda dapat melihat token di halaman Potret AI.

    images

    URL gambar pelatihan. Pisahkan beberapa URL dengan koma (,).

    response

    Parameter respons berisi bidang berikut:

    • <model_name>: nama model. Secara default, string kosong digunakan. Contoh: ''.

    • <configure>: item konfigurasi yang dikembalikan. Nilai default: None. Tidak ada item konfigurasi tambahan yang ditentukan.

  • Respons contoh:

    {'code': 'OK',
     'data': {'job_id': 11***, 'model_id': 'fa4ba43a-df55-45a4-9c31-bb0dc1e5****'},
     'message': 'success',
     'request_id': 'de314ef5-114d-4db1-b54a-332d5300780b'}

    Tabel berikut menjelaskan parameter.

    Parameter

    Deskripsi

    request_id

    ID permintaan, yang bertipe STRING.

    code

    Kode status permintaan, yang bertipe STRING. Nilai valid:

    • OK: Permintaan berhasil.

    • error: Permintaan gagal.

    message

    Detail status permintaan. Jika permintaan berhasil, success dikembalikan. Dalam skenario lain, pesan berbeda dikembalikan.

    data

    Detail data yang dikembalikan, yang bertipe JSON Object. Parameter:

    • job_id: ID tugas. Nilainya bertipe INT.

    • model_id: ID model yang digunakan dalam pelatihan. ID ini adalah string dengan panjang 36 karakter.

    Simpan parameter job_id dan model_id dalam respons sebelumnya ke perangkat lokal Anda. Gunakan job_id untuk memeriksa hasil pelatihan dan model_id untuk mengirim permintaan pembuatan potret.

Pemeriksaan hasil pelatihan (get_async_job)

  • Permintaan contoh:

    from ai_service_python_sdk.client.api_client import ApiClient
    from ai_service_python_sdk.client.api.ai_service_job_api import AiServiceJobApi
    
    host = 'http://ai-service.ce8cc13b6421545749e7b4605f3d02607.cn-hangzhou.alicontainer.com'
    appId = 'YOUR-APPID'
    token = 'YOUR-TOKEN'
    client = ApiClient(host, appId, token)
    ai_service_job_api = AiServiceJobApi(client)
    # Periksa hasil.
    result = ai_service_job_api.get_async_job(<YOUR-JOB-ID>)
    # Tampilkan nilai pengembalian.
    print(result)

    Tabel berikut menjelaskan parameter utama.

    Parameter

    Deskripsi

    appId

    ID aplikasi. Setelah Anda mengaktifkan layanan Potret AI, Anda dapat melihat ID aplikasi di halaman Potret AI.

    token

    Token. Setelah Anda mengaktifkan layanan Potret AI, Anda dapat melihat token di halaman Potret AI.

    result

    Ganti parameter <YOUR-JOB-ID> dengan job_id yang dikembalikan oleh operasi aigc_images_train.

  • Respons contoh:

    • Blok kode berikut menunjukkan respons contoh ketika pelatihan model belum selesai:

      {'code': 'OK',
       'data': {'job': {'Result': '',
                        'app_id': '2******6',
                        'create_time': '2023-08-22T16:43:35.36+08:00',
                        'id': 11***,
                        'message': 'model requesting',
                        'state': 1,
                        'type': 'Image'}},
       'message': 'success',
       'request_id': '8639143a-e147-4107-8e25-fcdeae24b0c5'}
    • Blok kode berikut menunjukkan respons contoh ketika pelatihan model selesai:

      {'code': 'OK',
       'data': {'job': {'Result': '{"cost_time":1589.0886301994324, "states": [{"code":1,"frontal":false,"message":"success","url":"xxx.jpg"}],"model_id":"fa4ba43a-df55-45a4-9c31-bb0dc1e5****"}',
                        'app_id': '2******6',
                        'create_time': '2023-08-22T15:54:41.046+08:00',
                        'id': 11***,
                        'message': 'success',
                        'state': 2,
                        'type': 'Image'}},
       'message': 'success',
       'request_id': '93b77f4b-56cb-4120-b45b-f5c88941bff5'}

    Tabel berikut menjelaskan parameter respons.

    Parameter

    Deskripsi

    request_id

    ID permintaan, yang bertipe STRING.

    kode

    Kode status permintaan, yang bertipe STRING. Nilai yang valid:

    • OK: Permintaan berhasil.

    • error: Permintaan gagal.

    message

    Detail status permintaan. Jika permintaan berhasil, success dikembalikan. Dalam skenario lain, pesan berbeda dikembalikan.

    data

    Detail data yang dikembalikan, yang bertipe JSON Object. Untuk informasi tentang bidang internal, lihat bagian berikut dalam topik ini:

    Parameter dalam bidang job

    Parameter

    Deskripsi

    id

    ID tugas.

    app_id

    ID aplikasi pengguna.

    state

    Kode status tugas, yang bertipe INT. Nilai valid:

    • 0: Tugas sedang menginisialisasi.

    • 1: Tugas sedang berjalan.

    • 2: Tugas berhasil dijalankan.

    • 3: Tugas gagal.

    message

    Informasi eksekusi pekerjaan.

    create_time

    Waktu pembuatan tugas.

    Result

    Hasil yang dikembalikan oleh model.

    Parameter dalam bidang result

    Parameter

    Deskripsi

    cost_time

    Waktu yang diperlukan untuk sesi pelatihan ini.

    states

    Hasil deteksi untuk setiap gambar input.

    model_id

    ID model yang dikembalikan.

    Parameter dalam bidang states

    Parameter

    Deskripsi

    code

    Kode status, yang bertipe INT. Nilai valid:

    • 0: Tugas belum selesai.

    • 1: Tugas selesai.

    frontal

    Menunjukkan apakah wajah dalam gambar menghadap ke depan. Nilainya bertipe bool.

    message

    Hasil deteksi gambar. Nilainya bertipe STRING.

    url

    URL gambar. Nilainya bertipe STRING.

  • Deskripsi Kode Kesalahan Terkait

    • Kode kesalahan permintaan

      Kode status HTTP

      code

      message

      Deskripsi

      400

      PARAMETER_ERROR

      not found appid

      ID aplikasi tidak valid.

      EXCEEDED_QUOTA_ERROR

      exceeded quota

      Kuota panggilan layanan akun telah habis.

      401

      PARAMETER_ERROR

      sign error

      Token tidak valid.

      404

      PARAMETER_ERROR

      model not found

      Layanan model yang diminta belum diterapkan.

    • Kode kesalahan respons

      Kode status HTTP

      code

      message

      Deskripsi

      462

      error

      Invalid input data

      Terjadi kesalahan saat mem-parsing data input.

      Image not provided

      Gambar pelatihan tidak disediakan.

      Make dir in oss Error

      Gagal membuat folder Object Storage Service. Periksa apakah OSS telah dipasang.

      Image process error

      Terjadi kesalahan saat pra-pemrosesan gambar.

      469

      error

      Training - Not get best template image

      Pelatihan gagal dan gambar template tidak dibuat.

      Training - Not get lora weight

      Pelatihan gagal dan bobot LoRA tidak dibuat.

Pembuatan potret

  • Permintaan contoh:

    Pembuatan potret tunggal (aigc_images_create)

    import base64
    
    import cv2
    import numpy as np
    from ai_service_python_sdk.client.api.ai_service_aigc_images_api import \
        AIGCImagesApi  # noqa: E501
    from ai_service_python_sdk.client.api_client import ApiClient
    
    def decode_image_from_base64jpeg(base64_image):
        image_bytes = base64.b64decode(base64_image)
        np_arr = np.frombuffer(image_bytes, np.uint8)
        image = cv2.imdecode(np_arr, cv2.IMREAD_COLOR)
        return image
    
    host    = "http://ai-service.ce8cc13b6421545749e7b4605f3d02607.cn-hangzhou.alicontainer.com"
    appId 	= 'YOUR-APPID'
    token 	= 'YOUR-TOKEN'
    
    client  = ApiClient(host, appId, token)
    api     = AIGCImagesApi(client)  # noqa: E501
    
    response = api.aigc_images_create(
        '<Your-Model-ID>',
        '<url>',
        '<model_name>', <configure>
    )
    # ID permintaan.
    request_id = response.request_id
    # Status permintaan.
    code = response.code
    # Detail status permintaan.
    message = response.message
    # Konten yang dikembalikan oleh layanan model.
    data = response.data
    print(response)
    image = data['image']
    image = decode_image_from_base64jpeg(image)
    cv2.imwrite("1.jpg", image)
    print(data['cost_time'])

    Tabel berikut menjelaskan parameter.

    Parameter

    Deskripsi

    appId

    ID aplikasi. Setelah Anda mengaktifkan layanan Potret AI, Anda dapat melihat ID aplikasi di halaman Potret AI.

    token

    Token. Setelah Anda mengaktifkan layanan Potret AI, Anda dapat melihat token di halaman Potret AI.

    response

    Parameter respons berisi bidang berikut:

    • <Your-Model-ID>: Ganti nilai dengan ID model yang dikembalikan oleh operasi aigc_images_train.

    • <url>: Ganti nilai dengan URL gambar template yang berisi satu wajah. Contoh: https://xxx/single_template.jpg.

    • <model_name>: nama model. Secara default, string kosong digunakan. Contoh: ''.

    • <configure>: item konfigurasi yang dikembalikan. Nilai default: None. Untuk informasi tentang bidang internal, lihat Parameter bidang configure.

    Parameter bidang configure

    Parameter

    Tipe

    Diperlukan

    Deskripsi

    lora_weights

    FLOAT

    Tidak

    Bobot LoRA. Nilai valid: 0.5 hingga 1.0. Nilai default: 0.9.

    Semakin besar nilainya, semakin mirip gambar yang dihasilkan dengan orang yang diinginkan. Namun, nilai yang terlalu besar dapat menyebabkan distorsi gambar.

    first_diffusion_steps

    INT

    Tidak

    Jumlah langkah untuk pembuatan gambar pertama menggunakan Stable Diffusion. Nilai valid: 20 hingga 50. Nilai default: 50.

    Kami sarankan Anda mempertahankan nilai parameter ini. Penurunan signifikan dapat menyebabkan gambar menjadi terdistorsi.

    first_denoising_strength

    FLOAT

    Tidak

    Intensitas rekonstruksi gambar pertama, yaitu intensitas rekonstruksi wajah. Nilai valid: 0.0 hingga 1.0. Nilai default: 0.45.

    Nilai yang lebih besar menentukan intensitas rekonstruksi wajah yang lebih besar. Semakin besar intensitasnya, semakin mirip gambar yang dihasilkan dengan orang yang diinginkan. Namun, nilai yang terlalu besar dapat menyebabkan distorsi gambar.

    second_diffusion_steps

    INT

    Tidak

    Jumlah langkah untuk pembuatan gambar kedua menggunakan Stable Diffusion. Nilai valid: 20 hingga 50. Nilai default: 30.

    Kami sarankan Anda mempertahankan nilai parameter ini. Penurunan signifikan dapat menyebabkan gambar menjadi terdistorsi.

    second_denoising_strength

    FLOAT

    Tidak

    Intensitas rekonstruksi gambar kedua, yaitu intensitas rekonstruksi tepi wajah. Nilai valid: 0.0 hingga 1.0. Nilai default: 0.30.

    Nilai yang terlalu besar dapat menghasilkan gambar yang tidak terkoordinasi.

    more_like_me

    FLOAT

    Tidak

    Tingkat kemiripan gambar dengan orang yang diinginkan. Nilai valid: 0.0 hingga 1.0. Nilai default: 0.50.

    Semakin besar nilainya, semakin mirip gambar yang dihasilkan dengan orang yang diinginkan. Namun, jika nilainya terlalu besar, gambar mungkin terlihat tidak realistis.

    crop_face_preprocess

    BOOL

    Tidak

    Menentukan apakah akan memotong dan merekonstruksi gambar.

    • True

    • False

    apply_face_fusion_before

    BOOL

    Tidak

    Menentukan apakah akan melakukan penggabungan potret pertama. Nilai default: True.

    • Jika Anda mengatur parameter ini ke True, sistem melakukan penggabungan potret.

    • Jika Anda mengatur parameter ini ke False, kemiripan berkurang.

    apply_face_fusion_after

    BOOL

    Tidak

    Menentukan apakah akan melakukan penggabungan potret kedua. Nilai default: True.

    • Jika Anda mengatur parameter ini ke True, sistem melakukan penggabungan potret.

    • Jika Anda mengatur parameter ini ke False, kemiripan berkurang.

    color_shift_middle

    BOOL

    Tidak

    Menentukan apakah akan melakukan koreksi warna pertama. Nilai default: True.

    • Jika Anda mengatur parameter ini ke True, sistem melakukan koreksi warna untuk meningkatkan kemiripan warna kulit gambar yang dihasilkan dengan template.

    • Jika Anda mengatur parameter ini ke False, sistem tidak melakukan koreksi warna dan distorsi warna mungkin terjadi.

    color_shift_last

    BOOL

    Tidak

    Menentukan apakah akan melakukan koreksi warna kedua. Nilai default: True.

    • Jika Anda mengatur parameter ini ke True, sistem melakukan koreksi warna untuk meningkatkan kemiripan warna kulit gambar yang dihasilkan dengan template.

    • Jika Anda mengatur parameter ini ke False, sistem tidak melakukan koreksi warna dan distorsi warna mungkin terjadi.

    background_restore

    BOOL

    Tidak

    Menentukan apakah akan merekonstruksi latar belakang. Nilai default: False.

    • Jika Anda mengatur parameter ini ke True, latar belakang direkonstruksi agar lebih alami. Namun, fitur ini mengubah latar belakang gambar dan meningkatkan waktukonsumsi.

    • Jika Anda mengatur parameter ini ke False, sistem tidak merekonstruksi latar belakang.

    skin_retouching_bool

    BOOL

    Tidak

    Menentukan apakah akan melakukan penghalusan kulit. Nilai default: False.

    • Jika Anda mengatur parameter ini ke True, sistem menghaluskan dan mencerahkan kulit. Dalam banyak kasus, ini membuat gambar lebih menarik, tetapi dapat berlebihan dalam mencerahkan kulit.

    • Jika Anda mengatur parameter ini ke False, tekstur kulit dapat ditingkatkan.

    photo_enhancement_bool

    BOOL

    Tidak

    Menentukan apakah akan meningkatkan potret. Nilai default: True.

    • Jika Anda mengatur parameter ini ke True, sistem memperbaiki potret atau meningkatkan resolusi gambar untuk meningkatkan kualitas gambar.

    • Jika Anda mengatur parameter ini ke False, sistem tidak meningkatkan potret.

    photo_enhancement_method

    STR

    Tidak

    Metode yang digunakan untuk meningkatkan potret. Nilai default: photo_fix. Nilai valid:

    • photo_fix digunakan untuk memperbaiki gambar dengan memperbaiki ketidaksempurnaan tertentu, yang mungkin mengakibatkan hilangnya tekstur kulit karena beberapa distorsi.

    • super_resolution digunakan untuk meningkatkan resolusi gambar, mempertahankan lebih banyak detail asli.

    makeup_transfer

    BOOL

    Tidak

    Menentukan apakah akan melakukan transfer makeup. Nilai default: False.

    • Jika Anda mengatur parameter ini ke True, sistem melakukan transfer makeup untuk mencegah gambar terlihat terlalu polos. Namun, ini dapat mengurangi kemiripan gambar dengan orang yang diinginkan.

    • Jika Anda mengatur parameter ini ke False, sistem menonaktifkan transfer makeup.

    makeup_transfer_ratio

    FLOAT

    Tidak

    Intensitas transfer makeup. Nilai valid: 0.0 hingga 1.0. Nilai default: 0.5.

    Semakin besar nilainya, semakin tinggi proporsi transfer makeup dan semakin mirip hasil makeup dengan template. Ini juga dapat mengurangi kemiripan gambar dengan orang yang diinginkan.

    face_shape_match

    BOOL

    Tidak

    Menentukan apakah akan melakukan adaptasi bentuk wajah. Nilai default: False.

    • Jika Anda mengatur parameter ini ke True, bentuk wajah dan tekstur kulit lebih mirip dengan orang yang diinginkan.

    • Jika Anda mengatur parameter ini ke False, sistem menonaktifkan adaptasi bentuk wajah.

    ipa_control

    BOOL

    Tidak

    Menentukan apakah menggunakan IP-Adapter. Nilai default: False.

    • Jika Anda mengatur parameter ini ke True, potret yang dihasilkan lebih mirip dengan gambar referensi.

    • Jika Anda mengatur parameter ini ke False, sistem menonaktifkan IP-Adapter.

    ipa_weight

    FLOAT

    Tidak

    Bobot IP-Adapter. Nilai valid: 0.0 hingga 1.0. Nilai default: 0.5. Semakin besar nilainya, semakin mirip gambar yang dihasilkan dengan orang yang diinginkan. Namun, nilai yang terlalu besar dapat menyebabkan distorsi gambar.

    style_name

    STRING

    Tidak

    Gaya potret yang dibuat. Nilai default: Realistic. Nilai valid:

    • Realistic

    • Anime

    lcm_accelerate

    BOOL

    Tidak

    Menentukan apakah akan melakukan akselerasi LCM (latent code manipulation). Nilai default: False. Nilai valid:

    • False: tidak melakukan akselerasi LCM.

    • True: melakukan akselerasi LCM.

    sharp_ratio

    FLOAT

    Tidak

    Tingkat ketajaman. Nilai valid: 0.0 hingga 1.0. Nilai default: 0.15. Anda dapat mengonfigurasi parameter ini untuk meningkatkan kejelasan. Nilai yang terlalu besar dapat menyebabkan distorsi gambar.

    Pembuatan potret multi-orang (aigc_images_create_by_multi_model_ids)

    import base64
    import cv2
    import numpy as np
    from ai_service_python_sdk.client.api.ai_service_aigc_images_api import \
        AIGCImagesApi  # noqa: E501
    from ai_service_python_sdk.client.api_client import ApiClient
    
    def decode_image_from_base64jpeg(base64_image):
        image_bytes = base64.b64decode(base64_image)
        np_arr = np.frombuffer(image_bytes, np.uint8)
        image = cv2.imdecode(np_arr, cv2.IMREAD_COLOR)
        return image
    
    host    = "http://ai-service.ce8cc13b6421545749e7b4605f3d02607.cn-hangzhou.alicontainer.com"
    appId 	= 'YOUR-APPID'
    token 	= 'YOUR-TOKEN'
    
    client  = ApiClient(host, appId, token)
    api     = AIGCImagesApi(client)  # noqa: E501
    
    response = api.aigc_images_create_by_multi_model_ids(
        ['<Your-Model-ID1>', '<Your-Model-ID2>'],
        '<url>',
        '<model_name>', <configure>
    )
    # ID permintaan.
    request_id = response.request_id
    # Status permintaan.
    code = response.code
    # Detail status permintaan.
    message = response.message
    # Konten yang dikembalikan oleh layanan model.
    data = response.data
    print(response)
    image = data['image']
    image = decode_image_from_base64jpeg(image)
    cv2.imwrite("1.jpg", image)
    print(data['cost_time'])

    Tabel berikut menjelaskan parameter.

    Parameter

    Deskripsi

    appId

    ID aplikasi. Setelah Anda mengaktifkan layanan Potret AI, Anda dapat melihat ID aplikasi di halaman Potret AI.

    token

    Token. Setelah Anda mengaktifkan layanan Potret AI, Anda dapat melihat token di halaman Potret AI.

    response

    Parameter respons berisi bidang berikut:

    • <Your-Model-ID1> dan <Your-Model-ID2>: Ganti nilai dengan ID model yang dikembalikan oleh operasi aigc_images_train.

    • <url>: Ganti nilai dengan URL gambar template yang berisi beberapa wajah. Jumlah wajah dalam gambar harus sama dengan nilai parameter model_id yang ditentukan untuk pelatihan model. Contoh: http://xxx/multi_template.jpg.

    • <model_name>: nama model. Secara default, string kosong digunakan. Contoh: ''.

    • <configure>: item konfigurasi yang dikembalikan. Nilai default: None. Untuk informasi tentang bidang internal, lihat Parameter bidang configure.

    Parameter bidang configure

    Parameter

    Tipe

    Diperlukan

    Deskripsi

    lora_weights

    FLOAT

    Tidak

    Bobot LoRA. Nilai valid: 0.5 hingga 1.0. Nilai default: 0.9.

    Semakin besar nilainya, semakin mirip gambar yang dihasilkan dengan orang yang diinginkan. Namun, nilai yang terlalu besar dapat menyebabkan distorsi gambar.

    first_diffusion_steps

    INT

    Tidak

    Jumlah langkah untuk pembuatan gambar pertama menggunakan Stable Diffusion. Nilai valid: 20 hingga 50. Nilai default: 50.

    Kami sarankan Anda mempertahankan nilai parameter ini. Penurunan signifikan dapat menyebabkan gambar menjadi terdistorsi.

    first_denoising_strength

    FLOAT

    Tidak

    Intensitas rekonstruksi gambar pertama, yaitu intensitas rekonstruksi wajah. Nilai valid: 0.0 hingga 1.0. Nilai default: 0.45.

    Nilai yang lebih besar menentukan intensitas rekonstruksi wajah yang lebih besar. Semakin besar intensitasnya, semakin mirip gambar yang dihasilkan dengan orang yang diinginkan. Namun, nilai yang terlalu besar dapat menyebabkan distorsi gambar.

    second_diffusion_steps

    INT

    Tidak

    Jumlah langkah untuk pembuatan gambar kedua menggunakan Stable Diffusion. Nilai valid: 20 hingga 50. Nilai default: 30.

    Kami sarankan Anda mempertahankan nilai parameter ini. Penurunan signifikan dapat menyebabkan gambar menjadi terdistorsi.

    second_denoising_strength

    FLOAT

    Tidak

    Intensitas rekonstruksi gambar kedua, yaitu intensitas rekonstruksi tepi wajah. Nilai valid: 0.0 hingga 1.0. Nilai default: 0.30.

    Nilai yang terlalu besar dapat menghasilkan gambar yang tidak terkoordinasi.

    more_like_me

    FLOAT

    Tidak

    Tingkat kemiripan gambar dengan orang yang diinginkan. Nilai valid: 0.0 hingga 1.0. Nilai default: 0.50.

    Semakin besar nilainya, semakin mirip gambar yang dihasilkan dengan orang yang diinginkan. Namun, jika nilainya terlalu besar, gambar mungkin terlihat tidak realistis.

    crop_face_preprocess

    BOOL

    Tidak

    Menentukan apakah akan memotong dan merekonstruksi gambar. Nilai default: True.

    • True

    • False

    apply_face_fusion_before

    BOOL

    Tidak

    Menentukan apakah akan melakukan penggabungan potret pertama. Nilai default: True.

    • Jika Anda mengatur parameter ini ke True, sistem melakukan penggabungan potret.

    • Jika Anda mengatur parameter ini ke False, kemiripan berkurang.

    apply_face_fusion_after

    BOOL

    Tidak

    Menentukan apakah akan melakukan penggabungan potret kedua. Nilai default: True.

    • Jika Anda mengatur parameter ini ke True, sistem melakukan penggabungan potret.

    • Jika Anda mengatur parameter ini ke False, kemiripan berkurang.

    color_shift_middle

    BOOL

    Tidak

    Menentukan apakah akan melakukan koreksi warna pertama. Nilai default: True.

    • Jika Anda mengatur parameter ini ke True, sistem melakukan koreksi warna untuk meningkatkan kemiripan warna kulit gambar yang dihasilkan dengan template.

    • Jika Anda mengatur parameter ini ke False, sistem tidak melakukan koreksi warna dan distorsi warna mungkin terjadi.

    color_shift_last

    BOOL

    Tidak

    Menentukan apakah akan melakukan koreksi warna kedua. Nilai default: True.

    • Jika Anda mengatur parameter ini ke True, sistem melakukan koreksi warna untuk meningkatkan kemiripan warna kulit gambar yang dihasilkan dengan template.

    • Jika Anda mengatur parameter ini ke False, sistem tidak melakukan koreksi warna dan distorsi warna mungkin terjadi.

    background_restore

    BOOL

    Tidak

    Menentukan apakah akan merekonstruksi latar belakang. Nilai default: False.

    • Jika Anda mengatur parameter ini ke True, latar belakang direkonstruksi agar lebih alami. Namun, fitur ini mengubah latar belakang gambar dan meningkatkan waktu konsumsi.

    • Jika Anda mengatur parameter ini ke False, sistem tidak merekonstruksi latar belakang.

    skin_retouching_bool

    BOOL

    Tidak

    Menentukan apakah akan melakukan penghalusan kulit. Nilai default: False.

    • Jika Anda mengatur parameter ini ke True, sistem menghaluskan dan mencerahkan kulit. Dalam banyak kasus, ini membuat gambar lebih menarik, tetapi dapat berlebihan dalam mencerahkan kulit.

    • Jika Anda mengatur parameter ini ke False, tekstur kulit dapat ditingkatkan.

    photo_enhancement_bool

    BOOL

    Tidak

    Menentukan apakah akan meningkatkan potret. Nilai default: True.

    • Jika Anda mengatur parameter ini ke True, sistem memperbaiki potret atau meningkatkan resolusi gambar untuk meningkatkan kualitas gambar.

    • Jika Anda mengatur parameter ini ke False, sistem tidak meningkatkan potret.

    photo_enhancement_method

    STR

    Tidak

    Metode yang digunakan untuk meningkatkan potret. Nilai default: photo_fix. Nilai valid:

    • photo_fix digunakan untuk memperbaiki gambar dengan memperbaiki ketidaksempurnaan tertentu, yang dapat mengakibatkan hilangnya tekstur kulit karena beberapa distorsi.

    • super_resolution digunakan untuk meningkatkan resolusi gambar, mempertahankan lebih banyak detail asli.

    makeup_transfer

    BOOL

    Tidak

    Menentukan apakah akan melakukan transfer makeup. Nilai default: False.

    • Jika Anda mengatur parameter ini ke True, sistem melakukan transfer makeup untuk mencegah gambar terlihat terlalu polos. Namun, ini dapat mengurangi kemiripan gambar dengan orang yang diinginkan.

    • Jika Anda mengatur parameter ini ke False, sistem menonaktifkan transfer makeup.

    makeup_transfer_ratio

    FLOAT

    Tidak

    Intensitas transfer makeup. Nilai valid: 0.0 hingga 1.0. Nilai default: 0.5.

    Semakin besar nilainya, semakin tinggi proporsi transfer makeup dan semakin mirip hasil makeup dengan template. Ini juga dapat mengurangi kemiripan gambar dengan orang yang diinginkan.

    face_shape_match

    BOOL

    Tidak

    Menentukan apakah akan melakukan adaptasi bentuk wajah. Nilai default: False.

    • Jika Anda mengatur parameter ini ke True, bentuk wajah dan tekstur kulit lebih mirip dengan orang yang diinginkan.

    • Jika Anda mengatur parameter ini ke False, sistem menonaktifkan adaptasi bentuk wajah.

    ipa_control

    BOOL

    Tidak

    Menentukan apakah akan melakukan kontrol IPA:

    • True: Jika Anda mengaktifkan saklar ini, kemiripan potret ditingkatkan, tetapi gambar mudah terpengaruh oleh gambar referensi.

    • Jika Anda mengatur parameter ini ke False, sistem menonaktifkan IP-Adapter.

    ipa_weight

    FLOAT

    Tidak

    Bobot IP-Adapter. Nilai valid: 0.0 hingga 1.0. Nilai default: 0.5. Semakin besar nilainya, semakin mirip gambar yang dihasilkan dengan orang yang diinginkan. Namun, nilai yang berlebihan dapat menyebabkan distorsi gambar.

    style_name

    STRING

    Tidak

    Gaya gambar yang dibuat. Nilai valid:

    • Realistic

    • Anime

    lcm_accelerate

    BOOL

    Tidak

    Menentukan apakah akan melakukan akselerasi LCM. Nilai default: False.

    • False: tidak melakukan akselerasi LCM.

    • True: melakukan akselerasi LCM.

    sharp_ratio

    FLOAT

    Tidak

    Tingkat ketajaman. Nilai valid: 0.0 hingga 1.0. Nilai default: 0.15. Anda dapat mengonfigurasi parameter ini untuk meningkatkan kejelasan. Nilai yang berlebihan dapat menyebabkan distorsi gambar.

  • Respons contoh:

    {
      'code': 'OK',
      'data': {
          'cost_time': 21.705406427383423,
          'image': '/9j/4AAQSkZJRgABAQAAAQABAAD/.............2wBDAAgGBgcGBQgHBwcJCQgK',
      		'model_id': 'fa4ba43a-df55-45a4-9c31-bb0dc1e5****'
      },
      'message': 'success',
      'request_id': 'df5454ca-07ec-4a15-be50-7beaba42f36b'
    }

    Tabel berikut menjelaskan parameter.

    Parameter

    Deskripsi

    request_id

    ID permintaan, yang bertipe STRING.

    code

    Kode status permintaan. Nilai valid:

    • OK: Permintaan berhasil.

    • error: Permintaan gagal.

    message

    Detail status permintaan. Jika permintaan berhasil, success dikembalikan. Dalam skenario lain, pesan berbeda dikembalikan.

    data

    Detail data yang dikembalikan, yang bertipe JSON Object. Parameter:

    • model_id: ID model pengguna.

    • image: gambar template yang digunakan untuk menghasilkan potret AI, yang dienkripsi dalam Base64.

    • cost_time: waktu yang diperlukan untuk pembuatan potret. Nilainya bertipe FLOAT.

  • Kode Kesalahan

    • Kode kesalahan permintaan

      Kode status HTTP

      code

      message

      Deskripsi

      400

      PARAMETER_ERROR

      not found appid

      ID aplikasi tidak valid.

      EXCEEDED_QUOTA_ERROR

      exceeded quota

      Kuota panggilan layanan akun telah habis.

      401

      PARAMETER_ERROR

      sign error

      Token tidak valid.

      404

      PARAMETER_ERROR

      model not found

      Layanan model yang diminta belum diterapkan.

    • Kode kesalahan respons

      Kode status HTTP

      code

      message

      Deskripsi

      462

      error

      Invalid input data. Please check the input dict.

      Terjadi kesalahan saat mem-parsing data input.

      Mage not provided. Please check the template_image.

      Gambar template yang digunakan untuk pembuatan potret tidak disediakan.

      Prompts get error. Please check the model_id.

      Format ID model tidak valid.

      Roop image decord error. Pleace check the user's lora is trained or not.

      Gambar Roop tidak ada. Periksa apakah model telah dilatih.

      Template image decord error. Please Give a new template.

      Terjadi kesalahan saat mendekode gambar template. Berikan gambar template baru.

      There is not face in template. Please Give a new template.

      Tidak ada wajah dalam gambar template. Berikan gambar template baru.

      Template image process error. Please Give a new template.

      Terjadi kesalahan saat pra-pemrosesan gambar template. Berikan gambar template baru.

      469

      error

      First Face Fusion Error, Can't get face in template image.

      Terjadi kesalahan selama penggabungan potret pertama.

      First Stable Diffusion Process error. Check the webui status.

      Terjadi kesalahan selama pembuatan gambar pertama menggunakan Stable Diffusion.

      Second Face Fusion Error, Can't get face in template image.

      Terjadi kesalahan selama penggabungan potret kedua.

      Second Stable Diffusion Process error. Check the webui status.

      Terjadi kesalahan selama pembuatan gambar kedua menggunakan Stable Diffusion.

      Please confirm if the number of faces in the template corresponds to the user ID.

      Jumlah ID pengguna yang Anda berikan tidak sesuai dengan jumlah wajah.

      Third Stable Diffusion Process error. Check the webui status.

      Terjadi kesalahan saat pra-pemrosesan latar belakang. Berikan gambar template baru.

      500

      error

      Face id image decord error. Pleace check the user's lora is trained or not.

      Terjadi kesalahan saat mendekode gambar yang diunggah. Periksa apakah model telah dilatih.

Kode contoh proses pembuatan potret end-to-end

Blok kode berikut menunjukkan contoh proses pembuatan potret end-to-end. Setelah kode dijalankan, potret AI dibuat di direktori saat ini.

from ai_service_python_sdk.client.api_client import ApiClient
from ai_service_python_sdk.client.api.ai_service_aigc_images_api import AIGCImagesApi
from ai_service_python_sdk.client.api.ai_service_job_api import AiServiceJobApi
import logging
import sys
import time
import base64
import cv2
import numpy as np

host    = "http://ai-service.ce8cc13b6421545749e7b4605f3d02607.cn-hangzhou.alicontainer.com"
appId 	= 'YOUR-APPID'
token 	= 'YOUR-TOKEN'

def decode_image_from_base64jpeg(base64_image):
    image_bytes = base64.b64decode(base64_image)
    np_arr = np.frombuffer(image_bytes, np.uint8)
    image = cv2.imdecode(np_arr, cv2.IMREAD_COLOR)
    return image

def Check(client, images):
    # Periksa permintaan.
    response = api.aigc_images_check(images, '', None)
    # ID permintaan.
    request_id = response.request_id
    # Status permintaan.
    code = response.code
    # Detail status permintaan.
    message = response.message
    # Konten yang dikembalikan oleh layanan model.
    data = response.data

    # Tampilkan nilai pengembalian.
    if code != "OK":
        logging.error(f"aigc_images_check failed,request id is {request_id}")
        logging.error(message)
        sys.exit(-1)
    else:
        for check_result in data['check_results']:
            if check_result['code'] != 1:
                logging.error(f"check {check_result['url']} failed, message is {check_result['message']}")
                sys.exit(-1)
        logging.info("check images done")


def Train(client, images):
    # Permintaan pelatihan.
    response = api.aigc_images_train(images, '', None)
    request_id = response.request_id
    code = response.code
    message = response.message
    data = response.data
    # Tampilkan nilai pengembalian.
    if code != "OK":
        logging.error(f"aigc_images_train failed, request id is {request_id}")
        logging.error(message)
        sys.exit(-1)
    else:  
        # job id
        job_id = response.data['job_id']
        # model_id
        model_id = response.data['model_id']
        logging.info(f"train job_id is {job_id}")
        logging.info(f"train moded_id is {model_id}")

    if isinstance(job_id, int):
        while True:
            ai_service_job_api = AiServiceJobApi(client)
            response = ai_service_job_api.get_async_job(job_id)
            request_id = response.request_id
            code = response.code
            message = response.message
            data = response.data
            
            if code != "OK":
                logging.error(f"get_async_job failed, request id is {request_id}")
                logging.error(message)
                sys.exit(-1)
            else:
                state = data["job"]["state"]
                if state == 2:
                    logging.info(f"model {model_id} trained successfully")
                    break
                elif state != 3:
                    logging.info(f"training model {model_id}")
                    time.sleep(10)
                else:
                    logging.error(f"model {model_id} trained failed")
                    logging.error(f"message: {message}")
                    break
        if state != 2:
            sys.exit(-1)
    return model_id

def Create(model_id, template_image):
    # Buat gambar.
    response = api.aigc_images_create(model_id, template_image,'', None)
    # ID permintaan.
    request_id = response.request_id
    # Status permintaan.
    code = response.code
    # Detail status permintaan.
    message = response.message
    # Konten yang dikembalikan oleh layanan model.
    data = response.data
    if code != "OK":
        logging.error(f"aigc_images_create failed, model_id is {model_id}")
        sys.exit(-1)
    else:
        image = data['image']
        image = decode_image_from_base64jpeg(image)
        cv2.imwrite("single_out.jpg", image)
        logging.info(f"single create {data['cost_time']}")

def CreateMulti(model_ids, template_image):
    response = api.aigc_images_create_by_multi_model_ids(
        model_ids,
        template_image,
        '', None
    )
    # ID permintaan.
    request_id = response.request_id
    # Status permintaan.
    code = response.code
    # Detail status permintaan.
    message = response.message
    # Konten yang dikembalikan oleh layanan model.
    data = response.data
    if code != "OK":
        logging.error(f"aigc_images_create_by_multi_model_ids failed, model_id is {model_id}")
        sys.exit(-1)
    else:
        image = data['image']
        image = decode_image_from_base64jpeg(image)
        cv2.imwrite("multi_out.jpg", image)
        logging.info(f"multi create cost time {data['cost_time']}")

if __name__ == "__main__":
    client = ApiClient(host, appId, token)

    api = AIGCImagesApi(client)  # noqa: E501
    logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

    # Gambar pelatihan dalam format URL.
    images = [
        'https://xxx/0.jpg',
        'https://xxx/1.jpg',
        'https://xxx/2.jpeg',
        'https://xxx/3.jpeg',
    ]
    #check
    Check(client, images)
    
    model_id = Train(client, images)
    
    template_image = 'https://xxx/single_template.jpg'
    Create(model_id, template_image)
    #baca gambar single_out.jpg
    
    model_ids = [model_id, model_id]
    multi_template_image = 'https://xxx/multi_template.jpg'
    CreateMulti(model_ids, multi_template_image)
    #baca gambar multi_out.jpg

Tabel berikut menjelaskan parameter.

Parameter

Deskripsi

appId

ID aplikasi. Setelah Anda mengaktifkan layanan Potret AI, Anda dapat melihat ID aplikasi di halaman Potret AI.

token

Token. Setelah Anda mengaktifkan layanan Potret AI, Anda dapat melihat token di halaman Potret AI.

images

URL gambar pelatihan. Pisahkan beberapa URL dengan koma (,).

template_image

URL gambar template yang berisi satu wajah. Gambar template digunakan untuk menghasilkan potret satu orang.

multi_template_image

URL gambar template yang berisi beberapa wajah. Jumlah wajah harus sama dengan jumlah ID model yang Anda tentukan. Gambar template digunakan untuk menghasilkan potret multi-orang.