01:30 | intrac | left the channel | |
01:31 | intrac | joined the channel | |
02:19 | araml | left the channel | |
03:48 | aombk | joined the channel | |
03:48 | aombk2 | left the channel | |
06:09 | siddhantsahu | BAndiT1983: Is there any plan to add OpenCV to OpenCine?
| |
06:22 | BAndiT1983|away | changed nick to: BAndiT1983
| |
06:23 | BAndiT1983 | siddhantsahu, what should be the purpose of it?
| |
06:33 | siddhantsahu | OpenCV has a module "dnn" which implements the most common building blocks layer (Convolution, ReLu, RNN etc.) which can be used for loading, running pre-trained neural networks (inference).
| |
06:34 | siddhantsahu | More on it here https://github.com/opencv/opencv/wiki/Deep-Learning-in-OpenCV
| |
06:34 | BAndiT1983 | and?
| |
06:36 | siddhantsahu | It also support multiple computational backends (Intel's Inference Engine) which makes running deep learning neural networks for inference in CPU very efficient.
| |
06:36 | siddhantsahu | More on it here https://github.com/opencv/opencv/wiki/Intel%27s-Deep-Learning-Inference-Engine-backend
| |
06:37 | BAndiT1983 | i don't have time to check your links, please create a proper summary of what needs to be done, planned steps etc.
| |
06:37 | siddhantsahu | For T1142 I wish to use some pre-trained neural network models for the task.
| |
06:39 | siddhantsahu | Not just for "White balancing" algorithms many state of the art denoising, deblurring, resizing (superresolution) uses neural networks.
| |
06:39 | siddhantsahu | It would great over OpenCine users if they can use these algorithms.
| |
06:40 | BAndiT1983 | neural networks here, neural networks there, hearing this buzzwords every day on the net, but you have to deliver more than an advertisement to get an approval, and this means proper plan
| |
06:40 | siddhantsahu | I need user suggestion, if it is only possible to use the "dnn" module only of OpenCV in OpenCine?
| |
06:44 | siddhantsahu | So incase OpenCine uses some deep learning algorithms it can use this "dnn" module.
| |
06:44 | BAndiT1983 | of course, it uses tensorflow to locate humans in the picture and to tell us, if it's donald trump or not
| |
06:45 | siddhantsahu | Is it good idea to implement a "dnn" module inside OpenCine or can we use the "dnn" module of OpenCV?
| |
06:45 | BAndiT1983 | you tell me, i don't have a clue about neural networks
| |
06:47 | siddhantsahu | No no the OpenCV's "dnn" module is only used to do the inference
| |
06:48 | siddhantsahu | That means once the model is build and trained on a large dataset using some deep learning frameworks like Tensorflow, Caffe, etc.
| |
06:48 | siddhantsahu | We get two files
| |
06:49 | siddhantsahu | One the models architecture and the trained model's parameter.
| |
06:50 | siddhantsahu | These two files are read by the OpenCV's dnn module methods like readNetFromTensorflwo() to load, and do the actual inference.
| |
06:51 | siddhantsahu | This module is highly optimized to run on Intel CPU's
| |
06:53 | siddhantsahu | So if have a trained model for a specific problem (denoising, deblurring, white balacing ..etc) we can just import and load these two files and do the inference and get our denoised, deblurred and adjusted white balanced image.
| |
06:54 | siddhantsahu | Among the two files which we get after training using deep learning frameworks (Tensorflow, Caffe etc) 1.) First the models architecture file, used to build the model 2.) Second are the actual model's parameters.
| |
06:55 | BAndiT1983 | very nice, but first i would suggest to do more work on challenge code, as i see many problems there and a lot of duplications
| |
06:55 | BAndiT1983 | off for work, will be back later
| |
06:55 | BAndiT1983 | changed nick to: BAndiT1983|away
| |
06:56 | siddhantsahu | Yes working on the C++ challenge, will send you for review once it's done.
| |
07:09 | dcz | joined the channel | |
08:23 | apurvanandan[m] | Hi,
| |
08:24 | apurvanandan[m] | In the usb plugin module, in what format video is going to be transmitted at the usb end?
| |
08:24 | apurvanandan[m] | For streaming purpose
| |
09:19 | sebix | joined the channel | |
09:53 | Bertl_zZ | changed nick to: Bertl
| |
09:53 | Bertl | morning folks!
| |
09:59 | Bertl | apurvanandan[m]: there are two option here, we can use the FT601 and have raw data and we can use the FT602 which basically creates an UVC device
| |
10:00 | Bertl | in the first case it is completely up to us to define the data stream but we will require custom software on both ends
| |
10:01 | Bertl | in the second case we are the sender and do not need to bother with the software on the receiver side, but we are limited to the UVC formats and need to set them up properly
| |
10:09 | futarisIRCcloud | left the channel | |
10:13 | dcz | left the channel | |
10:34 | danieel | Bertl: what are the most visible differences between a FX3 and FT601 ?
| |
10:35 | danieel | if the uvc can bear 422/10b, then sort of log-raw can still be passed through it, but the receiver shall be aware of it being RGGB not YUV
| |
10:36 | Bertl | mostly price and that the FX3 requires specific firmware while the FTDI works out of the box
| |
10:37 | Bertl | but the FX3 might be more flexible because of this
| |
10:39 | Bertl | the RGGB as YCrCb is a nice idea, not sure what software supports this though
| |
10:44 | Bertl | haven't checked the UVC specification yet, might as well be that they already have something similar defined
| |
10:47 | vup2 | The receiver side of the ft601 also does not look too complicated, so i don't think the restriction to UVC would really be worth it
| |
10:48 | danieel | uvc1.5 has no mention of raw, bayer, cfa
| |
10:49 | danieel | there is a "vendor defined" frame based option though
| |
10:50 | vup2 | It also has a `uncompressed` payload type
| |
11:09 | Bertl | the only reason for using the UVC version would be that it 'works' out of the box on any platform
| |
11:10 | danieel | well it could have a fake debayer to yuv as initial mode, that code you already have for the hdmi
| |
11:11 | Bertl | yup
| |
11:14 | Bertl | but the main plan for the USB interface is to get raw data out
| |
11:19 | Bertl | off for now ... bbl
| |
11:20 | Bertl | changed nick to: bertl_oO
| |
11:48 | dcz | joined the channel | |
12:49 | fizz | joined the channel | |
12:52 | aombk2 | joined the channel | |
12:56 | aombk | left the channel | |
13:10 | fizz | left the channel | |
13:11 | aombk | joined the channel | |
13:12 | aombk2 | left the channel | |
13:49 | se6astian|away | changed nick to: se6astian
| |
14:21 | aombk | left the channel | |
14:26 | aombk | joined the channel | |
15:00 | aombk2 | joined the channel | |
15:01 | aombk | left the channel | |
15:07 | aombk | joined the channel | |
15:09 | aombk2 | left the channel | |
15:17 | mrohit[m] | Hey se6astian , is there any specific clang-format style in which the C++ challenge code is expected to be formatted in?
| |
15:31 | bertl_oO | changed nick to: Bertl
| |
15:31 | Bertl | back now ...
| |
15:31 | vup2 | mrohit[m]: you can use https://github.com/axiom-micro/axiom-control-daemon/blob/master/.clang-format for now
| |
15:32 | mrohit[m] | ok, thanks!
| |
15:58 | BAndiT1983|away | changed nick to: BAndiT1983
| |
15:59 | Bertl | ... and off again ... bbl
| |
15:59 | Bertl | changed nick to: Bertl_oO
| |
16:02 | se6astian | changed nick to: se6astian|away
| |
16:05 | illwieckz | left the channel | |
16:46 | dev_ | joined the channel | |
16:47 | dev_ | Hey BAndiT1983 , free to check the C/C++ challenge right now ?
| |
16:49 | BAndiT1983 | not really, but i have seen several problems there
| |
16:49 | BAndiT1983 | like variables starting with upper-case
| |
16:50 | BAndiT1983 | also too long methods
| |
16:51 | BAndiT1983 | what should this code do? ->
| |
16:51 | BAndiT1983 | file << (isdebayered ? "P6" : "P5");
| |
16:51 | BAndiT1983 | file << std::endl;
| |
16:52 | dev_ | if the isdebayered is true , then it will write for PPM and is false then it will be grayscale and will write in pgm
| |
16:52 | BAndiT1983 | AVI generation is not really usable in this form, as size calculation is very rigid
| |
16:52 | BAndiT1983 | and what does the second line do?
| |
16:53 | dev_ | ppm is for final debayered image
| |
16:53 | dev_ | it is for space in ppm file format, "P6 height width 256 "
| |
16:53 | BAndiT1983 | and why is it in a separate line?
| |
16:54 | dev_ | it was looking long
| |
16:54 | dev_ | and messy too becouse of endl , so it shifted it in next line
| |
16:55 | saurabh_raj | joined the channel | |
16:55 | BAndiT1983 | ehm, don't think so, cause this looks like a waste of lines for unnecessary stuff
| |
16:55 | dev_ | okay i will change it,1. Captial variable (there are few ) 2. this endl thing
| |
16:56 | BAndiT1983 | check your code thoroughly, as it's up to you to deliver high quality
| |
16:57 | saurabh_raj | Hi BAndiT1983, got a chance to go through my code?
| |
16:57 | dev_ | Hi saurabh_raj :)
| |
16:57 | BAndiT1983 | a bit, but i can't figure out with so many abstractions and loops
| |
16:57 | BAndiT1983 | this hides the target of the code from observer
| |
16:58 | BAndiT1983 | i know what it should do, but the solution is way too complicated and riddled with unnecessary stuff
| |
16:59 | dev_ | okay thanks BAndiT1983, if u got time also please check for proposal which i have send to team's email Id
| |
16:59 | saurabh_raj | i swtiched from nested loops to single loops and linear arrays.. i m using bilinear interpolation hence the loops.. should i switch to a different debayering algorithm?
| |
17:01 | BAndiT1983 | it's not about switching to different algorithm, it's about having readable and maintainable code
| |
17:01 | dev_ | left the channel | |
17:02 | BAndiT1983 | i see a lot of nested if/else in the loops and so on, not really performant
| |
17:02 | se6astian|away | changed nick to: se6astian
| |
17:02 | saurabh_raj | okey.. so apart from the loops, any serious issues?
| |
17:02 | aSobhy | left the channel | |
17:02 | BAndiT1983 | it's not my task to list every bit of problems there, but i see a lot of C-style code, which is not the goal for C++ challenge
| |
17:03 | BAndiT1983 | a lot of abstractions which are unnecessary and just obfuscate the dataflow
| |
17:03 | BAndiT1983 | why do you use so many data classes like pixelmap, raw12, bitmap?
| |
17:03 | BAndiT1983 | missing blank lines to mark line which belong together, see main.cpp
| |
17:04 | saurabh_raj | pixelmap deals with writing ppm files, bitmap for bmp and raw12 loads the find and initializes the vectors
| |
17:04 | BAndiT1983 | #pragma pack was implemented in GCC, but should be avoided
| |
17:05 | BAndiT1983 | the structure is not clear, as you mix namespaces, classes etc., should be more clear how the data flows in the pipeline
| |
17:06 | saurabh_raj | so.. should I add comments?..
| |
17:06 | BAndiT1983 | i don't see real OOP there
| |
17:06 | BAndiT1983 | you can also add comments, but a good code should be readably
| |
17:07 | BAndiT1983 | struct Streams is unnecesary
| |
17:07 | BAndiT1983 | channels are hold in vector, which is not performant
| |
17:07 | BAndiT1983 | usinged char should be replaced by uint8_t or uint16_t, depending on what you use
| |
17:07 | BAndiT1983 | and so on
| |
17:07 | BAndiT1983 | it's not my task to complete the challenge
| |
17:08 | saurabh_raj | okey.. i will try to make the code more readable and simple...
| |
17:09 | saurabh_raj | I was trying to do the writing avi tasks but I keep on getting the error could not demultiplex the file when I play the avi file
| |
17:10 | BAndiT1983 | take a look at the prototype of OC frame server to get the idea ->
| |
17:10 | BAndiT1983 | https://github.com/BAndiT1983/OC_FrameServer/tree/dev
| |
17:11 | saurabh_raj | thanks.. that really helps... I m sorry to annoy you.. but I am a fresher in college and open source development is new to me.
| |
17:13 | BAndiT1983 | the main expectation is, that people want to learn new things and for GSoC it's a must, which is clearly defined by google in their FAQs
| |
17:13 | BAndiT1983 | we have to select best ones and it does involve to avoid too much 'holding hand'
| |
17:13 | BAndiT1983 | as the mentors do this stuff as volunteers, without payment
| |
17:15 | saurabh_raj | yeah.. i understand.. thanks for all the help.. i m really learning a lot..
| |
17:21 | dev_ | joined the channel | |
17:21 | dev_ | left the channel | |
17:29 | saurabh_raj | left the channel | |
17:32 | apurvanandan[m] | In what format would you like the proposal to be in? A google doc, latex pdf or odt?
| |
17:47 | BAndiT1983 | changed nick to: BAndiT1983|away
| |
18:18 | se6astian | PDF seems most universal
| |
18:23 | Bertl_oO | changed nick to: Bertl
| |
18:23 | Bertl | finally back ...
| |
18:24 | Bertl | apurvanandan[m]: bonus points for LaTeX, especially on the CV :)
| |
18:26 | mrohit[m] | hey Bertl , should we provide a link to the CV in the proposal or add the CV in the proposal?
| |
18:28 | Bertl | a link is probably the best way unless you want to incorporate it into the proposal
| |
18:33 | mrohit[m] | okay
| |
18:34 | BAndiT1983|away | changed nick to: BAndiT1983
| |
18:57 | sebix | left the channel | |
18:58 | BAndiT1983 | changed nick to: BAndiT1983|away
| |
19:05 | Ashu | joined the channel | |
19:08 | Bertl | hey Ashu! How's going?
| |
19:08 | Ashu | Hi Bertl ,
| |
19:09 | Ashu | :) yesterday I explaine about how I wish to use GraphicMagick , is it right approach ?
| |
19:09 | Ashu | *explain
| |
19:10 | Bertl | well, yes and no, you are definitely heading into the right direction there
| |
19:11 | Bertl | I haven't evaluated GraphicsMagick yet but I fear that it is still not 'direct' enough for our purpose
| |
19:11 | Bertl | the problem I see is this:
| |
19:12 | Bertl | you need to do a lot of memory access from the CPU side to collect the data for computation
| |
19:12 | Bertl | for example for a histogram, you probably want to look at 20-50% of the image to get it resonably right
| |
19:14 | Bertl | the collected data is quite small (histogram will be a few hundred values)
| |
19:14 | Bertl | now you need to visualize it with the overlay, which in turn means additional memory access
| |
19:15 | Bertl | if the histogram takes up a quarter of the display for example, that means that it has about the same 'memory footprint' bandwidth wise as the data collection
| |
19:16 | Bertl | the only difference is that it is written to the memory instead of read
| |
19:16 | Bertl | so far everything is 'as expected' and we can't do a lot about it unless we put some of the visualization into the image pipeline
| |
19:17 | Bertl | but the sensitive point here obviously is 'reading' (the image data) and 'writing' (the overlay) in an efficient way
| |
19:18 | Bertl | the 'usual' PC approach is to reserve a bunch of 'memory' and draw there (with lines and other shapes) till you have something ready to show
| |
19:18 | Bertl | then 'simply' copy it over to the 'framebuffer' (overlay)
| |
19:19 | Bertl | but in our case, this would mean that you double the amount of memory accessed and with inefficient drawing primitives it will become even more
| |
19:20 | Bertl | as the memory bandwidth is limited, this in turn means that the framerate for the overlay drops dramatically
| |
19:21 | Bertl | so long story short, the ideal solution would be to not only collect the data in a very efficient way but also write the visualization data as directly as possible with a minimum of buffering or 'drawing' all over the place
| |
19:22 | Bertl | that said, a 'render' approach would probably be the best (I think I already mentioned that but probably failed to explain it in more detail)
| |
19:23 | Bertl | so we know that 'burst' access to the memory is quite efficient, but we haven't checked if it makes a difference on the total bandwidth or not
| |
19:23 | Bertl | (this is something which needs to be tested)
| |
19:23 | illwieckz | joined the channel | |
19:23 | Bertl | but we know for sure that a 'single' write to each memory location is preferable to multiple writes
| |
19:25 | Bertl | i.e. for a histogram for example, it might make perfect sense to simply scan the 'visual' area column for column and row for row and for each pixel decide how it will look like and then simply write that 'pixel' to the overlay
| |
19:27 | Bertl | given that the 'decision' for the 'pixel color' is based on 'small' and 'local' data which is likely already cached and doesn't require any memory access, we are likely to get away without writing or reading anything twice
| |
19:27 | Bertl | does that make more sense now?
| |
19:28 | Ashu | You are right Bertl ,it makes sense. Using library will definately require a lot of memory access from CPU side .
| |
19:32 | Ashu | Probably rather than searching any library which suites our problem , it would be wise to draw graph from the code itself .
| |
19:33 | Bertl | at least for something like the histogram it is certainly a good and viable approach
| |
19:33 | Bertl | I'm not sure we should reinvent the wheel for more complex drawing though (which cannot be easily generated by 'rendering' the data)
| |
19:34 | Bertl | so it is likely to be a balance between our own special 'renderer' and rather generic drawing functions which can accomodate any framebuffer like setup
| |
19:35 | Bertl | there is also the 'complication' that it would be nice to find a solution for visualizing the accumulated data via web or similar
| |
19:36 | Bertl | note that in this case the drawing should definitely be client side
| |
19:36 | Bertl | so only data collection and preprocessing is required
| |
19:37 | Bertl | (think histogram on a tablet connected via wifi)
| |
19:47 | Ashu | " generic drawing functions " would making these for ourself is better approach ,
| |
19:48 | Bertl | I'm fine with that as well
| |
19:51 | Ashu | or what option we have other than this , can we find them too ?
| |
19:52 | Bertl | haven't checked but it really depends on the visualization we want to do
| |
19:52 | Bertl | (which is not set in stone, so we are somewhat flexible there)
| |
19:53 | Bertl | you might for example want to investigate 'good' and 'easy' visualizations for the data we want to collect as well as ways to collect them efficiently
| |
19:54 | Bertl | have some nice examples (mockups or existing solutions) in your proposal with explanations why they are well suited and how to generate them
| |
19:57 | Ashu | Now I can picturize real complications and problem here , It would definately require quality reading ,research and thinking to get optimise and well suited solution to this .
| |
19:58 | Bertl | yup, glad you have a more complete picture now
| |
20:00 | Ashu | thanku, for explaining things in this depth . I Will come back for discussion after doing little more research. :)
| |
20:00 | Bertl | you're welcome!
| |
20:01 | Ashu | left the channel | |
20:20 | BAndiT1983|away | changed nick to: BAndiT1983
| |
20:24 | intrac | left the channel | |
20:25 | intrac | joined the channel | |
21:15 | Ashu | joined the channel | |
21:16 | se6astian | changed nick to: se6astian|away
| |
21:17 | Ashu | left the channel | |
21:17 | rohan_ | joined the channel | |
21:18 | rohan_ | Hey BAndiT1983: I mailed you my c++ challenge solution today? Did you find time to take a look at it?
| |
21:19 | Bertl | probably not, otherwise you would have received an answer :)
| |
21:19 | Bertl | s/answer/reply/
| |
21:22 | rohan_ | No problem. I'll wait :)
| |
21:27 | rohan_ | left the channel | |
21:28 | BAndiT1983 | rohan_, looked at it in the morning, but there are so many inconsistencies there, so i'Ve stopped after short time
| |
21:28 | BAndiT1983 | i can't understand why you store the images away, reload them again and especially the pile of streams there
| |
21:29 | BAndiT1983 | please consult C++ guidelines, like class names should start with upper-case and use camel-case
| |
21:30 | dcz | left the channel | |
21:32 | BAndiT1983 | biggest mistake i see in the challenge code from (almost) all students, is the use of one-letter variables -> f, s etc.
| |
21:33 | BAndiT1983 | how should someone be able to read this code? any quality assurance in a company would refuse to merge such code into the main branch
| |
21:34 | Bertl | it probably depends on the use case though ... because for (i=0; i<10; i++) is as good as for (index=0; index<10; index++) if not even preferable
| |
21:34 | Bertl | but those are exceptions to the rule of course
| |
21:38 | BAndiT1983 | of course, as index it's fine, although sometimes in some advanced code indices should be named properly, but i have a code in front of me with many streams, like f1, f2, f3, f4, f5
| |
21:38 | BAndiT1983 | and many other vars of such kind, which makes it very hard to understand, besides that the code can be simplified by extracting proper methods and reuse them, instead of doing many if/else or switch case or even plain spaghetti code
| |
21:39 | Bertl | yeah, I didn't expect anything else after the comment :)
| |
22:18 | BAndiT1983 | changed nick to: BAndiT1983|away
| |
22:24 | Kjetil | My friend who I sometimes helped with his programming task in uni, kept naming his variables pizza1, pizza2, pizza3. Reading the code was just horrible
| |
22:25 | Bertl | that is called obfuscation :)
| |
22:26 | Kjetil | He explained it once with something ala. If it is horrible to write, it should be horrible to read
| |
22:26 | Bertl | lol, yeah ... sounds legit :)
| |
22:29 | rohan_ | joined the channel | |
22:33 | rohan_ | I understand BAndiT1983. I'll change the code to store the data in arrays instead of files and also follow the c++ guidelines more strictly but is the implementation of Debayer() okay or below par? should I change it to how others have done it?
| |
22:38 | rohan_ | left the channel | |
22:41 | aSobhy | joined the channel | |
23:42 | AntGeorge | joined the channel | |
00:01 | aombk2 | joined the channel | |
00:02 | aombk | left the channel | |
00:08 | AntGeorge | left the channel | |
00:16 | aombk | joined the channel | |
00:18 | aombk2 | left the channel | |
00:29 | futarisIRCcloud | joined the channel |