Модель, обученная, когда я делаю Douyin самостоятельно, не очень хороша. Все те, которые мне рекомендуют, - это видеоролики о скульптурах из песка. Все они - большие мужчины с ногами, и очень мало красивых девушек. Однако это занимает слишком много времени, чтобы тренировать Douyin самостоятельно. Я только что посмотрел его. После использования ADB я обнаружил, что это настоящая сокровищница. Я подумал, что буду использовать ADB, чтобы помочь мне тренироваться, спасая меня от ручного обучения.
Про ADB можно посмотреть мою предыдущую статью,Практические заметки АБР
Во-первых, используйте Node.js для инкапсуляции команды ADB.Чтобы быть совместимым с проблемой подключения нескольких устройств, вы можете использовать флаг и использовать его каждый раз, когда вы его используете.use
способ указать соответствующее устройство,call
метод в качестве базового метода для всех вызывающих команд:
const { exec } = require('child_process')
const path = require('path')
let currentDeviceName = ''
let isVerbose = false
const call = (code) => {
return new Promise((resolve, reject) => {
const command = `adb ${currentDeviceName ? `-s ${currentDeviceName}` : ''} ${code}`
if (isVerbose) console.log(command, '\n')
exec(command, (err, stdout, stderr) => {
if (err) reject(new Error(err + ''))
resolve(stdout)
})
})
}
const use = (device) => currentDeviceName = device.name
const verbose = (value) => isVerbose = value
Добавьте соответствующий метод запроса устройства и сохраните устройство как массив, проанализировав строку:
const rawDevices = () => call('devices')
const devices = async () => {
return (await rawDevices())
.split(/\n/)
.map(line => line.split('\t'))
.filter(line => line.length > 1)
.map(device => ({ name: device[0].trim(), status: device[1].trim() }))
}
Основная операция ADB по запросу устройства завершена. Итак, вопрос в том, как распознать, что в видео Douyin есть красивая девушка?
То, что я думаю, это судить по API распознавания лиц, которые можно определить поADB
Сделайте снимок экрана, затем вызовите соответствующий интерфейс ИИ, чтобы оценить внешний вид и пол человека на снимке экрана, а затем решите, следует ли подписаться и поставить лайк видео, затем проведите пальцем вверх, чтобы переключиться на следующее видео, и так далее.
Чтобы разобраться, команды ADB, которые необходимо инкапсулировать, — это команды кликов, прокрутки и скриншотов:
const touch = (x, y) => call(`shell input tap ${x} ${y}`)
const swipe = (x1, y1, x2, y2, ms = 200) => call(`shell input swipe ${x1} ${y1} ${x2} ${y2} ${ms} `)
const screenshot = (filename = 's.png', localSavePath = './') => call(`shell screencap -p > ${path.resolve(localSavePath, filename)}`)
Следующий шаг — посмотреть интерфейсы ИИ на рынке, я выбрал интерфейс Face++.Woohoo.face plus plus.com.can/face-detect…:
После завершения регистрации вы сможете увидеть соответствующий пробный API-ключ и API-секрет в управлении приложениями консоли.
Как и на большинстве открытых платформ, аутентификация выполняется путем передачи этих двух значений серверной части, а пробный тип — бесплатный.
В разделе Detect API в столбце консоли распознавания лиц вы можете увидеть соответствующие требования к параметрам интерфейса запроса и соответствующие результаты.console.face plus plus.com.can/documents/4…
в необязательных параметрахreturn_attributes
внутреннийgender
а такжеbeauty
Речь идет о поле и внешности.
Формат возвращаемого значения интерфейса следующий:
вfaces
Это массив, в котором на самом деле очень легко разобраться, ведь на картинке может быть не один человек, значение каждого лицаbeauty
Это объект, который отличает красоту в глазах мужчин и женщин. Правда в том, что у мальчиков и девочек разная эстетика!
Основываясь на приведенном выше анализе, вы можете начать писать код черезhttps
Модуль может вызвать интерфейс.Чтобы облегчить передачу изображения в виде base64, он примерно такой:
const https = require('https');
const querystring = require('querystring');
const { base64Sync } = require('base64-img')
module.exports = function (file, scoreLevel = 70) {
const base64 = base64Sync(file)
const data = querystring.stringify({
api_key: "自己的api_key",
api_secret: "自己的api_secret",
image_base64: base64,
return_attributes: 'gender,age,beauty'
})
const options = {
host: 'api-cn.faceplusplus.com',
path: '/facepp/v3/detect',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
}
return new Promise((resolve, reject) => {
const req = https.request(options, (res) => {
res.on('data', (d) => {
let b = {}
try {
b = JSON.parse('' + d)
} catch (err) {
resolve({
shouldFollow: false
})
return
}
const faces = b.faces || []
let shouldFollow = false
let score = 0
for (let i = 0; i < faces.length; i++) {
const attrs = faces[i].attributes
score = attrs.beauty.male_score
if (attrs.gender.value == 'Female' && attrs.beauty.male_score >= scoreLevel) {
shouldFollow = true
break
}
}
resolve({
shouldFollow,
score
})
})
});
req.on('error', (e) => {
resolve(false)
});
req.write(data)
req.end()
})
}
Документы и требования к номинальной стоимости принимаются здесь, если они возвращеныfaces
Если в массиве больше очков, чем это требуется, а пол — Мисс Сестра, подпишитесь и поставьте лайк.
Для того, чтобы иметь лучший тренировочный эффект, вы можете оставаться в видео, которые вам нравятся, и следить за ними некоторое время, чтобы Доуин больше знал, что мы любим смотреть барышни.
Следующий шаг — разобраться с соответствующими операциями «лайк» и «подписаться», которые я примерно оценил по разрешению и положению кнопок на экране моего собственного мобильного телефона (точнее, вы можете сфотографировать Douyin, а затем использовать такие инструменты, как faststone). Измерьте место):
Что я пробовал, так это то, что можно поставить лайк 1300 и нормально подписаться на 1200. Разрешение моего телефона1080 X 2280
.
Операция обработки слайдов на самом деле очень хорошая, ось X не изменилась, ось Y может быть меньше.
После приведенного выше анализа сначала реализуйте функцию ожидания.
function awaitMoment(time = 2000) {
return new Promise((resolve) => {
setTimeout(() => resolve(), time)
})
}
После того, как устройство откроет Douyin, сначала проведите пальцем вверх, чтобы переключить видео
async function main() {
const device = (await adb.devices())[0]
adb.use(device)
adb.verbose(true)
await adb.swipe(200, 1000, 200, 100, 200)
await awaitMoment()
}
Подождав две секунды, сделайте скриншот (это очень грубо, т.к. двухсекундный скриншот может и не быть у барышни, но практика показала, что такое обучение возможно), затем вызовите интерфейс face++, и следуйте и лайкайте это по результатам. , затем удалите соответствующий снимок экрана, а затем вызовите этот метод:
const fileName = ((Math.random() + '').substr(2, 7)) + '.png'
await adb.screenshot(fileName, path.resolve(__dirname, 'images'))
const file = path.resolve(path.resolve(__dirname, 'images', fileName))
const { shouldFollow, score } = await face(file, 70)
console.log('shouldFollow', shouldFollow)
console.log('score', score)
if (shouldFollow) {
await adb.touch(1000, 1300)
await adb.touch(1000, 1200)
await awaitMoment(5000)
}
fs.unlinkSync(file)
await main()
Это в принципе сделано.
Просто запустите его, а затем подождите, пока программа автоматически поможет нам обратить внимание на прекрасную даму.
Я тренировался в течение 2 или 3 часов, эффект все еще очень очевиден, и встряска порекомендует все виды видео о резьбе по песку всем маленьким сестрам, хахаха, хахахаха, это сработает. Это тоже радость.
Поскольку карта GIF слишком велика, это слишком много проблем, поэтому вы можете взять видео, вы можете посмотреть на процесс обучения программы, IQIYI Linkwoooooo.iqi.com/i_19Сахаха и…, трубная ссылкаWoohoo.YouTube.com/watch?V=-_G…
Наконец, взгляните на тренировочный эффект моей учетной записи:
(На самом деле тоже есть проблема, то есть фильтр слишком серьезный, много лиц интернет-знаменитостей, не знаю, есть ли алгоритм определения лиц интернет-знаменитостей)
Все приведенные выше коды находятся в открытом доступе на моем github, адресGitHub.com/Fu Ru Отправить/найти…
В итоге это был как обычно рекламный пост.Недавно был открыт новый публичный аккаунт для обмена технологиями.Все желающие могут подписаться👇(сейчас мало подписчиков 🤕)