Giter Site home page Giter Site logo

helloworldhhhhh / yolov3-on-android Goto Github PK

View Code? Open in Web Editor NEW

This project forked from huuuuusy/yolov3-on-android

0.0 1.0 0.0 38.49 MB

Build an Android App for deploying YOLO V3 source code on mobile phone directly.

CMake 0.25% Java 0.91% Python 0.26% C 92.44% Cuda 5.90% C++ 0.24%

yolov3-on-android's Introduction

I. 介绍

本项目将Yolo-v3的源代码在android studio进行开发编译并且部署到android手机上,实现利用手机硬件平台完成对Yolo-v3网络的调用.项目以Yolo-v3-tiny为例子进行开发,其他相关网络可以通过Darknet网站下载权重文件进行复现.

II. 开发环境

OS: Ubuntu 16.04

Android Studio: 3.1.3

Mobile Phone: Xiaomi MI 8

相关教程:

ubuntu下安装AndroidStudio方法

Andorid Studio官网安装教程

请自行查阅教程完成Android Studio安装以及NDK, SDK等相关开发环境的配置.

III. 项目构建

3.1 源码导入

在Andorid Studio构建一个支持C语言的项目,然后从Darknet下载源代码.

在项目工程的cpp文件夹下新建darknet文件夹,将下载的源码中的example, include, src三个文件夹复制到android工程中.

3.2 源码修改

3.2.1 include文件夹

include文件夹下放置的是darknet的头文件,在头文件开头添加log调试功能.

3.2.2 src文件夹

src文件夹放置darknet源码,首先删除其中的compare.c文件(compare.c无头文件,对整个库的编译不起作用.如果不删除,在编译时compare.c会出现指针问题,无法通过编译).然后修改image.c文件,将232行的load_alphabet()函数中的labels路径改为sdcard/yolo/data/labels(这是随后将在手机上放置文件的绝对路径,不做修改的话真机测试时将出现无法导入labels的问题,导致出现闪退现象).

3.2 Cmake文件配置

关于Cmake的格式和用法,请参考:

官方指南

CMake的基本使用

cmake 基本命令 & 交叉编译配置 & 模块的编写

cmake的使用笔记

本项目中Cmake配置信息请参考代码中CMakeLists.txt文件.

3.3 asserts文件夹配置

将darknet源码中的cfg,data文件放置在项目的assert文件夹下.

官网下载YOLOV3-tiny权重文件并放置在weights文件夹下.

3.4 JNI接口配置

关于在Android Studio 3中如何构建JNI项目,请参考Android Jni/NDK 开发入门详解.

本项目主要修改darknetlib.c文件,其中图片测试代码摘自darknet/examples/dector.c Line562~Line626的官方代码示例.详细信息请参考项目代码及注释.

其中datacfg_str和name_list = "/sdcard/yolo/data/coco.names",是因为项目所使用的预训练模型来自于官网,其中yolo-v3-tiny是用coco训练集训练出的80分类模型,因此name_list需要和预训练模型保持一致.

cfgfile_str和weightfile_str放置cfg文件和weight文件的地址,根据下载的文件位置保持一致即可.

3.5 Java配置

对java文件夹下Yolo.java进行修改,完成相关配置.

IV. 项目运行

在小米8上运行项目,在android studio 3的logcat中可以看到读入的文件信息,以及Yolo-v3-tiny网络的配置.

logcat会打印出预测出的物体名称,概率及处理时间.

在不同的图片上测试,使用手机cpu处理约为一张图耗时0.8s.

参考

项目参考Darknet yolo 在 android studio上的移植和实现,原博主实现的是Yolo-v2的移植,本项目进行修改后实现Yolo-v3版本代码的Android端复现.

yolov3-on-android's People

Contributors

huuuuusy avatar stg284 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.