На основе модели глубокого обучения Wav2Lip-GFPGAN. Digital Human Demo.
На основе модели глубокого обучения Wav2Lip-GFPGAN. Digital Human Demo.

1 написано впереди


  • Работа середина сталкивается с простой отделкой
  • Сообщение в блоге Wav2Lip-GFPGAN окружающая среда построена и работает Demo
  • Если вы недостаточно понимаете, пожалуйста, помогите мне исправить это.

У каждого есть только одна истинная ответственность: найти себя. Затем придерживайтесь этого в своем сердце до конца своей жизни, всем сердцем и никогда не останавливайтесь. Все остальные дороги несовершенны, человеческие средства бегства, трусливое возвращение к народным идеалам, дрейфование с толпой и внутренний страх - Герман Гессе, "Демиан"


2Демо-краткое введение

Wav2Lip-GAN

Wav2Lip-GAN Это модель преобразования речи в губы, основанная на генеративно-состязательной сети (GAN). https://github.com/Rudrabha/Wav2Lip

Основной принцип заключается в использовании речевых сигналов и изображений лиц для обучения сети генератора, которая может преобразовать входной речевой сигнал в соответствующую форму губ.

Модель включает в себя две подсети:

  • Один из них — голосовая идентификация.,Для преобразования голосовых сигналов в текст;
  • Другая — сеть генерации формы губ.,Для приема текста и изображений лиц в качестве входных данных,Создайте соответствующую форму губ.

Обе сети обучаются с помощью инфраструктуры GAN, чтобы сделать сгенерированные формы губ максимально реалистичными. На этапе тестирования, учитывая речевой сигнал и изображение лица, модель может генерировать последовательность губ, соответствующую речевому сигналу, тем самым обеспечивая преобразование речи в губы.

GFPGAN

Тенсент GFPGAN Это модель изображения со сверхвысоким разрешением, основанная на генеративно-состязательной сети (GAN). https://github.com/TencentARC/GFPGAN

Основной принцип заключается в использовании изображения с низким разрешением в качестве входных данных и преобразовании его в изображение с высоким разрешением с помощью генераторной сети.

Модель включает в себя две подсети:

  • Одна из них — сеть генератора.,Используется для преобразования изображений с низким разрешением в изображения с высоким разрешением;
  • Другой — сеть дискриминаторов.,Используется для оценки реалистичности созданного изображения.

Две сети обучаются через структуру GAN.,Сделать сгенерированное изображение максимально приближенным к реальному изображению. на этапе тестирования,Учитывая изображение с низким разрешением,Модель может генерировать соответствующее изображение с высоким разрешением. ТенсентGFPGAN использует некоторые инновационные технологии,Например, прогрессивное обучение, адаптивная нормализация экземпляров и т. д.,Он хорошо справляется с задачами сверхвысокого разрешения изображений.

Демо проекта ниже завершено,Друзья могут обратиться непосредственно к。Автор предоставляетipynb Demo GitHub\Wav2Lip-GFPGAN\Wav2Lip-GFPGAN.ipynb,Если у вас есть базовые знания, вы можете выполнить следующие действия. Вам не нужно читать следующее.

https://github.com/ajay-sainy/Wav2Lip-GFPGAN/

Друзья, у которых возникли трудности, могут клонировать следующее, разветвить вышеуказанный проект и предоставить текущие шаги по созданию среды и необходимых сценариев материалов:

https://github.com/LIRUILONGS/Wav2Lip-GFPGAN_Python_Demo

3Вовлеченные модели и загрузка установочного пакета

Wav2Lip

Путь загрузки вы можете увидеть в проекте: https://github.com/Rudrabha/Wav2Lip.

Wav2Lip:https://iiitaphyd-my.sharepoint.com/:u:/g/personal/radrabha_m_research_iiit_ac_in/Eb3LEzbfuKlJiR600lQWRxgBIY27JZg80f7V9jtMfbNDaQ?e=TBFBVW

Wav2Lip + GAN :https://iiitaphyd-my.sharepoint.com/:u:/g/personal/radrabha_m_research_iiit_ac_in/EdjI7bZlgApMqsVoEUUXpLsBxqXbn5z8VTmoxp55YNDcIA?e=n9ljGW

ffmpeg: https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-essentials.7z ,Linux Среду можно установить напрямую с помощью инструмента управления пакетами.

После установки ffmpeg системе win необходимо настроить переменные среды, в которые я не буду здесь вдаваться.

GFPGAN

GFPGANv1.3.pth:https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth

parsing_parsenet.pth:https://github.com/xinntao/facexlib/releases/download/v0.2.2/parsing_parsenet.pth

detection_Resnet50_Final.pth:https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_Resnet50_Final.pth

4 установка среды

среда wav2lip

Текущая системная среда window11,Anaconda3 Использовать процессор Запустить, создать виртуальную среду

Язык кода:javascript
копировать
C:\Users\liruilong>conda create -n wav2lip python=3.8
C:\Users\liruilong>conda info --envs
# conda environments:
#
base                  *  C:\ProgramData\Anaconda3
myenv                    C:\Users\liruilong\AppData\Local\conda\conda\envs\myenv
wav2lip                  C:\Users\liruilong\AppData\Local\conda\conda\envs\wav2lip

При переключении виртуальных сред произошла ошибка

Язык кода:javascript
копировать
C:\Users\liruilong>conda activate wav2lip
.....

Позже вAnaconda Prompt (Anaconda3) Может выполняться нормально

Язык кода:javascript
копировать
(base) C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN>conda activate wav2lip

(wav2lip) C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN>conda list
.....

Установить requirements.txt Зависимая библиотека середина напрямую сообщила об ошибке Установить

Язык кода:javascript
копировать
(wav2lip) C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN>pip install -r requirements.txt   -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
Looking in indexes: http://pypi.douban.com/simple/

Нужно добавить --use-pep517

Язык кода:javascript
копировать
(wav2lip) C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN>pip install -r requirements.txt   -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com  --use-pep517
Looking in indexes: http://pypi.douban.com/simple/

Обнаружение wav2lip Среда, в которой работает демонстрация протестируй это,Некоторые материалы зарезервированы для текущего проекта.,здесьиспользовать Модельwav2lip.pth

Язык кода:javascript
копировать
(wav2lip) C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN>python .\Wav2Lip-master\inference.py --checkpoint_path .\Wav2Lip-master\checkpoints\wav2lip.pth --face .\inputs\kim_7s_raw.mp4 --audio .\inputs\kim_audio.mp3 --outfile result.mp4
Using cpu for inference.
Reading video frames...
Number of frames available for inference: 223
Extracting raw audio...
...................................
[libx264 @ 0000022caf538200] Weighted P-Frames: Y:1.2% UV:1.2%
[libx264 @ 0000022caf538200] ref P L0: 68.7%  8.6% 16.2%  6.4%
[libx264 @ 0000022caf538200] ref B L0: 75.0% 20.2%  4.8%
[libx264 @ 0000022caf538200] ref B L1: 94.9%  5.1%
[libx264 @ 0000022caf538200] kb/s:1433.66
[aac @ 0000022caf528940] Qavg: 237.868

После запуска он будет сгенерирован в текущем каталоге. result.mp4 документ

https://www.bilibili.com/video/BV1fX4y187jW/

Затем используйте Модельwav2lip_gan.pth Пробую это

Язык кода:javascript
копировать
(wav2lip) C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN>python .\Wav2Lip-master\inference.py --checkpoint_path  .\inputs\wav2lip_gan.pth --face .\inputs\kim_7s_raw.mp4 --audio .\inputs\kim_audio.mp3 --outfile result.mp4
Using cpu for inference.

https://www.bilibili.com/video/BV1Vo4y1T7F2/

здесь среда wav2lipуже Установить Заканчивать

Среда GFPAN

Подготовьте новое аудио и видео, используя wav2lip_gan генерировать, готовить Среду GFPAN

Язык кода:javascript
копировать
(wav2lip) C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN>python .\Wav2Lip-master\inference.py --checkpoint_path  .\inputs\wav2lip_gan.pth --face .\inputs\demo.mp4 --audio .\inputs\demo_5_y.mp3 --outfile result.mp4
Using cpu for inference.
Reading video frames...
Number of frames available for inference: 2116
Extracting raw audio..
。。。。。。。。。。。。。。。。。。。。。
[libx264 @ 000001ba2a798d80] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 18% 48%  3%  2%  2%  2%  3%  3%
[libx264 @ 000001ba2a798d80] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% 22% 17%  6%  6%  6%  6%  7%  8%
[libx264 @ 000001ba2a798d80] i8c dc,h,v,p: 49% 20% 22%  8%
[libx264 @ 000001ba2a798d80] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 000001ba2a798d80] ref P L0: 80.9% 10.0%  6.6%  2.5%
[libx264 @ 000001ba2a798d80] ref B L0: 87.8% 10.5%  1.7%
[libx264 @ 000001ba2a798d80] ref B L1: 98.7%  1.3%
[libx264 @ 000001ba2a798d80] kb/s:703.37
[aac @ 000001ba2a79a780] Qavg: 170.234

(wav2lip) C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN>

https://www.bilibili.com/video/BV1cX4y1h7k8/

Создайте папку с документами результатов

Язык кода:javascript
копировать
PS C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN> mkdir results


    Оглавление: C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----          2023/6/9      7:14                results


PS C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN>

Вам необходимо переместить документ, созданный выше, в эту папку документов, а затем выполнить следующий скрипт.

Язык кода:javascript
копировать
# day1.py

wav2lipFolderName = 'Wav2Lip-master'
gfpganFolderName = 'GFPGAN-master'
wav2lipPath =  '.\\' + wav2lipFolderName
gfpganPath = '.\\' + gfpganFolderName
outputPath = ".\\results"

import cv2
from tqdm import tqdm
from os import path

import os

# видео, созданное на предыдущем шаге
inputVideoPath = outputPath+'\\result.mp4'
# данные о номере середина
unProcessedFramesFolderPath = outputPath+'\\frames'

if not os.path.exists(unProcessedFramesFolderPath):
  os.makedirs(unProcessedFramesFolderPath)

vidcap = cv2.VideoCapture(inputVideoPath)
numberOfFrames = int(vidcap.get(cv2.CAP_PROP_FRAME_COUNT))
fps = vidcap.get(cv2.CAP_PROP_FPS)
print("FPS: ", fps, "Frames: ", numberOfFrames)

for frameNumber in tqdm(range(numberOfFrames)):
    _,image = vidcap.read()
    cv2.imwrite(path.join(unProcessedFramesFolderPath, str(frameNumber).zfill(4)+'.jpg'), image)

print("unProcessedFramesFolderPath:",unProcessedFramesFolderPath)
print("inputVideoPath:",inputVideoPath)

Функция состоит в том, чтобы покадрово читать видео, обработанное wav2lip, и сохранять каждый кадр как JPEG форматировать изображения и сохранять эти изображения в указанную папку документов unProcessedFramesFolderPath середина

Язык кода:javascript
копировать
(wav2lip) C:\Users\liruilong\Documents\GitHub\Wav2Lip-GFPGAN>python day1.py
FPS:  25.0 Frames:  1793
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1793/1793 [00:10<00:00, 166.99it/s]
unProcessedFramesFolderPath:  
inputVideoPath: .\results\result.mp4

(wav2lip) C:\Users\liruilong\Documents\GitHub\Wav2Lip-GFPGAN>

Будет позже .\results\frames Посмотрите вырезанные фотографии

Подготовьтесь сейчас GFPGAN-master изсреда

Язык кода:javascript
копировать
(wav2lip) C:\Users\liruilong\Documents\GitHub\Wav2Lip-GFPGAN\GFPGAN-master>pip install -r requirements.txt -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com --use-pep517
Looking in indexes: http://pypi.douban.com/simple/
..........
Installing collected packages: numpy, scikit-image
  Attempting uninstall: numpy
    Found existing installation: numpy 1.23.5
    Uninstalling numpy-1.23.5:
      Successfully uninstalled numpy-1.23.5
  Attempting uninstall: scikit-image
    Found existing installation: scikit-image 0.20.0
    Uninstalling scikit-image-0.20.0:
      Successfully uninstalled scikit-image-0.20.0
Successfully installed numpy-1.20.3 scikit-image-0.19.3

(wav2lip) C:\Users\liruilong\Documents\GitHub\Wav2Lip-GFPGAN\GFPGAN-master>

GFPGANv1.3.pth моделировать в /experiments/pretrained_models в каталоге

Язык кода:javascript
копировать
(wav2lip) C:\Users\liruilong\Documents\GitHub\Wav2Lip-GFPGAN\GFPGAN-master>mkdir -p .\\experiments\pretrained_models

(wav2lip) C:\Users\liruilong\Documents\GitHub\Wav2Lip-GFPGAN\GFPGAN-master>cd  .\\experiments\pretrained_models

Подтвердить модель

Язык кода:javascript
копировать
    Оглавление: C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN\GFPGAN-master\experiments\pretrained_models


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----          2023/6/7      1:43      348632874 GFPGANv1.3.pth

Затем выполните следующую команду

Язык кода:javascript
копировать
python inference_gfpgan.py -i $unProcessedFramesFolderPath -o $outputPath -v 1.3 -s 2 --only_center_face --bg_upsampler None

Замените соответствующие переменные. Если модель не может быть загружена, необходимо поместить ранее скачанные в указанное место.

Язык кода:javascript
копировать
(wav2lip) C:\Users\liruilong\Documents\GitHub\Wav2Lip-GFPGAN\GFPGAN-master>python inference_gfpgan.py -i ..\results\frames -o ..\results -v 1.3 -s 2 --only_center_face --bg_upsampler None
C:\Users\liruilong\AppData\Local\conda\conda\envs\wav2lip\lib\site-packages\torchvision\transforms\functional_tensor.py:5: UserWarning: The torchvision.transforms.functional_tensor module is deprecated in 0.15 and will be **removed in 0.17**. Please don't rely on it. You probably just need to use APIs in torchvision.transforms.functional or in torchvision.transforms.v2.functional.
  warnings.warn(
C:\Users\liruilong\AppData\Local\conda\conda\envs\wav2lip\lib\site-packages\torchvision\models\_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.
  warnings.warn(
C:\Users\liruilong\AppData\Local\conda\conda\envs\wav2lip\lib\site-packages\torchvision\models\_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=None`.
  warnings.warn(msg)
Downloading: "https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_Resnet50_Final.pth" to C:\Users\liruilong\AppData\Local\conda\conda\envs\wav2lip\lib\site-packages\facexlib\weights\detection_Resnet50_Final.pth

100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 104M/104M [00:06<00:00, 16.1MB/s]
Downloading: "https://github.com/xinntao/facexlib/releases/download/v0.2.2/parsing_parsenet.pth" to C:\Users\liruilong\AppData\Local\conda\conda\envs\wav2lip\lib\site-packages\facexlib\weights\parsing_parsenet.pth

100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 81.4M/81.4M [00:05<00:00, 14.8MB/s]
0it [00:00, ?it/s]
  warnings.warn(msg)
  0%|                                                                                                                                                                                  | 0/1793 [00:00<?, ?it/s]Processing 0000.jpg ...
  0%|                                                                                                                                                                        | 1/1793 [00:06<3:18:38,  6.65s/it]Processing 0001.jpg ...
  0%|▏                                                                                                                                                                       | 2/1793 [00:13<3:18:06,  6.64s/it]P
...............................
(wav2lip) C:\Users\liruilong\Documents\GitHub\Wav2Lip-GFPGAN\GFPGAN-master>

ОК. После запуска вам необходимо использовать обработанные изображения для синтеза видео и выполнить следующий скрипт.

Язык кода:javascript
копировать


import os


outputPath = ".\\results"

restoredFramesPath = outputPath + '\\restored_imgs\\'
processedVideoOutputPath = outputPath

dir_list = os.listdir(restoredFramesPath)
dir_list.sort()

import cv2
import numpy as np

batch = 0
batchSize = 300
from tqdm import tqdm
for i in tqdm(range(0, len(dir_list), batchSize)):
  img_array = []
  start, end = i, i+batchSize
  print("processing ", start, end)
  for filename in  tqdm(dir_list[start:end]):
      filename = restoredFramesPath+filename;
      img = cv2.imread(filename)
      if img is None:
        continue
      height, width, layers = img.shape
      size = (width,height)
      img_array.append(img)


  out = cv2.VideoWriter(processedVideoOutputPath+'\\batch_'+str(batch).zfill(4)+'.avi',cv2.VideoWriter_fourcc(*'DIVX'), 30, size)
  batch = batch + 1
 
  for i in range(len(img_array)):
    out.write(img_array[i])
  out.release()

concatTextFilePath = outputPath + "\\concat.txt"
concatTextFile=open(concatTextFilePath,"w")
for ips in range(batch):
  concatTextFile.write("file batch_" + str(ips).zfill(4) + ".avi\n")
concatTextFile.close()

concatedVideoOutputPath = outputPath + "\\concated_output.avi"
print("concatedVideoOutputPath:",concatedVideoOutputPath)

finalProcessedOuputVideo = processedVideoOutputPath+'\\final_with_audio.avi'
print("finalProcessedOuputVideo:",finalProcessedOuputVideo)
# ffmpeg -y -f concat -i {concatTextFilePath} -c copy {concatedVideoOutputPath} 

#ffmpeg -y -i {concatedVideoOutputPath} -i {inputAudioPath} -map 0 -map 1:a -c:v copy -shortest {finalProcessedOuputVideo}

#from google.colab import files
#files.download(finalProcessedOuputVideo)

Язык кода:javascript
копировать
(wav2lip) C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN>python day2.py
  0%|                                                                                                                                                                                     | 0/6 [00:00<?, ?it/s]processing  0 300

  0%|                                                                                                                                                                                   | 0/300 [00:00<?, ?it/s]
  4%|██████▏                                                                                                                                                                  | 11/300 [00:00<00:02, 107.59it/s]
  7%|███████████▊                                                                                                                                                             | 21/300 [00:00<00:02, 104.49it/s]
 11%|██████████████████
 ...................
 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 293/293 [00:02<00:00, 107.10it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 6/6 [00:25<00:00,  4.26s/it]
concatedVideoOutputPath: .\results\concated_output.avi
finalProcessedOuputVideo: .\results\final_with_audio.avi

(wav2lip) C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN>

Объединить видео с помощью ffmpeg

Язык кода:javascript
копировать
PS C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN> cd .\results\
PS C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN\results> ffmpeg -y -f concat -i .\concat.txt  -c copy .\concated_output.avi
.....................
frame= 1793 fps=0.0 q=-1.0 Lsize=   24625kB time=00:00:59.76 bitrate=3375.3kbits/s speed=1.76e+03x
video:24577kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.197566%
PS C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN\results> ls


    Оглавление: C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN\results


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----          2023/6/9      7:25                frames
d-----          2023/6/9     11:03                restored_imgs
-a----          2023/6/9     11:42        4231050 batch_0000.avi
-a----          2023/6/9     11:42        4274254 batch_0001.avi
-a----          2023/6/9     11:42        4281898 batch_0002.avi
-a----          2023/6/9     11:42        4165970 batch_0003.avi
-a----          2023/6/9     11:42        4222324 batch_0004.avi
-a----          2023/6/9     11:42        4069836 batch_0005.avi
-a----          2023/6/9     11:42            126 concat.txt
-a----          2023/6/9     11:52       25216450 concated_output.avi
-a----          2023/6/9      7:22        7515594 result.mp4

Объединить видео с помощью ffmpegи аудио

Язык кода:javascript
копировать
PS C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN\results> ffmpeg -y -i .\concated_output.avi -i ..\inputs\demo_5_y.mp3  -map 0 -map 1:a -c:v copy -shortest  .\final_with_audio.avi
ffmpeg version git-2020-08-31-4a11a6f Copyright (c) 2000-2020 the FFmpeg developers
........
frame= 1793 fps=699 q=-1.0 Lsize=   25618kB time=00:00:59.76 bitrate=3511.2kbits/s speed=23.3x
video:24577kB audio:934kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.417315%
PS C:\Users\Горы и реки целы\Documents\GitHub\Wav2Lip-GFPGAN\results>

Генерация результатов

https://www.bilibili.com/video/BV1914y1U7dH/

о Демо-версия и поделитесь ею с друзьями здесь

5 Ссылки на часть сообщения в блоге

© Авторские права на ссылки, использованные в статье, принадлежат оригинальному автору. Если есть какие-либо нарушения, сообщите нам. Это проект с открытым исходным кодом. Если вы его одобряете, не скупитесь на звезды. :)


https://github.com/ajay-sainy/Wav2Lip-GFPGAN

https://github.com/LIRUILONGS/Wav2Lip-GFPGAN_Python_Demo

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose