# A Voila-Jones face detector hardware implementation
This project attempts to realize a face detector using Voila-Jones algorithm. The reference C model is borrowed from [5kk73 GPU Assignment 2012](https://sites.google.com/site/5kk73gpu2012/assignment/viola-jones-face-detection), with some modify to fit hardware implementation and fixed some bug.
The code is written by Verilog/SystemVerilog and Synthesized on Xilinx KintexUltrascale FPGA using Vivado.
This code is just experimental for function, a lot of optimization can further be done.
## Architecture
This project include 4 main module:
- The capture, this module captures the video input to frame buffer, with a scale of the input video
- The vj-fectch, this module accesses the frame buffer to get the pixels and feed into Volia-Jones engine.
- The vj, this is Volia-Jones engine, accepts original pixels and generates integral image and does classify
- The draw, this module is to draw a box onto face detected area. This draw engine does not operate on the frame buffer. It draws on video port on the fly.
## Demo
Xilinx KCU105 Board, with HDMI input and output daughter boards.
The input 1080P HDMI input is scaled down to 480x270 to fill the frame buffer, then perform the face dection.
The final detection result is not very good. there is a lot missed and false detection.
## Simulation
VCS is used
goto the sim/face subdirectory
run ./face
## Synthesis
go to vivado/face directory
run "vivado -mode tcl -source face-ku.tcl"
## TODO
- The area is large mainly because the ii registers. which can be optimized and the register width can be manual adjusted. Now all the registers use the same width.
- The detection speed is slow, more classifiers can be paralleled to speed up the performance.
- To speed up the performance, the data width of frame buffer should be enlarge to access multiple pixels in one clock.
- The II select MUX can be optimized.
- the Haar feature calculation can be implemented by shift and adder, not multiplier.
- The square root cal module is also a limit of speed.
## Reference
[https://sites.google.com/site/5kk73gpu2012/assignment/viola-jones-face-detection](https://sites.google.com/site/5kk73gpu2012/assignment/viola-jones-face-detection)
[Junguk Cho, "FPGA-Based Face Detection System Using Haar Classifiers"](http://cseweb.ucsd.edu/~kastner/papers/fpga09-face_detection.pdf)
[Braiden Brousseau, "An Energy-Efficient, Fast FPGA Hardware
Architecture for OpenCV-Compatible Object
Detection"](http://www.eecg.toronto.edu/~jayar/pubs/brousseau/brousseaufpt12.pdf)
[Peter Irgens, "An efficient and cost effective FPGA based implementation
of the Viola-Jones face detection algorithm"](http://www.dejazzer.com/doc/2017_hardware_x.pdf)
## Author
LulinChen
lulinchen@aliyun.com
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
face_detect_open-master.zip (90个子文件)
face_detect_open-master
新建文本文档.txt 65B
model
bhvsram
bhv_1w1r_sram.v 664B
bhv_1w1r_sram_wp.v 835B
bhvsrams.v 2KB
bhv_1p_sram.v 601B
sensor.v 3KB
xilinx
xilinx_srams.v 3KB
xilinx_1w1r_sram.v 2KB
xilinx_1w1r_sram_wp8.v 3KB
xilinx_1p_sram.v 2KB
ku
pll
pll_main_250
pll_main_ooc.xdc 2KB
pll_main_sim_netlist.vhdl 8KB
pll_main_clk_wiz.v 7KB
pll_main.xdc 3KB
pll_main.v 4KB
pll_main.xml 285KB
pll_main_stub.v 1KB
pll_main_sim_netlist.v 8KB
pll_main_late.xdc 2KB
pll_main_board.xdc 60B
pll_main.xci 68KB
doc
clk_wiz_v5_2_changelog.txt 5KB
pll_main_stub.vhdl 1KB
pll_main.veo 4KB
pll_main.dcp 12KB
vivado
face
face_ku.tcl 5KB
ku_HPC_TB_FMCH_HDMI2.xdc 11KB
draw_test
ku_HPC_TB_FMCH_HDMI2.xdc 11KB
draw_ku.tcl 4KB
src
face.v 9KB
misc.v 855B
global.v 5KB
draw.v 27KB
vj_fetch.v 6KB
vj.v 34KB
top
draw_test.v 5KB
face_top.v 5KB
roms.v 704KB
capture.v 3KB
monitor.v 17KB
testbench
vj_tb.v 6KB
draw_tb.v 9KB
face_tb.v 7KB
c
vj_cpp
stdio-wrapper.h 2KB
class.txt 150KB
stdio-wrapper.c 5KB
LICENSE 34KB
haar.cpp 31KB
haar.h 3KB
rectangles.cpp 5KB
Face.pgm 4KB
info.txt 116B
image.c 6KB
main.cpp 2KB
image.h 2KB
Makefile 477B
face64x64.bmp 12KB
face1280x626.png 690KB
face320x240.pgm 75KB
face320x240.yuv 113KB
vj_cpp_org.zip 761KB
face24x24.bmp 2KB
tools
writepgm.c 2KB
face640x313.pgm 196KB
face320x240.bmp 225KB
face640x313.yuv 293KB
face64x64.pgm 4KB
face28x28.bmp 2KB
face28x28.yuv 1KB
face640x313.bmp 587KB
any2yuv.exe 278KB
face1280x626.yuv 1.15MB
face24x24.yuv 864B
face64x64.yuv 6KB
Face128x616.pgm 783KB
face24x24.pgm 589B
face1920x1080.yuv 2.97MB
face1920x1080.png 1.57MB
face28x28.pgm 797B
sim
face
face_tb.f 338B
face 2KB
Makefile 718B
draw
draw 2KB
Makefile 718B
draw_tb.f 463B
vj
vj 2KB
vj_tb.f 91B
Makefile 712B
doc
face.xls 28KB
README.md 3KB
共 90 条
- 1
qq_44985628
- 粉丝: 8123
- 资源: 23
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 物模块模型代码,前往设计物模块所属
- Java面试手册,助力大家面试过五关斩六将,面试成功
- HITK0303MP-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- mybatis动态sql之xml增删改查批量操作示例EmpMapper.xml
- C/C++内存检测工具Sanitizers
- HITK0302MP-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 宝塔批量建站工具,很优秀的宝塔管理工具,基于宝塔api
- HITK0204MP-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- azeryhgtfxhj
- 操作系统实验页面置换算法
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0